3.3.4. Прогноз макроблока с компенсированным движениемМакроблок, соответствующий области из 16 х 16 пикселов на кадре, является базисной единицей для прогноза с компенсацией движения во многих важных визуальных кодовых стандартах, включая MPEG-1, MPEG-2, MPEG-4 Visual, Н.263 и Н.264. Для исходного видеоматериала в формате 4:2:0 (см. гл. 2) структура макроблока показана на рис. 3.8. Область из 16 х 16 пикселов исходного кадра состоит из 256 сэмплов яркости (сгруппированные в 4 блока сэмплов 8 х 8), 64 голубых хроматических компонент (один блок 8 х 8) и 64 красных хроматических компонент (8 х 8), что дает ровно шесть блоков размером 8x8. Стандарты MPEG-4 Visual и Н.264 оперируют с кадрами с помощью единиц макроблоков. Рис. 3.8. Макроблок (4:2:0). Оценка движения. Оценка движения макроблока состоит из поиска области пикселов 16 х 16 на ссылочном кадре, который похож на текущий макроблок. Ссылочным кадром является уже декодированный кадр, который хронологически может идти раньше или позже текущего. Область поиска на ссылочном кадре имеет центр в середине положения текущего макроблока. Найденный блок 16 х 16 пикселов, имеющий наименьшее расхождение с текущим макроблоком, выбирается в качестве «подходящего» макроблока (рис. 3.9). Компенсация движения. Выбранный «наилучший» макроблок на ссылочном кадре вычитается из текущего блока, и их разность, называемая остаточным макроблоком (яркости и хроматичности), кодируется и передается вместе с вектором движения, падающим позицию наилучшего макроблока по отношению к текущему макроблоку. Внутри кодера остаточный макроблок кодируется и декодируется, а затем добавляется к наилучшему макроблоку для формирования реконструированного макроблока, который сохраняется в ссылочном буфере для использования в будущих прогнозах компенсации движения. Рис. 3.9. Оценка движения. Существует много вариаций базового процесса оценки движения и компенсации движения. Ссылочным кадром может быть предыдущий кадр (в хронологическом порядке), будущий кадр или комбинация двух или более ранее декодированных кадров. Если в качестве ссылочного выбран будущий кадр, то необходимо его закодировать до текущего кадра (т.е. кадры должны быть закодированы не в хронологическом порядке). Там, где имеется существенное расхождение между ссылочным и текущим кадром (например, при смене сцен), можно кодировать макроблок без компенсации движения. Таким образом, кодер выбирает или моду intra (кодирование без компенсации движения), или моду inter (кодирование с компенсацией движения) для каждого макроблока. Движущиеся объекты на видеосцене редко следуют строго вдоль границ блоков пикселов 16x16, поэтому более эффективным может быть использование переменных размеров блоков для оценки и компенсации движения. Объекты могут также перемещаться на нецелое число пикселов между кадрами (например, на 2,78 пикселов вместо 2,0 в горизонтальном направлении). Поэтому лучший прогноз можно построить интерполяцией ссылочного кадра по позициям подпикселов перед поиском наилучшего положения прогноза.
|