Un codi exponencial-Golomb (o simplement codi Exp-Golomb) és un tipus de codi universal. Per codificar qualsevol enter no negatiu x utilitzant el codi exp-Golomb:
Escriu x +1 en binari Compteu els bits escrits, resteu-ne un i escriviu aquest nombre de bits zero inicials que precedeixen la cadena de bits anterior.
Els primers valors del codi són:
0 ⇒ 1 ⇒ 1 1 ⇒ 10 ⇒ 010 2 ⇒ 11 ⇒ 011 3 ⇒ 100 ⇒ 00100 4 ⇒ 101 ⇒ 00101 5 ⇒ 110 ⇒ 00110 6 ⇒ 111 ⇒ 00111 7 ⇒ 1000 ⇒ 0001000 8 ⇒ 1001 ⇒ 0001001 ...
En els exemples anteriors, considereu el cas 3. Per a 3, x+1 = 3 + 1 = 4. 4 en binari és '100'. '100' té 3 bits i 3-1 = 2. Per tant, afegiu 2 zeros abans de '100', que és '00100'.
De la mateixa manera, considereu 8. '8 + 1' en binari és '1001'. '1001' té 4 bits i 4-1 és 3. Per tant, afegiu 3 zeros abans de 1001, que és '0001001'.
Això és idèntic al codi gamma Elias de x +1, cosa que li permet codificar 0.
Extensió a nombres negatius La codificació Exp-Golomb s'utilitza en els estàndards de compressió de vídeo H.264/MPEG-4 AVC i H.265 High Efficiency Video Coding, en què també hi ha una variació per a la codificació de nombres amb signe assignant el valor 0 a la paraula de codi binària '0' i assignant paraules de codi posteriors a valors d'entrada de magnitud creixent (i signe altern, si el camp pot contenir un nombre negatiu):
0 ⇒ 0 ⇒ 1 ⇒ 1 1 ⇒ 1 ⇒ 10 ⇒ 010 −1 ⇒ 2 ⇒ 11 ⇒ 011 2 ⇒ 3 ⇒ 100 ⇒ 00100 −2 ⇒ 4 ⇒ 101 ⇒ 00101 3 ⇒ 5 ⇒ 110 ⇒ 00110 −3 ⇒ 6 ⇒ 111 ⇒ 00111 4 ⇒ 7 ⇒ 1000 ⇒ 0001000 −4 ⇒ 8 ⇒ 1001 ⇒ 0001001 ...
En altres paraules, un enter no positiu x ≤ 0 es mapa a un enter parell −2 x, mentre que un enter positiu x > 0 es mapa a un enter senar 2 x −1 .
La codificació Exp-Golomb també s'utilitza en el còdec de vídeo Dirac.
Generalització a l'ordre k Per codificar nombres més grans en menys bits (a costa d'utilitzar més bits per codificar nombres més petits), això es pot generalitzar utilitzant un paràmetre enter no negatiu k. Per codificar un enter no negatiu x en un ordre k de Codi exp-Golomb:
Codifiqueu ⌊x /2k⌋ utilitzant el codi exp-Golomb d'ordre 0 descrit anteriorment, aleshores Codifica x mod 2k en binari amb k bits
Una manera equivalent d'expressar això és:
Codifiqueu x +2k −1 utilitzant el codi exp-Golomb d'ordre 0 (és a dir, codifiqueu x +2k utilitzant el codi gamma Elias), aleshores Suprimeix els k bits zero inicials del resultat de la codificació
x k=0k=1k=2k=3 x k=0011010010001000010111010111011001110001100201101001101010120001101300100010111110111300011104001010110010001100140001111500110011101001110115000010000600111001000010101110160000100017000100000100101011111117000010010800010010010100110001000018000010011900010100010110110101000119000010100
Referències
Categoria:Codificació Categoria:Compressió de dades