Как работают современные алгоритмы сжатия видео


Современные алгоритмы сжатия видео отличаются от алгоритмов сжатия изображений, с которыми вы, возможно, знакомы. Дополнительное измерение и время означают, что к видеофайлу применяются различные математические и логические методы для уменьшения размера при сохранении качества видео.

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

Что такое сжатие видео?

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

I-кадры, P-кадры и B-кадры


I-кадры - это полностью закодированные изображения. Каждый I-кадр содержит все данные, необходимые для представления изображения. P-кадры основаны на том, как изображение переключается с последнего I-кадра. B-кадры направленно предсказаны, используя данные из обоего последнего P-кадра и следующего I-кадра. P-кадры должны хранить только визуальную информацию, которая является уникальной для P-кадра. В приведенном выше примере можно отследить, как точки перемещаются по всему кадру, но Pac-Man может оставаться там, где он есть.

B-кадр смотрит на P-кадр и следующий I-кадр и усредняет движение по этим кадрам. Алгоритм имеет представление о том, где начинаетс» изображение (первый I-кадр) и где «заканчивается» изображение (второй I-кадр), и использует частичные данные для кодирования правильного предположения, исключая все избыточные статические пиксели, которые не нужны для создания изображения.

Внутрикадровое кодирование (I-кадры)

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

Для непредсказуемых кодеков, таких как DV и Motion JPEG, на этом мы и остановимся. Поскольку нет прогнозирующих кадров, единственное сжатие, которое может быть достигнуто, - это сжатие изображения в пределах одного кадра. Он менее эффективен, но создает более качественный необработанный файл изображения.

В кодеках, которые используют прогнозирующие кадры, такие как H.264, I-кадры периодически обновляют поток данных путем установки нового опорного кадра. Чем дальше разнесены I-кадры, тем меньше может быть видеофайл. Однако, если I-кадры находятся слишком далеко друг от друга, точность прогнозирующих кадров видео будет постепенно ухудшаться до неразборчивости. Приложение с оптимизированной пропускной способностью будет вставлять I-кадры как можно реже, не прерывая видеопоток. Для потребителей частота I-кадров часто определяется косвенно настройкой качества в программном обеспечении кодирования. Профессиональное программное обеспечение для сжатия видео, такое как ffmpeg, позволяет осуществлять явный контроль.

Межкадровое прогнозирование (P-кадры и B-кадры)

Видеокодеры пытаются предсказать переход от одного кадра к другому. Чем ближе их прогнозы, тем эффективнее алгоритм сжатия. Это то, что создает P-кадры и B-кадры. Точное количество, частота и порядок прогнозирующих кадров, а также конкретный алгоритм, используемый для их кодирования и воспроизведения, определяются конкретным алгоритмом, который вы используете.

Давайте рассмотрим, как работает H.264, в качестве обобщенного примера. Кадр разделен на секции, называемые макроблоками, обычно состоящие из 16х16 выборок. Алгоритм не кодирует необработанные значения пикселей для каждого блока. Вместо этого кодер ищет аналогичный блок в более старом кадре, называемом опорным кадром. Если найден действительный эталонный кадр, блок будет закодирован математическим выражением, называемым вектором движения, который описывает точную природу перехода от эталонного блока к текущему блоку. Когда видео воспроизводится, видеоплеер правильно интерпретирует эти векторы движения, чтобы перевести видео. Если блок не изменяется вообще, вектор не нужен.

Вывод: сжатие данных

После того, как данные отсортированы по кадрам, они кодируются в математическое выражение с помощью преобразователя преобразования. H.264 использует DCT (дискретное косинусное преобразование) для преобразования визуальных данных в математическое выражение (в частности, сумму косинусных функций, колеблющихся на различных частотах.) Выбранный алгоритм сжатия определяет преобразователь кодирования. Затем данные округляются квантователем. Наконец, биты проходят через алгоритм сжатия без потерь, чтобы еще раз уменьшить размер файла. Это не меняет данные: оно просто организует их в максимально компактной форме. Затем видео сжимается, меньше, чем раньше, и готово для просмотра.
Как работают современные алгоритмы сжатия видео Как работают современные алгоритмы сжатия видео Reviewed by Admin on мая 05, 2019 Rating: 5

Комментариев нет: