stringtranslate.com

Экспоненциальное кодирование Голомба

Экспоненциальный код Голомба (или просто код Экспоненциального Голомба ) — это тип универсального кода . Чтобы закодировать любое неотрицательное целое число x с помощью кода exp-Голомба:

  1. Запишите x +1 в двоичном формате.
  2. Подсчитайте записанные биты, вычтите единицу и запишите это количество начальных нулевых битов, предшествующих предыдущей строке битов.

Первые несколько значений кода:

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]

В приведенных выше примерах рассмотрим случай 3. Для 3 x+1 = 3 + 1 = 4. 4 в двоичном формате равно «100». «100» имеет 3 бита, а 3-1 = 2. Следовательно, добавьте 2 нуля перед «100», что равно «00100».

Аналогично рассмотрим число 8. «8 + 1» в двоичном формате равно «1001». «1001» имеет 4 бита, а 4-1 — это 3. Следовательно, добавьте 3 нуля перед 1001, что составит «0001001».

Это идентично гамма- коду Элиаса x +1, что позволяет ему кодировать 0. [2]

Расширение на отрицательные числа

Кодирование Exp-Golomb используется в стандартах сжатия видео H.264/MPEG-4 AVC и H.265 High Efficiency Video Coding , в которых также существует вариант кодирования чисел со знаком путем присвоения значения 0 двоичному кодовому слову. '0' и присвоение последующих кодовых слов входным значениям возрастающей величины (и чередующегося знака, если поле может содержать отрицательное число):

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]

Другими словами, неположительное целое число x ≤0 отображается в четное целое число -2 x , а положительное целое число x >0 отображается в нечетное целое число 2 x -1.

Кодирование Exp-Golomb также используется в видеокодеке Dirac . [3]

Обобщение на порядок k

Чтобы кодировать большие числа меньшим количеством битов (за счет использования большего количества битов для кодирования меньших чисел), это можно обобщить, используя неотрицательный целочисленный параметр   k . Чтобы закодировать неотрицательное целое число x в  экспоненциальном коде Голомба порядка k :

  1. Закодируйте ⌊ x /2 k ⌋, используя код exp-Голомба порядка 0, описанный выше, затем
  2. Закодировать x mod 2 k в двоичном формате

Эквивалентный способ выразить это:

  1. Закодируйте x +2 k -1, используя код exp-Голомба порядка 0 (т.е. закодируйте x +2 k , используя гамма-код Элиаса), затем
  2. Удалить k начальных нулевых битов из результата кодирования.

Смотрите также

Рекомендации

  1. ^ Аб Ричардсон, Иэн (2010). Расширенный стандарт сжатия видео H.264. Уайли. стр. 208, 221. ISBN. 978-0-470-51692-8.
  2. ^ Рупп, Маркус (2009). Передача видео и мультимедиа по сотовым сетям: анализ, моделирование и оптимизация в действующих мобильных сетях 3G. Уайли. п. 149. ИСБН 9780470747766.
  3. ^ «Спецификация Дирака» (PDF) . Би-би-си. Архивировано из оригинала (PDF) 3 мая 2015 г. Проверено 9 марта 2011 г.