Библиотека / Статьи / охранное телевидение /
Опубликовано в журнале "Технологии Защиты" №4, 2008
Структура MPEG-4 и немного истории Алгоритмы кодирования видео играют важную роль в современном мире. Они применяются для цифрового представления, сжатия, хранения, передачи и обработки видео-информации в самых различных системах. Большинство из этих алгоритмов последнего времени связано с деятельностью двух организаций: MPEG (Motion Picture Experts Group), работающей под эгидой Международной организации по стандартизации (ИСО), и VCEG (Video Coding Ex-perts Group), работающей в составе Международного союза по электросвязи (МСЭ). Первая группа выпускает стандарты MPEGxx (-1, -2, -4, -7, -21), вторая – создает рекомендации МСЭ Нхх (.261, .263, .263+, .263++, .264). В настоящей статье речь пойдет о последних разработках этих групп в области кодирования видео – стандарте MPEG-4 (часть 2) и рекомендации Н.264. Последняя рекомендация одновременно является стандартом MPEG-4 (часть 10), а также ISO/IEC 14496-10. Такое объединение двух стандартов ста-ло возможным в результате совместной работы групп MPEG и VCEG в рамках проекта Joint Video Team. В таблице 1 показана предыстория создания этих стандартов. Таблица 1 – Рекомендации МСЭ и стандарты MPEG
Надо отметить, что ядро стандарта MPEG-4 (ч. 2) было основано на рекомендации H.263. Итак, самый последний стандарт в области кодирования видео можно называть MPEG-4 (часть 10), либо ISO/IEC 14496-10, либо Н.264/AVC. Аббревиатура AVC здесь означает Advanced Video Coding. Приведем содержание остальных частей стандарта MPEG-4:
Как прагматизм победил романтизм Посмотрев таблицу 1, мы увидим, что популярный и сегодня стандарт кодирования видео MPEG-2 (например, он применяется в DVD) был разработан еще в 1996 г. Зачем же было разрабатывать стандарт MPEG-4? О, для этого были великие причины… Во-первых, зачем ограничивать себя кодированием каких-то там прямоугольных изображений? Даешь изображение произвольной формы! А вдруг нам понадобится кодировать не только естественные, но и синтетические изображения, а также гибриды первых и вторых? Ведь виртуальная реальность уже не за горами! А как нам не позаботиться об астрономах и других потребителях, коим 8 бит на компоненту цвета ничто? Да и вообще, что это за отсталая идея – относиться к видео как к последовательности прямо-угольных статических изображений? Даешь объектный подход! Будем кодировать взаимодействующие объекты, трехмерные поверхности. Суперпупер аппарат (вейвлеты) не подходит для кодирования видео? Что ж, применим их для кодирования неподвижных изображений. Ну и пусть, что MPEG-4 для видео: вейвлеты ведь. Наверное, так примерно рассуждали энтузиасты – создатели MPEG-4 и разработали действительно революционный стандарт. Правда, вот технические подробности декодирования увеличились с 17 страниц у Н.261 до 539 страниц у MPEG-4, притом что изложение здесь далеко не столь подробное. А ведь принципы кодирования видео не меняются на протяжении многих лет, только лишь уточняются и уточняются. Правда, профилей разработчика оказалось аж 19 (по сути, надо разрабатывать 19 алгоритмов декодирования). Но главная относительная неудача стандарта оказалась в том, что его творцы не учитывали потребности рынка. Не так уж много приложений, где требуется кодирование объектов произвольной формы, высокой разрядности цвета, не-стандартной его дискретизации и прочей экзотики. Зато пользователи любят делать цифровые видеоклипы, пересылать их по сети, пользоваться услугами цифрового телевидения и сервисами видео-по-запросу. Конечно, и для этих приложений MPEG-4 был эффективнее своего предшественника, но тут добавились еще проблемы с лицензионной чистотой решений. В общем, через два года после принятия MPEG-4 мпеговцы объединились с VCEG и создали новый стандарт – Н.264. Во главу угла данного стандарта поставлена лицензионная чистота решений и максимальная эффективность за счет отказа от всякой вышеупомянутой экзотики. Основные характеристики Н.264 Предполагаемые области применения стандарта Н.264 следующие:
Под эффективностью алгоритма в стандарте Н.264 понимается высокая степень сжатия видео при допустимом качестве и робастность битового потока к ошибкам/потерям передачи. Аскетизм Н.264 в отличие MPEG-4 проявляется в том, что здесь предусмотрено всего три профиля:
Надо отметить, что профиль Extended полностью покрывает профиль Baseline, тогда как профиль Main находится несколько в стороне. В стандарте Н.264 реализованы такие основные новые технические решения, как: 1. Для улучшения предсказания:
2. Другие решения, повышающие эффективность кодирования:
3. Для повышения помехоустойчивости и гибкости передачи по различным средам:
Как и в предшествующих стандартах кодирования видео, в Н.264 определены три вещи:
То есть в стандарте определены лишь выходные последовательности, но не принципы построения кодера видеосигнала. Это позволяет производителям соревноваться в создании наилучшего кодера. Схема кодирования видео в соответствии со стандартом Н.264, в общем, повторяет схемы кодирования предшествующих стандартов. Разницей является разве что наличие на последнем этапе обработки с целью удаления блочности. Алгоритм кодирования (он явно не описан в стандарте) состоит из четырех основных компонентов:
Рассмотрим эти компоненты подробнее. Компенсация движения Высокая эффективность Н.264 обусловлена улучшениями каждого из компонентов. От эффективной компенсации движения зависит энергия разностного кадра. Чем точнее скомпенсировано это движение, тем меньше энергии, а значит, выше будет коэффициент сжатия. Можно было бы вычислять вектора движения для каждого пиксела, но это сложно, поэтому их вычисляют для прямоугольных блоков. Выгода здесь в том, что изображение также прямоугольно, можно в дальнейшем применить преобразование, например, ДКП. Минусы очевидны: границы объектов обычно не лежат на прямоугольнике, движение также, как правило, не бывает горизонтальным или вертикальным. Тем не менее в настоящее время это единственный метод. С увеличением размера блока увеличивается вычислительная эффективность и уменьшается объем бит, отводимый на кодирование векторов движения. Однако одновременно ухудшается точность компенсации, а, следовательно, и увеличивается энергия разностного изображения. Таким образом, налицо необходимость оптимизации, и в Н.264 реализован адаптивный выбор размера блока от 4 х 4 до 16 х 16 пиксела, а точность указания вектора доведена до ¼ пиксела (за счет предварительной интерполяции). Если уж кадры совсем не похожи друг на друга, то компенсация движения не используется, а применяется внутрикадровое кодирование. Преобразование разностного кадра и квантование Как известно, для преобразования изображения в спектральную область могут использоваться различные ортогональные преобразования. Целью преобразования является перераспределение энергии изображения: большая ее часть оказывается сосредоточенной в малом числе коэффициентов. Наиболее эффективным преобразованием в этом смысле из числа быстрых считается вейвлет-преобразование. Именно его применяют в MPEG-4 для кодирования неподвижных изображений. Однако вейвлет-преобразование требует больше памяти (надо запомнить весь кадр) и плохо стыкуется с блочной компенсацией движения, поэтому для кодирования видео не применяется. В MPEG-4 так же, как и в MPEG-2 (а также и в JPEG), применяется ДКП с основным размером блока 8 х 8. В Н.264 используется целочисленное ортогональное преобразование над блоками размером 4 х 4, которое аппроксимирует ДКП. В результате ядро преобразования использует только сложение, вычитание и сдвиги. При последующем масштабировании необходимо для каждого пиксела одно умножение на коэффициент, но эта операция может быть отнесена к дальнейшему квантованию. Вся арифметика вычислений 16-разрядная, т. е. может быть выполнена на дешевом микроконтроллере. Целью квантования является приведение множества значений коэффициентов к небольшому количеству различных значений. Обычно это достигается за счет деления с округлением результата. Однако коэффициенты квантования в Н.264 выбраны так, чтобы избежать вычислительно-сложных делений (вместо этого выполняется умножение с накоплением и сдвиг вправо). После осуществления квантования коэффициенты переупорядочиваются. В MPEG-4 это либо зигзагообразное сканирование для блоков 8 х 8, либо использование структуры нульдерева для вейвлет-коэффициентов. В Н.264 выполняется зигзагообразное сканирование для блоков 4 х 4. Энтропийное кодирование и формирование потока бит Цель энтропийного кодирования заключается в обозначении более коротким кодом более часто встречающуюся последовательность символов (бит). В MPEG-4 для этого выполняется вначале кодирование длин серий (RLE), а затем применяется кодирование с переменной скоростью по заранее вычисленным таблицам Хаффмана. Надо отметить, что кодер Хаффмана чувствителен к ошибкам в канале передачи. Кроме того, необходимо, чтобы кодер/декодер располагали одинаковыми таблицами. В Н.264 в зависимости от профиля применяются либо экспоненциальные коды Голомба, либо контекстно-зависимый арифметический кодер. Преимуществом арифметического кодера является более высокая степень сжатия, так как символ может кодироваться дробным числом бит, тогда как кодер Хаффмана может кодировать только целым числом бит. В качестве транспорта может быть использован MPEG-2, часть 1 которого определяет порядок объединения видео, звука и служебных данных в единый поток. Другим решением является использование протокола реального времени (RTP). NAL-структура потока H.264 как нельзя лучше подходит для пакетной передачи в соответствии с этим протоколом. Еще один вариант – использовать стандарт MPEG-4 часть 6. Что же лучше?
Справедливости ради отметим, что для высокотекстурированных изображений большой разницы не наблюдается. Сравнение различных кодеков Н.264 между собой вы можете посмотреть на сайте [1]. Во многих тестах разница по эффективности кодирования между отдельными видеокодеками H.264 достигает двух и более раз. Так что, будь то MPEG-4 или Н.264 – основная эффективность кодеков основана на нюансах реализации. А этих тонкостей столько, что вы не почерпнете их даже из 700-страничной книги [2], с которой я все равно рекомендую вам ознакомиться. Литература
Посмотреть обсуждение этой статьи в Форуме Другие статьи в этом же разделе
|