Kod wykładniczy - Golomb

Kod wykładniczy-Golomb lub kod Exp-Golomb (w) z rzędu k to rodzaj kodu uniwersalnego , konfigurowalne przez liczbę całkowitą k . Ten kod jest często używany w kompresji danych jako koder entropii , na przykład w standardzie wideo H.264 .

Zasada

Aby zakodować dodatnią liczbę całkowitą w kodzie wykładniczym Golomba rzędu k , można użyć następującej metody:

  1. Weź liczbę binarną z wyjątkiem ostatnich k cyfr i dodaj do niej 1. Zapisz ją.
  2. Policz liczbę zapisanych bitów i odejmij jeden.
  3. Napisz nową liczbę binarną, zaczynając od liczby 0 określonej w poprzednim kroku.
  4. Połącz ostatnie k bitów binarnie, tj. Liczbę binarną zanotowaną w pierwszym kroku.

Dla k = 0 kod zaczyna się od:

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 ...

Aplikacja w standardzie H.264

Kod wykładniczy Golomba dla k = 0 jest używany w standardzie kompresji wideo H.264 lub MPEG-4 AVC , w którym symbole są podpisane i naprzemiennie przypisywane do słowa kodowego. Innymi słowy, 0 to 0, +1 to 1, -1 to 2, +2 to 3 itd.

To narzędzie służy do kodowania wszystkich parametrów, które nie odpowiadają bezpośrednio danym obrazu, takich jak typ obrazu, wektory ruchu, tryby predykcji inter lub intra. Zastosowane kody mają zmienną długość, ale ich konstrukcja jest ustalana zgodnie z logiką zdefiniowaną przez tabelę. Liczba tych symboli nie jest skończona, jednak im większa wartość, tym większa będzie długość odpowiadającego jej łańcucha binarnego. Dlatego przypisujemy kod bliski zeru dla częstych elementów lub symboli oraz większy kod dla tych, które są rzadsze. Każdy typ elementu jest powiązany z określoną tabelą, która umożliwia zwrócenie odpowiedniego kodu numerycznego.

Inne aplikacje

Ten kod jest również używany w kodeku wideo Dirac .

Kod wykładniczy Golomba dla k = 0 jest identyczny z kodowaniem gamma tej samej liczby zwiększonej o 1. Może więc zakodować zero, podczas gdy kodowanie gamma może zakodować tylko liczby ściśle większe od zera.

Kodowanie exp-Golomb różni się nieco od kodowania Golomb, które jest również koderem entropijnym, ale nie kodem uniwersalnym.

Uwagi i odniesienia

Zobacz też