stringtranslate.com

Codificación exponencial de Golomb

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:

  1. Escribe x +1 en binario
  2. Cuente los bits escritos, reste uno y escriba esa cantidad de bits cero iniciales 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 :

  1. Codifique ⌊ x /2 k ⌋ utilizando el código exp-Golomb de orden 0 descrito anteriormente, luego
  2. Codificar x mod 2 k en binario

Una forma equivalente de expresar esto es:

  1. 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
  2. Eliminar k bits cero iniciales del resultado de la codificación

Véase también

Referencias

  1. ^ 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.
  2. ^ 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.
  3. ^ "Especificación de Dirac" (PDF) . BBC. Archivado desde el original (PDF) el 3 de mayo de 2015. Consultado el 9 de marzo de 2011 .