Раздел: Документация
0 ... 30 31 32 33 34 35 36 ... 122 О 0.10.30.70.9 1 Рис. 3.49. Пример арифметического кодирования. Конец примера Принципиальное преимущество метода арифметического кодирования заключается в том, что передаваемое кодовое число (в нашем случае - это число 0,394, которое можно представить в двоичном виде девятью битами), не ограничивается заданием целого числа битов для каждого отдельного символа кодируемой последовательности. Для достижения оптимального сжатия данная последовательность должна быть закодирована с помощью log2(l/P0) + log2(I/P i) + log2(l/P0) + log2(l/P2) бит = 8,28 бит. В нашем примере арифметический код имеет длину 9 бит, что близко к оптимальному значению. Схема кодирования, в которой используется целое число бит для каждого символа сжимаемой последовательности (например, кодирование Хаффмана), неспособна приблизиться к оптимальному числу бит, поэтому арифметическое кодирование превосходит по эффективности компрессии кодирование Хаффмана. 3.5.3.1. Арифметическое кодирование с контекстом Эффективность энтропийного кодирования зависит от точности моделей вероятностей символов. Контекстное арифметическое кодирование (CAE, Context-based Arithmetic Encoding) основано на изучении локальных пространственных или временных вероятностных характеристик кодируемых последовательностей. Метод CAE используется в стандарте JBIG для сжатия бинарных изображений [9]. Он был также приспособлен для кодирования двоичных «шаблонов» в MPEG-4 Visual (см. гл. 5) и при кодировании основного профиля в стандарте Н.264 (см. гл. 6).
Ьчпслш * потсж Рис. 3.50. Кодер DPCM/DCT. 3.6. Гибридная модель DPCM/DCT видеокодека Большинство стандартов видеокодирования, реализованных после 1990 года, основаны на некоторой единой модели видеокодека, которая включает оценку движения и компенсацию высоких частот (эта конструкция обозначается сокращением DPCM), стадию преобразования и энтропийный кодер. Такую конструкцию часто называют гибридной моделью DPCM/DCT. Любой кодек, совместимый со стандартами Н.261. Н.263. MPEG-1. MPEG-2, MPEG-4 Visual и Н.264. должен содержать в себе соответствующее семейство базисных функций кодирования и декодирования (при этом имеются значительные различия между их реализациями и приложениями). На рис. 3.50 и 3.51 приведены общие схемы гибридного кодера и декодера DPCM/DCT. Видеокодер обрабатывает кадр Fn и производит закодированный (сжатый) битовый поток, а декодер использует этот битовый поток (показанный справа на рисунках) для построения реконструированного кадра F„. который чаще всего не- идентичен исходному кадру F„. Рисунки специально расположены так, чтобы подчеркнуть общие блоки в кодере и декодере. Большинство функций декодера, на самом деле, имеются в кодере (причина этого будет объяснена позже).
Ваттом» и щ шопотм Битоаый поток Рис. 3.51. Декодер DPCM/DCT. Поток данных кодера. Имеется два основных пути прохождения данных в кодере: слева направо (кодирование) и справа налево (реконструкция). Поток кодирования состоит в следующем. 1.Входной видеокадр F„ подается на вход кодера и обрабатывается там макроблоками (соответствующими областям из 16 х 16 сэмплов яркости и хроматичности). 2.Кадр Fn сравнивается с ссылочным кадром, например с ранее закодированным кадром Ff j. Функция оценки движения находит в(или в интерполированной по подсэмплам версии кадра ) область 16 х 16, которая больше других «похожа» на текущий макроблок в F„ (при этом используется некоторый критерий схожести макроблоков). Смещение текущего макроблока по отношению к положению выбранного ссылочного макроблока записывается в вектор движения MV. 3.На основе выбранного вектора движения VM строится прогноз компенсированного движения Р (область 16 х 16, выбранная функцией оценки движения). 4.Макроблок Р вычитается из текущего макроблока, и их разность D называется остаточным макроблоком. 5.Макроблок D преобразуется с помощью DCT. Обычно макро-блок D делится на подблоки 8x8 или 4 х 4, и каждый подблок преобразуется отдельно. 6.Каждый подблок квантуется (X). 7.Для коэффициентов DCT всех подблоков делается переупорядочение и результат кодируется символами «серия-значение». 0 ... 30 31 32 33 34 35 36 ... 122
|