Читать в оригинале

<< ПредыдущаяОглавлениеСледующая >>


5.3.3. Простой расширенный профиль

Простой профиль, описанный в первой редакции стандарта MPEG-4 Visual, быстро завоевал признание у разработчиков, так как в нем эффективность кодирования была заметно выше, чем у предыдущих стандартов (таких как MPEG-1 и MPEG-2). Кроме того. MPEG-4 Visual было легко интегрировать в существующие видеоприложения, использующие видео с прямоугольные кадрами. Простой расширенный профиль появился в более поздней версии этого стандарта. В нем были реализованы модули, улучшающие эффективность сжатия и кодирующие чересстрочную развертку. Кодек простого расширенного профиля обязан корректно декодировать все простые объекты, кроме того, в нем доступны следующие инструменты:

- B-VOP (VOP с двунаправленным кодированием inter):

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

- глобальная компенсация движения:

- альтернативный квантователь;

- кодирование чересстрочной развертки.

B-VOP. Объекты B-VOP используют двунаправленный прогноз компенсации движения для повышения степени сжатия. Прогноз для каждого макроблока может быть взят из предыдущего объекта I-VOP или P-VOP (прямой прогноз), найден в следующем за ним объекте I-VOP или P-VOP (обратный прогноз), получен как среднее между предыдущим и последующим объектами (смешанный прогноз). В среднем, эта мода дает лучшее сжатие, чем базовое прогнозирование по предыдущему объекту, однако кодер должен хранить больше кадров для кодирования каждого объекта B-VOP, что повышает объем требуемой памяти и удлиняет задержку кодирования. Для каждого макроблока из B-VOP прогноз компенсации движения строится одним из следующих способов (см. рис. 5.19).

1. Прямой прогноз: передается единственный вектор MVF, который ссылается на предыдущий объект I-VOP или P-VOP.

2. Обратный прогноз: передается один вектор движения MVB, который ссылается на следующий объект I-VOP или P-VOP.

3. Двунаправленный смешанный прогноз: передаются два вектора движения, MVF и MVB, ссылающиеся на предыдущий и следующий объекты I-VOP или P-VOP. Прогноз строится интерполяцией сэмплов двух соответствующих ссылочных макроблоков.

4. Двунаправленный прямой прогноз: векторы компенсации движения, указывающие на предыдущий и следующий I-VOP или P-VOP, автоматически вычисляются по вектору движения одного и того же макроблока следующего I-VOP или P-VOP. Декодеру передается «невязка» или «дельта» вектора движения, корректирующая этот вычисленный вектор движения.

Рис. 5.19. Моды прогнозов для B-VOP.

Пример

Прямая мода (рис. 5.20).

Предыдущий ссылочный VOP:       

Текущий B-VOP:                           

Следующий ссылочный VOP:      

MV для той же позиции макроблока в ,

Рис. 5.20. Векторы в прямой моде.

Четвертьпиксельные векторы движения. Простой профиль поддерживает векторы компенсации движения с точностью в полпиксела. Данный инструмент повышает точность до четверти пиксела. Ссылочные VOP сначала интерполируются с шагом в полпиксела, а потом с шагом в четверть пиксела. Затем делается оценка и компенсация движения. Эта процедура увеличивает сложность вычислений для оценки, компенсации и реконструкции движжения, однако она дает выигрыш по сравнению с полупиксельной компенсацией (см. гл 3).

Альтернативный квантователь. Простой расширенный профиль поддерживает метод альтернативного масштабирования (деквантования). Формула для деквантования коэффициентов DC в моде intra остается прежней (см. § 5.3.2), а другие коэффициенты деквантования вычисляются альтернативным методом.

По квантованным коэффициентам  вычисляются коэффициенты  (здесь ,  - координаты коэффициентов) с помощью формул

(5.3)

Здесь

и  матрица весовых коэффициентов,  - для макроблоков intra, a  - для макроблоков не intra. В методе 2 (см. § 5.3.2.1) все коэффициенты (кроме intra DC) квантуются и деквантуются с одним и тем же шагом квантования. Метод 1 позволяет кодеру варьировать шаг квантования в зависимости от координат коэффициента, используя матрицу весов . Например, можно достигнуть лучшее субъективное качество, увеличив шаг для высокочастотных коэффициентов и сократив его для низкочастотных. Таблица 5.5 приводит простой пример весовой матрицы .

Таблица 5.5. Весовая матрица

10

20

20

30

30

30

40

40

20

20

30

30

30

40

40

40

20

30

30

30

40

40

40

40

30

30

30

30

40

40

40

50

30

30

30

40

40

40

50

50

30

40

40

40

40

40

50

50

40

40

40

40

50

50

50

50

40

40

40

50

50

50

50

50

Глобальная компенсация движения. Макроблоки одного видеообъекта могут испытывать одинаковые перемещения. Например, панорамная видеосъемка порождает линейное перемещение всей сцены. Наезд камеры на сцену и различные повороты производят более сложные совместные эволюции многих макроблоков видеообъекта, которые могут все двигаться в одном направлении. Инструмент «глобальная компенсация движения» GMC (Global Motion Compensation) позволяет кодеру передавать относительно малое число параметров движения (деформации), которые описывают «глобальное» изменение всего VOP. Механизм GMC позволяет существенно увеличить сжатие, когда большая часть макроблоков из VOP имеют одинаковые характеристики движения. Параметры глобального движения кодируются в заголовке VOP. При этом кодер может выбрать параметры «по умолчанию» или использовать индивидуальные параметры векторов движения для каждого макроблока.

При использовании GMC кодер посылает до четырех векторов глобального движения GMV (Global Motion Vector) для каждого VOP вместе с локализаций каждого GMV в VOP. Для каждого пиксела VOP его индивидуальный вектор движения вычисляется с помощью интерполяции векторов GMV, и позиция этого пиксела определяется в соответствии с вектором интерполяции (рис. 5.21). Такой механизм позволяет строить компенсацию для широкого типа движений, включая разные вращения (рис. 5.22), наплывы (рис. 5.23), деформации, а также сдвиги и линейные перемещения видеокамеры.

Рис. 5.21. VOP, GMV и вектор интерполяции.

Рис. 5.22. GMC (компенсация при вращении).

Применение инструмента GMC дает возможность присвоить в заголовке VOL параметру sprite-enable значение GMC (Video Object Layer, слой видеообъектов). После этого объекты VOP из VOL могут быть закодированы в формате S(GMC)-VOP («спрайтовые» VOP в моде GMC, которая является альтернативой «обычному» методу кодирования (I-VOP, P-VOP или B-VOP)). Термин «спрайт» используется здесь, так как похожий тип глобальной компенсации движения применяется в старшей моде «спрайтовое кодирование» (часть основного профиля, см. § 5.4.2.2).

Рис. 5.23. GMC (компенсация при наплыве камеры).

Рис. 5.24. Крупный план чересстрочного VOP.

Чересстрочная развертка. Видеоряд с чересстрочной разверткой состоит из двух полукадров на один целый кадр (см. гл. 2), которые сэмплируются в различные моменты времени (обычно с частотой 50 или 60 Гц). Мере строчные VOP содержат чередующиеся строки сэмплов полу кадров. Поскольку полукадры сэмплируются в разные моменты времени, горизонтальные перемещения могут уменьшить корреляцию между строками сэмплов (например, при движении лица на рис. 5.24). Кодер может выбрать для кодирования макроблока или моду «кадровое DCT», в которой каждый блок преобразуется обычным образом, или моду «полукадровое DCT», в которой сэмплы яркости первого полукадра помещаются в верхние 8 строк макроблока, а сэмплы яркости второго полукадра записываются в нижние 8 строк, после чего делается DCT (рис. 5.25). Мода "полукадровое DCT» дает лучшее сжатие, если два полукадра декоррелированы.

Рис. 5.25. Полукадровое DCT.

В моде компенсации движения по полукадрам (подобно моде компенсации движения 16 х 8 в стандарте MPEG-2) сэмплы, принадлежащие разным полукадрам макроблока, обрабатываются раздельно, поэтому на один макроблок строится два вектора движения, один для первого полукадра, а другой — для второго. Прямая мода в B-VOP (см. выше) модифицируется так, чтобы она могла работать с ссылочными блоками компенсации движения полукадров. При этом генерируется два прямых и два обратных вектора движения, по одному вперед и назад на каждый полукадр. Если чересстрочное видео используется в сочетании с кодированием на основе объектов (см. § 5.4), то процесс выравнивания можно применять независимо к каждому из двух полукадров граничного макроблока.

 



<< ПредыдущаяОглавлениеСледующая >>