Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

(по цифровому вещанию) Dvorkovich_V_Cifrovye_videoinformacionnye_sistemy

.pdf
Скачиваний:
301
Добавлен:
15.03.2016
Размер:
23.26 Mб
Скачать

Глава14. Стандарты кодирования динамических изображений

рительно закодированы и восстановлены. В блоках формирования INTRA- и INTER-прогноза происходит выбор наиболее подходящего способа в зависимости от типа кодируемого кадра. Задача выбора решается разработчиком видеокодека самостоятельно (критерии выбора стандартом не обозначены).

Полученный прогноз Pn вычитается из текущего макроблока. В результате вычисляется макроблок остаточных коэффициентов Dn. Этот макроблок поступает в преобразователь, где происходит квазиортогональное частотное преобразование остаточных коэффициентов. Таким образом, значительно уменьшается вычислительная сложность алгоритма, но в процессе сжатия появляются дополнительные искажения. Частотные коэффициенты квантуются (масштабируются), что позволяет произвести сжатие видеоданных с потерями. Полученный набор преобразованных и квантованных коэффициентов Xn служит исходным для обратного канала реконструкции данных. В дальнейшем коэффициенты переупорядочиваются в блоке прямого сканирования. В результате коэффициенты выстраиваются в линейный массив в порядке возрастания. Затем происходит энтропийное кодирование упорядоченного массива коэффициентов, что обеспечивает сжатие данных без потерь. Закодированные коэффициенты вместе с дополнительной информацией, требуемой для правильного декодирования макроблока (режима прогноза, коэффициент квантования и т. д.), составляют сжатый битовый поток данных (bitstream) уровня сетевой абстракции (NAL). Этот поток может передаваться по каналу связи либо быть записан на любой носитель для хранения.

В канале реконструкции вначале происходит обратное квантование, затем обратное частотное преобразование. В итоге получаются восстановленные разностные коэффициенты Dn. Они суммируются с прогнозом Pn, и это позволяет получить восстановленный кадр Fn. Необходимо отметить, что восстановленный кадр не является идентичными исходному. В него внесены искажения, обусловленные квантованием и квазиортогональным частотным преобразованием. Именно такой кадр будет получен на приемной стороне, и поэтому именно его необходимо использовать для формирования прогноза в режиме INTRA.

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

Декодер получает сжатый цифровой поток уровня сетевой абстракции NAL. Декодер осуществляет обратные процедуры по отношению к кодеру. Стоит только отметить, что в блоках формирования INTRA- и INTER-прогнозов нет элементов, отвечающих за анализ кадра. Информация о конкретном режиме и способе его реализации извлекается из цифрового потока.

Кодированная видеопоследовательность в Н.264/AVC состоит из последовательности кодированных изображений. Кодированное изображение может представлять или целый кадр, или одно поле, как это было в случае видео MPEG-2.

14.6. H.264/MPEG-4 часть 10 AVC — улучшенное видеокодирование

Обычно видеокадр можно считать состоящим из двух построчно перемешанных полей — верхнего и нижнего. Верхнее поле состоит из строк с четными номерами 0, 2, . . . , H/2 − 1, где H — количество строк в кадре. Нижнее поле содержит строки с нечетными номерами (начиная со второй строки кадра). Если два поля кадра были захвачены в разные моменты времени, кадр называется кадром с чересстрочной разверткой, в противном случае он называется кадром с прогрессивной разверткой.

Зрительная система человека воспринимает сцену в терминах яркостной и цветовой информации раздельно, причем чувствительность к деталям в яркости существенно выше, чем в цветности. Система передачи видео может быть спроектирована с использованием этой особенности (так и делается как в обычном аналоговом ТВ, так и в цифровом). В Н.264/AVC, как и в предшествующих стандартах, это осуществляется путем использования цветового пространства YCrCb и уменьшения пространственного разрешения цветовой информации Cr и Cb в два раза по вертикали и по горизонтали (модель цветности 4 : 2 : 0), точность представления отсчетов яркости и цветности — 8 битов. Стандартом предусмотрена возможность использования моделей цветности 4 : 2 : 2 и 4 : 4 : 4, а также точности представления отсчетов до 12 битов.

Изображение делится на макроблоки фиксированного размера, которые охватывают прямоугольные области изображения 16 × 16 отсчетов яркостной компоненты и 8 × 8 отсчетов каждой из двух цветностных компонент (для формата цветности 4 : 2 : 0). Это деление на макроблоки было принято во всех предшествующих стандартах видеокодирования, начиная с Н.261. Макроблоки являются основными строительными блоками стандарта, для которых определяется процесс декодирования.

Слайсы представляют собой последовательности макроблоков, которые обрабатываются в порядке сканирования растра, если не используется гибкое упорядочивание макроблоков (flexible macroblock ordering, FMO). Изображение может быть разделено на один или несколько слайсов. Изображение в Н.264/AVC, таким образом, является набором из одного или более слайсов. Слайсы самодостаточны в том смысле, что если имеются активные наборы параметров последовательности и изображения, то синтаксические элементы слайса могут быть извлечены из битового потока и значения отсчетов в области изображения, которое представляет слайс, могут быть корректно декодированы без использования данных других слайсов при условии, что используемые опорные изображения идентичны на кодере и декодере. Некоторая информация из других слайсов может понадобиться для деблокинговой фильтрации по границам слайса.

FMO изменяет способ деления изображения на слайсы и макроблоки путем использования концепции слайсовых групп. Каждая слайсовая группа — это множество макроблоков, определенное с помощью таблицы распределения макроблоков по слайсовым группам, которая определена содержанием набора параметров изображения и некоторой информацией из заголовка слайса. Таблица распределения макроблоков по слайсовым группам состоит из идентификационного номера слайсовой группы для каждого макроблока изображения, указывая, какой слайсовой группе принадлежит соответствующий макроблок. Каждая слайсовая группа может подразделяться на один или несколько слайсов таким образом, что слайс является последовательностью макроблоков в составе

Глава14. Стандарты кодирования динамических изображений

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

При использовании FMO изображение можно разбить на множество групп макроблоков, таких как перемежающиеся слайсы, рассредоточенные макроблоки, одна или более слайсовых групп «переднего плана» и «остальные» слайсовые группы (таким образом, например, выделяются области интереса), распределение макроблоков по слайсовым группам в шахматном порядке (этот случай может быть полезным в приложениях видеоконференцсвязи, слайсовые группы передаются в разных пакетах, которые могут теряться).

Независимо от использования FMO, каждый слайс может кодироваться с использованием следующих типов:

I-слайс — слайс, все макроблоки которого закодированы с использованием внутреннего (intra) предсказания;

P-слайс — помимо типов кодирования I-слайса, некоторые макроблоки могут быть закодированы с использованием однонапрвленного предсказания;

B-слайс — помимо типов кодирования P-слайса, некоторые макроблоки могут быть закодированы с использованием двунаправленного предсказания.

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

SP-слайс — так называемый переключаемый P-слайс, который кодируется таким образом, что становится возможным эффективное переключение между различными заранее кодированными изображениями;

SI-слайс — так называемый переключаемый I-слайс, который делает возможным точное совпадение макроблоков в SP-слайсе для произвольного доступа и восстановления ошибок.

Все отсчеты яркости и цветности макроблока предсказываются либо в пространстве, либо во времени, результирующий остаток предсказания кодируется с использованием преобразования. Для кодирования с преобразованием каждая цветовая компонента сигнала остатка предсказания делится на меньшие блоки 4 × 4. Каждый блок подвергается целочисленному преобразованию, коэффициенты преобразования квантуются и кодируются с помощью энтропийного кодирования.

Внутрикадровое предсказание

Каждый макроблок может передаваться в одном из нескольких режимов кодирования в зависимости от типа кодирования слайса. Во всех типах кодирования слайса поддерживаются типы внутрикадрового кодирования, обозначаемые Intra_4 ×4 или Intra_16 ×16, а также предсказание цветности и I-PCM-предска- зание.

Режим Intra_4 × 4 основан на предсказании каждого блока яркости 4 × 4 отдельно и подходит для кодирования частей изображения с существенными

14.6. H.264/MPEG-4 часть 10 AVC — улучшенное видеокодирование

 

деталями. Режим Intra_16 × 16, с другой стороны, осуществляет предсказание

блока яркости 16 × 16 целиком и более подходит для очень гладких областей

изображения. В дополнение к этим двум типам предсказания яркости вводится

отдельный режим предсказания цветности. Как альтернатива режимам кодиро-

вания Intra_4 × 4 и Intra_16 × 16, режим кодирования I-PCM позволяет кодеру

просто обходить процессы предсказания и кодирования с преобразованием и вме-

сто этого прямо посылать значения кодируемых отсчетов.

 

В отличие от некоторых предшествующих стандартов видеокодирования (а имен-

но, H.263 и MPEG-4), в которых внутрикадровое предсказание проводилось в

пространстве преобразования, внутрикадровое предсказание в Н.264/AVC всегда

проводится в пространственной области с помощью ссылок на соседние отсчеты

ранее закодированных блоков, которые находятся слева и/или выше предсказы-

ваемого блока.

 

 

При использование режима Intra_4×4

 

 

каждый блок 4 × 4 предсказывается по

 

 

пространственно соседним отсчетам, как

 

 

показано на рис. 14.28. 16 отсчетов блока

 

 

4 × 4, помеченные буквами a–p, пред-

 

 

сказываются с использованием ранее де-

 

 

кодированных отсчетов соседних блоков,

 

 

отмеченных буквами A–Н по горизонта-

 

 

ли и I–L по вертикали.

 

 

Для каждого блока 4 × 4 использу-

 

 

ется один из 9 режимов предсказания.

Рис. 14.28. Маркировка отсчетов для блока

В дополнение к «DC»-предсказанию (од-

прогноза размером 4 × 4

 

но значение используется для предсказа-

 

 

ния всего блока 4 × 4), имеются 8 режимов «направленного» предсказания, как

показано на рис. 14.29. Эти режимы полезны для предсказания направленных

структур в изображении, таких как границы, расположенные под различными

углами.

 

 

Режим 0. Верхние отсчеты A, B, C, D экстраполируются вертикально. Режим 1. Левые отсчеты I, J, K, L экстраполируются горизонтально.

Режим 2. Все отсчеты в прогнозе P являются средним из выборок A. . . D и I. . . L (DC-предсказания).

Режим 3. Отсчеты интерполируются под углом в 45в направлении между нижним левым и верхним правым отсчетами.

Режим 4. Отсчеты интерполируются под углом 45вниз и направо.

Режим 5. Интерполяция отсчетов производится под углом приблизительно 26,6влево к вертикальному направлению (отношение ширины к высоте равно 1/2).

Режим 6. Интерполяция отсчетов производится под углом приблизительно 26,6вниз по отношению к горизонтальному направлению.

Режим 7. Интерполяция отсчетов производится под углом приблизительно 26,6вправо от вертикального направления.

Режим 8. Интерполяция отсчетов производится под углом приблизительно 26,6выше горизонтального направления.

Глава14. Стандарты кодирования динамических изображений

Рис. 14.29. Режимы предсказания Intra_4 × 4

Рис. 14.30. Режим формирования прогноза INTRA-блоков размером 16 × 16

Стрелки на рис. 14.29 указывают направление предсказания в каждом режиме. В режимах 3 — 8 отсчеты прогноза формируются из средневзвешенных выборок A. . . L. Например, если выбран режим 4, то отсчет прогноза d (рис. 14.28) высчитывается по формуле:

 

 

 

 

 

 

 

d = round

 

B

+

C

+

D

.

(14.8)

 

4

2

4

 

 

При использовании режима Intra_16 × 16 предсказывается целиком яркостная компонента макроблока. Поддерживаются 4 режима предсказания. Режим 0 (вертикальное предсказание), режим 1 (горизонтальное предсказание) и режим 2 (DC-предсказание) определены аналогично соответствующим режимам предсказания Intra_4 × 4 за исключением того, что вместо 4 соседей на каждой стороне для предсказания блока 4 × 4, используются 16 соседних отсчетов на каждой стороне для предсказания блока 16 × 16. Четвертый режим предсказания — так называемое плоскостное (plane) предсказание. На рис. 14.30 приведены диаграммы прогноза блоков яркости 16 × 16.

14.6. H.264/MPEG-4 часть 10 AVC — улучшенное видеокодирование

Режим 0. Экстраполяция верхних выборок H.

Режим 1. Экстраполяция левых выборок V.

Режим 2. Среднее между верхними H и левыми выборками V.

Режим 3. Линейное сглаживание между верхними H и левыми выборками V.

Отсчеты цветности макроблока предсказываются с помощью методики, аналогичной предсказанию яркости в режиме Intra_16 ×16, так как цветность обычно является гладкой функцией на достаточно больших областях. Используется также четыре режима формирования прогноза. Необходимо отметить, если любой из яркостных блоков макроблока кодируется в Intra-режиме, то и оба цветоразностных блока также должны быть закодированы в Intra-режиме.

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

Межкадровое предсказание в P-слайсах

В дополнение к типам макроблоков с внутрикадровым кодированием определены различные типы P-макроблоков как типы кодирования с компенсацией движения (предсказательные). Каждый тип P-макроблока соответствует специфическому делению макроблока на блоки, используемые для предсказания с компенсацией движения. Синтаксис поддерживает деление на блоки яркости размером 16 × 16, 16 × 8, 8 × 16 и 8 × 8 отсчетов.

Если выбрано деление на блоки 8 ×8 отсчетов, то передается дополнительный синтаксический элемент для каждого блока 8 × 8. Этот синтаксический элемент описывает, производится ли дальнейшее деление блока 8 × 8 на блоки 8 × 4, 4 × 8 или 4 × 4 отсчета яркости и соответствующие отсчеты цветности. На рис. 14.31 приводятся варианты таких разбиений.

Рис. 14.31. Разбиение макроблоков 16 × 16 — а) и блоков 8 × 8 — б)

На рис. 14.32 приведен пример разбиения остаточного кадра (до процедуры компенсации движения). Кодер выбирает «лучший» размер блока для каждой части кадра, т. е. такой размер, который минимизирует кодирование остаточных коэффициентов и векторов движения. В областях кадра, где изменения незначительны (остаточные коэффициенты кажутся серыми), выбирается размер блока 16×16; в областях с большими изменениями (остаточные коэффициенты кажутся черными или белыми) выбираются меньшие размеры блоков.

Глава14. Стандарты кодирования динамических изображений

Рис. 14.32. Пример оптимального разбиения кадра изображения

Каждый блок цветности разбивается таким же образом, как яркостный. Однако вертикальные и горизонтальные размеры такого блока в два раза меньше (для модели цветности 4 : 2 : 0), т. е. если, например, блок яркости имеет размер 8×16, то соответствующий ему блок цветности имеет размер 4×8, а яркости блоку 4 × 4 соответствует блок цветности 2 × 2. Горизонтальные и вертикальные составляющие каждого вектора движения (одного на блок) делятся на два, когда применяются к блокам цветности.

Сигнал предсказания для каждого кодированного с предсказанием блока яркости M × N получается путем сдвига области соответствующего опорного изображения, который определяется вектором движения (параллельного переноса) и индексом опорного изображения. Таким образом, если макроблок кодируется с использованием 4 блоков 8 × 8 и каждый блок далее поделен на 4 блока 4 × 4, то для P-макроблока могут передаваться максимум 16 векторов движения.

Точность компенсации движения — четверть расстояния между отсчетами яркости. Когда вектор движения указывает на целочисленное положение отсчета, сигнал предсказания состоит из соответствующих отсчетов опорного изображения, в противном случае соответствующие отсчеты получаются с помощью интерполяции значений на нецелых позициях. Величины предсказания в полупиксельных позициях получаются с помощью применения одномерного 6-точечного КИХ-фильтра с коэффициентами 1/32, −5/32, 5/8, 5/8, −5/32, 1/32. Рис. 14.33 поясняет введение в блок яркости полупиксельных выборок.

 

14.6. H.264/MPEG-4 часть 10 AVC — улучшенное видеокодирование

 

Например, полупиксельная выборка b рас-

 

 

 

 

считывается из 6 горизонтальных целочислен-

 

 

 

 

ных выборок E, F , G, H, I и J по формуле:

 

 

 

 

 

1

 

 

 

 

 

 

 

b = round

232 (E − 5F + 20G + 20H − 5I + J)3 .

 

 

 

 

 

 

 

 

(14.9)

 

 

 

 

Точно так же выборка h интерполируется на

 

 

 

 

основе выборок A, C, G, M , R и T . После фор-

 

 

 

 

мирования полупиксельных выборок, смежных

 

 

 

 

с целочисленными отсчетами, производится вы-

 

 

 

 

числение остальных полупиксельных выборок

 

 

 

 

(например, выборки в позиции j) с интерполи-

 

 

 

 

рованием 6 горизонтальных или вертикальных

Рис. 14.33. Введение в блок ярко-

полупиксельных выборок, полученных на пер-

вом шаге. Например, выборка j формируется

сти полупиксельных выборок

 

 

 

 

 

на основе выборок cc, dd, h, m, ee и f f .

 

 

 

 

 

Величины предсказания в четвертьпиксельных позициях получаются с помо-

щью усреднения значений в целочисленных и полупиксельных позициях.). Они

формируются на основе двух горизонтальных или вертикальных смежных полу-

или целочисленных выборок (например, a, c, i, k и d, f , n, q на рис. 14.34). На-

пример:

 

 

 

 

 

 

 

 

 

 

1

 

 

 

1

 

 

 

a = round

22 (G + b)3

,

e = round

22 (h + b)3 .

(14.10)

Рис. 14.34. Введение в блок ярко-

 

 

 

 

 

 

сти четвертьпиксельных выборок

 

 

 

 

 

 

Значения для предсказания компонент цветности всегда реализуются с помощью билинейной интерполяции. Так как сетка дискретизации цветности для формата кадра YCrCb 4 : 2 : 0 имеет меньшее разрешение по сравнению с решеткой дискретизации яркости, смещение цветности должно иметь точность восьмой части отсчета.

Интерполирование выборок в 1/8-пиксельных интервалах производится на основе целочисленных выборок в каждом цветоразностном компоненте. В этом случае используется линейная интерполяция для формирования цветоразностных выборок с 1/8-пиксельной точностью (рис. 14.35).

Для точки a аппроксимация производится на основе целочисленных пикселов A, B, C и D в соответствии с соотношением:

a = round

 

64 [(8 − dx)(8 − dy )A + dx(8 − dy )B + (8 − dx)dy C + dxdy D] .

 

 

1

 

(14.11)

Глава14. Стандарты кодирования динамических изображений

Более точное предсказание движения с использованием целопиксельного, по-

лупиксельного и четвертьпиксельного предсказания сигналов яркости и допол-

нительно 1/8-пиксельное предсказание сигнала цветности представляет собой

одно из главных улучшений по отношению к предшествующим стандартам по

нескольким причинам. Наиболее очевидная причина — более точное представле-

ние движения. Другая причина — большая гибкость фильтрации предсказания.

Целопиксельное, полупиксельное и четвертьпиксельное предсказание представ-

ляет различные степени низкочастотной фильтрации, которые автоматически

выбираются в процессе поиска движения. В этом отношении шеститочечный

фильтр оказывается лучшим выбором среди необходимых вариантов фильтра-

ции, и имеет способность сохранять высокочастотные компоненты.

 

Синтаксис допускает использование так на-

 

зываемых векторов движения за границами

 

изображения, то есть векторов движения, ко-

 

торые указывают

за границы изображения.

 

В этом случае опорное изображение экстрапо-

 

лируется за границы путем повторения гранич-

 

ных отсчетов до интерполяции.

 

Компоненты векторов движения кодируют-

 

ся дифференциально с помощью медианного

 

или направленного (directional) предсказания

 

относительно

соседних блоков. Предсказание

 

компонент векторов движения (или любые дру-

 

гие формы предсказания) не осуществляется

 

через границы слайсов.

Рис. 14.35. Введение в блок цветно-

Синтаксис

поддерживает предсказание с

сти 1/8-пиксельных выборок

компенсацией движения по нескольким опор-

 

 

ным изображениям. То есть более чем одно

ранее закодированное изображение может быть использовано в качестве опор-

ного для предсказания с компенсацией движения.

 

В дополнение к описанным выше режимам макроблоков с компенсацией дви-

жения P-макроблок может быть закодирован в так называемом режиме P_Skip

(пропущенный Р). Для этого типа кодирования не передается ни квантованный

сигнал ошибки предсказания, ни вектор движения, ни индекс опорного изобра-

жения. Вектор движения, используемый для восстановления P_Skip макроблока,

аналогичен предсказателю вектора движения для блока 16 × 16. Полезный эф-

фект такого определения типа кодирования P_Skip состоит в том, что большие

области без изменений или с постоянным вектором движения, таким как при

медленном панорамировании, могут быть представлены очень малым количе-

ством битов.

 

 

 

Межкадровое предсказание в B-слайсах

По сравнению с предшествующими стандартами видеокодирования, в Н.264/AVC концепция B-слайсов обобщена. Например, другие изображения могут ссылаться на изображения, содержащие B-слайсы при предсказании с компенсацией движения. Таким образом, существенная разница между B- и P-слайсами состоит

14.6. H.264/MPEG-4 часть 10 AVC — улучшенное видеокодирование

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

В B-слайсах поддерживается четыре типа межкадрового предсказания: список 0, список 1, двунаправленное предсказание и прямое предсказание. В режиме двунаправленного предсказания сигнал предсказания формируется взвешенным усреднением сигналов предсказания с компенсацией движения из списка 0 и списка 1. Режим прямого предсказания выводится из ранее переданного синтаксического элемента и может быть предсказанием из списка 0, списка 1 или двунаправленным.

B-слайсы используют такое же разбиение макроблоков, как и P-слайсы. Наряду с P_16×16, P_16×8, P_8×16, P_8×8 типами внутрикадрового кодирования имеются двунаправленное предсказание и так называемое прямое предсказание. Для каждого блока 16×16, 16 ×8, 8×16 и 8 ×8 метод предсказания (список 0, список 1, двунаправленное) может быть выбран независимо. Блок 8×8 B-макроблока также может быть закодирован в прямом (direct) режиме. Если сигнал ошибки предсказания не передается в режиме прямого (direct) кодирования макроблока, то этот режим также называется B_Skip (пропущенный B), и макроблок может быть закодирован очень эффективно аналогично режиму P_Skip в P-слайсах. Кодирование векторов движения в B-слайсах похоже на кодирование векторов движения в P-слайсах с соответствующими изменениями, так как соседние блоки могут быть закодированы с использованием различных режимов предсказания.

Предсказания векторов движения

Векторы движения соседних блоков зачастую оказываются коррелированными, поэтому вектор-предсказание MVp формируется на основе ранее вычисленных векторов движения и передается только вектор разности MVD между истинным значением вектора и предсказанным значением.

На рис. 14.36 варианты оценки вектора-предсказания для блока E по векторам движения соседних блоков одинакового и разных размеров.

Рис. 14.36. Текущие и соседние блоки одинакового размера — а) и разного размера — б)

Вектор-прогноз определяется следующим образом:

Для блоков всех размеров, исключая размеры 16 × 8 и 8×16, вектор MVp устанавливается равным медиане векторов движения A, B и С. Этот алгоритм используется также для пропущенных макроблоков размером 16 ×16.

Для блоков размером 16×8 вектор MVp для верхнего блока размером 16×8 прогнозируется по вектору блока B, а для нижнего блока размером 16 ×8 — по вектору блока A.