stringtranslate.com

Межкадровый

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

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

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

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

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

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

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

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

В большинстве проектов существует два типа промежуточных кадров: 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 допускал разрешение ½ пикселя, Interframe допускает разрешение до ¼ пикселя. Это означает, что можно искать блок в кадре, который нужно закодировать в других опорных кадрах, или мы можем интерполировать несуществующие пиксели, чтобы найти блоки, которые еще лучше подходят для текущего блока. Если вектор движения представляет собой целое число единиц отсчетов, это означает, что на эталонных изображениях можно найти компенсированный блок в движении. Если вектор движения не является целым числом, прогноз будет получен из интерполированных пикселей с помощью фильтра-интерполятора в горизонтальном и вертикальном направлениях.

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

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

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

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

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

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

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

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

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

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

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

Рекомендации

  1. ^ «Форум Doom9 — Посмотреть отдельное сообщение — Вопрос x264 без потерь» .
  2. ^ «Иерархические B-кадры или B-пирамида — сжатие видео» .
  3. ^ «Настройки X264 — MeWiki» . mewiki.project357.com . Архивировано из оригинала 18 ноября 2014 года . Проверено 12 января 2022 г.
  4. ^ «Вопрос новичка относительно кадра B в AVC — Форум Doom9» .
  5. ^ «Вывод статистики X264, часть «ref B L1»» . Архивировано из оригинала 22 ноября 2014 г.