Aj
Сжатие видеоинформации по рекомендации H.264
В рекомендации нет явного определения кодера и декодера. В ней описывается синтаксис сжатого видеопотока, а также метод егодекодирования. При реализации видеокодека в соответствии с рекомендацией Н.264 необязательно точно повторять структуру, ноосновные элементы должны присутствовать обязательно. Кодек Н.264 содержит практически те же элементы, что и кодеки МРЕЭ1, МРЕЭ2, МРЕЭ4, Н.261, Н.263. В целом сжатие происходит по тем же принципам, хотя во всех основных элементах есть качественные изменения. Это позволило значительно повысить качество кодирования: более чем в два раза возрастает степень сжатия при том же качествевосстановления исходного изображения.
Кузнецов АЛ.,
Аспирант каф. ТВ МТУСИ
В рекомендации нет явного определения кодера и декодера. В ней описывается синтаксис сжатого видеопотока, а также метод его декодирования. При реализации видеокодека в соответствии с рекомендацией Н.264 необязательно точно повторять структуру, но основные элемента должны1 присутствовать обязательно. Кодек Н.264 содержит практически те же элементы, что и кодеки MPEG1, MPEG2, MPEG4, Н.261, Н.263. В целом сжатие происходит по тем же принципам, хотя во всех основных элементах есть качественные изменения. Это позволило значительно повысить качество кодирования: более чем в два раза возрастает степень сжатия при том же качестве восстановления исходного изображения. Кодер включает две ветви обработки видеопотока: канал прямого кодирования, канал реконструкции видеоизображения. Обработка кадра происходит по макроблокам, соответствующим фрагментам размером 16x16 точек в исходном изображении. Каждый макроблок может быть обработан в двух режимах: INTRA или INTER. В любом режиме прогноз макроблока формируется на основе восстановленного кадра.
В режиме INTRA прогноз формируется из выборок текущего кадра, предварительно закодированных и восстановленных. Причём используются выборки кадра до деблокирующего фильтра. В режиме INTER прогноз формируется с учётом изменений, которые произошли в текущем кадре по сравнению с одним или несколькими предыдущими (или последующими). Кадры, служащие для прогноза, должны быть предварительно закодированы и восстановлены. В блоках формирования INTRA- и INTER- прогноза происходит выбор наиболее подходящего способа в зависимости от типа кодируемого кадра. Эти способы подробно описаны в рекомендации, но критериев выбора нет.
В режиме INTRA прогноз формируется на основании предварительно закодированных и восстановленных блоков. Для яркостной составляющей изображения прогноз может быть сформирован как для макроблока размером 16х16, так и отдельно для всех входящих в него блоков размером 4х4. Всего определено 9 дополнительных режимов (способов) формирования прогноза (предсказания) для яркостных блоков размером 4х4, 4 дополнительных режима для яр-костных макроблоков размером 16х16 и 4 режима для цветоразностных блоков размером 8х8.
Обработка кадра в кодере происходит справа налево и сверху вниз. Таким образом, формирование прогноза для текущего блока (или макроблока) происходит на основе уже обработанных блоков, расположенных сверху и слева от текущего (обрабатываемого в данный момент). Существует только один блок, который не исполь-
зует прогноза. Это блок, расположенный в левом верхнем углу кадра. Кроме того, прогноз для блоков первого ряда обрабатываемого кадра основан только на блоках, расположенных слева, а прогноз для первого столбца использует только блоки сверху.
Отсчёты блока прогноза (обозначенные на рис.1 как а, Ь, с, сі, е, | д, Ь, і, I к, I, т, п, о, р) формируются на основе уже обработанных вертикальных (I, X К, L) и горизонтальных (А, В, С, D, Е, F, С, Н) отсчётов предыдущих блоков (рисунок 1).
При этом в рекомендации описаны следующие режимы формирования прогноза: верхние отсчёты А, В, С, D экстраполируются вертикально (режим 0); левые отсчёты I, X К, L экстраполируются горизонтально (режим 1); все отсчёты в прогнозе Р являются средним из выборок А..^ и І..1 (режим 2); отсчёты интерполируются под углом в 45° в направлении между нижним левым и верхним правым отсчётами (режим 3); отсчёты интерполируются под углом 45° вниз и направо (режим 4); интерполяция отсчётов производится под углом приблизительно 26,6° влево к вертикальному направлению, отношение ширины к высоте равно 1/2 (режим 5); интерполяция отсчётов производится под углом приблизительно 26,6° вниз по отношению к горизонтальному направлению (режим 6); интерполяция отсчётов производится под углом приблизительно 26,6° вправо от вертикального направления (режим 7); интерполяция отсчётов производится под углом приблизительно 26,6° выше горизонтального направления (режим 8).
Стрелки на рис. 2 указывают направление предсказания в каждом режиме. В режимах с 3 по 8 отсчёты прогноза формируются из средневзвешенных выборок А..1. Например, если выбран режим 4, то отсчёт прогноза С (рис. 1) высчитывается по формуле:
d = round
BCD' — + — + — 4 2 4
(1)
Кодер может выбирать режим предсказания для каждого блока таким образом, чтобы минимизировать разность между прогнозом и кодируемым блоком.
Кодер имеет возможность кодировать не только яркостные блоки размером 4х4, но и размером 16х16. В рекомендации Н.264 определены четыре режима формирования прогноза для макроблоков (рис. 3): экстраполяция верхних выборок Н (режим 0); экстраполяция левых выборок V (режим 1); среднее между верхними Н и левыми выборками V (режим 2); линейное сглаживание между верхними Н и левыми выборками V (режим 5).
Каждый из отсчётов цветоразностного блока размером 8x8 предсказывается от цветоразностных
А В С D Е F 0 I Н
1 a ь с d
і е f Я h
к і j к 1
L m n о Р
Рис. 1 . Отчёты для блока 4х4
выборок, расположенных выше и/или слева, закодированных и восстановленных. Четыре режима формирования прогноза для цветоразностных составляющих аналогичны режимам для яркостного блока размером 16х16.
Если любой из яркостных блоков макроблока кодируется в ІКІТІІА-режиме, то и оба цветоразностных блока также должны быть закодированы в ІКІТІІА-режиме.
В ІКІТЕІ^-режиме прогноз формируется на основе одного или нескольких предварительно закодированных и восстановленных кадров путём выбора в них опорных блоков, сдвинутых относительно кодируемого блока (прогноз с компенсацией движения). Кодек стандарта Н.264 использует тот же принцип компенсации движения, что и в старых стандартах, начиная с Н.261. Важными отличиями от более ранних версий являются возможность менять размер блока (от 16х16 до 4х4) и возможность поиска векторов движения с меньшим шагом (1/4 пикселя для яркостных компонент).
В кодере, описываемом в рекомендации Н.264, в режиме прогнозирования с компенсацией движения поддерживаются размеры блоков от16х16 до 4х4 для яркостной составляющей изображения в различных сочетаниях. Яркостная составляющая каждого макроблока (размером 16х16) может быть разбита четырьмя способами, как это показано на рисунок 4: 16х16, 16х8, 8х16 или 8х8. Каждая из областей меньшего размера является частью макроблока. Если выбран режим поиска векторов движения для блоков 8х8, то каждый из четырех блоков 8х8 может быть разбит на блоки четырьмя способами, как показано на рисунок 5: 8х8, 8х4, 4х8 или 4х4. Возможность делить макроблок на блоки, а те в свою очередь на субблоки, позволяет получить большое количество комбинаций их сочетаний в пределах каждого макроблока. Этот метод разбиения макроблоков на блоки и субблоки в режиме компенсации движения получил название структурного дерева компенсации движения.
Для каждого блока и субблока требуется отдельный вектор движения. Каждый вектор движения должен быть закодирован и передан; кроме того, необходимо закодировать и передать конкретный вид структурного дерева для каждого макроблока.
Выбор большого размера блоков (например, 16х16, 16х8, 8х16) означает, что количество бит для передачи данных векторов движения и структуры дерева минимально, однако при этом остаточные коэффициенты могут содержать существенное количество энергии в высокочастотных областях кадра (с высокой детальностью).
Рис. 2. Формирование прогноза яркостных блоков 4х4
Режим 2
Режим 3
1 и
Среднее
V между
отсчетами
/
У /
При выборе маленького размера блоков (например, 8х4, 4х4 и т.д.) можем получить более низкую энергию остаточных коэффициентов после компенсации движения, но потребуется большее число бит для кодирования и передачи данных о векторах движения и структуре дерева. Поэтому выбор размера блоков оказывает существенное влияние на эффективность сжатия. Вообще, большой размер блоков соответствует низкочастотным областям кадра, а маленький — может быть выгоден для высокочастотных.
Разрешающая способность цветоразностных составляющих макроблока (Сг и СЬ) равна половине яркостного. Каждый цветоразностный блок разбивается таким же образом, как яркостной, за исключением того, что вертикальные и горизонтальные размеры блока в два раза меньше (если яркостной блок имеет размер 8х16, то соответствующий ему цветоразностный блок имеет размер 4х8; яркостному блоку 8х4 соответствует цветоразностный 4х2; и т.д.). Горизонтальные и вертикальные составляющие каждого вектора движения (одного на блок) делятся на два, когда применяются к цветоразностным блокам.
На рисунке 6 показан пример разбиения остаточного кадра (до процедуры! компенсации движения). Кодер выбирает "лучший" размер блока для каждой части кадра, то есть такой размер, который минимизирует кодирование остаточных коэффициентов и векторов движения. На рисунок 6 тонкими линиями показано разбиение кадра на блоки. В областях кадра, где изменения незначительны (остаточные коэффициенты кажутся серыми), выбирается размер блока 16х16; в областях с большими изменениями (остаточные коэффициенты! кажутся черными или белыми) выбираются меньшие размеры блоков.
Каждый блок в режиме ІКІТЕІ^-кодирования макроблока предсказывается от блока того же размера в опорном кадре. Смещение между этими двумя областями (вектор движения) имеет минимальное разрешение, равное четверти расстояния между точками (пикселями) в опорном изображении (для яркостной составляющей). Опорных яркостного и цветоразностного блоков для нецелочисленных (дробных) векторов движения в опорном кадре не существует, поэтому их необходимо вычислить на основе ближайших пикселей.
На рисунке 7 показан пример целочисленного и дробного векторов движения. Необходимо сформировать прогноз для блока размером 4х4 (красные точки на рис.7,а). Если горизонтальные и вертикальные компоненты вектора движения — целые числа (рис. 7,б), то опорный блок в опорном кадре существует (синие точки). Если один или оба вектора движения — дробные числа (рис. 7,в), прогноз (синие точки) формируется вставкой между смежными пикселями в опорном кадре (серые точки).
Компенсация движения с четвертьпиксельным разрешением может обеспечивать значительно лучшую эффективность сжатия, чем компенсация с целочисленным разрешением, но при этом увеличивается сложность процедуры поиска векторов движения.
Рис. 3. Формирование прогноза ІКІТІ^А-блоков 16х16
Рис. 5. Макроблок 8х8 на 8х8, 8х4, 4х8 или 4х4
РИс. 6. Пример разбиения кадра на блоки и субблоки
Интерполированные выборки формируются следующим образом. В яркостной компоненте опорного изображения сначала формируются выборки с полупиксельной точностью (рис. 8). На этом рисунке выборки в целочисленных позициях выделены серым цветом. Каждая выборка в полупиксельной позиции, которая является смежной с двумя целочисленными выборками (например, выборки Ь, Ь, т, б на рис. 8), интерполируется на основе 6 пикселей в целочисленных позициях при помощи КИХ-фильтра. Коэффициенты фильтра равны: 1 /32, -5/32, 5/8, 5/8, -5/32, 1/32.
Например, полупиксельная выборка Ь рассчитывается от 6 горизонтальных целочисленных выборок Е, F, О, Н, I и } по формуле:
Точно так же выборка Ь интерполируется на основе выборок А, С, О, М, к и Т. После формирования полупиксельных выборок, смежных с целочисленными отсчетами, производится вычисление остальных полупиксельных выборок (например, выборки в позиции | на рис.8) с интерполированием 6 горизонтальных или вертикальных полупиксельных выборок, полученных на первом шаге. Например, выборка | формируется на основе выборок сс, с1с1, Ь, т, ее и А1. Интерполирующий КИХ-фильтр 6-го порядка является относительно сложным (по сравнению, например, с билинейной интерполяцией), но формирует более точный прогноз и, следовательно, обеспечивает лучшую эффективность компенсации движения.
Как только получены все выборки в полупиксельных позициях, на их основе формируются выборки с четвертьпиксельной точностью методом линейной интерполяции (рис.9). Выборки в четвертьпиксельной позиции формируются на основе двух горизонтальных или вертикальных смежных полу или целочисленных выборок (например, а, с, 1, к и С, А п, д на рис.9) путем линейной интерполяции между ними. Например:
Оставшиеся четвертьпиксельные выборки (е, д, р и г на рис.9) линейно интерполируются между диагональной парой противоположных полупиксельных выборок. Например, е интерполируется на основе выборок Ь и Ь.
Векторы движения с четвертьпиксельным разрешением для яркостной компоненты требуют 1/8-пиксельной точности для цвето-
□
□
□
□
m aa 3
c bb D
□
□
□
□
□
□
□
□
G b H
h m
M s N
99 s
hh
□
□
□
□
Рис. В. Вставка в яркостный блок полупиксельных выборок
G ►a-*- b H G b И G b H
* У / 4
h - '•‘І і 1- m h I И h m
: у * Pv *
Ы Ml M • И M s N
Рис. 9. Четвертьпиксельные выборки в яркостном блоке
Рис. 10.1/8 пиксельная выборка в цветоразностном блоке
разностной компоненты (для формата кадра YUV 4:2:0). Интерполирование выборок в 1/8-пиксельных интервалах производится на основе целочисленных выборок в каждом цветоразностном компоненте. В этом случае используется линейная интерполяция для формирования цветоразностных выборок с 1/8-пиксельной точностью, показанная на рисунке 10 (с1х = 2 и Су = 3).
1/8 пиксельная выборка вычисляется по формуле:
гоипс1 (ЗОЛ+ 105 + 18С + 60)
а =
6-І
(3)
В этом случае каждая выборка формируется как линейная комбинация соседних пикселей в целочисленных позициях, например, для выборки а аппроксимация производится на основе целочисленных выборок А, В, С и D.
Литература
1. Гук И. Особенности сжатия видеоданных по рекомендации H.264 // Компоненты и технологии. 2006. — №2. — С 20-29.
2. Richardson I.E. H.264 and MPEG-4 video compression. — John Wiley & Sons Ltd, 2003. — 306 с.