Video compression

Сжатие видеоизображения

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

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

Компания Axis использует три различных стандарта сжатия видеоизображения: Motion JPEG, MPEG-4 Part 2 (или просто MPEG-4) и H.264. H.264 — самый современный и наиболее эффективный стандарт сжатия видеоизображения.

Видеокодек

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

Совместная работа пары алгоритмов называется видеокодеком (кодер/декодер). Видеокодеки, применяющие разные стандарты, как правило, несовместимы друг с другом, поэтому видеоданные, сжатые с использованием одного стандарта, нельзя распаковать с применением другого. Например, декодер MPEG-4 не будет работать с кодером H.264. Это просто потому, что один алгоритм не может корректно декодировать результат, полученный с помощью работы другого алгоритма, однако есть возможность оснастить множеством разных алгоритмов программное или аппаратное обеспечение, чтобы оно могло поддерживать совместное использование разных форматов.

Сжатие изображения и сжатие видеоизображения

В разных стандартах сжатия применяются различные методы сокращения размера данных, и, таким образом, результаты отличаются по скорости передачи данных, качеству и времени ожидания. Выделяют два алгоритма сжатия: cжатие изображения и сжатие видеоизображения. При сжатии изображения используется технология внутрикадрового кодирования. Сокращение данных достигается путем удаления из кадра ненужной информации, наличие или отсутствие которой просто незаметно человеку. Примером такого стандарта сжатия является Motion JPEG. Обычно изображения в последовательности Motion JPEG кодируются и сжимаются как отдельные изображения формата JPEG.

В формате Motion JPEG три изображения в показанной выше последовательности кодируются и отправляются как отдельные уникальные изображения (I-кадры) без всяких зависимостей друг от друга.

При сжатии видеоизображения (например, MPEG-4 и H.264) используется межкадровое предсказание, позволяющее сократить объем видеоданных в последовательности кадров. Для этого применяются такие технологии, как кодирование по отличиям, где текущий кадр сравнивается с опорным кадром и затем происходит кодирование только изменившихся пикселей. Таким образом, сокращается количество пиксельных значений для кодирования и отправки. При дальнейшем просмотре такого закодированного ряда видеоизображения выглядят так же, как в оригинале.

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

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

Иллюстрация поблочной компенсации движения.

При использовании межкадрового предсказания каждый кадр в последовательности рассматривается как конкретный тип кадра, например, I-кадр, P-кадр или B-кадр.

I-кадр (или вводный кадр (Intra frame)) — это изолированный кадр, который может декодироваться независимым образом без привязки к любым другим изображениям. Первое изображение в видеопоследовательности всегда является I-кадром. I-кадры необходимы в качестве начальных точек для новых просмотров или точек повторной синхронизации в случае нарушения переданного потока битов. I-кадры можно использовать для реализации функций перемотки вперед, назад и иных функций произвольного доступа. Кодер автоматически вставляет I-кадры через равные промежутки времени или по требованию в случае, когда ожидается присоединение новых клиентов к просмотру потока. Недостатком I-кадров является чрезмерное количество составляющих их бит, но, с другой стороны, они и не создают большого количества искажений, причиной которых являются недостающие данные.

P-кадр, который расшифровывается как промежуточный кадр предсказуемого характера (predictive inter frame), содержит ссылки для своего кодирования на части предшествующих I-кадров или P-кадров. Как правило, P-кадры требуют для себя меньшее количество бит, чем I-кадры, но имеют один недостаток — это чувствительность к ошибкам передачи из-за своей сложной зависимости от предшествующих P-кадров или I-кадров.

B-кадр (или промежуточный кадр двунаправленного предсказания (bi-predictive inter frame)) — это кадр, содержащий в себе ссылки и на предыдущий, и на последующий опорные кадры. Использование B-кадров увеличивает время ожидания.

Типовая последовательность I-, B- и P-кадров. P-кадр может ссылаться только на предшествующие I- или P-кадры, тогда как B-кадр может ссылаться и на предшествующие, и на последующие I- или P-кадры.

Типовая последовательность I-, B- и P-кадров. P-кадр может ссылаться только на предшествующие I- или P-кадры, тогда как B-кадр может ссылаться и на предшествующие, и на последующие I- или P-кадры.

Кроме кодирования по отличиям и компенсации движения, существуют и другие современные методы уменьшения объема данных и увеличения качества видеоизображения. Например, формат H.264 поддерживает такие современные технологии, как схемы предсказания для кодирования I-кадров, усовершенствованная компенсация движения (вплоть до субпиксельной точности) и встроенный фильтр для удаления «блочности», который позволяет сглаживать края блоков (артефакты).

Следующий раздел: Форматы сжатия

Форматы сжатия