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

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


6.4.5.2. Векторы движения

Каждая часть деления макроблока или подмакроблока в моде inter прогнозируется по области того же размера на ссылочном снимке. Вектор смещения между двумя областями (вектор движения) имеет разрешение в четверть пиксела для компоненты яркости и одну восьмую пиксела для компонент хроматичности. Сэмплы яркости и хроматичности не определены явно на ссылочном снимке с под- пиксельной точностью, поэтому их необходимо вычислить с помощью интерполяции соседних сэмплов. На рис. 6.13 блок размером 4x4 текущего кадра (а) прогнозируется по области ссылочного снимка, имеющей близкую позицию к положению текущего блока. Если горизонтальные и вертикальные компоненты вектора движения являются целыми числами (б), то соответствующий прогнозный блок сэмплов существует в явном виде на ссылочном снимке (серые кружки). Если один или оба компонента вектора движения являются дробными числами (в), то блок-прогноз (серые кружки) генерируется с помощью интерполяции по соседним сэмплам на ссылочном снимке (белые кружки).

Генерирование интерполированных сэмплов. Сначала вычисляются сэмплы компонент яркости, расположенные посередине между сэмплами с целочисленными координатами (полусэмплы) на ссылочном снимке (рис. 6.14 серые метки). Каждый полусэмпл, примыкающий к двумя целыми сэмплами (например, b, h, m, s на рис. 6.14), интерполируется но целым сэмплам с помощью конечного фильтра импульсного отклика, имеющего 6 отсчетов с весами (1/32, -5/52, 5/8, -5/32, 1/32). Например, полусэмпл b вычисляется по шести горизонтальным целым сэмплам Е, F, G, Н, I и J:

b = round((E - 5F + 20G + 20Н - 5I + J)/32).

Аналогично полусэмпл h интерполируется (фильтрованием сэмплов А, С, G, М, R и Т. После того как вычислены все примыкающие полусэмплы по горизонтали и вертикали, оставшиеся полусэмплы вычисляются интерполяцией по шесть горизонтальным или вертикальным полусэмплам, которые были найдены в начале процедуры. Например, j получается фильтрованием сс, dd, h, m, ее и ff (заметим, что фильтрация по вертикали даст тот же результат и, кроме того, при вычислении j используются точные значения h и m). Интерполяционный фильтр с шестью отсчетами является относительно сложным, но его результат аккуратно вписывается в данные целочисленных сэмплов и, следовательно, дает хорошую компенсацию движения.

Рис. 6.14. Интерполяция компонент яркости по полусэмплам.

После вычисления полусэмплов подсэмплы с шагом в четверть пиксела определяется с помощью линейной интерполяции (см. рис. 6.15). Четвертьсэмплы, имеющие два прилегающих, горизонтальные или вертикальные целые сэмплы или полусэмплы (например, а, с, i, k и d, f, n, q на рис. 6.15) получаются интерполяцией этих прилегающих сэмплов, например:

а = round((G + b)/2).

 

Остальные позиции четвертьсэмплов (е, g, р и r на этом рисунке) генерируются линейной интерполяцией пары полусэмплов по диагонали. Например, е получается из b и h. На рис. 6.16 показан результат интерполяции ссылочной области, приведенной на рис. 3.16, с четвертьпиксельной точностью.

Рис. 6.15. Интерполяция компонент яркости по четвертьсэмплам.

Рис. 6.16. Интерполяция компонент яркости по четвертьсэмплам.

Векторам движения с четвертьпиксельным разрешением компонент яркости требуются векторы движения компонент хроматичности с шагов с 1/8 пиксела (при сэмплировании в формате 4:2:0). Интерполированные хроматические сэмплы получаются линейной интерполяцией (рис. 6.17). Каждый хроматический подсэмпл а равен линейной комбинации Слизких целых сэмплов А, В, С и D:

Рис. 6.17. Интерполяция сэмплов хроматичности по 1/8 сэмпла.

На рис. 6.17 коэффициент  равен 2, a  — 3, т.е.

 



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