Контекстно-адаптивное двоичное арифметическое кодирование

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

Контекстно-адаптивное двоичное арифметическое кодирование (CABAC ) - это форма энтропийного кодирования, используемая в H.264 / MPEG- 4 стандарта AVC и High Efficiency Video Coding (HEVC). Это потеря метод меньшего сжатия, хотя стандарты кодирования видео, в которых он используется, обычно предназначены для приложений сжатия с потерями. CABAC примечателен тем, что обеспечивает намного лучшее сжатие, чем большинство других алгоритмов энтропийного кодирования, используемых при кодировании видео, и является одним из ключевых элементов, обеспечивающих схеме кодирования H.264 / AVC лучшие возможности сжатия, чем его предшественники..

В H.264 / MPEG-4 AVC CABAC поддерживается только в основном и более высоких профилях (но не в расширенном профиле) стандарта, поскольку для декодирования требуется больший объем обработки, чем для более простой схемы, известной как контекстно-адаптивное кодирование переменной длины (CAVLC), которое используется в стандартном базовом профиле. CABAC также сложно распараллеливать и векторизовать, поэтому с его использованием могут быть связаны другие формы параллелизма (например, параллелизм пространственных областей). В HEVC CABAC используется во всех профилях стандарта.

Содержание
  • 1 Алгоритм
  • 2 Пример
  • 3 Механизм арифметического декодирования
  • 4 История
  • 5 См. Также
  • 6 Ссылки
Алгоритм

CABAC на основе арифметического кодирования, с некоторыми нововведениями и изменениями для адаптации к требованиям стандартов кодирования видео:

  • Он кодирует двоичные символы, что снижает сложность и позволяет моделировать вероятность для более часто используемых битов любого символа.
  • Вероятностные модели выбираются адаптивно на основе локального контекста, что позволяет лучше моделировать вероятности, поскольку режимы кодирования обычно локально хорошо коррелированы.
  • Он использует деление диапазона без умножения за счет использования квантованных диапазонов вероятностей и состояний вероятности.

CABAC имеет несколько режимов вероятности для разных контекстов. Сначала он преобразует все не двоичные символы в двоичные. Затем для каждого бита кодер выбирает, какую модель вероятности использовать, а затем использует информацию от близлежащих элементов для оптимизации оценки вероятности. Наконец, для сжатия данных применяется арифметическое кодирование.

Метод энтропийного кодирования CABAC, используемый в стандарте сжатия видео H264 на английском языке

Контекстное моделирование обеспечивает оценки условных вероятностей кодирующих символов. Используя подходящие контекстные модели, можно использовать данную межсимвольную избыточность, переключаясь между различными вероятностными моделями в соответствии с уже закодированными символами в окрестности текущего символа, который нужно кодировать. Контекстное моделирование обеспечивает большую часть примерно 10% экономии CABAC в скорости передачи по сравнению с методом энтропийного кодирования CAVLC.

Кодирование символа данных включает следующие этапы.

  • Бинаризация: CABAC использует двоичное арифметическое кодирование, что означает, что кодируются только двоичные решения (1 или 0). Недвоичный символ (например, коэффициент преобразования или вектор движения) «бинаризуется» или преобразуется в двоичный код перед арифметическим кодированием. Этот процесс аналогичен процессу преобразования символа данных в код переменной длины, но двоичный код дополнительно кодируется (арифметическим кодером) перед передачей.
  • Этапы повторяются для каждого бита (или «бина»). ") бинаризованного символа.
  • Выбор контекстной модели:" Контекстная модель "- это вероятностная модель для одного или нескольких бинов бинаризованного символа. Эта модель может быть выбрана из набора доступных моделей в зависимости от статистики недавно закодированных символов данных. Контекстная модель хранит вероятность того, что каждый интервал будет равен "1" или "0".
  • Арифметическое кодирование: арифметический кодер кодирует каждый интервал согласно выбранной вероятностной модели. Обратите внимание, что для каждого бина есть только два поддиапазона (соответствующие «0» и «1»).
  • Обновление вероятности: выбранная контекстная модель обновляется на основе фактического кодированного значения (например, если интервал значение было "1", счетчик частоты "1" увеличивается).
Пример

1. Бинаризуйте значение MVDx, разность векторов движения в направлении x.

MVD xБинаризация
00
110
2110
31110
411110
5111110
61111110
711111110
8111111110

Первый бит двоичного кодового слова это корзина 1; второй бит - это ячейка 2; и так далее.

2. Выберите контекстную модель для каждой корзины. Для бина 1 выбирается одна из 3 моделей на основе ранее закодированных значений MVD. Вычисляется норма L1 двух ранее закодированных значений, e k :

ekКонтекстная модель для бина 1
0 ≤ e k< 3Модель 0
3 ≤ e k< 33Модель 1
33 ≤ e kМодель 2

Если e k мало, то высока вероятность того, что текущая MVD будет иметь небольшую величину; и наоборот, если e k велико, то более вероятно, что текущий MVD будет иметь большую величину. Соответственно выбираем таблицу вероятностей (контекстную модель). Остальные ячейки кодируются с использованием одной из 4 дополнительных контекстных моделей:

BinКонтекстная модель
10, 1 или 2 в зависимости от e k
23
34
45
5 и выше6

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

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

Механизм арифметического декодирования

Арифметический декодер более подробно описан в Стандарте. Он имеет три различных свойства:

  1. Оценка вероятности выполняется посредством процесса перехода между 64 отдельными состояниями вероятности для «наименьшего вероятного символа» (LPS, наименее вероятное из двух двоичных решений «0» или «1»).
  2. Диапазон R, представляющий текущее состояние арифметического кодера, квантуется до небольшого диапазона предварительно установленных значений перед вычислением нового диапазона на каждом шаге, что позволяет вычислить новый диапазон с использованием справочная таблица (т.е. без умножения).
  3. Упрощенный процесс кодирования и декодирования определен для символов данных с почти равномерным распределением вероятностей.

Определение процесса декодирования разработано для облегчения -сложность реализации арифметического кодирования и декодирования. В целом, CABAC обеспечивает повышенную эффективность кодирования по сравнению с кодированием на основе CAVLC за счет большей вычислительной сложности.

История

В 1986 году исследователи IBM Коттапурам М. А. Мохиуддин и Йорма Йоханнен Риссанен подали патент на алгоритм двоичного арифметического кодирования без умножения. В 1988 году исследовательская группа IBM, в которую входили Р. Б. Арпс, Т. Чыонг, Д.Дж. Лу, У. Б. Пеннебейкер, Л. Митчелл и Г. Г. Лэнгдон представили алгоритм адаптивного двоичного арифметического кодирования (ABAC) под названием Q-Coder.

Вышеупомянутые патенты и исследовательские статьи, а также несколько других от IBM и Mitsubishi Electric, позже были процитированы CCITT и Joint Photographic Experts Group в качестве основы для адаптивного двоичного файла формата JPEG сжатия изображений. алгоритм арифметического кодирования в 1992 году. Однако кодеры и декодеры формата файла JPEG, который имеет опции как для кодирования Хаффмана, так и для арифметического кодирования, обычно поддерживают только вариант кодирования Хаффмана, который изначально был связан с патентами, хотя патенты JPEG на арифметическое кодирование с тех пор истекли из-за возраста стандарта JPEG.

В 1999 году Ёнджун Ю (Texas Instruments ), Янг Гэп Квон и Антонио Ортега (Университет of Southern California ) представила контекстно-адаптивную форму двоичного арифметического кодирования. Современный алгоритм контекстно-адаптивного двоичного арифметического кодирования (CABAC) был коммерчески представлен с форматом H.264 / MPEG-4 AVC в 2003 году. Большинство патентов на формат AVC принадлежат Panasonic, Godo Kaisha IP Bridge и LG Electronics.

См. Также
Ссылки
Последняя правка сделана 2021-05-15 10:52:27
Содержание доступно по лицензии CC BY-SA 3.0 (если не указано иное).
Обратная связь: support@alphapedia.ru
Соглашение
О проекте