Конечно же, противопоставлять MPEG-4 и H.264 некорректно, так как Н.264 и MPEG-4 (часть 10) – это одно и то же. Однако так оказалось удобнее написать основную часть материала статьи, понимая под MPEG-4 только MPEG-4 (часть 2).
Структура 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 – Описание системы: сцены, объединения аудио, видео и служебной информации, синхронизации, управле-ния буфером, управления правами на интеллектуальную собственность. Ч. 3 – Кодирование аудио. Ч. 4 – Конформное тестирование: условия, процедуры, битовые потоки. Ч. 5 – Общедоступное программное обеспечение, эта-лонно реализующее требования стандарта. Ч. 6 – Протоколы распространения мультимедиа ин-формации. Ч. 7 – оптимизированное программное обеспечение ко-дирования видео (технический отчет, а не стандарт). Ч. 8 – Специфицирует механизмы передачи потока MPEG-4 через IP-сети. Ч. 9 – Описание реализации MPEG-4 на языке VHDL (технический отчет, а не стандарт). Ч. 11 – Механизм описания сцены. Ч. 12 – Формат мультимедийного файла ИСО. Ч. 13 – Дополнения в отношении управлениями права-ми на интеллектуальную собственность. Ч. 14 – Формат файла MPEG-4 (ч. 2). Ч. 15 – Формат файла MPEG-4 (ч. 10). Ч. 16 – Дополнения по кодированию анимации. При дальнейшем изложении с целью уменьшения пу-таницы мы будем называть стандарт MPEG-4 (ч. 2) стандар-том MPEG-4, а стандарт MPEG-4 (ч.10) – стандартом Н.264.
Как прагматизм победил романтизм Посмотрев таблицу 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 следующие: вещание (кабель, кабельный модем, спутник, DSL, TB); хранение на различных носителях (DVD, магнитные диски); видеоконференцсвязь (ISDN, Ethernet, LAN, DSL, ра-диосети, мобильные сети, модемы); сервисы типа видео по запросу; сервисы MMS (DSL, ISDN). Под эффективностью алгоритма в стандарте Н.264 по-нимается высокая степень сжатия видео при допустимом качестве и робастность битового потока к ошибкам/потерям передачи. Аскетизм Н.264 в отличие MPEG-4 проявляется в том, что здесь предусмотрено всего три профиля: Baseline – для видеоконференцсвязи; Extended – для потоковой передачи видео по сети; Main – для хранения и вещания видео. Надо отметить, что профиль Extended полностью по-крывает профиль Baseline, тогда как профиль Main находит-ся несколько в стороне. В стандарте Н.264 реализованы такие основные новые технические решения, как: 1) Для улучшения предсказания: компенсация движения на основе малых блоков адап-тивно настраиваемого размера; точность компенсации движения до ¼ отсчета; компенсация движения на основе одного или более опорных кадров; независимость порядка отображения кадров от по-рядка следования опорных кадров; возможность использования любого кадра в качестве опорного; предсказание с использованием весовых множителей; непосредственное пространственное предсказание на основе внутрикадрового кодирования; циклическая фильтрация для ликвидации эффекта блочности. 2) Другие решения, повышающие эффективность ко-дирования: преобразование блоков малых размеров (4 х 4); иерархическое блочное преобразование; целочисленные быстрые алгоритмы преобразования; арифметическое кодирование; контекстно-адаптивное энтропийное кодирование. 3) Для повышения помехоустойчивости и гибкости пе-редачи по различным средам: новая структура множества параметров; синтаксическая структура NAL, позволяющая абстра-гировать сетевые служебные данные от служебных данных кодирования; гибко настраиваемый размер слайса; произвольный порядок следования слайсов; введение в поток повторяющихся слайсов; упорядочение данных; переключение потоков на основе использования SI/SP синхронизации. Как и в предшествующих стандартах кодирования ви-део, в Н.264 определены три вещи: 1) синтаксис битового потока представления видео; 2) семантика этого потока; 2) метод декодирования для реконструкции видео. То есть в стандарте определены лишь выходные после-довательности, но не принципы построения кодера видео-сигнала. Это позволяет производителям соревноваться в создании наилучшего кодера. Схема кодирования видео в соответствии со стандар-том Н.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 проводились многочислен-ные сравнения этого стандарта и MPEG-4. Результаты, как правило, показывали выигрыш в 1–3 дБ стандарта Н.264 в широком диапазоне скоростей кодирования. Визуально ви-део в стандарте Н.264 также выглядит лучше (во многом благодаря использованию деблочного фильтра). Вот типич-ный результат:
|