Читать в оригинале

<< ПредыдущаяОглавлениеСледующая >>


6.5.4. Контекстно-адаптивное арифметическое кодирование (CABАС)

Когда флаг entropy_coding_mode в множестве параметров снимка установлен в 1, применяется система арифметического кодирования при компрессии синтаксических элементов Н.264. Контекстно-адаптивное двоичное арифметическое кодирование САВАС (Context-based Adaptive Binary Arithmetic Coding) [7] достигает хороших результатов по сжатию данных, если выполняются следующие условия: вероятностная модель для каждого синтаксического элемента выбирается в соответствии с его контекстом; адаптивные оценки вероятностей основываются на локальных статистиках; используется арифметическое кодирование вместо VLC. Кодирование символов данных включает следующие стадии.

1. Переход к двоичной системе: САВАС использует только двоичные коды, т.е. кодируется только двоичный выбор (1 или 0).

Символы, принимающие недвоичные знамения (например, коэффициенты преобразования или векторы движения, любые символы, принимающие более двух значений), приводятся к двоичному основанию до применения схемы арифметического кодирования. Этот процесс ангалогичен процессу присвоения символам кодов переменной длины (см. § 6.4.13), но полученные коды далее кодируются арифметическим кодером перед записью в выходной битовый поток.

Стадии 2, 3 и 4 для каждого бита символа в его двоичном представлении следующие:

2. Выбор контекстной модели. «Контекстная модель» это вероятностная модель для одного или нескольких битов двоичных символов. Она выбирается из набора доступных моделей, зависящих от статистики недавно закодированных символов. Контекстная модель хранит вероятности каждого бита 1 или 0.

3. Арифметическое кодирование: арифметический кодер кодирует каждый бит в соответствии с выбранной вероятностной моделью (см. § 3.5.3). Заметим, что имеется всего два подынтервала для каждого бита (соответствующие 1 и 0).

4. Обновление вероятностей: выбранная контекстная модель подправляется на основе фактических закодированных значений (например, если значение бита было 1, то увеличивается счетчик частоты битов 1).

Таблица 6.16. Контекстные модели для первого бита.

Контекстная модель для первого бита

Модель 0

Модель 1

Модель 2

Процесс кодирования. Проиллюстрируем этот процесс на примере кодирования величины  (координата  разности векторов движения, которая кодируется для каждого блока или подблока в моде inter).

1. Перевести  в двоичную форму. Применяется следующая таблица однозначно декодируемых кодовых слов при условии  (большие значения  переводятся в двоичную форму с помощью экспоненциальных кодов Голомба).

Двоичный код (s = знак)

0

0

1

10s

2

110s

3

1110s

4

11110s

5

111110s

6

1111110s

7

11111110s

8

111111110s

Первый бит кодового слова это первый бит символа, второй бит слова второй бит символа и т.д.

2. Выбрать контекстную модель для каждого бита. Для первого бита выбирается одна из трех моделей (табл. 6.16) на основе L1 нормы двух значений предыдущих закодированных векторов , .

,

где А и В - блоки, лежащие левее и выше, текущего блока. Если мало, то с большой вероятностью текущий MVD будет иметь маленький модуль, и наоборот, при большом  модуль текущего MVD будет большим. Вероятностная таблица (контекстная модель) выбирается соответственно. Все остальные биты используют одну из оставшихся четырех моделей (табл. 6.17).

Таблица 6.17. Контекстные модели.

Бит

Контекстная модель

1

0, 1 или 2 в зависимости от ,

2

Модель 3

3

Модель 4

4

Модель 5

5 и выше

Модель 6

3. Кодировать каждый бит. Выбранная контекстная модель снабжена двумя оценками вероятностей: вероятность того, что бит равен 1 и вероятность того, что бит равен 0. Эти два числа определяют разбиение на подынтервалы, используемое при арифметическом кодировании.

4. Обновить контекстную модель. Например, если для первого бита выбрана контекстная модель 2 и значение первого бита равно 0, то счетчик частоты 0 увеличивается на 1, и поэтому в следующий рал при выборе этой модели вероятность 0 будет немного больше. Когда общее число появления данной модели превосходит некоторый порог, происходит пропорциональное уменьшение счетчиков 0 и 1, что означает повышение приоритета недавних наблюдений.

Контекстные модели. Контекстные модели и схемы двоичных представлений всех синтаксических элементов определены стандартом. Имеется около 400 разных контекстных моделей для различных синтаксических элементов. В начале кодирования каждого слоя происходит инициализация контекстных моделей в зависимости от начальных значений параметра квантования QP (поскольку он оказывает значительное влияние на вероятности появления различных синтаксических символов). Дополнительно при кодировании Р-, SP- и В-слоев, кодер может выбрать одно из трех множеств параметров инициализации контекстных моделей, которые позволяют лучше адаптироваться к различным типам видеоконтента [8].

Модуль арифметического кодирования. Арифметический кодер подробно описан в стандарте, и он имеет три специфических свойства.

1. Оценка вероятностей осуществляется переходным процессом между 64 отдельными состояниями вероятностей для «символа с наименьшей вероятностью» LPS (он является наименее вероятным из двух возможных решений 0 или 1).

2. Область R представления текущего состояния арифметического кодера (см. гл. 3) квантуется на маленькие области заранее заданных значений перед вычислением новых областей на каждом шаге, при этом имеется возможность табличного определения новых областей (т.е. без использования сложной операции умножения).

3. Используются упрощенные процессы кодирования и декодирования (в которых опущена часть контекстного моделирования) для символов с распределением вероятностей, близким к равномерному.

Процесс декодирования спроектирован так, чтобы облегчить программную реализацию схемы арифметического кодирования и декодирования. В среднем алгоритм САВАС обеспечивает лучшее сжатие по сравнению со схемой кодирования VLC (см. примеры производительности в гл. 7).

Рис. 6.48. Переключение потоков с помощью I-слоев.

Рис. 6.49. Переключение потоков с помощью SP-слоев.

 



<< ПредыдущаяОглавлениеСледующая >>