Дата актуализации: 09:32:17
Что такое межкадровое предсказание?
В блочных гибридных системах видеокодирования (H․264/AVC, HEVC, VVC и др․) основной задачей является
устранение временной избыточности – то есть уменьшение объёма данных, необходимых для
передачи изменений изображения от одного кадра к другому․ Для этого для каждого текущего кодируемого
блока ищется наиболее похожий блок на уже закодированных кадрах (референсных кадрах)․ Отсчеты найденного
блока используют в качестве предсказания․ Затем из реального блока вычитается предсказанный,
образуется разностный сигнал (Residual), который и кодируется в поток․
Основные элементы Inter‑prediction
Reference‑кадры
Для предсказания необходимо знать, какой из ранее декодированных кадров будет использован․
Каждый такой кадр называется Reference (референсный)․ В битстриме хранится идентификатор
референсного кадра и координаты блока‑предсказания внутри него․
Векторы движения (Motion Vectors, MV)
Смещение текущего блока относительно найденного блока в референсном кадре описывается парой
чисел (Δx, Δy) – вектором движения․ Он указывает, насколько блок «сдвинулся» по горизонтали
и вертикали․
Разностный сигнал (Residual)
После предсказания получаем разницу между реальными пикселями и предсказанными․ Эта разница
обычно содержит значительно меньше энергии, чем исходный блок, что позволяет достичь высокого
уровня сжатия․
Точность векторов движения
В реальных видеопоследовательностях объекты перемещаются не только целыми пикселями․
Поэтому в HEVC используется нецелочисленное предсказание:
- Целочисленные MV – смещение на целое число пикселей․
- Дробные MV – точность до 1/4 пикселя (в HEVC)․ При этом используется
интерполяция (обычно 6‑треугольная фильтрация) для получения «сдвинутых» пикселей․
Двунаправленное предсказание (Bi‑prediction)
Если в качестве предсказания берутся два блока с разных референсных кадров (один предшествует
текущему, а второй следует за ним), их значения усредняются․ Такой механизм называют
bi‑prediction или B‑предсказание․ Результирующий блок называется B‑блоком,
а кадр, содержащий такие блоки – B‑кадр․
Почему би‑prediction улучшает сжатие?
- Эффект субпиксельной точности: При разных знаковых смещениях (+1/6 и –1/6 пикселя)
среднее значение эквивалентно линейной интерполяции с точностью 1/6 пикселя, что улучшает
предсказание без дополнительного увеличения битрейта․ - Компенсация вращения и масштабирования: Если объект вращается, его проекция в кадре
будет иметь противоположные углы смещения в предшествующем и последующем кадре․
Усреднение частично компенсирует такой поворот․ - Изменения освещения: При постепенном изменении яркости (например, темнение) среднее
значение двух референсных блоков даёт более точный результат, чем предсказание только с
одного кадра․
Порядок кодирования
Поскольку один из референсных кадров может находиться после текущего, порядок кодирования
(и декодирования) может отличаться от естественного порядка воспроизведения․ Это требует
буферизации декодированных кадров до тех пор, пока они не понадобятся в качестве референсов․
Формирование списка референсных кадров
Хранить в памяти все ранее декодированные кадры невозможно․ Поэтому в современных кодерах
(HEVC, VVC) формируется конечный список референсных кадров – обычно от 4 до 8 кадров․
Информация о том, какие кадры входят в список, передаётся в потоке в виде Reference Picture List
(RPL)․ Это компромисс между качеством предсказания и требуемыми ресурсами (память, время поиска)․
Предсказание векторов движения (MVP) и разностные векторы (MVD)
В реальном видеопотоке количество бит, отведённых под векторы движения, может быть сопоставимо
с битами, отведёнными под residual․ Чтобы сократить эту нагрузку, в HEVC используется
предсказание векторов движения (Motion Vector Prediction, MVP):
- Декодер по известному алгоритму (на основе соседних уже декодированных блоков) вычисляет
предсказанный вектор mvp․ - В поток записывается лишь разностный вектор mvd – разница между реальным
вектором MV и предсказанным mvp․ - В декодере окончательный вектор восстанавливается как MV = mvp + mvd;
Благодаря этому подходу часто можно передать mvd, равный нулю, что экономит несколько бит
на каждый блок․
Адаптивный размер и форма блока
HEVC поддерживает блоки различного размера (от 64×64 до 4×4) и форму (CU – Coding Unit,
PU – Prediction Unit, TU – Transform Unit)․ При выборе размера учитывается характер движения:
- Большие блоки – для однородных областей с небольшим движением․
- Маленькие блоки – для границ, мелких объектов, резких изменений․
- Необычные формы (например, T‑shaped) – позволяют лучше подстроиться под контур движущегося
объекта․
Пример такой адаптации изображён на рисунке 2 (в оригинальном материале Elecard HEVCAnalyzer):
блоки «подстраиваются» под границы, размеры и положение объектов в кадре, что повышает эффективность
предсказания․
Практические аспекты реализации
Поиск лучшего референсного блока
Идеальный поиск подразолагал бы перебор всех ранее закодированных кадров, но это нереализуемо
из‑за ограничений памяти и времени․ Поэтому в реальных кодерах используется:
- Ограниченный список референсов (RPL)․
- Эффективные алгоритмы поиска (diamond search, hexagon search, fast full‑search)․
- Квалифицированные предсказатели MVP, позволяющие быстро оценить вектор без полного поиска․
Кодирование и декодирование
Процесс кодирования:
- Выбор референсных кадров из RPL․
- Поиск лучшего блока (или двух блоков для bi‑prediction)․
- Расчёт вектора движения и его предсказателя (MVP)․
- Запись в поток mvd, reference index и residual․
Декодирование – обратный процесс, где MVP восстанавливается по тем же правилам, а затем к
предсказанному блоку прибавляется residual, получая оригинальный блок․
Межкадровое предсказание – один из краеугольных камней современных видеокодеков․
Оно позволяет существенно снизить объём передаваемых данных за счёт:
- Эффективного устранения временной избыточности․
- Использования как целочисленных, так и дробных векторов движения․
- Двунаправленного предсказания, повышающего качество при сложных движениях․
- Сокращения битовой нагрузки на векторы движения посредством MVP/MVD․
- Адаптивного выбора размеров и форм блоков под реальную структуру изображения․
Благодаря этим механизмам HEVC (High Efficiency Video Coding) достигает в среднем 50 % экономии
битрейта по сравнению с предшествующим H․264/AVC при сохранении того же уровня визуального качества․
Источники
Информация взята из статьи «Межкадровое (Inter) предсказание в HEVC» компании Elecard, опубликованной 5 апреля 2018 г․