Vés al contingut

Context-adaptive variable-length coding

De la Viquipèdia, l'enciclopèdia lliure
Aquesta és una versió anterior d'aquesta pàgina, de data 23:10, 8 des 2009 amb l'última edició de Elysabet (discussió | contribucions). Pot tenir inexactituds o contingut no apropiat no present en la versió actual.

Les sigles CAVLC corresponen a les inicials de Context-Adaptive Variable Length Coding, que traduït de l'anglès significa codificació adaptativa segons el context de longitud variable. L'objectiu d'aquesta codificació és processar la informació que es vol transmetre o emmagatzemar en un dispositiu de forma que ocupi el mínim espai possible. D'aquesta manera, amb l'ús de la CAVLC serà possible transmetre una imatge en menys temps o fer que ocupi menys espai en el dispositiu d'emmagatzematge. Una característica important d'aquesta codificació és que no té pèrdues i per tant es podrà recuperar la informació original a l'aplicar el procés invers.

La codificació CAVLC s'utilitza en l'estàndard de codificació de vídeo MPEG-4 (part 10), per codificar i comprimir la informació que resulta de l'aplicació de la transformació i quantificació d'un bloc de luminància de tamany 4x4 píxels.

Resum

CAVLC és un mètode de codificació de font, que pertany a la família dels codificadors entròpics. Un codi entròpic és aquell que substitueix les paraules codi d'una font d'informació per altres amb una longitud proporcional a la freqüència de dita paraula. L'objectiu dels codis font es tractar d'eliminar tota la informació que sigui redundant per reduir al màxim la quantitat de dades a transmetre. Un exemple d'aquest tipus de codis seria l'UVLC.

Característiques de la informació a codificar

Abans de descriure el funcionament del CAVLC resulta interesant fer un petit estudi de les característiques de la informació que es va a codificar. La descripció d'aquest tipus de mètode de codificació es basarà en l'àmbit de codificació de vídeo segons l'estàndard MPEG-4, part 10.

La unitat elemental és un bloc de píxels d'un tamany determinat. Així doncs, de forma simplificada, el pas previ a la codificació és la divisió del quadre o camp que omple en bloc. Per simplificar l'explicació considerarem que codificarem una imatge en escala de grisos, és a dir, sense color. En l'estàndard MPEG-4 s'especifica que el tamany d'aquests blocs siguin de 4x4 píxels, amb això es formaran blocs de 16 píxels. Cadascun d'aquest píxels tindran assignats un valor comprés entre 0 i 255 de forma que:

  • si el píxel és de color negre s'assignarà el valor 0
  • si és de color blanc s'assignarà el valor 255
  • si el color del píxel és un to de gris, se li assignarà un valor comprés entre 1 (gris més obscur) i 254 (gris més clar).

Si fóssim a transmetre aquest valors tal qual, podríem enviar, per exemple, un darrere l'altre llegint el bloc per files. La seqüència de bits resultants sería la següent:

Bloc de luminància 4x4 sense aplicar transformació
Seqüència resultant: 120,63,12,24,110,8,43,10,0,11,33,98,55,12,21,0


Aquesta codificació és molt simple però resulta molt poc convenient per ser transmesa, perquè ens veuríem forçats a transmetre els 16 valors que constitueixen el bloc. Volem que al transmetre ocupi el mínim espai possible, així que tindrem que aplicar una transformació: el objectiu de la mateixa es representar la informació del bloc de una forma que ens permetrien transmetre els 16 valors que el componen. Si apliquem aquesta transformació, els valors del bloc de tamany 4x4 anterior tindran aquest aspecte:

Bloc sense transformar
Bloc transformat

La diferència més clara entre els dos és l'aparició d'un elevat número de píxel son el valor ara es 0 i a demés els valors que no són nuls han quedat agrupat en la cantonada superior esquerra. A partir d'ara utilitzarem la paraula coeficient per referir-nos a cadascun dels valors un cop s'hagi aplicat la transformació. La transformació es reversible, és a dir, que podrem recuperar els valors originals de cada píxel.

Si ara volguéssim transmetre aquests coeficients, podríem fer-ho enviant únicament els que són diferents de 0, assumint que aquests que no s'envien seran 0. Aquesta és la idea bàsica del CAVLC.