Kehysten välinen

Kenttien välisen tai kehysten välinen tai muun kuvan avulla, että puristus video- kuvan tai kehyksen, jonka omistaja on virta, joka on koodattu kehysten välisen ennustuksen algoritmi. Alkuperäisten makrolohkojen sijainnin ennustaminen riippuu aiemmin koodatuista kuvista . Tämän algoritmin tarkoituksena on määritellä liikevektori, joka kääntää lohkon siirtymän jo koodatussa ns. Viitekuvassa ja sen sijainnin nykyisessä kuvassa. Tätä ennustusta kutsutaan myös ajalliseksi ennustukseksi. Sen tarkoituksena on hyödyntää vierekkäisten kuvien tai kehysten välisiä ajallisia redundansseja ja siten saada parempi pakkaussuhde. Se eroaa kehyksensisäisestä kehyksestä, joka koodataan käyttämällä spatiaalista ennustusalgoritmia . Keskinäisen ennustamisen etuna on, että liikkuvan kohteen koodaamiseksi riittää, että löydetään olemassa oleva lohko jo koodatusta kuvasta, joka muistuttaa nykyistä lohkoa, ja koodataan näiden kahden lohkon komponenttien arvojen ero sekä kun taas sisäistä ennustamista varten nykyisen kuvan kukin makrolohko on koodattava naapureiden tekstuurista, joka voi vaihdella melko helposti.

Kehysten välinen ennustus

Koodattavaksi kuva jaetaan makrolohkoihin (lohkot, joiden koko on 16x16 pikseliä). Raakapikselien arvon välittömän koodaamisen välttämiseksi kukin makrolohko ennustetaan joko naapurustostaan, kuten on tapahtunut kehyksen sisäisissä ennusteissa, tai vertailukuvista (kehysten välinen tapaus). Interkoodaus koostuu nykyisen lohkon kaltaisen lohkon löytämisestä referenssikuvasta . Tämä prosessi suoritetaan lohkosovitusalgoritmilla . Jos kooderi onnistui löytämään tällaisen lohkon, nämä kaksi lohkoa yhdistävää vektoria kutsutaan liikevektoriksi ( (en) vektoriliikkeeksi ) ja tämän vektorin ja ennustetun vektorin välinen ero koodataan. Tämän ennustetun vektorin määrittelee standardi ja se on jo koodattujen naapurimaiden makrolohkojen vektorien funktio. Sitten prosessi laskee ennustusvirheen, toisin sanoen luminanssin ja krominanssin komponenttien arvon eron vertailukuvassa ennustetun lohkon ja alkuperäisen lohkon, jota kutsutaan myös jäännöslohkoksi, välillä. Jälkimmäinen koodataan binäärivirtaan muunnoksen ja kvantisoinnin vaiheiden jälkeen . Videokoodauksessa tätä vektorihakuvaihetta kutsutaan liikkeen estimoinniksi ja erojen laskemisessa on liikkeen kompensointi .

Kaavamaisesti:

Vecteur de mouvement - Vecteur prédit ⇒ Vecteur différentiel qui sera codé. Bloc ciblé - Bloc courant ⇒ Bloc résiduel qui sera transformé, quantifié et codé.

Seuraava kuva kuvaa ennustusprosessia:

Dekooderin näkökulmasta prosessi tarvitsee vain jäännöslohkon ja vektorin makrolohkon arvojen palauttamiseksi. Itse asiassa myös viitekuvat dekoodataan aiemmin ja ennustettu vektori tunnetaan, koska sen määritelmä tunnetaan standardilla. Tuloksena saatu dekoodattu lohko eroaa alkuperäisestä lohkosta, koska se on häviöllistä pakkausta kvantisoinnin vuoksi.

Kaavamaisesti:

Vecteur prédit + Vecteur différentiel ⇒ Vecteur de mouvement à appliquer dans l'image de référence. Bloc ciblé + Bloc résiduel ⇒ Bloc décodé.

Tämän tyyppisellä ennustuksella on etuja ja haittoja. Jos algoritmi pystyy löytämään lohkon, jonka komponenttiarvot ovat hyvin lähellä nykyistä lohkoa, ennustusvirhe on pieni ja siksi kun se on muunnettu ja pakattu, "liikevektorin ja jäännöslohkon" joukon koko on pienempi kuin pakkaamattoman virtalohkon. Kääntäen, jos liikeestimaatti ei löydä sopivaa lohkoa, ennustusvirhe on suuri ja koodattu virta saa suuremman koon kuin nykyinen pakkaamaton lohko. Jälkimmäisessä tapauksessa kooderi valitsee tämän lohkon raakakoodauksen. Lyhyesti sanottuna, mitä parempi ennuste, sitä pienempi ero ja siksi parempi puristus.

Tämä ennustustekniikka on rajoitettu, koska sitä ei voida käyttää koko videon pakkaamiseen yksinään. Jos lohko, johon liikevektori viittaa viitekehyksessä, koodattiin myös kehysten välisestä ennustusmoodista, myös sen koodaukseen tehdyt virheet levitetään seuraavalle lohkolle. Toisin sanoen, jos kaikki kuvat koodattaisiin vain tällä tekniikalla, dekooderilla ei olisi mitään mahdollisuutta synkronoida videovirtaa, koska referenssikuvien saaminen olisi mahdotonta. Siksi on välttämätöntä koodata tiettyjä kuvia ajasta riippumatta, kuten tapahtuu I-kuville, joita kutsutaan myös sisäisiksi kehyksiksi tai I-kehyksiksi, jotka on koodattu sisällöltään vain spatiaalisella ennustusalgoritmilla ja jotka eivät tarvitse lisätietoa dekoodattu. Näistä luotettavista kuvista on sitten mahdollista purkaa vertailukuvat.

Rakenne ryhmä kuvia (GOP)

Useissa koodekeissa määritetään kahden tyyppiset inter-kehykset: P-kuvat (P-kehykset) ja B-kuvat (B-kehykset). I-kehyksillä nämä kolme kuvatyyppiä muodostavat kuvaryhmän , alias GOP ( (en) Group Of Pictures ), joka toistetaan jaksoittain koodauksen aikana. GOP koostuu I-kuvasta ja sisältää yleensä useita P- ja B-kuvia, mikä tarkoittaa, että yksi I-kuva voi purkaa koko GOP: n. Dekoodauksen synkronointi suoritetaan virtauksen I-kuvien jaksollisuuden perusteella.

Yksi GOP: n tyypillisistä rakenteista on IBBPBBP ... I-kuvaa käytetään ennustamaan ensimmäinen P-kuva, sitten näistä kahdesta kuvasta prosessi ennustaa kaksi ensimmäistä B-kuvaa. Toinen P-kuva ennustetaan ensimmäisestä P-kuvasta. kehys ja näiden kahden kuvan välissä olevat kaksi B-kuvaa ovat seuraavat. Seuraava kuva kuvaa tämän tyyppistä GOP: ta:

Kuvien ennustamiseksi on tarpeen muuttaa koodattavien kuvien järjestystä. Tämän vuoksi sekvensseri määrittää koodauksen aikana etukäteen kuvien tyypin tietäen GOP: n rakenteen ja muuttaa koodattavien kuvien järjestystä kaikkien referenssikuvien saamiseksi. Tässä esimerkissä näyttöjärjestys on I B1 B2 p.  1 B3 B4 Sivumäärä  2, mutta koodauksen järjestys on I p.  1 B1 B2 Sivumäärä  2 B3 B4. Koska GOP on dekoodattava kokonaan, jotta se olisi näkyvissä, dekoodauksen ja kuvan lähdön välillä on annettava viiveaika.

Inter-kehysten tyypit

Inter-kehykset ovat kuvatyyppejä tai kehyksiä, jotka ovat riippuvaisia ​​dekoodattavista ns. Viitekuvista. P-kehysten ja B-kehysten välinen ero voidaan pienentää vertailukehyksiksi, joita ennustealgoritmi käyttää liikeestimointiin ja liikekorjaukseen.

P-runko

P-kehykset ovat kuvia, jotka ennustetaan eteenpäin edellisestä kuvasta . Ennustus tehdään kuvasta, joka sijaitsee aikaisemmin, lähinnä I-kuvan, ja joka vaatii vähemmän koodausinformaatiota (noin 50%: n voitto I-kuvan kokoon verrattuna). Koodattava informaatio liittyy liikevektoreihin ja ennustekorjaukseen, jonka kääntävät jäännöslohkon muunnetut kertoimet.

B-runko

B-kehykset määritellään kaksisuuntaisiksi ennustetuiksi kuviksi, eli ne ennustetaan tulevasta kuvasta ja aikaisemmasta kuvasta . Tämän tyyppinen ennustus vaatii myös vähemmän koodaustietoa kuin P-kehykset, koska ne voidaan ennustaa ja interpoloida kahdesta viitekuvasta, jotka kehystävät sitä ajallisesti. Kuten P-kehykset, myös B-kehykset tarvitsevat dekoodaamiseksi liikevektorin ja jäännöslohkotiedot sekä vertailukehykset. Liiallisen virheen etenemisen välttämiseksi B-kuvia ei yleensä käytetä viitekuvana.

H.264-standardin ennusteparannukset

Yksi suurimmista parannuksista H.264- standardiin on kehysten välinen ennakointi. Hän sallii:

H.264-lohko-osiointi

Tarkan ja tehokkaan liikekompensoinnin saavuttamiseksi kukin luminanssin makrolohko voidaan jakaa alilohkoihin (katso alla oleva kuva). MPEG-2- standardissa osioiden lukumäärä on 4: 1 lohko 16x16 pikseliä, 2 lohkoa 16x8 pikseliä, 2 lohkoa 8x16 pikseliä tai 4 lohkoa 8x8 pikseliä. Kukin osiointi liittyy koodien väliseen moodiin. Kullekin moodille liikeestimaatti löytää parhaan liikevektorin alilohkolle, joka osoittaa samankokoiseen lohkoon referenssikuvassa, ja kompensointi laskee makrolohkon koodauskustannusten likimääräisen annetulle moodille. Kun kaikki tilat on saavutettu, algoritmi valitsee ositustilan, joka antoi pienimmät kustannukset, ja suorittaa makrolohkon lopullisen koodauksen.

H.264-standardissa osiointitilojen määrä kasvaa mahdollisuuden jakaa 8x8-lohko alilohkoiksi, joiden koko on 4x8 pikseliä, 8x4 pikseliä tai 4x4 pikseliä.

Neljännespikselin tarkkuus

Liikevektorin etsimisen tarkkuuden vuoksi referenssikuvaa suurennetaan suuremmalla tarkkuudella. Sen sijaan, että työskentelisi pikselien täydellisen tarkkuuden kanssa, vektorin koordinaatit voidaan asettaa desimaalilukumäärään pikseleitä. Todennäköisyys saada nykyisen lohkon kaltainen lohko on suurempi ja siksi haku on paljon tehokkaampaa. MPEG-2-standardissa vektorin tarkkuus voi nousta puoleen pikseliin. Kohdassa H.264 neljännespikselin tarkkuus voidaan valita kullekin ennustusmoodille. Alipikseliarvojen käyttämiseksi, joita ei ole, käytetään interpolointitekniikoita . Interpolaatio puolipikselien saamiseksi koostuu 6-pituisen suodattimen soveltamisesta nykyisen pikselin lähialueelle. Tämän ensimmäisen operaation avulla voidaan laskea neljännespikseliarvot, jotka suoritetaan bilineaarisella interpoloinnilla H.264-standardissa. Alla olevassa kuvassa on esitetty eri pikselit, jotka on laskettava neljännespikselin tarkkuuden saavuttamiseksi.

Alipelien interpolointi.jpg

Useita viitteitä

Nämä useat viitteet liittyvät liikkeen estimointivaiheeseen. Sen avulla on mahdollista löytää, mikä on paras viitekuva aikaisemmin kullekin osiolle tai aliosioon koodatusta kuvasta. Siksi voi olla useita viitekuvia, joita käytetään makrolohkon koodaamiseen. Jos kyseessä on P-kuva, aikaisempien viitekuvien määrä voi olla enintään 4, ts. Hakualgoritmi tallentaa vektorin jokaiselle referenssikuvalle nykyiselle lohkolle ja laskee koodauskustannukset. Kun hän on tutustunut kaikkiin viitteisiin, hän vertaa ja valitsee pienimmät kustannukset. Viitekuvaa koskevat tiedot koodataan sitten. B-kuvien osalta myös viitteiden määrä voi kasvaa, mutta vain aikaisemmissa kuvissa , joten jos valitaan kaksi viitekuvaa, prosessi käyttää lähintä aikaisempaa kuvaa ja tulevaa kuvaa . Jos neljä kuvaa valitaan, tulevaisuudessa kuvaa käytetään sekä kolmen viimeisen kuvaa lähinnä olevaan kuvaan. Standardissa referenssikuvat pidetään puskureissa, joita kutsutaan List0 aikaisemmille kuville ja List1 tuleville kuville . Vaikka referenssikuvista johtuisi koodauskustannukset, tämä tekniikka mahdollistaa kuvan laadun parantamisen ja paremman pakkaamisen, ennustevirheen ollessa yleensä vähemmän tärkeä.

Useita viitteitä.jpg

Parannettu Suora / Ohita-tila

Ohitus- ja Suorat-tiloja käytetään usein varsinkin B-kuvien kanssa. Ne vähentävät merkittävästi koodattavien bittien määrää. Jos algoritmi valitsee tämän moodin, mitään lisätietoa ei koodata, ei liikevektoria eikä jäännöslohkoja. Tässä tapauksessa dekooderi päättää ennustevektorin, joka on määritetty jo koodatuista naapurimaisista makrolohkoista. Kooderi tallentaa vain skip-makrolohkoa vastaavan ennustustilan tiedot.

H.264-standardissa on kaksi tapaa päätellä liike:

Se käyttää samassa paikassa olevan Lista1-kuvan lohkon liikevektoria johtaakseen nykyisen lohkon liikevektorin. List1-puskurilohko käyttää List0-lohkoa viitteenä.

Suora skip.jpg

Se ennustaa liikkumisen naapurimaisista makrolohkoista nykyisessä kuvassa. Mahdollinen kriteeri voi olla kopioida liikevektori naapurilohkosta. Näitä tiloja käytetään kuvan yhtenäisillä alueilla, joilla ei ole paljon liikettä.

Estä partition.jpg

Yllä olevassa kuvassa vaaleanpunaiset lohkot ohitetaan, käyttämällä Suora / Ohita-tilaa. Tässä esimerkissä suurin osa kuvan B makrolohkoista koodattiin tällä moodilla.

lisäinformaatio

Vaikka termin kehys käyttö on yleistä epävirallisessa käytössä, käytetään yleisempää käsitettä sanan kuva eikä kehys kanssa, koska kuva voi yhtä hyvin olla koko kehys tai yksi kenttä. (Kenttä) lomitettu .

Koodekkeja videokuvia, kuten MPEG-2 , H.264 tai Ogg Theora vähentää datan virta seuraamalla avainkehystä yhden tai useamman muun kuvan. Tyypillisesti nämä kehykset käyttävät pienempää bittinopeutta kuin mitä ne ehdottomasti vaatisivat, koska suuri osa kustakin kehyksestä on - yleensä - samanlainen kuin edellinen. Siksi vain liikkuvat osat on koodattava.

Viitteet

  1. H.264-ohjelmisto: http://iphome.hhi.de/suehring/tml/download/
  2. T. Wiegand, GJ Sullivan, G. Bjøntegaard, A.Luthra: Katsaus H.264 / AVC-videokoodausstandardiin . IEEE-tapahtumat videotekniikan piireissä ja järjestelmissä, voi. 13, nro 7, heinäkuu 2003
  3. ThomasWiegand, Gary J.Sullivan, "  " H.264 / AVC-videokoodausstandardin yleiskatsaus  " , http://ip.hhi.de , IEEE,2003(käytetty 19. tammikuuta 2011 )
  4. Serkan Oktem ja Ilker Hamzaoglu, "  Tehokas laitteistoarkkitehtuuri neljänneksipikselin tarkalle H.264- liikearvioinnille  " , http://people.sabanciuniv.edu (käytetty 19. tammikuuta 2011 )
  5. Jeremiah Golston ja Dr. Ajit Rao, "  Videokoodekkien opetusohjelma: Kompromissit H.264-, VC-1- ja muiden kehittyneiden koodekkien kanssa  " , osoitteessa http://www.eetimes.com ,2006(käytetty 19. tammikuuta 2011 )

Katso myös

Aiheeseen liittyvät artikkelit

Ulkoiset linkit