500 likes | 615 Views
Intra-frame DCT -koodaus. Siirrettävien bittien määrää voidaan vähentää poistamalla redundanttista informaatiota signaalista ennen lähettämistä ja palauttamalla ne sitten tarpeellisella tarkkuudella vastaanottopäässä.
E N D
Intra-frame DCT -koodaus • Siirrettävien bittien määrää voidaan vähentää poistamalla redundanttista informaatiota signaalista ennen lähettämistä ja palauttamalla ne sitten tarpeellisella tarkkuudella vastaanottopäässä. • Videosignaalissa voidaan erottaa kahdenlaista redundanssia: ’spatial and temporal redundancy’ sekä ’psychovisual redundancy’. tMyn
Spatial and temporal redundancy: • Pikseliarvot eivät ole toisistaan riippumattomia, vaan jonkinlaista kerrelaatiota voidaan havaita vierekkäisten pikseliarvojen välillä sekä yksittäisen kehyksen sisällä (spatial redundancy) että kehysten välillä (temporal redundancy). • Voidaan siis sanoa, että jossakin määrin pikselin arvo on ennustettavissa sellaisessa tapauksessa jossa kyseisen pikselin naapurien arvot tunnetaan. • Tämä luku keskittyy kehyksen sisällä olevanredundanssin löytämiseen ja poistamiseen ennen siirtämistä. tMyn
Psychovisual redundancy: • Ihmissilmällä on rajallinen kyky erotella pieniä avaruudellisia, kolmiulotteisia yksityiskohtia. • Silmä ei ole erityisen herkkä erottamaan tarkasteltavan objektin reunojen yksityiskohtia tai sellaisia yksityiskohtia, jotka esiintyvät nopean muutoksen taitekohdassa. tMyn
Diskreetti kosinimuunnos, DCT (Discrete Cosine Transform) on mukana useissa pakkausmenetelmissä. • DCT:ta voidaan havainnollistaa joukkona suodattimia, joiden kanssa operoidaan rinnakkain yhtä aikaa. • Enkoodausvaiheessa DCT-prosessia seuraa kvantisointi (quantization), näytteiden järjestäminen tarkoituksenmukaiseen jonoon (zig-zag scanning), näytteiden ryhmittely joukoksi pareja (run length coding) ja entropiakoodaus (variable-length encoding). • Tarkastellaan näitä vaiheita jatkossa askel kerrallaan. tMyn
DCT (type II) compared to the DFT. For both transforms, there is the magnitude of the spectrum on left and the histogram on right; both spectra are cropped to 1/4, to zoom the behaviour in the lower frequencies. The DCT concentrates most of the power on the lower frequencies. Lähde: Wikipedia tMyn
Videosignaalin pakkauksen yhteydessä puhutaan usein makrolohkoista (macroblock) ja lohkoista (block), kuvat 1a, 1b ja 1c. tMyn
Kuva 1a. Jaetaan kenttä 16*16 makrolohkoihin (macroblocks). tMyn
Kuva 1b. Edellisen kuvan vahvennettu makrolohko (macroblock) koostuu 16:sta näytteestä (sample) ja 16 juovasta (line), yhteensä 4 lohkosta (block). tMyn
Kuva 1c. Edellisestä kuvasta kukin lohko (block) koostuu 8 näytteestä (sample) ja 8 juovasta (line). tMyn
Kun siis vaikkapa ajatellaan Standardi-DigiTV-ympäristöä, niin siinä kuvan resoluutio on 720*576 pikseliä, jolloin yksi kehys koostuu (720:16)*(576:16)=45*36=1620 makrolohkosta, kuva 1d. • Kun ajatellaan esim. harmaasävyn DCT-prosessointia, niin silloin kehys jaetaan 1620*4=6480 lohkoon (8*8 pikseliä). tMyn
Kuva 1d. Standardi-DigiTV:n kehys, kuvasuhde 16:9, 1620 makrolohkoa. tMyn
MPEG tuntee käsitteen viipale, slice. • Kuvassa 2 havainnollistetaan viipaleen ja makrolohkon välistä yhteyttä MPEG:ssa. tMyn
720 samples Frame Slice 1 Slice 2 576 lines Slice 36 16 samples 1 3 2 4 45 16 lines Slice Macroblock Kuva 2. MPEG-2:n viipale (slice). tMyn
Yleisimmät näytteistykset MPEG:ssa ovat 4:2:0 ja 4:2:2, kuvat 3a ja 3b. • Näytteistys tapahtuu DigiTV.ssä komponenttimuodossa. • Komponenttimuoto ei ole täsmälleen sama kuin komponenttimuoto YUV, vaikka näitä käytetäänkin sekaisin. tMyn
GREEN 720*576 RED 720*576 BLUE 720*576 MATRIX Y 720*576 R-Y 720*576 B-Y 720*576 FILTER AND SCALE 360*288 360*288 MPEG-2 ENCODE MPEG-2 ENCODE MPEG-2 ENCODE Kuva 3a. MPEG-2, 4:2:0 näytteistys. tMyn
GREEN 720*576 RED 720*576 BLUE 720*576 MATRIX Y 720*576 R-Y 720*576 B-Y 720*576 FILTER AND SCALE 360*576 360*576 MPEG-2 ENCODE MPEG-2 ENCODE MPEG-2 ENCODE Kuva 3b. MPEG-2, 4:2:2 näytteistys. tMyn
Vastaavia DCT-lohkoja havainnollistetaan kuvissa 4a ja 4b. tMyn
4 5 8 8 8 8 1 8 0 8 8 2 3 8 Y Kuva 4a. Colour subsampling 4:2:0, DCT blocks. tMyn
5 6 7 8 8 8 8 8 8 1 8 0 4 2 3 8 8 8 Y Kuva 4b. Colour subsampling 4:2:2, DCT blocks. tMyn
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 5. tMyn
DCT DC-TERMI INCREASING HORIZONTAL FREQUENCY INCREASING VERTICAL FREQUENCY Kuva 5. 8*8 DCT-menetelmä prosessoi 8*8 DCT-kerrointa. tMyn
Otetaan esimerkkinä aivan kuvitteellinen kehys, josta poimitaan mustavalko- eli luminanssi-informaatio (luma) Y yhden DCT-lohkon alueelta. • Oletetaan, että Y:n arvot voivat olla kokonaislukuja väliltä 16-235, siis mustavalkoinformaatio ilmoitetaan 8 bitillä, kuva 6. tMyn
70 64 72 70 70 68 68 72 100 103 99 103 94 97 101 94 129 132 132 130 132 129 121 125 157 157 154 153 148 155 150 145 164 163 162 168 161 163 161 156 165 162 166 170 172 163 158 163 163 159 174 164 170 164 167 167 170 166 174 173 166 167 167 160 Kuva 6. Luminenssi-informaatio 8*8 lohkon alueelta näytteenoton jälkeen. tMyn
Kuvan 6 8*8 näytelohkoon ei suoraan kohdisteta DCT-operaatiota, vaan esim. lasketaan ensin näytteiden keskiarvo. • Sovitaan niin, että mitä pienempi näytearvo, niin sitä tummemmanharmaata se edustaa (pienin näytearvo sovittiin olevan 16). Valkoista edustaa suurin käytettävissä oleva luku, eli luku 235. • Olkoot keskiarvo 128. Tämä luku vähennetään kaikista näytearvoista, jolloin osa näytearvoista menee negatiivisiksi, kuva 7. tMyn
-58 -64 -56 -58 -58 -60 -60 -56 -28 -25 -29 -25 -34 -31 -27 -34 1 4 4 2 4 1 -7 -3 29 29 26 25 20 27 22 17 36 35 34 40 33 35 33 28 37 34 38 42 44 35 30 35 35 31 46 36 42 36 39 39 42 38 46 45 38 39 39 32 Kuva 7. Luminenssi-informaatio 8*8 lohkon alueelta keskiarvon vähentämisen jälkeen. tMyn
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. tMyn
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: tMyn
Yllä olevaa kaavaa (ylinnä olevaa DCT-kaavaa) voidaan havainnollistaa kuvalla 8: tMyn
DCT Sarakeindeksi y Sarakeindeksi v y=0 v=0 v=7 y=7 x=0 u=0 8*8 LOHKO Rivi-indeksi u Rivi-indeksi x u=7 x=7 Kuva 8. DCT-muunnoskaavan havainnollistaminen. Vakioiden C(u) ja C(v) arvot ovat silloin kun u=0 tai vastaavasti v=0, muutoin niiden arvo on 1. tMyn
Kun muistellaan Fourier-sarjaesitysmuotoa, niin huomattiin, että signaali voitiin hajottaa joukkoon sini- ja kosinitermejä. Näitä termejä, joista alkuperäinen signaali voidaan jälleen koota, kutsutaan perusfunktioiksi (basis function). • Diskreetissä kosinimuunnoksessa tällainen perusfunktio voidaan ilmaista vaikkapa muodossa tMyn
DCT:ssa pätee sama kuin Fourier-sarjaesitrysmuodossakin: käyttäen näitä perusfunktioita alkuperäinen 8*8-lohko voidaan esittää alkuperäisenä. • Matlabilla katsottuna kaksidimensioiset perusfunktiot näyttävät tältä: tMyn
Kuvan 7 näytelohkoon kohdistettuna DCT-operaatio voisi tuottaa seuraavanlaisen tuloksen, kuva 9. • Vasemmassa yläkulmassa on DC-arvo, muut 63 arvoa ovat AC-arvoja. tMyn
-3 2 27 86 6 2 -2 -2 -3 -247 0 -5 1 -3 -4 1 -1 -117 1 -1 -1 -1 0 -1 -2 -40 1 2 -2 2 1 0 -1 -2 1 -7 -1 0 -1 2 0 -2 0 1 -6 0 -1 0 -1 -1 -4 -2 -1 -1 1 -1 -1 1 -3 -3 1 1 0 1 Kuva 9. DCT-toiminto kohdistettu luminenssi-informaatioon 8*8 lohkon alueelta keskiarvon vähentämisen jälkeen. tMyn
Edellisen dian kuvasta nähdään, että energia on keskittynyt vasempaan ylänurkkaan. • Kertoimien arvot ovat lähellä nollaa suuremmilla taajuuksilla. tMyn
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. tMyn
Se, että aggressiivista kvantisointia voidaan harrastaa, perustuu kahteen tosiasiaan: • DCT-operaation jälkeen moni kerroin on lähellä nollaa. • Esim. kuvan 9 tapauksessa huomataan, että siellä on 57 kappaletta AC-arvoja, joiden itseisarvo on 5 tai vähemmän. tMyn
Ihmissilmä on melkoisen tunnoton virheille, jotka kohdistuvat tämän tyyppisiin DCT-arvoihin, joiden itseisarvo on riittävän pieni. Niinpä ne voidaan laittaa nollaksi aiheuttamatta sen suurempaa vahinkoa kuvan laadulle. • Ihmissilmä on herkkä niihin virheisiin, jotka kohdistuvat DC-kertoimeen tai pienitaajuisiin AC-kertoimiin. Herkkyys pienenee edettäessä kohti suurempitaajuisia AC-kertoimia. tMyn
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. • Kvantisoinnin tuloksena kuvan 9 DCT-arvot voisivat olla seuraavanlaisia, kuva 10: tMyn
0 0 2 5 0 0 0 0 0 -21 0 0 0 0 0 0 0 -8 0 0 0 0 0 0 0 -3 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 Kuva 10. DCT-kertoimiin kohdistettu aggressiivinen kvantisointi kvantisointimatriisin avulla. tMyn
Kuvasta 10 huomataan, että nollasta eroavien kertoimien määrä on rajusti vähentynyt. • Tämä luonnollisesti vähentää siirrettävien kertoimien lukumäärää – siis tarvittavien bittien mää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. tMyn
Zig-Zag skannaus • Kuvassa 11 on esitelty yleisessä käytössä oleva kertoimien järjestäminen siirtoa varten. • Menetelmän käyttö johtaa siihen, että 1. valitaan DC-kerroin ja sitten tulevat AC-kertoimet kohti kasvavaa taajuutta. • Seurauksena on, että kaikki nollasta poikkeavat kertoimet tulevat ensimmäisinä, ja sitten tulee pitkä jono nollia. tMyn
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 erillään AC-kertoimista. tMyn
Jonon pituuteen perustuva RLE-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). • RLE 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. tMyn
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. tMyn