Un código de Golomb exponencial (o simplemente código de Golomb exp ) es un tipo de código universal . Para codificar cualquier entero no negativo x utilizando el código de Golomb exp:
- Escribe x +1 en binario
- Cuente los bits escritos, reste uno y escriba esa cantidad de bits iniciales cero que preceden a la cadena de bits anterior.
Los primeros valores del código son:
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 ... [1]
En los ejemplos anteriores, considere el caso 3. Para 3, x+1 = 3 + 1 = 4. 4 en binario es '100'. '100' tiene 3 bits y 3-1 = 2. Por lo tanto, agregue 2 ceros antes de '100', que es '00100'.
De manera similar, considere 8. '8 + 1' en binario es '1001'. '1001' tiene 4 bits y 4-1 es 3. Por lo tanto, agregue 3 ceros antes de 1001, que es '0001001'.
Esto es idéntico al código gamma de Elias de x +1, lo que le permite codificar 0. [2]
Extensión a números negativos
La codificación Exp-Golomb se utiliza en los estándares de compresión de vídeo H.264/MPEG-4 AVC y H.265 High Efficiency Video Coding , en los que también hay una variación para la codificación de números con signo, asignando el valor 0 a la palabra de código binaria '0' y asignando palabras de código subsiguientes a valores de entrada de magnitud creciente (y signo alterno, si el campo puede contener un número negativo):
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 ... [1]
En otras palabras, un entero no positivo x ≤0 se asigna a un entero par −2 x , mientras que un entero positivo x >0 se asigna a un entero impar 2 x −1.
La codificación Exp-Golomb también se utiliza en el códec de vídeo Dirac . [3]
Generalización al ordena
Para codificar números mayores en menos bits (a costa de usar más bits para codificar números menores), esto se puede generalizar usando un parámetro entero no negativo k . Para codificar un entero no negativo x en un código exp-Golomb de orden k :
- Codifique ⌊ x /2 k ⌋ utilizando el código exp-Golomb de orden 0 descrito anteriormente, luego
- Codificar x mod 2 k en binario
Una forma equivalente de expresar esto es:
- Codifique x +2 k −1 usando el código exp-Golomb de orden 0 (es decir, codifique x +2 k usando el código gamma de Elias), luego
- Eliminar k bits cero iniciales del resultado de la codificación
Véase también
- Codificación gamma (γ) de Elias
- Codificación delta (δ) de Elias
- Codificación omega (ω) de Elias
- Código universal
Referencias
- ^ ab Richardson, Iain (2010). El estándar de compresión de vídeo avanzado H.264. Wiley. págs. 208, 221. ISBN 978-0-470-51692-8.
- ^ Rupp, Markus (2009). Transmisiones de video y multimedia a través de redes celulares: análisis, modelado y optimización en redes móviles 3G en vivo. Wiley. pág. 149. ISBN 9780470747766.
- ^ "Especificación de Dirac" (PDF) . BBC. Archivado desde el original (PDF) el 3 de mayo de 2015. Consultado el 9 de marzo de 2011 .