1 / 18

Motion compensated interframe prediction -koodaus

Motion compensated interframe prediction -koodaus. Edellä tutkittiin yksittäisen kehyksen sisällä olevan redundanssin vähentämistä (spatial redundancy). Nyt perehdytään pohtimaan perusteita kehysten välillä olevan redundanssin vähentämiseen (temporal redundancy).

iniko
Download Presentation

Motion compensated interframe prediction -koodaus

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Motion compensated interframe prediction -koodaus • Edellä tutkittiin yksittäisen kehyksen sisällä olevan redundanssin vähentämistä (spatial redundancy). • Nyt perehdytään pohtimaan perusteita kehysten välillä olevan redundanssin vähentämiseen (temporal redundancy). • On helppo arvata, että kaksi vierekkäistä kehystä sisältää paljon sellaista informaatiota, jotka ovat kummassakin kehyksessä täsmälleen samoja. tMyn

  2. Yksittäisen kehyksen sisällä olevaa redundanssia vähennettiin käyttäen hyväksi kaksiulotteista DCT-prosessia. • Samoilla eväillä jatkaminen ei onnistu: kolmiulotteinen DCT-prosessi ei tuota tarpeeksi hyvää lopputulosta. • Intra-frame DCT-prosessissa pienin käsiteltävä yksikkö oli 8*8-kuvaelementti eli lohko. • Inter-frame –prosessissa pienin käsiteltävä yksikkö on tyypillisesti 16*16 makrolohko. tMyn

  3. Täsmälleen alkuperäistä videoinformaatiota ei pystytä siirtämään lähteeltä kohteeseen minkäänlaisessa tapauksessa, koska vastaanotetun informaation dekoodausvaiheessa tulee joka tapauksessa pieniä muutoksia. • Niinpä enkooderi sisältää paikallisen dekooderin, joka muodostaa sellaisen kehyksen, joka on täsmälleen samanlainen kuin vastaanottopäässäkin tulisi muodostettua. • Täten ennuste seuraavasta kehyksestä lähetyspäässä (encoder) tehdään tuon paikallisen dekooderin perusteella. tMyn

  4. Ajatellaan aluksi yksinkertaista tapausta, jossa liikkuva kuva saadaan aikaan siten, että taustalla on staattinen näkymä, ja edessä on jokin liikkuva objekti, kuvat 1 ja 2 edustavat peräkkäisiä kehyksiä. • Heti nähdään helposti, että siirrettävien bittien määrää saadaan helposti vähennettyä: • Pakataan 1. kehys kuten aiemmin (DCT, kvantisointi etc) • Käydään seuraava kehys lohko kerrallaan läpi: verrataan kutakin lohkoa edellisen kehyksen (reference image) vastinlohkoon. Jos ne ovat samanlaisia, saadaan tämä tieto siirrettyä jollakin tiiviillä tavalla. • Ainoastaan ne lohkot, jotka ovat muuttuneet, joudutaan koodaamaan ”pitkän kaavan mukaisesti”, siis DCT, kvantisointi… tMyn

  5. Kuva 1. Liikkuva kuva, jonka voidaan ajatella muodostuvan staattisesta taustasta ja dynaamisesta objektista edessä. tMyn

  6. Kuva 1. Liikkuva kuva, jonka voidaan ajatella muodostuvan staattisesta taustasta ja dynaamisesta objektista edessä. tMyn

  7. Kuvien 1 ja 2 edustama ”liikkuva kuva” on käytännössä harvinaista herkkua. • Usein on niin, että sen lisäksi että edessä oleva objekti liikkuu, niin myöskin kamera voi hieman vaihtaa asentoaan (tai niinkin, että kamera seuraa liikkuvaa objektia). • Jos tällaiseen tilanteeseen soveltaa kuvien 1 ja 2 kohdalla selostettua tekniikkaa, niin säästöä siirrettävien bittien määrässä ei synny juuri lainkaan. • Silti näyttäisi ilmeiseltä, että kahdessa peräkkäisessä kehyksessä on paljon redundanssia, kuvat 3 ja 4! tMyn

  8. Kuva 3. Näkymä kamerasta, n:s kehys. tMyn

  9. Kuva 4. Kamera kiertää, (n+1):s kehys. tMyn

  10. Kuvista 3 ja 4 huomataan, että redundanssia on olemassa runsaasti, kunhan vain osattaisiin kertoa dekooderille minne se on siirtynyt. • Asia ratkaistaan lähettämällä dekooderille pyyntö käyttää edellisen kehyksen dataa sekä liikevektori (motion vector), joka kertoo, mistä kohden edellistä kehystä tieto löytyy. • Kehysten 1 ja 2 kohdalla tausta ei liikkunut lainkaan, ja tällaisessa tapauksessa liikevektorin arvo on nolla. • Liikevektorilla on sekä horisontaali (x)- että vertikaali (y) –arvot. tMyn

  11. Prosessia, jossa haetaan liikevektorille arvo, kutsutaan liikkeenarvioinniksi (motion estimation). • Kun käytetään liikevektoria informaation pakkaamiseen (liikkeen vaikutuksen vähentäminen), puhutaan liikkeen kompensaatiosta (motion compensation). • Edellä esitetyissä kahdessa esimerkissä ei ole mitään poikkeuksellista. • Niinpä voidaan ajatella, että tällaista samankaltaisuutta voidaan etsiä lohko kerrallaan kahdesta peräkkäisestä kehyksestä aina, kun halutaan pakata videoinformaatiota. tMyn

  12. Yksinkertaisin menetelmä on nimeltään ”block matching”. • Tässä menetelmässä etsitään lohko kerrallaan samanlaista lohkoa referenssikehyksestä (edellisestä kehyksestä). • Ainoa ongelma on siinä, että miten löytää tuo samanlainen lohko sieltä referenssikehyksestä!!! • Videon kohdalla Nyquistin näytteenottotaajuusvaatimus ei läheskään toteudu!! • Edellä todettiin, että tavoite on löytää käsiteltävästä kehyksestä samanlainen lohko kuin mikä esiintyy jossakin päin referenssikehystä. tMyn

  13. Milloin yksittäinen lohko on riittävän samanlainen kuin mitä referenssikehyksestä löytyi? • Valaistus voi muuttua, objekti on voinut liikkua jonkin välimatkan, joka on eri suuri arvo kuin kokonaislukumäärä kertaa pikselin edustama matka, objekti voi pyörähtää akselillaan… • Käytössä on MMSE (Minimum Mean Square error) tai MAD (Minimum Absolute Difference). tMyn

  14. Vaikkei tutkittava lohko olisikaan täsmälleen samanlainen kuin mitä referenssikehyksen lohko, voidaan sitä siis mahdollisesti kuitenkin käyttää hyväksi. • On mahdollista määritellä erotus (difference) sille lohkolle joka halutaan siirtää verrattuna referenssikehyksen lohkoon. Tätä erotusta kutsutaan jääännösarvoksi (residual). • Nyt voidaan siis lähettää koodattuna nuo jäännösarvot ja liikevektori. • Vastaanottopäässä dekoodataan jäännösarvot ja lisätään niiden vaikutus liikevektorin edustamaan lohkoon. tMyn

  15. Tällaisessa tapauksessa pitää pystyä vertailemaan kumpi on järkevämpää: koodata alue yrittämättä mitään tiivistämistä vaiko käyttää liikevektoria ja jäännösarvoja (MAD, MMSE). • Miksi 16*16 makrolohko on tyypillinen koko lohkon kokoa mietittäessä? tMyn

  16. Jos valittaisiin kovin iso lohko, niin samanlaisen lohkon löytyminen referenssikehyksestä olisi hankalaa. • Jos valittaisiin kovin pieni lohko, niin liikevektoreiden laskeminen alkaisi olla työlästä hommaa… tMyn

  17. Miten samanlaisen lohkon etsiminen suoritetaan? • Ensimmäiseksi voisi ajatella ”Full-Search Block Matching” –menetelmää. • Miten nopeasti objekti liikkuu ruudulla? • Jos objekti liikkuu nopeammin kuin mitä vastaa aika kahden vierekkäisen kehyksen välillä, niin silloin ei ole mahdollista ennustaa objektin liikettä. • Voisi ajatella, että pyritään seuraamaan objektia, joka liikkuu korkeintaan puolet ruudun leveydestä kahden vierekkäisen kehyksen välisenä aikana. • Tämä vastaisi objektia, joka ilmestyy ruudulle vasemmalta ja häviää oikealle vähemmässä kuin sekunnin kymmenyksen aikana! tMyn

  18. Jos tyydytään seuraamaan objektia, joka ohittaa horisontaalisuunnassa näytön puolessa sekunnissa, niin silloin seurataan liikettä, joka vastaa noin 50 pikselin siirtymistä/kehys (720/(0,5*25)=57,6). • Jos halutaan ennustaa esim. kolme seuraavaa kehystä, niin silloin pitää pystyä seuraamaan 150 pikselin aluetta joka suuntaan. • Tutkimuksissa on todettu, että horisontaalinen liike on tyypillisesti nopeampaa kuin vertikaalinen (keskiarvoisesti se on kaksinkertainen). Niinpä seurattava alue muuttuisi alueeksi pikseliä, eli 300 * 150 pikseliä. tMyn

More Related