Interramme - Inter frame

En mellomramme er en ramme i en videokomprimeringsstrøm som uttrykkes i form av en eller flere nabobilder. Den "inter" delen av begrepet refererer til bruk av Inter frame prediksjon . Denne typen prediksjon prøver å dra fordel av tidsmessig redundans mellom naborammer som muliggjør høyere kompresjonshastigheter.

Interram -spådom

En interkodet ramme er delt inn i blokker kjent som makroblokker . Etter det, i stedet for å direkte kode de rå pikselverdiene for hver blokk, vil koderen prøve å finne en blokk som ligner den den er kodet på en tidligere kodet ramme, referert til som en referanseramme . Denne prosessen utføres av en blokkmatchingsalgoritme . Hvis koderen lykkes i søket, kan blokken bli kodet av en vektor, kjent som bevegelsesvektor , som peker til posisjonen til den matchende blokken ved referanserammen. Prosessen med bevegelsesvektorbestemmelse kalles bevegelsesestimering .

I de fleste tilfeller vil koderen lykkes, men blokken som er funnet er sannsynligvis ikke en nøyaktig samsvar med blokken den koder. Det er derfor koderen vil beregne forskjellene mellom dem. Disse restverdiene er kjent som prediksjonsfeil og må transformeres og sendes til dekoderen.

For å oppsummere, hvis koderen lykkes med å finne en matchende blokk på en referanseramme, vil den oppnå en bevegelsesvektor som peker på den matchede blokken og en forutsigelsesfeil. Ved å bruke begge elementene vil dekoderen kunne gjenopprette de rå pikslene i blokken. Følgende bilde viser hele prosessen grafisk:

Forutsigelsesprosess mellom rammene. I dette tilfellet har det vært en belysningsendring mellom blokken ved referanserammen og blokken som blir kodet: denne forskjellen vil være forutsigelsesfeilen til denne blokken.

Denne typen prediksjon har noen fordeler og ulemper:

  • Hvis alt går bra, vil algoritmen kunne finne en matchende blokk med liten forutsigelsesfeil, slik at den totale størrelsen på bevegelsesvektoren pluss prediksjonsfeil, når den er transformert, er lavere enn størrelsen på en rå koding.
  • Hvis blokkeringsalgoritmen ikke finner en passende match, vil forutsigelsesfeilen være betydelig. Dermed vil den totale størrelsen på bevegelsesvektor pluss forutsigelsesfeil være større enn råkodingen. I dette tilfellet ville koderen gjøre et unntak og sende en rå koding for den spesifikke blokken.
  • Hvis den matchede blokken ved referanserammen også er blitt kodet ved hjelp av Inter -rammeprediksjon, vil feilene som blir gjort for dens koding, bli overført til neste blokk. Hvis hver ramme ble kodet ved hjelp av denne teknikken, ville det ikke være mulig for en dekoder å synkronisere med en videostrøm fordi det ville være umulig å skaffe referansebildene.

På grunn av disse ulempene må en pålitelig og periodisk referanseramme brukes for at denne teknikken skal være effektiv og nyttig. Denne referanserammen er kjent som Intra-frame , som er strengt intrakodet, så den kan alltid dekodes uten tilleggsinformasjon.

I de fleste design er det to typer mellomrammer: P-rammer og B-rammer. Disse to typer bildene og I-bildene (Intra-kodede bilder) blir vanligvis med i en GOP (Group Of Pictures). I-rammen trenger ikke tilleggsinformasjon for å kunne dekodes, og den kan brukes som en pålitelig referanse. Denne strukturen gjør det også mulig å oppnå en I-frame periodisitet, som er nødvendig for dekodersynkronisering.

Rammetyper

Forskjellen mellom P-rammer og B-rammer er referanserammen de har lov til å bruke.

P-ramme

P-frame er begrepet som brukes for å definere fremover forutsagte bilder. Spådommen er laget av et tidligere bilde, hovedsakelig en I-ramme eller P-ramme, slik at det krever mindre kodingsdata (≈50% sammenlignet med I-rammestørrelse).

Mengden data som trengs for å gjøre denne prediksjonen består av bevegelsesvektorer og transformasjonskoeffisienter som beskriver prediksjonskorreksjon. Det innebærer bruk av bevegelseskompensasjon .

B-ramme

B-ramme er betegnelsen for toveis spådde bilder. Denne typen forutsigelsesmetode opptar mindre kodende data enn P-rammer generelt (≈25% sammenlignet med I-rammestørrelse) fordi prediksjonen er laget fra enten en tidligere ramme eller en senere ramme eller begge deler. (B-rammer kan også være mindre effektive enn P-rammer i visse tilfeller, f.eks: tapsfri koding)

I likhet med P-rammer uttrykkes B-rammer som bevegelsesvektorer og transformasjonskoeffisienter. For å unngå en voksende forplantningsfeil, brukes ikke B-rammer som referanse for å gjøre ytterligere spådommer i de fleste kodingsstandarder. I nyere kodingsmetoder (for eksempel H.264/MPEG-4 AVC og HEVC ) kan B-rammer imidlertid brukes som referanse for bedre utnyttelse av tidsmessig redundans.

Typisk gruppe med bilder (GOP) -struktur

Illustrasjon av avhengigheter i gruppen av bilder med IBBPBB ... Tiden går fra venstre til høyre.

Den typiske gruppen av bilder (GOP) -strukturen er IBBPBBP ... I-rammen brukes til å forutsi den første P-rammen, og disse to bildene brukes også til å forutsi den første og den andre B-rammen. Den andre P-rammen spås også ved bruk av den første I-rammen. Begge P-rammene går sammen for å forutsi den tredje og fjerde B-rammen. Opplegget er vist på neste bilde:

Denne strukturen antyder et problem fordi den fjerde rammen (en P-ramme) er nødvendig for å forutsi den andre og den tredje (B-rammen). Så vi må overføre P-rammen før B-rammene, og det vil forsinke overføringen (det vil være nødvendig å beholde P-rammen). Denne strukturen har sterke sider:

  • Det minimerer problemet med mulige avdekkede områder.
  • P-rammer og B-rammer trenger mindre data enn I-frames, så det overføres mindre data.

Men den har svake sider:

  • Det øker kompleksiteten til dekoderen, noe som kan bety mer minne som trengs for å omorganisere rammene, og litt mer prosessorkraft.
  • B-rammer kan innføre avkodingsavhengighet som uunngåelig øker dekodingstid.

H.264 Forbedringer av interramsprognoser

De viktigste forbedringene av denne teknikken med hensyn til tidligere H.264 -standard er:

  • Mer fleksibel blokkpartisjon
  • Oppløsning på opptil ¼ piksel bevegelseskompensasjon
  • Flere referanser
  • Forbedret direkte/hopp over makroblokk

Mer fleksibel blokkpartisjon

Luminansblokkpartisjon på 16 × 16 ( MPEG-2 ), 16 × 8, 8 × 16 og 8 × 8. Den siste saken tillater deling av blokken i nye blokker på 4 × 8, 8 × 4 eller 4 × 4.

H.264 blokk divisjon.svg

Rammen som skal kodes er delt inn i blokker av samme størrelse som vist på bildet ovenfor. Hver blokkforutsigelse vil være blokker av samme størrelse som referansebildene, kompensert av en liten forskyvning.

Oppløsning på opptil ¼ piksel bevegelseskompensasjon

Piksler ved halvpikselposisjon oppnås ved å påføre et filter med lengde 6.

H = [1 -5 20 20 -5 1]

For eksempel:

b = A - 5B + 20C + 20D - 5E + F

Piksler ved kvartpikselposisjon oppnås ved bilinær interpolasjon .

Mens MPEG-2 tillot en ½ piksel oppløsning, tillater Inter-ramme opptil ¼ piksel oppløsning. Det betyr at det er mulig å søke i en blokk i rammen som skal kodes i andre referanserammer, eller vi kan interpolere ikke -eksisterende piksler for å finne blokker som er enda bedre egnet for den nåværende blokken. Hvis bevegelsesvektor er et helt tall enheter av prøver, betyr det at det er mulig å finne den kompenserte blokken i bevegelse i referansebilder. Hvis bevegelsesvektoren ikke er et heltall, vil prediksjonen hentes fra interpolerte piksler med et interpolatorfilter til horisontale og vertikale retninger.

Subpel interpolation.jpg

Flere referanser

Flere referanser til bevegelsesestimering gjør det mulig å finne den beste referansen i 2 mulige buffere (liste 0 til tidligere bilder, liste 1 til fremtidige bilder) som inneholder opptil 16 bilder totalt. Blokkeprediksjon utføres med en vektet sum av blokker fra referansebildet. Det gir forbedret bildekvalitet i scener der det er endringer i fly, zoom eller når nye objekter blir avslørt.

Flere referanser.jpg

Forbedret direkte/hopp over makroblokk

Hopp og direkte-modus brukes veldig ofte, spesielt med B-rammer. De reduserer antall biter som skal kodes betydelig. Disse modusene refereres til når en blokk er kodet uten å sende restfeil eller bevegelsesvektorer. Koderen vil bare registrere at det er en Hopp over makroblokk. Dekoderen vil utlede bevegelsesvektoren for den direkte/hopp -modus -kodede blokken fra andre blokker som allerede er avkodet.

Det er to måter å utlede bevegelsen på: Direkte skip.jpg

Midlertidig
Den bruker blokkbevegelsesvektoren fra liste 1 -ramme, plassert i samme posisjon for å utlede bevegelsesvektoren. Liste 1 -blokk bruker en liste 0 -blokk som referanse.
Romlig
Den forutsier bevegelsen fra nabomakroblokker i samme ramme. Et mulig kriterium kan være å kopiere bevegelsesvektoren fra en naboblokk. Disse modusene brukes i ensartede soner i bildet der det ikke er mye bevegelse.

Blokker partisjon.jpg

I figuren ovenfor er rosa blokker kodede blokker i Direct/Skip Mode. Som vi kan se, brukes de veldig ofte, hovedsakelig i B-rammer.

Tilleggsinformasjon

Selv om bruken av begrepet "ramme" er vanlig i uformell bruk, brukes det i mange tilfeller (for eksempel i internasjonale standarder for videokoding av MPEG og VCEG ) et mer generelt begrep ved å bruke ordet "bilde" i stedet for "ramme" , hvor et bilde enten kan være en komplett ramme eller et enkelt sammenflettet felt.

Videokodeker , slik som MPEG-2 , H.264 eller Ogg Theora redusere mengden av data i en strøm av følgende nøkkelbilder med en eller flere blant rammer. Disse bildene kan vanligvis kodes med en lavere bithastighet enn det som er nødvendig for nøkkelrammer fordi mye av bildet vanligvis er likt, så bare de skiftende delene trenger å bli kodet.

Se også

Referanser

  • Programvare H.264: http://iphome.hhi.de/suehring/tml/download/
  • T.Wiegand, GJ Sullivan, G. Bjøntegaard, A.Luthra: Oversikt over H.264/AVC Video Coding Standard . IEEE -transaksjoner på kretser og systemer for videoteknologi, vol. 13, nr. 7, juli 2003