Контекстно-адаптивное двоичное арифметическое кодирование
-
Контекстно-адаптивное двоичное арифметическое кодирование (CABAC)
- CABAC — это метод энтропийного сжатия без потерь, используемый в стандартах H.264/MPEG-4 AVC и HEVC.
- Он обеспечивает лучшее сжатие по сравнению с другими алгоритмами энтропийного кодирования и является ключевым элементом для улучшения возможностей сжатия H.264/AVC.
- В H.264/MPEG-4 AVC CABAC используется только в основных и более высоких профилях, но не в расширенном профиле, из-за сложности декодирования.
- CABAC трудно распараллелить и векторизовать, но может сочетаться с другими формами параллелизма.
- В HEVC CABAC используется во всех профилях стандарта.
-
Алгоритм CABAC
- CABAC основан на арифметическом кодировании с некоторыми нововведениями и адаптацией к видеокодекам.
- Он кодирует двоичные символы, что упрощает моделирование вероятностей и позволяет адаптивно выбирать контекстные модели.
- CABAC использует деление диапазона без умножения и квантованные вероятностные состояния.
- Он имеет несколько вероятностных режимов для разных контекстов и использует арифметическое кодирование для сжатия данных.
-
Этапы кодирования символа данных
- Бинаризация: преобразование недвоичных символов в двоичные.
- Выбор контекстной модели: выбор вероятностной модели на основе статистики закодированных символов.
- Арифметическое кодирование: кодирование каждой ячейки в соответствии с выбранной контекстной моделью.
- Обновление вероятности: обновление контекстных моделей на основе фактического значения закодированной ячейки.
-
Пример кодирования
- Преобразование значения MVDx в двоичную форму и выбор контекстной модели для каждой ячейки.
- Кодирование каждой ячейки с использованием выбранной контекстной модели и обновление контекстных моделей при необходимости.
-
Механизм арифметического декодирования
- Арифметический декодер использует процесс перехода между 64 вероятностными состояниями и квантование диапазона для вычисления нового диапазона.
- Для символов с равномерным распределением вероятностей предусмотрен упрощенный процесс кодирования и декодирования.
-
История и развитие CABAC
- Алгоритм CABAC был запатентован в 1986 году и представлен в 1988 году.
- Он был использован в формате JPEG в 1992 году, но JPEG обычно поддерживает только кодирование по Хаффману.
- CABAC был коммерчески внедрен в H.264/MPEG-4 AVC в 2003 году.
-
Смотрите также
- Арифметическое кодирование, сжатие данных, сжатие без потерь, CAVLC.