Esittely latautuu. Ole hyvä ja odota

Esittely latautuu. Ole hyvä ja odota

Modulaatio ja koodausTimo Mynttinen1 JPEG pakkauksen perusteet Bittikarttakuva muodostuu kuvapisteistä, ja jokaisessa kuvassa on tietty määrä kuvapisteitä.

Samankaltaiset esitykset


Esitys aiheesta: "Modulaatio ja koodausTimo Mynttinen1 JPEG pakkauksen perusteet Bittikarttakuva muodostuu kuvapisteistä, ja jokaisessa kuvassa on tietty määrä kuvapisteitä."— Esityksen transkriptio:

1 Modulaatio ja koodausTimo Mynttinen1 JPEG pakkauksen perusteet Bittikarttakuva muodostuu kuvapisteistä, ja jokaisessa kuvassa on tietty määrä kuvapisteitä pysty- ja vaakasuunnassa. Tämä pikselien määrä on kuvan pikselikoko. Pikselikoko on suorassa suhteessa tiedoston kokoon tallennettaessa se kovalevylle. Esim. RGB-kuva sisältää kutakin osaväriä kohden yhden 8-bittisen värikanavan. Siispä 1024*1024 pikselin kuvakoko on 3 MB. Tarve pakkaamiseen on ilmeinen!

2 Modulaatio ja koodausTimo Mynttinen2 JPEG, Joint Photographic Experts Group JPEG on yleisnimi ISO/JPEG -standardille ”Digital Compression of Continuous-Tone Still Images”, ITU-T Suositus T.81. JPEG on pakkausmenetelmänä laaja kokonaisuus, ja siinä on sekä häviötön että häviöllinen osuus.

3 Modulaatio ja koodausTimo Mynttinen3 Häviöllinen pakkausmenetelmä tuottaa virheitä purettaessa pakattua tietoa, mutta virhetasot pidetään alle havaitsemiskynnyksen. JPEG tukee kolmea toimintomuotoa jotka liittyvät diskreettiin kosinimuunnokseen (Discrete Cosine Transform, DCT): sarjamuotoinen DCT, progressiivinen DCT ja hierarkkinen DCT. DCT on numeerinen muunnosalgoritmi, joka on sukua diskreetille Fourier-muunnokselle (Discrete Fourier Transform, DFT). Tavoitteena on jakaa monimutkainen signaali osatekijöihinsä.

4 Modulaatio ja koodausTimo Mynttinen4 Huom! DCT on mukana myös pakattaessa liikkuvaa kuvaa! Kuvasignaali jaetaan yleensä 8*8 pisteen lohkoihin. Jokaisesta pisteestä lasketaan muunnoskerroin DCT- muunnoksen avulla. Näin saadaan selville jaksollisen signaalin taajuusspektri. Lohkon vasempaan ylänurkkaan sijoitetaan DC- kerroin, joka ilmaisee lohkon keskimääräisen intensiteettiarvon. Muut lohkot sisältävät AC-kertoimia, jotka ilmaisevat muutoksia suhteessa DC-kertoimeen.

5 Modulaatio ja koodausTimo Mynttinen5 Kertoimet kvantisoidaan jollakin lukuarvolla ja pyöristetään, jonka seurauksena useat pikselit saavat hyvin pienen lukuarvon tai nollan. Koska nyt 8*8 matriisissa on enemmistö kertoimista nollia, skannataan kertoimet ”zigzag”-järjestyksessä, jolloin saadaan pitkä rivi kertoimia joista enemmistö on nollia. Tämän jälkeen käytetään vaihtuvamittaista koodausta (ensin RLC ja sitten VLC) lukuarvojen ilmoittamiseen, mikä pienentää tiedon määrää entisestään.

6 Modulaatio ja koodausTimo Mynttinen6 JPEG käyttää Huffman-koodausta tai aritmeettista koodausta AC- ja DC-arvojen enkoodaukseen. Yleiskuva enkooderista kuvassa 1.

7 Modulaatio ja koodausTimo Mynttinen7 DPCM 8*8 LOHKOIHIN JAKAMINEN Kuva 1. JPEG enkooderin (baseline) yleisperiaate lohkokaaviona. VÄHENNETÄÄN 128 KUSTAKIN NÄYTEARVOSTA DCT- MUUNTAMINEN KVANTISOINTI RLC ENTROPIA- ENKOODAUS AC-KERTOIMET DC-KERTOIMET

8 Modulaatio ja koodausTimo Mynttinen8 Kun kuvaa rekonstruoidaan, voi dekooderi toimia sarjamuotoisesti: aloitetaan ylimmästä vasemmanpuoleisesta 8*8-lohkosta heti kun se saapuu perille. Tämä on sarjamuotoinen JPEG. Progressiivisessa toimintomuodossa kuva koostetaan siten, että ensimmäiseksi rakennetaan kokoon kaikki 8*8 -matriisit, ja silloin niissä on mukana vain DC- kerroin kussakin lohkossa. Tässä vaiheessa kuvan laatu ei ole kaksinen, mutta se on kuitenkin tunnistettavissa. Tällaisen tilanteen voi kohdata ladattaessa GIF-kuvaa Internetistä. Vaihe vaiheelta kuva tarkentuu, kunnes täysi resoluutio saavutetaan.

9 Modulaatio ja koodausTimo Mynttinen9 Hierarkkisessa toimintomuodossa kuva on enkoodattu ja se dekoodataan käyttäen päällekkäin meneviä kehyksiä (frames). Tässä viimeisessä toimintomuodossa kuvasta on saatavilla useammantasoisia (eri resoluutiot) esityksiä. Esim. verkosta voi ladata sopivan version pc-ympäristöön ja saman kuvan suuremmalla resoluutiolla insinöörityöasemaan.

10 Modulaatio ja koodausTimo Mynttinen10 JPEG on erityisen sovelias pakattaessa todellisia (real-world), jatkuvasävykuvia (continuous tone). JPEG ei sovellu yhtä hyvin mustavalkokuvien tai paleteista (limited-color-palette) kootun kuvan pakkaukseen.

11 Modulaatio ja koodausTimo Mynttinen11 Häviötön menetelmä JPEG-standardissa perustuu differentiaaliseen pulssikoodimodulaatioon, DPCM (differential pulse code modulation). DPCM-menetelmässä pikselin arvo ennustetaan edellisen pikselin avulla, ja ainoastaan erotus (todellisen pikselin ja ennusteen erotus) enkoodataan, kuva 2a. Jos enkooderissa ei käytetä kvantisointipiiriä, on prosessi häviötön. Dekooderissa vastaanotettu virhearvo lisätään ennusteeseen, kuva 2b.

12 Modulaatio ja koodausTimo Mynttinen12 + + + _ Kuva 2a. DPCM enkooderikytkennän perusidea. sisääntuleva PCM KVANTISOINTI ENTROPIA- ENKOODAUS ENNUSTEEN TEKO lähetettävät binaarikoodisanat

13 Modulaatio ja koodausTimo Mynttinen13 + + Kuva 2b. DPCM dekooderikytkennän perusidea. sisääntulevat binaarikoodisanat ENTROPIA- DEKOODAUS ENNUSTEEN TEKO dekoodattu informaatio

14 Modulaatio ja koodausTimo Mynttinen14 DPCM-menetelmästä voidaan sanoa, että jokainen näytearvo käsitellään erikseen (tehdään ennuste ja lasketaan erotus). Siispä kukin näyte vaatii AINAKIN yhden bitin enkoodauksessa. Kun tähdätään pienempään bittimäärään/enkoodattava näyte (esim. 0.25 bits/pixel) on pakko käyttää jotakin lohkokoodausmenetelmää.

15 Modulaatio ja koodausTimo Mynttinen15 JPEG-standardi määrittelee kolme häviöllistä pakkausmuotoa. Nämä ovat edellä mainitut sarjamuotoinen (baseline sequential mode) -, progressiivinen (progressive mode) – ja hierarkkinen (hierarchical mode) toimintomuoto. Nämä toimintomuodot eroavat toisistaan erityisesti sen suhteen miten DCT-kertoimet siirretään kohdepäähän. Yksinkertaisin menetelmä on sarjamuotoinen pakkaaminen.

16 Modulaatio ja koodausTimo Mynttinen16 Pikseliarvot eivät ole toisistaan riippumattomia, vaan jonkinlaista kerrelaatiota voidaan havaita vierekkäisten pikseliarvojen välillä, spatial redundancy. Voidaan siis sanoa, että jossakin määrin pikselin arvo on ennustettavissa sellaisessa tapauksessa jossa kyseisen pikselin naapurien arvot tunnetaan. Tähän ilmiöön DCT:n käyttö perustuu.

17 Modulaatio ja koodausTimo Mynttinen17 JPEG ei erityisesti määrittele sitä, missä muodossa värillinen kuva enkoodataan. Yhtenä mahdollisuutena on RGB-väriavaruus, toisena mahdollisuutena on esim. komponenttisignaalimuoto. Komponenttisignaaliesitysmuodossa tyypillisesti värierosignaalia näytteistetään horisontaalitasossa puolet siitä mitä luminanssisignaalia, tällöin näytteistyksestä käytetään nimitystä 4:2:2, kuva 3.

18 Modulaatio ja koodausTimo Mynttinen18 GREEN 720*576 BLUE 720*576 RED 720*576 B-Y 720*576 Y 720*576 R-Y 720*576 360*576 JPEG ENCODE JPEG ENCODE JPEG ENCODE MATRIX FILTER AND SCALE Kuva 3. JPEG, 4:2:2-näytteistys.

19 Modulaatio ja koodausTimo Mynttinen19 Kuvakehys sisältää taajuuskomponentteja, kun tarkastellaan kuvan kirkkauden tai värin vaihtelua siirryttäessä kuvapintaa pitkin pysty- ja vaakasuunnassa. Tästä käytetään nimeä spatiaalinen taajuus. Kun kuvassa on tiheää viivoitusta, tarkoittaa se suurta spatiaalista taajuutta viivoja vastaan kohtisuorassa suunnassa. DCT on menetelmä, joka tuo esiin kuvasta sen spatiaaliset taajuuskomponentit. Kuvaa käsitellään numeerisessa muodossa lohko kerrallaan, 8*8 näytepisteen matriiseina, kuva 4.

20 Modulaatio ja koodausTimo Mynttinen20 HORISONTAALISET TAAJUUSKOMPONENTIT VERTIKAALISET TAAJUUSKOMPONENTIT DC-KERROIN DCT Kuva 4. Lohkopohjainen 8*8 DCT-muunnosparit. IDCT

21 Modulaatio ja koodausTimo Mynttinen21 Otetaan esimerkkinä aivan kuvitteellinen kehys, josta poimitaan harmaasävy- eli luminanssi-informaatio (luminance) Y yhden DCT-lohkon alueelta. Oletetaan, että Y:n arvot voivat olla kokonaislukuja väliltä 0-255, siis harmaasävyinformaatio ilmoitetaan 8 bitillä, kuva 5.

22 Modulaatio ja koodausTimo Mynttinen22 707270 7268 64 103101103100999794 132 130129 125121 157 155154153150148145 168163164162163161 156 172170165166163 162158 174170167 164163164159 174173170167 166 160 Kuva 5. Esimerkki yhdestä 8*8-luminanssi-informaatiolohkosta näytteistyksen jälkeen.

23 Modulaatio ja koodausTimo Mynttinen23 Kuvan 5 näytteistä lasketaan vastaavat DCT- komponentit. AC-komponenttien arvoalue on –1023:sta +1023:een, ja tilanvarauksena se tarkoittaa 11- bittistä etumerkillistä kokonaislukua (signed integer). Samaisella tilanvarauksella DC-komponentti voisi siis saada arvot 0:sta 2047:een. Tällainen etumerkitön 11-bittinen kokonaisluku aiheuttaisi prosessiin huomattavia eroavuuksia verrattuna AC-komponenttien käsittelyyn.

24 Modulaatio ja koodausTimo Mynttinen24 Tämän välttämiseksi luku 128 vähennetään kustakin näytearvosta ennen DCT-prosessia. Tällä vähentämisellä ei ole vaikutusta AC- komponentteihin, mutta se siirtää DC-komponentin samalle alueelle, ja näin kaikki komponentit voidaan esittää 11-bittisinä etumerkillisinä kokonaislukuina. Vähennetään kuvan 5 näytteistä kokonaisluku 128, kuva 6:

25 Modulaatio ja koodausTimo Mynttinen25 -58-56-58 -56-60 -64 -25-27-25-28-29-31-34 444211-3-7 29 272625222017 403536343533 28 4442373835 3430 464239 36353631 46454239 38 32 Kuva 6. Kokonaisluku 128 vähennetään kustakin näytteestä.

26 Modulaatio ja koodausTimo Mynttinen26 Kun lohko on käsitelty DCT-algoritmilla, saadaan tulokseksi uusi 8*8 –matriisi, jonka lukuarvot ilmentävät kuvan eritaajuisten osakomponenttien voimakkuutta. Joka lukuarvon laskemiseen on käytetty alkuperäisen lohkon kaikkia lukuja. Matriisin vasemman yläkulman arvo on tärkein, sillä se on ”tasakomponentti”, koko kuvalohkon keskiarvo. Oikeaa alakulmaa kohden siirryttäessä tullaan suuritaajuisiin komponentteihin ja samalla tyypillisesti pienempiin lukuarvoihin. Käänteisellä DCT-operaatiolla voidaan palauttaa taajuusarvoista alkuperäiset kuvalohkon näytearvot.

27 Modulaatio ja koodausTimo Mynttinen27 DCT on erikoistapaus diskreetille Fourier- muunnokselle. DCT:ssä ei ole mukana lainkaan sinitermejä. Havainnollistettuna: näytteet heijastetaan (time reversal) origon suhteen, ja näin aikatasossa pituudeltaan kaksinkertainen näytejono diskreetti Fourier –muunnetaan. Tämä aiheuttaa sinitermien eliminoitumisen, koska heijastamisen jälkeen syntynyt kokonaisnäytejono on aina parillinen (even). Matemaattisesti ilmaistuna 8*8 DCT ja käänteismuunnos 8*8 IDCT:

28 Modulaatio ja koodausTimo Mynttinen28 Yllä olevaa kaavaa (ylinnä olevaa DCT-kaavaa) voidaan havainnollistaa kuvalla 7:

29 Modulaatio ja koodausTimo Mynttinen29 Sarakeindeksi y y=0 y=7 8*8 LOHKO Rivi-indeksi x x=0 x=7 Sarakeindeksi v v=0 v=7 Rivi-indeksi u u=0 u=7 DCT Vakioiden C(u) ja C(v) arvot ovat silloin kun u=0 tai vastaavasti v=0, muutoin niiden arvo on 1. Kuva 7. DCT-muunnoskaavan havainnollistaminen.

30 Modulaatio ja koodausTimo Mynttinen30 Kuvan 6 näytelohkoon kohdistettuna DCT-operaatio voisi tuottaa seuraavanlaisen tuloksen, kuva 8. Vasemmassa yläkulmassa on DC-arvo, muut 63 arvoa ovat AC-arvoja.

31 Modulaatio ja koodausTimo Mynttinen31 862-36-22 2 -247-4-5-30 11 -1171 0 -40-22121 0 -7-210 2 -610000-2 -4 1-2 -3 10111 Kuva 8. DCT-prosessi tuottaa 64 kerrointa, yhden DC-komponentin ja 63 AC-komponenttia.

32 Modulaatio ja koodausTimo Mynttinen32 Edellisen dian kuvasta nähdään, että energia on keskittynyt vasempaan ylänurkkaan. Kertoimien arvot ovat lähellä nollaa suuremmilla taajuuksilla.

33 Modulaatio ja koodausTimo Mynttinen33 Kvantisointi (quantization) DCT-operaation jälkeen on vuorossa lukuarvojen pyöristäminen eli kvantisointi tiettyihin luokkiin. Periaatteessa tämä käy helposti, kun kaikki arvot jaetaan ensin jollakin luvulla ja tulokseksi otetaan vain jakolaskusta saatu kokonaisosa. Kun jakaja valitaan riittävän suureksi, saadaan moni lukuarvo nollaksi ja vain pienitaajuisia komponentteja osoittaviin kohtiin jää nollasta eroavia arvoja. Näin kuvasta on poistettu sellaista suuritaajuista informaatiota, jota silmä ei kuitenkaan voisi havaita.

34 Modulaatio ja koodausTimo Mynttinen34 Se, että aggressiivista kvantisointia voidaan harrastaa, perustuu kahteen tosiasiaan: Ensinnäkin DCT-operaation jälkeen moni kerroin on lähellä nollaa. Esim. kuvan 8 tapauksessa huomataan, että siellä on 57 kappaletta AC-arvoja, joiden itseisarvo on 5 tai vähemmän. Ihmisen silmä (HVS, Human Visual System) on melkoisen epäherkkä näille amplitudiltaan pienille arvoille – ne arvot, jotka ovat lähellä nollaa voidaan pyöristää nollaksi aiheuttamatta suurtakaan vaikutusta jatkuvasävyiseen kuvaan.

35 Modulaatio ja koodausTimo Mynttinen35 Sitä vastoin ihmissilmä on herkkä niihin virheisiin, jotka kohdistuvat DC-kertoimeen tai pienitaajuisiin AC-kertoimiin. Herkkyys pienenee edettäessä kohti suurempitaajuisia AC-kertoimia. On siis mahdollista enkoodata suurempitaajuisia komponentteja käyttäen vähemmän bittejä (ja toki sitten voidaan niitä suurempitaajuisia pieniamplitudisia komponentteja merkitä suoraan nolliksikin).

36 Modulaatio ja koodausTimo Mynttinen36 Kokeellisten tutkimusten avulla on muodostettu kvantisointimatriiseja erikseen sekä luminanssitiedon kvantisointiin että krominanssitiedon kvantisointiin. Nämä kvantisointimatriisit eivät kuulu mihinkään standardiin. Näistä kvantisointimatriiseista löytyy jakaja kullekin DCT-arvolle. Kvantisoituja DCT-arvoja ei siis saada jakamalla jollakin yksittäisellä kokonaisluvulla kaikkia kertoimia.

37 Modulaatio ja koodausTimo Mynttinen37 Jotta kvantisointimatriisin käyttö tuottaisi kokonaislukuja ja jotta kuvan uudelleenmuodostus olisi mahdollista, toimitaan seuraavasti: otetaan DCT- kerroin ja lisätään siihen vastaavan kvantisointimatriisin kertoimen puolikas. Saatu summa jaetaan samaisella kvantisointimatriisin arvolla, ja lopputulos pyöristetään alaspäin. Esimerkkinä luminanssitiedon kvantisointimatriisista kuva 9.

38 Modulaatio ja koodausTimo Mynttinen38 1611101624405161 12 141926586055 1413162440576956 1417222951878062 182237566810910377 243555648110411392 49647887103121120101 7292959811210010399 Kuva 9. Esimerkki käytettävästä luminanssi-informaation kvantisointimatriisista.

39 Modulaatio ja koodausTimo Mynttinen39 Kun kuvan 9 kvantisointimatriisi kohdistetaan kuvan 8 DCT-komponentteihin, saadaan tulokseksi kuvan 10 mukaiset kertoimet.

40 Modulaatio ja koodausTimo Mynttinen40 52000000 -210000000 -80000000 -30000000 00000000 00000000 00000000 00000000 Kuva 10. Kvantisointimatriisin kohdistaminen DCT-komponentteihin tuottaa halutunlaisen lopputuloksen.

41 Modulaatio ja koodausTimo Mynttinen41 Kuvasta 10 huomataan, että nollasta eroavien kertoimien määrä on rajusti vähentynyt. Tämä luonnollisesti vähentää siirrettävien kertoimien lukumäärää. Todennäköisyys sille, että nollasta eroavat kertoimet ovat ylhäällä vasemmassa nurkassa on paljon suurempi kuin se, että ne olisivat oikealla alanurkassa. Niinpä ei ole järkevää siirtää kertoimia esim. rivi kerrallaan.

42 Modulaatio ja koodausTimo Mynttinen42 Zig-Zag skannaus Kuvassa 11 on esitelty yleisessä käytössä oleva AC- kertoimien järjestäminen siirtoa varten. Menetelmän käyttö johtaa siihen, että AC-kertoimet tulevat luetuksi järjestyksessä kohti kasvavaa taajuutta. Seurauksena on, että kaikki nollasta poikkeavat kertoimet tulevat ensimmäisinä, ja sitten tulee pitkä jono nollia.

43 Modulaatio ja koodausTimo Mynttinen43 DC-komponentit enkoodataan DPCM-menetelmällä. DC-komponenttien käsittely erikseen AC- komponenteista perustuu siihen, että vierekkäisten 8*8-lohkojen DC-kertoimet korreloivat voimakkaasti keskenään. Siispä DPCM poistaa tehokkaasti redundanssin.

44 Modulaatio ja koodausTimo Mynttinen44 Kuva 11. AC-kertoimien lukeminen.

45 Modulaatio ja koodausTimo Mynttinen45 Kun skannataan kuvan 11 mukaisessa järjestyksessä, saadaan esimerkin tapauksessa seuraavanlainen lukujono: (5) 2 –21 –8 0 0 0 0 0 –3 (loput 54 nollia) DC-kerroin on suluissa, koska se jatkokäsitellään aiemman selityksen mukaisesti erillään AC- kertoimista.

46 Modulaatio ja koodausTimo Mynttinen46 Jonon pituuteen perustuva RLC-menetelmä RLE, Run Length Coding Edellisen dian lukujonosta huomataan, että se sisältää eri pituisia määriä nollia ja sitten taas nollasta eroavan kertoimen (itse asiassa tuossa esimerkissä tällainen nollasarja esiintyi vain kerran, tyypillisesti niitä on useampi). RLC tarkoittaa, että näitä taajuuskertoimia kootaan sarjaksi pareja [run, amplitude]. run ilmoittaa nollakertoimien lukumäärän ja amplitude sen kertoimen arvon, joka päätti tuon kyseisen nollajonon.

47 Modulaatio ja koodausTimo Mynttinen47 Variable-Length Coding Tiivistys perustuu merkkien vaihtuvamittaiseen koodaukseen. Useammin esiintyvä merkki koodataan vähemmällä määrällä bittejä verrattuna harvemmin esiintyvään merkkiin. Kysymyksessä on entropiakoodaus, ja Huffman- koodaus on tyypillisesti käytössä sopivasti erikoistettuna.


Lataa ppt "Modulaatio ja koodausTimo Mynttinen1 JPEG pakkauksen perusteet Bittikarttakuva muodostuu kuvapisteistä, ja jokaisessa kuvassa on tietty määrä kuvapisteitä."

Samankaltaiset esitykset


Iklan oleh Google