Context-adaptive binary arithmetic coding
Context Adaptative Binary Arithmetic Coder
L’estàndard de codificació H.264 inclou dos algoritmes diferents en el seu bloc de codificació entròpica. El primer s’anomena Context-Adaptative Variable Length Code CAVLC el qual utilitza un taula VLC fixa per tots els elements sintàctics i el segon s’anomena Context Adaptative Binary Arithmetic Coder i és el que s’explicarà en aquets article.
El codificador CABAC presenta una millora en la dimensió del bitstream respecte a CAVLC, donat que aconsegueix bitstreams un 10% més petits. L’arquitectura de CABAC demostra que és bastant bona ja que pot comprimir eficientment el senyal original. Tot i així, el rendiment es podria millorar considerant que cada coeficient és estadísticament dependent dels seus veïns. Aquesta dependència podria utilitzar-se per a refinar el model estadístic de l’arquitectura original de CABAC.
Procés de Codificació
El procés de codificació es pot resumir en les següents tres etapes:
1. Binarització
L’estratègia de codificació de CABAC es basa en trobar un mètode de codificació eficient utilitzant un esquema binari com un tipus de preprocessat per als passos posteriors.
En el procés de binarització, quan entra un element no binari aquest es posa en una seqüència binaria de longitud variable (bin-string). Aquest nou dígit s’anomena bin. Amb aquest pas s’aconsegueix la conversió a binari de l’element. En contraposició, quan entra un valor binari no es necessita cap tipus de conversió i, per tant, es pot saltar el pas de binarització. D’aquesta manera, els símbols d’entrada pel codificador aritmètic són sempre valors binaris, independentment de les característiques de la sintaxis de l’element.
Existeixen tres tipus diferents de binarització:
- Unary
- Truncated unary (TU)
- K-th order Exp-Golomb code (EGk)
2. Modelat de context
Un model de context és un model de probabilitat per un o més bins del símbol binaritzat. Aquest model es pot escollir d’entre una selecció de models disponibles en funció de les estadístiques de la informació dels símbols recentment codificats. Existeixen dos tipus de modes: el regular o el bypass. El mode bypass s’escull quan la distribució dels bins és uniforme, permetent doncs saltar-se tot el procés de codificació binari-aritmètic (BAC), ja que la probabilitat que el valor del bin sigui '0' ó '1' és pràcticament la mateixa.
En canvi, en el mode regular, es necessari conèixer amb quina probabilitat obtindrem un 0 ó un 1. Per tant, necessitem crear un model de context ja que aquest emmagatzema la probabilitat de que cada bin sigui '0' o '1'. Aquest mode de decisió s’aplica als bins observats amb més freqüència.
Finalment, el valor del bin, amb la seva probabilitat, s’envia al codificador binari aritmètic
3. Codificació Binari Aritmètic(BAC)
En l’últim nivell del codificador, cada valor del bin entra en el codificador binari aritmètic ja sigui a través del mode regular o del mode bypass.
La codificació del bins que entren pel mode bypass és molt més ràpida donat que la complexitat del algoritme de codificació és molt més reduïda, mentre que la codificació dels bins entrats pel mode regular, depèn del model de probabilitat associat a aquell bin. El codificador, per tant, codifica cada bin depenent del model de probabilitat seleccionat i finalment, l'actualitza en funció del valor real del bin codificat.