Vector de moviment
El vector de moviment indica la magnitud i direcció del moviment que es produeix entre la imatge actual i la informació rebuda.
Context
[modifica]En el cas de compressió MPEG existeixen dos tipus de codificació, codificació tipus intra i codificació tipus inter. En aquesta última, la informació és relativa a les imatges enviades anteriorment. El codificador no ha d'enviar tota la informació de cada imatge, només haurà d'enviar les variacions respecte a la imatge anterior, és a dir, un vector que representi el moviment entre imatges successives.
Explicació detallada
[modifica]Per imatges en moviment, com en el cas de vídeo, existeix una redundància temporal afegida a les imatges en general. Com que en els sistemes actuals de televisió es transmeten unes 25 imatges per segon, les imatges successives són molt semblants excepte en els canvis de pla. En televisió digital, es transmeten únicament les variacions entre imatges estalviant bits en la transmissió.
La imatge es divideix en macroblocs de 16 píxels x 16 píxels i per a cada bloc s'indica mitjançant dos valors el desplaçament horitzontal i vertical entre imatge i imatge.
Quan un macrobloc pren un cert valor, es busca a les imatges anteriors si existeix alguna zona d'idèntic contingut i s'assumeix que el macrobloc s'ha mogut. En tal cas, s'envia únicament la informació del moviment. Per a cada macrobloc es busca la zona de la imatge de referència que més s'hi assembli. (Aquesta zona ha de ser de les mateixes dimensions que un macrobloc.) El macrobloc queda per tant definit a partir d'una zona de la qual la informació es troba a la memòria del descodificador. Un cop codificats, la idea de macroblocs desapareix. La cerca de porcions d'imatge de referència es fa píxel a píxel, cosa que millora la precisió.
Codificació
[modifica]Buscant la zona que presenti màxima coincidència, el codificador ha d'escollir per cada macrobloc la forma de codificar depenent del nivell de coincidència:
- Coincidència total: Existeix una zona a la imatge de referència idèntica al macrobloc actual i a més es troba exactament a la mateixa posició. En aquest cas quan codifiquem el macrobloc anterior al que no pateix cap modificació, incrementem en 2 el comptador seqüencial de macroblocs per indicar que s'ha de saltar un macrobloc. Així per cada macrobloc que no canvia respecte a la imatge anterior el comptador sumarà 2. El receptor pot reconstruir sense problemes aquesta porció d'imatge, ja que es troba a la memòria de la imatge anterior.
- Coincidència parcial: Existeix una zona idèntica a la imatge de referència però no es troba a la mateixa posició. En aquest cas, s'introdueix el vector de moviment a la capçalera del macrobloc i la zona de dades roman buida, ja que el descodificador obté les dades de la imatge de referència.
- Coincidència mínima: Existeix una zona a la imatge de referència que no és idèntica però supera el nivell de coincidència establert com el mínim. En aquest cas, s'envia el vector de moviment o informació del desplaçament entre el macrobloque actual i la zona semblant a la capçalera. A la zona de dades s'envia únicament la informació de les diferències que existeixen entre la imatge actual i la de referència.
- Coincidència nul·la: No existeix cap zona de la qual la informació superi el nivell mínim de coincidència amb el macrobloc actual. En aquest cas, la codificació d'aquest bloc és de tipus Intra, és a dir que serà una imatge I i no tindrà cap vector de moviment a la capçalera.
Descodificació
[modifica]El descodificador llegeix la capçalera de cada porció d'imatge i en funció del contingut procedeix a la descodificació corresponent que és diferent per Fitxers I, P i B. En el cas d'imatges de tipus I, la descodificació és immediata. En canvi, als altres casos, es necessita la descodificació prèvia de la imatge de referència per la codificació de la imatge actual. Pel cas de les imatges P que tenen un únic vector de moviment, es necessita la descodificació de la imatge anterior i pel cas de les imatges B, es necessiten l'anterior i la posterior. En aquest últim cas, hi haurà dos vectors de moviment, un que indica el moviment que ha patit el macrobloc respecte a la imatge anterior i un altre per al desplaçament respecte a la imatge següent.
Un aspecte a tenir en compte en vídeo és quan es produeix únicament una panoràmica de la càmera, tots els macroblocs pateixen el mateix desplaçament respecte a la imatge anterior. En aquests casos, és útil aprofitar aquesta redundància i no enviar tots els vectors de moviment. Per tant, només s'haurà d'enviar la diferència de moviment de cada macrobloc respecte a l'anterior (que a la majoria dels casos serà nul·la). En molts casos, s'envien alguns vectors repartits per la imatge i la resta es prediuen. En el cas de compressió MPEG, es prediu el vector de moviment abans que aquest sigui enviat gràcies als vectors dels macroblocs veïns. La informació de la predicció se suma amb la informació dels vectors de moviment enviats i el resultat és el vector de moviment real.
Vegeu també
[modifica]- FMO - Flexible Macroblock Ordering
- Inter-frame
Referències
[modifica]- Televisión Digital Vol.1, Compresión MPEG, Alfonso Martín Marcos, Editorial Ciencia 3