Методы компресии видео

  • 07.04.2015
  • |
  • Проектирование и монтаж систем безопасности: СКУД,видеонаблюдение

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

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

Когда происходит оцифровка изображения, имеющего разрешение 320Х240 в 24 bit RGB (без сжатия по 8 бит), 25 кадров/сек., скорость записи равна 46 Мбит/c (т.е. 1 кадр занимает около 230 Кбайт). Скорость записи оцифрованного изображения носит название полосы оцифровки, а количество пишущихся бит в секунду – ширины полосы оцифровки. В приведенном примере при указанной полосе оцифровки жесткий диск, объем которого 40 GB, способен “принять” 2 часа video. Естественно, что для скачивания подобной видеоинформации по сети требуется много времени. Таким образом, ни о какой “живой” трансляции в данном случае нельзя и мечтать. Для уменьшения огромных объемов видеоинформации необходимы специальные алгоритмы сжатия. Они не только существенно экономят место на носителе, но и значительно сжимают ширину полосы оцифровки. Благодаря этому, появляется возможность трансляции полученного видео по локальным сетям, имеющим низкую пропускную способность. Это особенно важно для передачи видеосигнала по “локалке” типа Ethernet/Internet.

Классификация основных алгоритмов сжатия

Алгоритмы компрессирования видеоданных делят, прежде всего, на статические и потоковые, т.е. работающие с каждым кадром в отдельности либо с целыми последовательностями кадров.
Компрессия видео в статических алгоритмах достигается за счет метода обработки изображения. Причем, обрабатывается как целое изображение, так и его отдельные блоки. Наиболее распространены сегодня алгоритмы, входящие в группы Jpeg и Wavelet.

Компрессия видео в потоковых алгоритмах осуществляется с учетом того, что рядом стоящие кадры почти не отличаются друг от друга, а поэтому кодируется лишь разница между этими кадрами (избыточность во времени). Компрессия достигается и благодаря работе с объектами, занимающими различные положения и присутствующими в кадрах. Благодаря работе с отдельными объектами в кадре, не только усложняется алгоритм сжатия, но и значительно увеличивается компрессия, а соответственно и сильно сжимается потоковое видео.
Наиболее распространенные потоковые алгоритмы групп MJPEG и MPEG.

Помимо всего прочего, алгоритмы сжатия делятся по разнице между оригиналом и декомпрессированным видео.

Компрессирование изображения без потери данных. Изображение, полученное после декомпрессии, побитно совпадает с исходником. Примером сжатия без потери данных может быть формат GIF (статичная картинка) и формат GIF89a (видео).

Компрессирование изображения с потерей исходных данных. Как правило, многие алгоритмы приводят к тому, что одно и то же оцифрованное изображение в оригинале и декомпрессионном виде не совпадает побитно. В качестве примера можно привести форматы JPEG (картинка) и M-JPEG (видео).

Компрессирование изображения с потерей исходных данных в свою очередь делится на 3 группы:

1. Сжатие без особых потерь качества:
В данном случае после декомпрессии видеоданные хоть и не совпали побитно с оригиналом, но разница практически не ощутима на первый взгляд. Как правило, человек не отличает разницу в 2-х изображениях ввиду слабой восприимчивости к подобным субъективным различиям. Субъективная характеристика качества компрессированного видео базируется на факторе качества компрессии. Данный фактор характеризует качество восприятия, варьируясь в пределах от 0 до 100. Цифра 100 означает полное совпадение визуального восприятия декомпрессированного видео своему оригиналу.

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

3. Сжатие, при котором наблюдаются неестественные потери качества:
К данному типу сжатия относится компрессия видеоизображения, при которой декомпрессированное видео очень сильно искажено и имеет несуществующие детали. К примеру, очень сильно компрессированный формат MJPEG демонстрирует так называемые “кубы” в кадре. Тот же эффект демонстрируют другие алгоритмы сжатия, применяющие технологию блочной дискретно-косинусной трансформации. Неестественность проявляется, прежде всего, в нарушении контуров картинки. Ведь именно контуры позволяют человеку идентифицировать на изображении отдельные объекты.

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

Wavelet

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

Сжатие wavelet позволяет придать следующие размеры сжатому файлу, имеющему разрешение 320Х240 с исходным размером 230 Кбайт: невысокое качество (ФКС=30) – 6,9 Кбайт; среднее качество (ФКС=50) - 8,9 Кбайт; высокое качество (ФКС=75) - 11 Кбайт.
Разновидность этого алгоритма сжатия delta-wavelet как правило применяется при работе с видео в реальном времени.Данный алгоритм отказоустойчив и позволяет плотно сжимать видео без существенных потерь, а поэтому применяется при решении многих задач.

JPEG

Главной идеей JPEG является разбивка изображения на отдельные блоки 8Х8 пикселей. К каждому блоку применяется дискретно-косинусное преобразование, а дальше коэффициенты разложения кодируются по Хаффману. Недостатком JPEG является слишком явное наличие кубов в изображении при значительных коэффициентах сжатия. Если сравнивать с wavelet, то степень сжатия JPEG при одинаковом визуальном качестве почти в 2 раза хуже.
Видео в реальном времени обычно компрессируют посредством MJpeg.
M-JPEG (MJPG) или Motion JPEG

Многие настольные системы записи видео (video capture) и его редактирования (video editing) применяют при переводе видео в AVI именно этот алгоритм. Посредством Motion JPEG видеокадры сжимаются каждый в отдельности. При этом другие алгоритмы сжатия не применяются. Основным преимуществом данного метода является независимость каждого компрессирующегося кадра, что позволяет не терять качество изображения. По сути, именно этим и обусловлено применение данного алгоритма не для распространения видео, а в качестве механизма хранения видеоданных и их редактирования. Motion JPEG для компрессии изображений использует алгоритм блокового дискретно-косинусного преобразования (Block Discrete Cosine Transform или ДКП).


MPEG

Группа алгоритмов MPEG изначально была создана для работы с потоковыми видеоданными. При компрессии посредством применения MPEG цифровое цветное изображение переводится из сжимаемой последовательности в цветовое пространство YUV. Y – это интенсивность, а U и V являются компонентами цветности. Поскольку глаз человека воспринимает цветность не так активно, как интенсивность, то и разрешение цветовых компонент как правило уменьшается в 2 раза либо по вертикали, либо по горизонтали и вертикали одновременно.

Существуют следующие типы изображений в формате MPEG:

I (intra) – опорные изображения при восстановлении всех остальных изображений по разностям;
P (predicted) – изображения, в которых содержится разность текущего и предыдущего изображения I или P при учитывании смещения отдельно взятых фрагментов;
B (bidirectionally predicted) – изображения, в которых содержится разность между текущим изображением и предыдущим с последовательным I и P при учете смещения отдельно взятых фрагментов.
Каждый тип изображения состоит из макроблоков, т.е. из блока 16Х16 точек из Y-компонент, блоков 8Х8 (когда соотношение YUV4:2:0), 16Х8 (когда соотношение 4:2:2), а также 16Х16 (когда соотношение 4:4:4). Идеей подобной схемы является предсказывание движения от одного кадра к другому. Иными словами, блок в текущем кадре, состоящий из точек 16Х16, ищется в предыдущих и последующих кадрах в области большего р-ра. Количество блоков в отдельном изображении равно 396. Обычно последовательные макроблоки совмещают в независимые разделы (slices), что ведет к стабилизации процесса восстановления изображений по отношению к возникающим ошибкам передачи видеоданных. Максимальное число независимых разделов – 396. В случае “абсолютной” передачи данных на изображение идет лишь один раздел из 396. Каждый из макроблоков слагается из 6 блоков, из которых 4 содержат данные о яркости Y, а 2 определяют цветовые компоненты V и U. Каждый макроблок является матрицей 8Х8 элементов и представляет собой базовую структурную единицу, над которой и производятся все операции по кодированию: ДКП и квантование готовых коэффициентов. Далее коэффициенты дискретного косинусного преобразования, векторы движения, параметры квантизации и прочие величины подвергаются кодированию по Хаффману. Кодированные данные слагаются в пакеты, формирующие поток в соответствии с синтаксисом MPEG.
Поток (или ширина полосы оцифровки) при компрессии посредством MPEG-1 и MPEG-2

MPEG-1 всегда компрессирует изображение в качестве 352x240 (SIF).

MPEG-1 и MPEG-2 применяются к широкому классу потоков, размеров и частот кадров. MPEG-1 разрешает передачу 25 кадров с разрешением 352Х288 в PAL либо 30 кадров, разрешение которых 352 Х240 в NTSC при потоке до 1,86 Мбит/с (Constrained Parameters Bitstreams).
Данные значения соответствуют спецификации White Book для video на CD.

MPEG-2 компрессирует изображения в качестве 352Х240 и 720Х480.
Значение потока для SIF равно 1,15 Мбит/c, а для CCIR – 4,2 Мбит/c.
SIF или Source Input Format (352 пикселя на 240 линий, 30 кадров в секунду, Low Level) – является нижним уровнем или LL.
CCIR 601 (к примеру, 720 пикселей в линии Х480 линий Х30 кадров в секунду, Main Level) – является основным уровнем или ML.

MPEG-4

MPEG-4 был создан в противовес MPEG-2 для того, чтобы видео, компрессированное с его помощью, при минимальной ширине полосы оцифровки имело нормальное качество в плане визуального восприятия изображения. Кроме этого MPEG-4 решает задачи видеотрансляции как по локальным, так и по глобальным сетям при разной пропускной способности этих сетей. Популярность MPEG-4, как алгоритма сжатия, обусловлена еще и тем, что с его участием удается компрессировать DVD-фильм размером в 1,3 Гб в формат AVI с размером около 700 Мбайт практически без потери визуального качества. Причем, ширина полосы оцифровки посредством MPEG-4 в 2 раза меньше того же значения у MPEG-2.

Стандарт MPEG-4 слагается из функций, в основе которых лежит технология применения одновременно многих алгоритмов компрессии. Применяются они не только с учетом качества компрессируемого видеофрагмента и его природы, но и как совокупность либо последовательность отдельных алгоритмов сжатия, обрабатывающих видеооригинал. Это может быть: прогрессивное кодирование; словарное кодирование; кодирование, в котором применяется чересстрочное сканирование; технология Vector Quantization или Run Length Encoding; преобразования типа ДКП, Wavelet или Фурье.

Стартовое кодирование видео в формате MPEG-4 происходит аналогично MPEG-1 и MPEG-2, поскольку кодировочная база у алгоритмов группы MPEG единая. Тем не менее, MPEG-4 применяет, помимо блочного кодирования, технологию так называемого контурно-основанного кодирования. Этот тип кодирования представляет изображение в виде контуров, огибающих текстурные области (текстура это структура поверхности изображения). Поскольку контуры чаще всего совпадают с границами объектов сцены в изображении, то и задача подобного кодирования заключается в объектно-основанном кодировании отдельных изображений. Иными словами, изображение представляется в виде набора объектов, которые это изображение составляют. MPEG-4 предоставляет возможность индивидуальной кодировки отдельных элементов в видеосюжете. Ввиду того, что различные объекты в видеосюжете имеют разную природу (мелкая детализация, текстурный фон, передний план), то благодаря применению одновременно нескольких методов компрессии, использующихся для сжатия различных групп данных, получается на выходе видео с наиболее оптимальной степенью компрессии.

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