История семейства
форматов MPEG, к которому собственно и
принадлежит стремительно набирающий в
последнее время популярность формат
MPEG-4, началась в далеком 1988 году. Именно
в этом году был основан комитет Moving
Pictures Expert Group, что на русский переводится
примерно как экспертная группы
кинематографии (движущихся
изображений), аббревиатура которого -
MPEG известна теперь любому, кто имел
дело с мультимедиа - компьютерами или с
цифровым телевидением. В этом же году
была начата разработка формата MPEG-1,
который в окончательном виде был
выпущен в 1993 году. Несмотря на все
очевидные недостатки этого формата,
MPEG-1 по-прежнему является одним из
наиболее массовых форматов
видеосжатия, лишь в последнее время,
начиная постепенно сдавать позиции под
натиском более новых и совершенных
форматов видеокомпрессии, по большей
части из этого же семейства.
Надо сказать, что
практически все новаторские по тем
временам разработки легшие в основу
формата MPEG-1, в том или ином виде
встречаются и более совершенных
форматах данного ряда, поэтому,
рассмотрев в подробностях первого
представителя этого семейства
форматов видеосжатия можно получить
общее представление о том, как же
работают алгоритмы MPEG.
Формат MPEG-1. Старый, но
еще не побежденный.
Формат MPEG-1 начал
разрабатываться в те трудно
вообразимые времена, когда не было
широкодоступных носителей большого
объема, в то время, как видеоданные,
даже и сжатые, занимали совершенно
колоссальные для конца 80-х объемы -
средней продолжительности фильм имел
размер больше гигабайта. Если кто не
помнит, то это была эпоха 286 и 386
процессоров, 4 Мб оперативной памяти и
250 Мб винчестер считались роскошью, а не
убогостью, как сейчас, Windows была
примочкой для DOS, а не наоборот, а в
качестве легко переносимых носителей
информации доминировали 5 дюймовые
дискеты и только-только появившиеся
3,5" дискеты от фирмы SONY. В таких
условиях необходимо было найти
носитель, на который можно было бы
записать гигабайт информации, при этом
этот носитель должен был быть
недорогим, иначе ни о какой массовости
не могло быть и речи.
И такой носитель был
найден. Как раз в эти годы впервые на
платформе PC появился такой новый тип
носителей информации как CD-ROM диски,
которые смогли обеспечить необходимый
объем информации. Правда, на один диск
фильм в формате MPEG-1 все-таки не
вмещался, но что мешало записать его на
2 CD, тем более, что новинка стоила очень
недорого? Разумеется, первые CD-ROM
проигрыватели были односкоростными,
поэтому не стоит удивляться, что
максимальная скорость пересылки
потока данных (bitstream) в формате MPEG-1
ограничена 150 Кб/сек., что соответствует
одной скорости CD-ROM.
Надо сказать, что
возможности MPEG-1 не ограничены тем
низким разрешением, которое вы все
видели при просмотре VIDEO-CD. В самом
формате была заложена возможность
сжатия и воспроизведения
видеоинформации с разрешением вплоть
до 4095х4095 и частотой смены кадров до 60 Гц.
Но из-за того, что поток передачи данных
был ограничен 150 Кб/сек., то есть так
называемый Constrained Parameters Bitstream (CPB) -
зафиксированная ширина потока
передачи данных, разработчики формата,
а в дальнейшем и создатели кодеков на
его основе, были вынуждены
использовать разрешения кадра,
оптимизированные под данный CPB.
Наиболее широко распространенными
являются два таких оптимизированных
формата - это формат SIF 352х240, 30 кадров в
секунду и урезанный формат PAL/SECAM 352х288, 25
кадров в секунду.
Ну вот, с разрешением
определились, теперь можно и
посмотреть, как это все сжимается.
Принципы Сжатия
информации в MPEG-1.
В качестве примера
рассмотрим урезанный формат PAL/SECAM,
который более распространен, чем SIF,
хотя оба эти формата за исключением
разрешения и частоты смены кадров
ничем друг от друга не отличаются.
Урезанная версия
формата PAL/SECAM содержит 352 ppl (point per line -
точек на линию), 288 lpf (line per frame - линий на
кадр) и 25 fps (frame per second - кадров в секунду).
Надо сказать, что полноценный стандарт
PAL/SECAM имеет параметры в 4 раза большие,
чем аналогичные у MPEG-1 (кроме fps). Поэтому
принято говорить, что VIDEO-CD имеет
четкость в четыре раза хуже, по
сравнению с обычным видео.
Что касается глубины
цвета, то тут не все так просто, как в
компьютерной графике, где на каждый
пиксел отводится определенное
фиксированное число бит. MPEG-1
использует цветовую схему YСbCr, где Y -
это яркостная плоскость, Сb и Cr -
плоскости цветовые. Эти плоскости
кодируются с разным разрешением.
Существуют несколько вариантов
кодирования, которые можно представить
с следующем виде:
Вариант
кодирования |
Отношение
разрешений Сb/Y (Сr/Y) по горизонтали |
Отношение
разрешений Сb/Y (Сr/Y) по вертикали |
4:4:4 |
1:1 |
1:1 |
4:2:2 |
1:2 |
1:1 |
4:2:0 |
1:2 |
1:2 |
4:1:1 |
1:4 |
1:1 |
4:1:0 |
1:4 |
1:4 |
Как видно из таблицы Сb
и Cr практически всегда кодируются с
меньшим разрешением, чем Y. Чем меньше
разрешение цветовых плоскостей, тем
грубее и неестественнее цветопередача
в видеоролике. Разумеется, самым
некачественным, но и самым компактным
будет последний вариант.
Перед началом
кодирования происходит анализ
видеоинформации, выбираются ключевые
кадры, которые не будут изменяться при
сжатии, а так же кадры, при кодировании
которых часть информации будет
удаляться. Всего выделяется три типа
кадров:
- Кадры типа I - Intra frame.
Ключевые кадры, которые сжимаются
без изменений.
- Кадры типа P - Predirected
frame. При кодировании этих кадров
часть информации удаляется. При
воспроизведении P кадра используется
информация от предыдущих I или P
кадров.
- Кадры типа В - Bidirectional
frame. При кодировании этих кадров
потери информации еще более
значительны. При воспроизведении В
кадра используется информация уже от
двух предыдущих I или P кадров.
Наличие В кадров в видеоролике - тот
самый фактор, благодаря которому MPEG-1
имеет высокий коэффициент сжатия (но
и не очень высокое качество).
При кодировании
формируется цепочка кадров разных
типов. Наиболее типичная
последовательность может выглядеть
следующим образом: IBBPBBPBBIBBPBBPBB...
Соответственно очередь
воспроизведения по номерам кадров
будет выглядеть так: 1423765...
По окончании разбивки
кадров на разные типы начинается
процесс подготовки к кодированию.
С I кадрами процесс
подготовки к кодированию происходит
достаточно просто - кадр разбивается на
блоки. В MPEG-1 блоки имеют размер 8х8
пикселов.
А вот для кадров типа P
и B подготовка происходит гораздо
сложнее. Для того, чтобы сильнее сжать
кадры указанных типов используется
алгоритм предсказания движения.
В качестве входной
информации алгоритм предсказания
движения получает блок 8х8 пикселов
текущего кадра и аналогичные блоки от
предыдущих кадров (I или P типа). На
выходе данного алгоритма имеем
следующую информацию о вышеуказанном
блоке:
- Вектор движения
текущего блока относительно
предыдущих
- Разницу между
текущим и предыдущими блоками,
которая собственно и будет
подвергаться дальнейшему
кодированию.
Вся избыточная
информация подлежит удалению,
благодаря чему и достигается столь
высокий коэффициент сжатия,
невозможный при сжатии без потерь.
Но у алгоритма
предсказания движения есть
ограничения. Зачастую в фильмах бывают
статические сцены, в которых движения
нет или оно незначительно и возникают
блоки или целые кадры, в которых
невозможно использовать алгоритм
предсказания движения. Думаю, вы
замечали, что у видеороликов сжатых MPEG-1
качество сцен с небольшим количеством
двигающихся объектов заметно выше, чем
в сценах с интенсивным движением. Это
объясняется тем, что в статических
сценах P и B кадры, по сути, представляют
собой копии I кадров, потерь
практически нет, но и сжатие информации
незначительно.
В случае же
корректного срабатывания алгоритма
предсказания движения, объемы кадров
разного типа в байтах соотносятся друг
с другом примерно следующим образом -
I:P:B как 15:5:2. Как вы видите из данного
соотношения, уменьшение объема
видеоинформации налицо уже на стадии
подготовки к кодированию.
По окончании этой
стадии начинается собственно само
кодирование. Процесс кодирования
содержит в себе 3 стадии:
- Discrete Cosine Transformation - DTC,
дискретное преобразование косинусов,
преобразование Фурье.
- Quantization - квантование.
Перевод данных из непрерывной формы
в прерывистую, дискретную.
- Преобразование
полученных блоков данных в
последовательность, то есть
преобразование из матричной формы в
линейную.
При кодировании блоки
пикселов или вычисленная разница между
блоками обрабатывается первым из
преобразующим алгоритмов - DTC (дискретное
преобразование косинусов). Обычно
пиксела в блоке и сами блоки
изображения каким-то образом связаны
между собой - например однотонный фон,
равномерный градиент освещения,
повторяющийся узор и т.д. Такая связь
называется корреляцией. Алгоритм DTC,
используя коррелирующие эффекты,
производит преобразование блоков в
частотные фурье-компоненты. При этом
часть информации теряется за счет
выравнивания сильно выделяющихся
участков, которые не подчиняются
корреляции. После этой процедуры в
действие вступает алгоритм Quantization -
квантование, который формирует Quantization
matrix. Quantization matrix - это матрица
квантования, элементами которой
являются преобразованные из
непрерывной в дискретную форму данные,
то есть числа, которые представляют
собой значения амплитуды частотных
фурье-компонентов. После формирования
quantization matrix происходит разбивка
частотных коэффициентов на конкретное
число значений. Точность частотных
коэффициентов фиксирована и
составляет 8 бит. После квантования
многие коэффициенты в матрице
обнуляются. И в качестве завершающей
стадии происходит преобразование
матрицы в линейную форму.
Все эти
преобразования касаются только
изображения. Но кроме изображения в
практически любом видеофрагменте
присутствует так же и звук. Кодирование
звука осуществляется отдельным
звуковым кодером. По мере развития
формата MPEG, звуковые кодеры
неоднократно переделывались,
становясь все эффективнее. К моменту
окончательной стандартизации формата
MPEG-1 было создано три звуковых кодера
этого семейства - MPEG-1 Layer I, Layer II и Layer 3 (тот
самый знаменитый MP3). Принципы
кодирования всех этих кодеков основаны
на психоакустической модели, которая
становилась все более и более
совершенной и достигла своего апофеоза
для семейства MPEG-1 в алгоритмах Layer-3.
Про психоакустическую
модель и принципы сжатия аудиоданных с
потерями написано множество статей, в
частности статья "Описание
формата аудиосжатия MP3", которую вы
можете прочитать на этом сайте, поэтому
описание аудиокодеров можно опустить,
упомянув, единственно о синхронизации
аудио- и видеоданных и форматов
аудиотреков.
Синхронизация аудио- и
видеоданных осуществляется с помощью
специально выделенного потока данных
под названием System stream. Этот поток
содержит встроенный таймер, который
работает со скоростью 90 КГц и содержит 2
слоя - системный слой с таймером и
служебной информацией для
синхронизации кадров с аудиотреком и
компрессионный слой с видео- и
аудиопотоками.
Под служебной
информацией понимаются несколько
видов меток, наиболее важными из
которых являются метки SCR (System Clock Reference)
- инкремент увеличения временного
счетчика кодека и PDS (Presentation Data Stamp) -
метка начала воспроизведения
видеокадра или аудиофрейма.
Ну вот рассказ о MPEG-1
практически подошел к концу, осталось
лишь назвать некоторые параметры
аудиотреков, которые используются в
этом формате.
Качество аудиотреков
в MPEG-1 может варьироваться в очень
больших пределах - от
высококачественных до безобразных.
Окончательно все форматы сжатия
аудиоданных были стандартизированы в
1992 году европейской комиссией по
стандартам ISO.
В зависимости от
используемого кодера и степени сжатия
аудиоинформация видеоролика может
быть представлена в следующем виде:
моно, dual mono, стерео, интенсивное стерео (стереосигналы,
чьи частоты превышают 2 КГц
объединяются в моно), m/s стерео (один
канал - сумма сигналов, другой - разница)
и по частоте дискретизации могут быть:
48, 44.1и 32 КГц.
На этом хватит о MPEG-1, а
в следующих главах речь пойдет о его
более чем достойных и перспективных
наследниках.
|