Из Википедии, бесплатной энциклопедии
Перейти к навигации Перейти к поиску

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

Межкадровое предсказание [ править ]

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

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

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

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

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

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

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

В большинстве проектов существует два типа промежуточных кадров: 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-кадр). У этой конструкции есть сильные стороны:

  • Это сводит к минимуму проблему возможных открытых участков.
  • P-кадры и B-кадры требуют меньше данных, чем I-кадры, поэтому передается меньше данных.

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

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

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

Наиболее важные улучшения этого метода по сравнению с предыдущим стандартом H.264 :

  • Более гибкое блочное разделение
  • Разрешение компенсации движения до ¼ пикселя
  • Множественные ссылки
  • Улучшенный макроблок прямого / пропуска

Более гибкое разделение блоков [ править ]

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

H.264 Block Division.svg

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

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

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

H = [1–5 20 20–5 1]

Например:

б = A - 5B + 20C + 20D - 5E + F

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

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

Множественные ссылки [ править ]

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

Улучшенный макроблок прямого / пропуска [ править ]

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

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

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

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

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

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

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

См. Также [ править ]

  • Типы изображений сжатия видео

Ссылки [ править ]

  1. ^ https://forum.doom9.org/showpost.php?p=1228631&postcount=12
  2. ^ http://www.ramugedia.com/hierarchical-b-frames-or-b-pyramid
  3. ^ https://web.archive.org/web/20141118124738/http://mewiki.project357.com/wiki/X264_Settings#b-pyramid
  4. ^ https://forum.doom9.org/showthread.php?t=129364
  5. ^ "Вывод статистики X264, часть" ref B L1 " . Архивировано из оригинала на 2014-11-22.
  • Программное обеспечение H.264: http://iphome.hhi.de/suehring/tml/download/
  • Т. Виганд, Г. Дж. Салливан, Г. Бьёнтегаард, А. Лутра: Обзор стандарта кодирования видео H.264 / AVC . IEEE Transactions on Circuits and Systems for Video Technology, Vol. 13, No. 7, июль 2003 г.