Videonpakkauksen kuvatyypit

Wikipediasta
Siirry navigaatioon Siirry hakuun

Videovuo esimerkiksi MPEG-2 muodostuu erilaisista kuvatyypeistä, joita on kolme kappaletta I(Intra), P(Forward prediction) ja B(Bidirectional prediction). Kukin kuvatyyppi sisältää kuvan tai ennusteen. MPEG-2:ssa kuvanäytteen koko on 16×16 pikseliä. Ensin kuvanäyte muokataan RGB-muodosta YCbCr-muotoon. Dataa tiivistetään siten, että ensin vertaillaan ajallista toistoa tutkimalla peräkkäisiä kuvia. Tämän jälkeen kuva jaetaan 8×8 pikselin lohkoihin, joille suoritetaan DCT-muunnos. Viimeisenä tehdään kvantisointi, jossa informaatiota hukataan. Ajallisessa tiivistämisessä on huomioitava peräkkäisten kuvien sisältävä redundanssi. Tämä tapahtuu parhaiten siten, että lähetään säännöllisin välein näyte ”aidosta” kuvasta, jonka jälkeen kuvataan tähän referenssikuvaa tulleita muutoksia. Tämä tuo mukanaan I, P ja B-kuvatyypit. Nämä kuvatyypit muodostavat kuvaryhmän GOP (Group Of Pictures), yleisin järjestys kuvaryhmälle on I BB P BB P BB P BB P BB I.

I -kuvien tiivistyssuhde on huonoin, sillä se sisältää vain kuvassa itsessään olevaan tietoa, jonka perusteella koodataan P- ja B-kuvat. I kuvat koodataan JPEG-tyyppisesti. P-kuva tehdään käyttämällä edellisen P-tai I-kuvan informaatiota, tätä kutsutaan eteenpäin ennustamiseksi. P -kuvassa vähennetään sekä ajallista, että paikallista redundanssia, jolloin saadaan aikaiseksi I-kuvia parempi tiivistysaste. B -kuvat tarjoavat parhaimman tiivistyssuhteen, sillä ne sisältävät vähiten tietoa. B -kuvat luodaan käyttämällä joko edellisen tai seuraavan I-tai P-kuvan tietoja. Kuvaryhmiä on kahdenlaisia: suljettuja ja avoimia. Suljetussa kuvaryhmässä viimeinen B -kuva voi viitata seuraavan kuvaryhmän I -kuvaan. Avoimessa kuvaryhmässä ei taas ole viitteitä ulkopuolisiin ryhmiin.

Eteenpäin ennustaminen

[muokkaa | muokkaa wikitekstiä]

Ennusteen laskeminen P -kuvassa toimii seuraavasti. Valitaan 16×16 -pikselin kokoinen lohko, joka muodostuu neljästä luminanssilohkosta ja kahdesta krominanssilohkosta. Tämän jälkeen sitä verrataan aiemmin siirrettyyn referenssikuvaan, ja pyritään hakemaan referenssikuvasta sellainen 16×16:n pikselin alue, joka on mahdollisimman samankaltainen valitun lohkon kanssa. Jos molemmat lohkot sijaitsevat samassa paikassa (x,y), tulee niin sanotun siirtymävektorin arvoksi 0. Muussa tapauksessa siirtymävektorin arvo on nollasta poikkeava. Tämän lisäksi referenssikuvan ja koodauksessa olevan kuvan lohkojen erotus lasketaan ja sille suoritetaan DCT-muunnos ja kvantisointi. Näin saatu P -kuva lähetetään yhdessä siirtymävektorin kanssa vastaanottajalle. Jos vastaavaa ruutua ei referenssi kuvasta löydy, kyseinen lohko koodataan I-kuvaksi, eikä siinä enää käytetä referenssikuvan tietoja.

B-kuvat koodataan samalla tavalla, kuin P-kuvat, sillä poikkeuksella, että B-kuvien referenssi ovat kuvaosassa sekä koodattavan B-kuvan edessä, että takana. Tässä saatu tulos menee DCT-muunnokseen, jonka jälkeen se lähetetään vastaan ottajalle kahden siirtymävektorin kanssa.