Bevegelseskompensasjon - Motion compensation

Visualisering av MPEG -blokkbevegelseskompensasjon. Blokker som flyttet seg fra en ramme til den neste, vises som hvite piler, noe som gjør bevegelsene til de forskjellige plattformene og karakteren godt synlige.

Bevegelseskompensasjon er en algoritmisk teknikk som brukes til å forutsi en ramme i en video, gitt de forrige og/eller fremtidige bildene ved å ta hensyn til bevegelse av kameraet og/eller objekter i videoen. Det brukes i koding av videodata for videokomprimering , for eksempel i generering av MPEG-2- filer. Bevegelseskompensasjon beskriver et bilde når det gjelder transformasjonen av et referansebilde til det nåværende bildet. Referansebildet kan være tidligere i tid eller til og med fra fremtiden. Når bilder kan syntetiseres nøyaktig fra tidligere overførte/lagrede bilder, kan komprimeringseffektiviteten forbedres.

Bevegelseskompensasjon er en av de to viktigste videokomprimeringsteknikkene som brukes i videokodingsstandarder , sammen med den diskrete cosinustransformen (DCT). De fleste videokodingsstandarder, for eksempel H.26x og MPEG- formatene, bruker vanligvis bevegelseskompensert DCT-hybridkoding, kjent som blokkbevegelseskompensasjon (BMC) eller bevegelseskompensert DCT (MC DCT).

Funksjonalitet

Bevegelseskompensasjon utnytter det faktum at ofte, for mange bilder i en film, er den eneste forskjellen mellom ett bilde og et annet resultatet av enten at kameraet beveger seg eller at et objekt i rammen beveger seg. Med referanse til en videofil betyr dette at mye av informasjonen som representerer en ramme vil være den samme som informasjonen som brukes i den neste rammen.

Ved bruk av bevegelseskompensasjon vil en videostrøm inneholde noen fulle (referanse) rammer; da vil den eneste informasjonen som er lagret for rammene i mellom, være informasjonen som trengs for å transformere den forrige rammen til den neste rammen.

Illustrert eksempel

Følgende er en forenklet illustrert forklaring på hvordan bevegelseskompensasjon fungerer. To påfølgende rammer ble tatt fra filmen Elephants Dream . Som det fremgår av bildene, inneholder den nederste (bevegelseskompenserte) forskjellen mellom to rammer vesentlig færre detaljer enn de tidligere bildene, og komprimerer dermed mye bedre enn resten. Således vil informasjonen som kreves for å kode for kompensert ramme være mye mindre enn med differensrammen. Dette betyr også at det også er mulig å kode informasjonen ved hjelp av differensialbilde til en pris av mindre komprimeringseffektivitet, men ved å lagre kodingskompleksitet uten bevegelseskompensert koding; faktisk at bevegelseskompensert koding (sammen med bevegelsesestimering , bevegelseskompensasjon) opptar mer enn 90% av kodingskompleksiteten.

Type Eksempelramme Beskrivelse
Opprinnelig Bevegelseskompensasjon eksempel-original.jpg Full originalramme, som vist på skjermen.
Forskjell Bevegelseskompensasjon eksempel-forskjell.jpg Forskjeller mellom den originale rammen og den neste rammen.
Bevegelseskompensert forskjell Bevegelseskompensasjon eksempel-kompensert differens.jpg Forskjeller mellom den originale rammen og den neste rammen, flyttet til høyre med 2 piksler. Å flytte rammen kompenserer for panorering av kameraet, og dermed er det større overlapping mellom de to bildene.

MPEG

I MPEG forutsies bilder fra tidligere rammer ( P -rammer ) eller toveis fra tidligere og fremtidige rammer ( B -rammer ). B -rammer er mer komplekse fordi bildesekvensen må overføres og lagres i feil rekkefølge, slik at den fremtidige rammen er tilgjengelig for å generere B -bildene.

Etter å ha forutsagt rammer ved bruk av bevegelseskompensasjon, finner koderen resten, som deretter komprimeres og overføres.

Global bevegelseskompensasjon

I global bevegelseskompensasjon reflekterer bevegelsesmodellen i utgangspunktet kamerabevegelser som:

  • Dolly - flytte kameraet fremover eller bakover
  • Spor - flytte kameraet til venstre eller høyre
  • Bom - flytte kameraet opp eller ned
  • Pan - roter kameraet rundt Y -aksen, og flytt visningen til venstre eller høyre
  • Tilt - rotere kameraet rundt X -aksen, flytte visningen opp eller ned
  • Rull - rotere kameraet rundt visningsaksen

Det fungerer best for stillbilder uten å flytte objekter.

Det er flere fordeler med global bevegelseskompensasjon:

  • Den modellerer den dominerende bevegelsen som vanligvis finnes i videosekvenser med bare noen få parametere. Andelen i bithastighet av disse parameterne er ubetydelig.
  • Det deler ikke rammene. Dette unngår artefakter ved skillegrenser.
  • En rett linje (i tidsretningen) av piksler med like romlige posisjoner i rammen tilsvarer et punkt som beveger seg kontinuerlig i den virkelige scenen. Andre MC -ordninger introduserer diskontinuiteter i tidsretningen.

MPEG-4 ASP støtter GMC med tre referansepunkter, selv om noen implementeringer bare kan gjøre bruk av ett. Et enkelt referansepunkt tillater bare translasjonsbevegelse som for sine relativt store ytelseskostnader gir liten fordel i forhold til blokkbasert bevegelseskompensasjon.

Objekter i bevegelse innenfor en ramme er ikke tilstrekkelig representert av global bevegelseskompensasjon. Dermed er lokal bevegelsesestimering også nødvendig.

Bevegelseskompensert DCT

Blokker bevegelseskompensasjon

Blokkbevegelseskompensasjon (BMC), også kjent som bevegelseskompensert diskret cosinustransform (MC DCT), er den mest brukte bevegelseskompensasjonsteknikken. I BMC deles rammene i blokker med piksler (f.eks. Makroblokker på 16 × 16 piksler i MPEG ). Hver blokk forutsies fra en blokk med samme størrelse i referanserammen. Blokkene transformeres ikke på noen måte bortsett fra å bli forskjøvet til posisjonen til den forutsagte blokken. Dette skiftet er representert med en bevegelsesvektor .

For å utnytte redundansen mellom naboblokkvektorer, (f.eks. For et enkelt bevegelig objekt dekket av flere blokker) er det vanlig å kode bare forskjellen mellom den nåværende og forrige bevegelsesvektoren i bitstrømmen. Resultatet av denne differensieringsprosessen er matematisk ekvivalent med en global bevegelseskompensasjon som kan panorere. Lenger ned i kodingsrørledningen vil en entropykoder dra fordel av den resulterende statistiske fordelingen av bevegelsesvektorene rundt nullvektoren for å redusere utgangsstørrelsen.

Det er mulig å forskyve en blokk med et ikke-heltall antall piksler, som kalles presisjon for subpiksel . Mellompikslene genereres ved å interpolere nabopiksler. Vanligvis brukes halvpiksel eller kvart piksel presisjon ( Qpel , brukt av H.264 og MPEG-4/ASP). Beregningskostnaden for sub-piksel presisjon er mye høyere på grunn av den ekstra behandlingen som kreves for interpolering og på kodesiden, et mye større antall potensielle kildeblokker som skal evalueres.

Den største ulempen med blokkbevegelseskompensasjon er at den introduserer diskontinuiteter ved blokkgrensene (blokkerende artefakter). Disse artefaktene vises i form av skarpe horisontale og vertikale kanter som lett blir oppdaget av det menneskelige øyet og gir falske kanter og ringeffekter (store koeffisienter i høyfrekvente delbånd) på grunn av kvantisering av koeffisientene til den Fourier-relaterte transformasjonen som brukes for transformere koding av de resterende rammene

Blokkbevegelseskompensasjon deler den nåværende rammen inn i blokker som ikke overlapper hverandre, og bevegelseskompensasjonsvektoren forteller hvor disse blokkene kommer fra (en vanlig misforståelse er at den forrige rammen er delt opp i blokker som ikke overlapper hverandre, og bevegelseskompensasjonsvektorene forteller hvor disse blokkene flytter til ). Kildeblokkene overlapper vanligvis i kilderammen. Noen videokomprimeringsalgoritmer samler den nåværende rammen av biter av flere forskjellige tidligere overførte rammer.

Rammer kan også forutsies fra fremtidige rammer. Fremtidige rammer må deretter kodes før de forutsagte rammene, og dermed samsvarer ikke kodingsrekkefølgen nødvendigvis med den virkelige rammebestillingen. Slike rammer blir vanligvis spådd fra to retninger, dvs. fra I- eller P-rammene som umiddelbart går foran eller følger den forutsagte rammen. Disse toveis spådde rammene kalles B-rammer . Et kodingsopplegg kan for eksempel være IBBPBBPBBPBB.

Videre har bruk av trekantede fliser også blitt foreslått for bevegelseskompensasjon. Under denne ordningen er rammen flislagt med trekanter, og den neste rammen genereres ved å utføre en affin transformasjon på disse trekantene. Bare de affine transformasjonene registreres/overføres. Dette er i stand til å håndtere zooming, rotasjon, oversettelse etc.

Variabel bevegelseskompensasjon i blokkstørrelse

Variabel blokkstørrelsesbevegelseskompensasjon (VBSMC) er bruken av BMC med mulighet for at koderen dynamisk kan velge størrelsen på blokkene. Ved koding av video kan bruk av større blokker redusere antall biter som trengs for å representere bevegelsesvektorene, mens bruk av mindre blokker kan resultere i en mindre mengde forutsigbar gjenværende informasjon som skal kodes. Andre arbeidsområder har undersøkt bruken av variabel formfunksjonsberegninger, utover blokkgrenser, hvorfra interframevektorer kan beregnes. Eldre design som H.261 og MPEG-1 video bruker vanligvis en fast blokkstørrelse, mens nyere som H.263 , MPEG-4 del 2 , H.264/MPEG-4 AVC og VC-1 gir koderen muligheten til dynamisk å velge hvilken blokkstørrelse som skal brukes til å representere bevegelsen.

Overlappende blokkbevegelseskompensasjon

Overlappet blokkbevegelseskompensasjon (OBMC) er en god løsning på disse problemene fordi den ikke bare øker prediksjonens nøyaktighet, men også unngår å blokkere artefakter. Når du bruker OBMC, er blokker vanligvis dobbelt så store i hver dimensjon og overlapper kvadrantmessig med alle 8 naboblokkene. Dermed tilhører hver piksel 4 blokker. I et slikt opplegg er det 4 spådommer for hver piksel som summeres til et veid gjennomsnitt. For dette formålet er blokker knyttet til en vindusfunksjon som har egenskapen til at summen av 4 overlappende vinduer er lik 1 overalt.

Studier av metoder for å redusere kompleksiteten til OBMC har vist at bidraget til vindusfunksjonen er minst for den diagonalt tilstøtende blokken. Å redusere vekten for dette bidraget til null og øke de andre vektene med like mye, fører til en betydelig reduksjon i kompleksiteten uten en stor straff på kvaliteten. I en slik ordning tilhører hver piksel deretter 3 blokker i stedet for 4, og i stedet for å bruke 8 naboblokker, brukes bare 4 for hver blokk som skal kompenseres. Et slikt opplegg finnes i H.263 vedlegg F avansert prediksjon -modus

Kvart Pixel (QPel) og Half Pixel bevegelseskompensasjon

I bevegelseskompensasjon er kvart eller halv prøver faktisk interpolerte delprøver forårsaket av fraksjonerte bevegelsesvektorer. Basert på vektorer og fullprøver kan delprøvene beregnes ved bruk av bikubisk eller bilinær 2-D-filtrering. Se underpunkt 8.4.2.2 "Fraksjonell prøveinterpoleringsprosess" av H.264 -standarden.

3D -bildekodingsteknikker

Bevegelseskompensasjon brukes i stereoskopisk videokoding

I video blir tid ofte sett på som den tredje dimensjonen. Stillbildekodingsteknikker kan utvides til en ekstra dimensjon.

JPEG 2000 bruker bølger, og disse kan også brukes til å kode bevegelse uten hull mellom blokker på en adaptiv måte. Fraksjonelle piksel affin transformasjoner fører til blødning mellom tilstøtende piksler. Hvis ingen høyere intern oppløsning brukes, kjemper delta -bildene stort sett mot at bildet smøres ut. Delta -bildet kan også kodes som bølger, slik at grensene til de adaptive blokkene stemmer overens.

2D+Delta Encoding teknikker bruker H.264 og MPEG-2 kompatibel koding og kan bruke bevegelseskompensasjon for å komprimere mellom stereoskopiske bilder.

Historie

En forløper til konseptet bevegelseskompensasjon dateres tilbake til 1929, da RD Kell i Storbritannia foreslo konseptet med å overføre bare deler av en analog videoscene som endret seg fra bilde til bilde. Konseptet med bevegelseskompensasjon mellom rammene går tilbake til 1959, da NHK- forskere Y. Taki, M. Hatori og S. Tanaka foreslo forutsigbar videokoding mellom rammene i den tidsmessige dimensjonen .

Bevegelseskompensert DCT

Praktisk bevegelseskompensert videokomprimering ble muliggjort av utviklingen av bevegelseskompensert DCT (MC DCT) koding, også kalt blokkbevegelseskompensasjon (BMC) eller DCT bevegelseskompensasjon. Dette er en hybrid kodingsalgoritme, som kombinerer to viktige datakomprimeringsteknikker : diskret cosinustransformasjon (DCT) koding i den romlige dimensjonen , og forutsigbar bevegelseskompensasjon i den tidsmessige dimensjonen . DCT koding er et lossy blokk komprimering transkoding teknikk som først ble foreslått av Nasir Ahmed , som i utgangspunktet ment for bildekomprimering , i 1972.

I 1974 introduserte Ali Habibi ved University of Southern California hybridkoding, som kombinerer prediktiv koding med transformasjonskoding. Imidlertid var algoritmen hans opprinnelig begrenset til intra-frame koding i den romlige dimensjonen. I 1975 utvidet John A. Roese og Guner S. Robinson Habibis hybridkodingsalgoritme til den tidsmessige dimensjonen, ved hjelp av transformasjonskoding i den romlige dimensjonen og prediktiv koding i den tidsmessige dimensjonen, og utviklet inter-frame bevegelseskompensert hybridkoding. For romlig transformasjonskoding eksperimenterte de med DCT og den raske Fourier-transformasjonen (FFT), og utviklet hybridrammekodere mellom rammene for begge, og fant ut at DCT er den mest effektive på grunn av den reduserte kompleksiteten, som er i stand til å komprimere bildedata ned til 0,25- bit per piksel for en videotelefonscene med bildekvalitet som kan sammenlignes med en koder for intramamme som krever 2-bit per piksel.

I 1977 utviklet Wen-Hsiung Chen en rask DCT-algoritme med CH Smith og SC Fralick. I 1979 videreutviklet Anil K. Jain og Jaswant R. Jain bevegelseskompensert DCT-videokomprimering, også kalt blokkbevegelseskompensasjon. Dette førte til at Chen utviklet en praktisk videokomprimeringsalgoritme, kalt bevegelseskompensert DCT eller adaptiv scenekoding, i 1981. Bevegelseskompensert DCT ble senere standard kodingsteknikk for videokomprimering fra slutten av 1980-tallet og fremover.

Den første digitale videokodingsstandarden var H.120 , utviklet av CCITT (nå ITU-T) i 1984. H.120 brukte bevegelseskompensert DPCM-koding, som var ineffektiv for videokoding, og H.120 var dermed upraktisk pga. lav ytelse. Den H.261 standarden ble utviklet i 1988 basert på bevegelseskompensert DCT kompresjonen, og det var den første praktiske videokodingsstandard. Siden den gang har bevegelseskompensert DCT-komprimering blitt vedtatt av alle de store videokodestandardene (inkludert H.26x- og MPEG- formatene) som fulgte.

Se også

applikasjoner

Referanser

Eksterne linker