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

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


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

Объект P-VOP или B-VOP получает прогноз из ссылочного I-VOP или P-VOP с компенсацией движения. Возможна ситуация, когда вектор движения указывает на область, которая простирается за пределы непрозрачной области ссылочного VOP, т.е. некоторые пикселы ссылочного объекта могут оказаться «прозрачными». Рисунок 5.36 иллюстрирует три примера. На левой диаграмме показан ссылочный VOP (непрозрачные пикселы окрашены в серый тон), а на правой изображен текущий VOP с девятью макроблоками. Макроблок МВ1 полностью непрозрачен, но его вектор движения указывает на область ссылочного VOP, содержащую прозрачные пикселы. Макроблок МВ2 является граничным, и непрозрачная часть его ссылочной области меньше, чем непрозрачная часть МВ2. Макроблок МВЗ также является граничным, и большая часть его ссылочной области - прозрачна. Во всех случаях некоторая часть непрозрачных пикселов текущего макроблока имеет компенсацию движения от прозрачной части ссылочного VOP. Так как значения прозрачных пикселов неопределены, необходимо разобраться с этими случаями. Это делается с помощью «подгонки» позиций прозрачных пикселов на границе и прозрачных макроблоков на ссылочном VOP.

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

1. «Цвета» непрозрачных пикселов по краям ВАВ (они темно-серые на рис. 5.37) используются для окраски по горизонтали прозрачных пиксельных позиций той же строки. Если строка граничит с непрозрачными пикселами только с одной стороны, то ближайший непрозрачный пиксел копируется во все такие прозрачные места. Если же эта строка ограничена непрозрачными пикселами с обеих сторон (например, верхняя строка на рис. 5.37 (а)), то в качестве «цвета» прозрачных пикселов выбирается среднее значение двух соседних непрозрачных пикселов. Результат подгонки по горизонтали показан на рис. 5.37 (б).

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

Рис. 5.36. Примеры ссылочных областей с прозрачными пикселами.

Рис. 5.37. Подгонка по горизонтали и вертикали граничного макроблока.

Пример

На рис. 5.38 приведен граничный макроблок VOP, прозрачные пикселы которого окрашены в черный цвет. Непрозрачные пикселы экстраполируются по горизонтали (шаг 1), и получается рис. 5.39 (заметим, что пять прозрачных позиций имеют непрозрачные пикселы с обеих сторон). Затем к результату применяется экстраполяция по вертикали (шаг 2), что дает макроблок на рис. 5.40.

Рис. 5.38. Граничный макроблок

Рис. 5.39. Граничный макроблок после горизонтальной подгонки

Рис. 5.40. Граничный макроблок после вертикальной подгонки.

Рис. 5.41. Подгонка прозрачного макроблока по горизонтали.

Подгонка прозрачных макроблоков. Пикселы полностью прозрачных макроблоков также следует заполнить некоторыми значениями, так как они могут полностью или частично попасть в ссылочную область компенсации движения (например, ссылочная область для макроблока МВ3 на рис. 5.36). Прозрачные макроблоки, имеющие ровно один граничный макроблок, заполняются по горизонтали или вертикали, экстраполируя граничные пикселы этого макроблока. Например, на рис. 5.41 прозрачный макроблок слева от граничного макроблока, изображенного на рис. 5.38, заполняется по горизонтали значениями соответствующих примыкающих справа пикселов. Прозрачные макроблоки подгоняются всегда после подгонки всех граничных макроблоков.

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

Прозрачные макроблоки, не имеющие граничных соседей, заполняются значением пиксела , где  — число бит в пикселе. Так, если  (обычный случай), то этот макроблок заполняется значением 128.

 



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