Московский государственный университет имени М.В.Ломоносова
Опубликован: 10.10.2007 | Доступ: свободный | Студентов: 1478 / 158 | Оценка: 4.36 / 4.18 | Длительность: 14:22:00
Специальности: Программист
Лекция 8:

Алгоритмы сжатия видео

< Лекция 7 || Лекция 8: 1234567

MPEG-2

Как уже говорилось, MPEG-2 занимается сжатием оцифрованного видео при потоке данных от 3 до 10 Мбит/сек. Многое в нем заимствовано из формата CCIR-601. CCIR-601 представляет собой стандарт цифрового видео с размером передаваемого изображения 720х486 при 60 полукадрах в секунду. Строки изображения передаются с чередованием, и два полукадра составляют кадр. Этот прием нередко применяют для уменьшения мерцания. Хроматические каналы ( U и V в YUV ) передаются размером 360х243 60 раз в секунду и также чередуются уже между собой. Подобное деление называется 4:2:2. Перевод из CCIR-601 в MPEG-I прост: надо поделить в 2 раза яркостную компоненту по горизонтали, поделить поток в 2 раза во временном измерении (убрав чередование), добавить вторую хроматическую компоненту и выкинуть "лишние" строки, чтобы размер по вертикали делился на 16. Мы получим поток YUV кадров размером 352х240 с частотой 30 кадров в секунду. Здесь все просто.

Проблемы начинаются, когда появляется возможность увеличить поток данных и довести качество изображения до CCIR-601. Это не такая простая задача, как кажется. Проблема состоит в чередовании полукадров во входном формате. Тривиальное решение - работать с кадрами 720х486 при 30 кадрах в секунду, как с обычным видео. Этот путь приводит к неприятным эффектам при быстром движении объектов на экране. Между двумя исходными полукадрами 720х243 сдвиг становится заметным, а т.к. наш кадр формируется из исходных полукадров через строку, то при сжатии происходит размывание движущегося объекта. Виновно в этом эффекте ДКП, и как-то исправить ситуацию, не уменьшив степени сжатия видео, или не потеряв в визуальном качестве нельзя. Достаточно распространенным является применение "деинтерлейсинга" (от английского deinterlacing - удаление чередования строк). Эта операция позволяет удалить чередование, смещая четные строки в одном направлении, а нечетные в другом, пропорционально относительному движению объекта в данной области экрана. В результате мы получаем визуально более качественное изображение, но несколько более длительную предобработку перед сжатием.

Другим решением является архивация четных и нечетных кадров в потоке CCIR-601 независимо. При этом мы, конечно, избавимся от артефактов, возникающих при быстром движении объектов, но существенно уменьшим степень сжатия, т.к. не будем использовать важнейшей вещи - избыточности между соседними кадрами, которая очень велика.

Характеристики MPEG-2

Поток, разрешение: 3-15 Мбит/c, универсальный

Плюсы: Поддержка достаточно серьезных звуковых стандартов Dolby Digital 5.1, DTS, высокая универсальность, сравнительная простота аппаратной реализации.

Минусы: Недостаточная на сегодня степень сжатия, недостаточная гибкость.

MPEG-4

MPEG-4 кардинально отличается от принимаемых ранее стандартов. Рассмотрим наиболее интересные и полезные нововведения.

  • Расчет трехмерных сцен и работа с синтетическими объектами. В состав декодера MPEG-4 как составная часть входит блок визуализации трехмерных объектов ( Animation Framework eXtension - AFX - то, что в просторечии называют данными для трехмерного движка). Те, кто кодировал видео, знают, сколько проблем доставляют титры и вообще любые накладываемые поверх фильма объекты (логотипы, заставки и т.п.). Если хорошо выглядит основной план - будут подпорчены накладываемые объекты, если хорошо смотрятся они - будет низкой общая степень сжатия. В MPEG-4 предлагается решить проблему кардинально. Накладываемые объекты рассчитываются отдельно и накладываются потом. Кроме того, можно использовать видеопоток даже как текстуру, накладываемую на поверхности рассчитываемых объектов. Такая гибкая работа с трехмерными объектами позволяет существенно поднять степень сжатия при заметно лучшем качестве изображения. Более того - никто не мешает делать видеоролики вообще без живого видео, а состоящие только из рассчитанных (синтетических) объектов. Размер их описания будет в разы меньше, чем размер аналогичных фильмов, сжатых просто как поток кадров. Кстати, отдельно в стандарте предусмотрена работа со "спрайтами" - статическими изображениями, накладываемыми на кадр. При этом размер спрайта может быть как совсем маленький (логотип канала в уголке экрана), так и превышать размер кадра и "прокручиваться" (т.е. в качестве "спрайта" может быть задан фон, а небольшие видео-объекты, например, голову диктора, будут на него накладывать). Это дает значительную гибкость при создании MPEG-4 фильмов и позволяет заметно уменьшить объем кодируемой информации.
  • Объектно-ориентированная работа с потоком данных. Теперь работа с потоком данных становится объектно-ориентированной. При этом данные могут быть живым видео, звуковыми данными, синтетическими объектами и т.д. Из них создаются сцены, этими сценами можно управлять. Для простых смертных при этом мало что изменится, однако для программистов объектная среда означает кардинальное упрощение работы с возникающими сложными структурами.
  • Помещение в поток двоичного кода "С++ подобного" языка BIFS. С помощью BIFS в поток добавляются описания объектов, классов объектов и сцен. Также на нем можно менять координаты, размеры, свойства, поведение и реакцию объектов на действия пользователя. В свое время Flash был назван революцией 2D графики в Интернете. Аналогичный прорыв в области видео совершает MPEG-4.
  • Активная зрительская позиция. Как было замечено выше, BIFS позволяет задавать реакцию объектов сцены на действия пользователя. Потенциально возможно удаление, добавление или перемещение объектов, ввод команд с клавиатуры. Событийная модель заимствована из развивавшегося уже долгое время языка моделирования виртуальной реальности VRML. Для тех, кто играл в написанные на VRML игры, очевидно, что в MPEG-4 будет совершенно реально создавать "квест"-подобные (и не только) игры. Широчайший простор открывается для создания обучающих и развлекательных программ. Представляете, скачиваете из Интернета один файл, который сразу в себе содержит все, что необходимо для небольшого курса лекций, причем вы можете прослушать его, видя говорящую голову преподавателя, или отключив его, можете увеличить фрагменты ("спрайты") с материалами. А в конце - пройти короткий тест на понимание предмета. Кстати - в стандарте предусмотрено обработка команд на стороне сервера, т.е. программа-просмотрщик может отослать данные на сервер и получить оттуда оценку. Отличие от предыдущих стандартов революционное.
  • Синтезатор лиц и фигур. В стандарт заложен интерфейс к модулю синтеза лиц и фигур. Например, в файле сохраняются ключевые данные о профиле лица и текстуры лица, а при записи фильма сохраняются только коэффициенты изменения формы. Для передач типа новостей, этот прием позволяет в десятки раз сократить размер файла при замечательном качестве.
  • Синтезатор звуков и речи. Помимо синтеза лиц в стандарт MPEG-4 также заложены алгоритмы синтеза звуков, и даже речи(!).
  • Улучшенные алгоритмы сжатия видео. В стандарте предусмотрены блоки, отвечающие за потоки 4.8-65Кбит/с с прогрессивной разверткой и большие потоки с поддержкой чересстрочной развертки. Для передачи по ненадежным каналам возможно использование помехоустойчивых методов кодирования (за счет незначительного увеличения объема передаваемых данных резко снижается вероятность искажения изображения). При передаче видео с одновременным просмотром заложена возможность огрубить изображение, если декодер из-за ограничений канала связи не успевает получить всю информацию. Всего в стандарт заложено 3 уровня детализации. Эта возможность позволит легко адаптировать алгоритм для трансляций видео по сети.
  • Поддержка профилей на уровне стандарта. Понятно, что реализация всех возможностей стандарта превращает декодер в весьма сложную и большую конструкцию. При этом далеко не для всех приложений необходимы какие-то сложные специфические функции (например, синтез речи). Создатели стандарта поступили просто: они оговорили наборы профилей, каждый из которых включает в себя набор обязательных функций. Если в фильме записано, что ему для проигрывания необходим такой-то профиль и декодер этот профиль поддерживает, то стандарт гарантирует, что фильм будет проигран правильно.

Выше кратко перечислены некоторые отличия MPEG-4 от предыдущих стандартов. Надо отметить, что на момент создания стандарта острой потребности в описанных выше вещах еще не было. Иначе говоря, мы имеем дело с хорошо продуманной работой по формированию стандарта, которая была закончена к тому времени, как в нем возникла первая необходимость.

Создателями MPEG-4 учтен опыт предшественников (в частности VRML ), когда слишком раннее появление стандарта и отсутствие в нем механизма профилей серьезно подорвало его массовое применение. Будем надеяться, что массовому применению MPEG-4 такие проблемы не грозят.

Характеристики MPEG-4

Поток, разрешение: 0,0048-20 Мбит/c, поддерживаются все основные стандарты видеопотоков.

Плюсы: Поддержка достаточно прогрессивных звуковых стандартов, высокая степень универсальности, поддержка новых технологий (различные виды синтеза звука и изображения).

Минусы: Высокая сложность реализации.

< Лекция 7 || Лекция 8: 1234567