Код экспоненциальных Голомб (или просто Exp-Голомб код ) представляет собой тип универсального кода . Чтобы закодировать любое неотрицательное целое число x, используя код exp-Golomb:
- Запишите x +1 в двоичном формате
- Подсчитайте записанные биты, вычтите единицу и запишите это количество начальных нулевых битов, предшествующих предыдущей битовой строке.
Первые несколько значений кода:
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]
Это совпадает с гамма - кодом Elias из х + 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 также используется в видеокодеке Дирака . [3]
Обобщение на порядок k [ править ]
Чтобы кодировать большие числа меньшим количеством бит (за счет использования большего количества битов для кодирования меньших чисел), это можно обобщить, используя неотрицательный целочисленный параметр k . Чтобы закодировать неотрицательное целое число x в коде Голомба порядка k :
- Закодируйте ⌊ x / 2 k ⌋ с использованием кода Голомба порядка 0, описанного выше, затем
- Кодировать x mod 2 k в двоичном формате
Эквивалентный способ выразить это:
- Кодировать х +2 к -1 , используя порядка 0 код ехр-Голомба (т.е. кодируют х +2 к с использованием гамма - код Elias), а затем
- Удалить k ведущих нулевых битов из результата кодирования
Икс | к = 0 | k = 1 | k = 2 | k = 3 | Икс | к = 0 | k = 1 | k = 2 | k = 3 | Икс | к = 0 | k = 1 | k = 2 | k = 3 | ||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0 | 1 | 10 | 100 | 1000 | 10 | 0001011 | 001100 | 01110 | 010010 | 20 | 000010101 | 00010110 | 0011000 | 011100 | ||
1 | 010 | 11 | 101 | 1001 | 11 | 0001100 | 001101 | 01111 | 010011 | 21 год | 000010110 | 00010111 | 0011001 | 011101 | ||
2 | 011 | 0100 | 110 | 1010 | 12 | 0001101 | 001110 | 0010000 | 010100 | 22 | 000010111 | 00011000 | 0011010 | 011110 | ||
3 | 00100 | 0101 | 111 | 1011 | 13 | 0001110 | 001111 | 0010001 | 010101 | 23 | 000011000 | 00011001 | 0011011 | 011111 | ||
4 | 00101 | 0110 | 01000 | 1100 | 14 | 0001111 | 00010000 | 0010010 | 010110 | 24 | 000011001 | 00011010 | 0011100 | 00100000 | ||
5 | 00110 | 0111 | 01001 | 1101 | 15 | 000010000 | 00010001 | 0010011 | 010111 | 25 | 000011010 | 00011011 | 0011101 | 00100001 | ||
6 | 00111 | 001000 | 01010 | 1110 | 16 | 000010001 | 00010010 | 0010100 | 011000 | 26 | 000011011 | 00011100 | 0011110 | 00100010 | ||
7 | 0001000 | 001001 | 01011 | 1111 | 17 | 000010010 | 00010011 | 0010101 | 011001 | 27 | 000011100 | 00011101 | 0011111 | 00100011 | ||
8 | 0001001 | 001010 | 01100 | 010000 | 18 | 000010011 | 00010100 | 0010110 | 011010 | 28 | 000011101 | 00011110 | 000100000 | 00100100 | ||
9 | 0001010 | 001011 | 01101 | 010001 | 19 | 000010100 | 00010101 | 0010111 | 011011 | 29 | 000011110 | 00011111 | 000100001 | 00100101 |
См. Также [ править ]
- Гамма (γ) кодирование Элиаса
- Дельта (δ) кодирование Элиаса
- Кодирование Элиаса Омега (ω)
- Универсальный код
Ссылки [ править ]
- ^ a b Ричардсон, Иэн (2010). Расширенный стандарт сжатия видео H.264 . Вайли. С. 208, 221. ISBN 978-0-470-51692-8.
- ^ Рупп, Маркус (2009). Передача видео и мультимедиа по сотовым сетям: анализ, моделирование и оптимизация в мобильных сетях 3G . Вайли. п. 149. ISBN 9780470747766.
- ^ "Спецификация Дирака" (PDF) . BBC. Архивировано из оригинального (PDF) 03 мая 2015 года . Проверено 9 марта 2011 года .