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

редактировать

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

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

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

Содержание
  • 1 Расширение до отрицательных чисел
  • 2 Обобщение до порядка k
  • 3 См. также
  • 4 Ссылки
Расширение до отрицательных чисел

Exp- Кодирование Голомба используется в стандартах сжатия видео 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...

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

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

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

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

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

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

  1. Кодировать x + 2−1, используя экспоненциальный код Голомба порядка 0 (т. Е. Кодировать x + 2, используя гамма-код Элиаса), затем
  2. Удалить k начальные нулевые биты из результата кодирования
Примеры кодирования Exp-Golomb-k
xk=0k=1k=2k = 3xk=0k=1k=2k = 3xk=0k = 1k = 2k = 3
011010010001000010110011000111001001020000010101000101100011000011100
10101110110011100011000011010111101001121000010110000101110011001011101
201101001101010120001101001110001000001010022000010111000110000011010011110
300100010111110 11130001110001111001000101010123000011000000110010011011011111
40010101100100011001400011110001000000100100101102400001100100011010001110000100000
5001100111010011101150000100000001000100100110101112500001101000011011001110100100001
600111001000010101110160000100010001001000101000110002600001101100011100001111000100010
70001000001001010111111170000100100001001100101010110012700001110000011101001111100100011
800010010010100110001000018000010011000101000010110011010280000111010001111000010000000100100
900010100010110110101000119000010100000101010010111011011290000111100001111100010000100100101
См. Также
Ссылки
Последняя правка сделана 2021-05-19 10:02:14
Содержание доступно по лицензии CC BY-SA 3.0 (если не указано иное).
Обратная связь: support@alphapedia.ru
Соглашение
О проекте