stringtranslate.com

Интер фрейм

Inter-кадр — это кадр в потоке сжатия видео , который выражается в терминах одного или нескольких соседних кадров. Часть «inter» термина относится к использованию Inter-кадрового предсказания . Этот вид предсказания пытается воспользоваться временной избыточностью между соседними кадрами, обеспечивая более высокие показатели сжатия.

Межкадровое предсказание

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

В большинстве случаев кодеру это удается, но найденный блок, скорее всего, не будет точно соответствовать блоку, который он кодирует. Вот почему кодер вычислит различия между ними. Эти остаточные значения известны как ошибка предсказания и должны быть преобразованы и отправлены декодеру.

Подводя итог, если кодеру удается найти соответствующий блок в опорном кадре, он получит вектор движения, указывающий на соответствующий блок, и ошибку предсказания. Используя оба элемента, декодер сможет восстановить необработанные пиксели блока. На следующем изображении весь процесс показан графически:

Процесс межкадрового предсказания. В этом случае произошло изменение освещенности между блоком в опорном кадре и кодируемым блоком: эта разница будет ошибкой предсказания для этого блока.

У такого рода прогнозов есть свои плюсы и минусы:

Из-за этих недостатков для того, чтобы этот метод был эффективным и полезным, необходимо использовать надежный и периодический по времени опорный кадр. Этот опорный кадр известен как Intra-frame , который строго интракодирован, поэтому его всегда можно декодировать без дополнительной информации.

В большинстве конструкций есть два типа интер-кадров: P-кадры и B-кадры. Эти два типа кадров и I-кадры (внутрикодированные изображения) обычно объединяются в GOP (группу изображений). I-кадру не нужна дополнительная информация для декодирования, и его можно использовать в качестве надежного эталона. Эта структура также позволяет достичь периодичности I-кадров, которая необходима для синхронизации декодера.

Типы рам

Разница между P-кадрами и B-кадрами заключается в системе отсчета, которую им разрешено использовать.

P-рама

P-кадр — это термин, используемый для определения прогнозируемых изображений вперед. Прогнозирование выполняется на основе более раннего изображения, в основном I-кадра или P-кадра, поэтому требуется меньше данных кодирования (≈50% по сравнению с размером I-кадра).

Объем данных, необходимых для выполнения этого прогноза, состоит из векторов движения и коэффициентов преобразования, описывающих коррекцию прогноза. Он подразумевает использование компенсации движения .

B-рама

B-кадр — это термин для двунаправленно предсказанных изображений. Этот метод предсказания занимает меньше данных кодирования, чем P-кадры в целом (≈25% по сравнению с размером I-кадра), поскольку предсказание делается либо из более раннего кадра, либо из более позднего кадра, либо из обоих. (B-кадры также могут быть менее эффективными, чем P-кадры в определенных случаях, [1] например: кодирование без потерь.)

Подобно P-кадрам, B-кадры выражаются как векторы движения и коэффициенты преобразования. Чтобы избежать растущей ошибки распространения, B-кадры не используются в качестве опоры для дальнейших предсказаний в большинстве стандартов кодирования. Однако в более новых методах кодирования (таких как H.264/MPEG-4 AVC и HEVC ) B-кадры могут использоваться в качестве опоры для лучшего использования временной избыточности. [2] [3]

Типичная структура группы изображений (GOP)

Иллюстрация зависимостей группы картинок схемы IBBPBB... Время идет слева направо.

Типичная структура группы изображений (GOP) — IBBPBBP... I-кадр используется для предсказания первого P-кадра, а эти два кадра также используются для предсказания первого и второго B-кадров. Второй P-кадр также предсказывается с использованием первого I-кадра. Оба P-кадра объединяются для предсказания третьего и четвертого B-кадров. Схема показана на следующем рисунке:

Эта структура предполагает проблему, поскольку четвертый кадр (P-кадр) необходим для предсказания второго и третьего (B-кадров). Поэтому нам нужно передать P-кадр перед B-кадрами, и это задержит передачу (необходимо будет сохранить P-кадр). Эта структура имеет сильные стороны:

Но у него есть слабые стороны:

Улучшения межкадрового прогнозирования H.264

Наиболее важными усовершенствованиями технологии H.264 по сравнению с предыдущими стандартами (особенно MPEG-2 ) являются:

Более гибкое разделение блоков

Разделение блока яркости 16×16 ( MPEG-2 ), 16×8, 8×16 и 8×8. Последний случай допускает разделение блока на новые блоки 4×8, 8×4 или 4×4.

Кадр, который нужно кодировать, делится на блоки одинакового размера, как показано на рисунке выше. Каждое предсказание блока будет представлять собой блоки того же размера, что и опорные изображения, смещенные на небольшое смещение.

Разрешение до ¼ пикселя, компенсация движения

Пиксели в положении полупикселя получаются путем применения фильтра длиной 6.

H=[1 -5 20 20 -5 1], т.е.полупиксель "b"=A - 5B + 20C + 20D - 5E + F

Пиксели в четвертьпиксельной позиции получаются путем билинейной интерполяции .

В то время как MPEG-2 допускал разрешение в ½ пикселя, Inter frame допускает разрешение до ¼ пикселя. Это означает, что можно искать блок в кадре для кодирования в других опорных кадрах, или мы можем интерполировать несуществующие пиксели, чтобы найти блоки, которые еще лучше подходят для текущего блока. Если вектор движения представляет собой целое число единиц выборок, это означает, что можно найти в опорных изображениях скомпенсированный блок в движении. Если вектор движения не является целым числом, прогноз будет получен из интерполированных пикселей с помощью фильтра интерполятора в горизонтальном и вертикальном направлениях.

Множественные ссылки

Множественные ссылки на оценку движения позволяют найти лучшую ссылку в 2 возможных буферах (Список 0 для прошлых изображений, Список 1 для будущих изображений), которые содержат до 16 кадров в общей сложности. [4] [5] Прогнозирование блоков выполняется путем взвешенной суммы блоков из эталонного изображения. Это позволяет улучшить качество изображения в сценах, где есть изменения плоскости, масштабирования или когда обнаруживаются новые объекты.

Улучшенный прямой/пропуск макроблока

Режимы Skip и Direct используются очень часто, особенно с B-кадрами. Они значительно сокращают количество кодируемых битов. Эти режимы используются, когда блок кодируется без отправки остаточной ошибки или векторов движения. Кодер запишет только то, что это макроблок Skip. Декодер выведет вектор движения закодированного блока Direct/Skip Mode из других уже декодированных блоков.

Есть два способа вывести движение:

Временной
Он использует вектор движения блока из кадра List 1, расположенного в той же позиции, чтобы вывести вектор движения. Блок List 1 использует блок List 0 в качестве ссылки.
Пространственный
Он предсказывает движение из соседних макроблоков в том же кадре. Возможным критерием может быть копирование вектора движения из соседнего блока. Эти режимы используются в однородных зонах изображения, где нет большого движения.

На рисунке выше розовые блоки — это кодированные блоки Direct/Skip Mode. Как мы видим, они используются очень часто, в основном в B-кадрах.

Дополнительная информация

Хотя использование термина «кадр» является общепринятым в неформальном использовании, во многих случаях (например, в международных стандартах видеокодирования MPEG и VCEG ) применяется более общая концепция с использованием слова «изображение» вместо «кадра», где изображение может быть либо полным кадром, либо одним чересстрочным полем.

Видеокодеки , такие как MPEG-2 , H.264 или Ogg Theora, уменьшают объем данных в потоке, следуя за ключевыми кадрами с одним или несколькими промежуточными кадрами. Эти кадры обычно можно кодировать с использованием более низкой скорости передачи данных , чем требуется для ключевых кадров, поскольку большая часть изображения обычно похожа, поэтому кодировать нужно только изменяющиеся части.

Смотрите также

Ссылки

  1. ^ «Форум Doom9 — Просмотр отдельного сообщения — вопрос x264 Lossless».
  2. ^ "Иерархические B-кадры или B-пирамида - сжатие видео". Архивировано из оригинала 2017-06-15 . Получено 2019-03-24 .
  3. ^ "X264 Settings - MeWiki". mewiki.project357.com . Архивировано из оригинала 18 ноября 2014 . Получено 12 января 2022 .
  4. ^ «Вопрос новичка относительно кадра B в AVC — форум Doom9».
  5. ^ "X264 Stats Output, часть "ref B L1"". Архивировано из оригинала 22.11.2014.