Esittely latautuu. Ole hyvä ja odota

Esittely latautuu. Ole hyvä ja odota

Motion compensated interframe tMyn1 Motion compensated interframe prediction -koodaus Edellä tutkittiin yksittäisen kehyksen sisällä olevan redundanssin.

Samankaltaiset esitykset


Esitys aiheesta: "Motion compensated interframe tMyn1 Motion compensated interframe prediction -koodaus Edellä tutkittiin yksittäisen kehyksen sisällä olevan redundanssin."— Esityksen transkriptio:

1 Motion compensated interframe tMyn1 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.

2 Motion compensated interframe tMyn2 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.

3 Motion compensated interframe tMyn3 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.

4 Motion compensated interframe tMyn4 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…

5 Motion compensated interframe tMyn5 Kuva 1. Liikkuva kuva, jonka voidaan ajatella muodostuvan staattisesta taustasta ja dynaamisesta objektista edessä.

6 Motion compensated interframe tMyn6 Kuva 1. Liikkuva kuva, jonka voidaan ajatella muodostuvan staattisesta taustasta ja dynaamisesta objektista edessä.

7 Motion compensated interframe tMyn7 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!

8 Motion compensated interframe tMyn8 Kuva 3. Näkymä kamerasta, n:s kehys.

9 Motion compensated interframe tMyn9 Kuva 4. Kamera kiertää, (n+1):s kehys.

10 Motion compensated interframe tMyn10 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.

11 Motion compensated interframe tMyn11 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.

12 Motion compensated interframe tMyn12 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ä.

13 Motion compensated interframe tMyn13 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).

14 Motion compensated interframe tMyn14 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.

15 Motion compensated interframe tMyn15 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ä?

16 Motion compensated interframe tMyn16 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…

17 Motion compensated interframe tMyn17 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!

18 Motion compensated interframe tMyn18 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ä.


Lataa ppt "Motion compensated interframe tMyn1 Motion compensated interframe prediction -koodaus Edellä tutkittiin yksittäisen kehyksen sisällä olevan redundanssin."

Samankaltaiset esitykset


Iklan oleh Google