Что такое MPEG? MPEG — это группа людей в ISO (Internation Standards Organization), которые встречаются для выработки стандартов сжатия цифрового видео и аудио. В частности, они определили сжатый поток и декомпрессор для него. Алгоритмы сжатия определяются индивидуально каждым производителем, в чем и достигается преимущество в рамках опубликованного международного стандарта. Группа MPEG собирается приблизительно четыре раза в год примерно на неделю. Основная работа делается между встречами, будучи организованной и спланированной на них.
Имеет ли он отношение к JPEG? Да, названия созвучны, и группы принадлежат одному подкомитету ISO, вместе с JBIG и MHEG. Встречаются они в одно время и в одном месте. Тем не менее, это разные люди с разными целями и запросами. JPEG — это старндарт, который предназначен для сжатия неподвижных изображений, а MPEG — «живого» видео и сопутствующего аудио.
Что такое JBIG и MHEG? JBIG — это стандарт сжатия двоичных изображений без потерь, а MHEG — стандарт, предназначенный для мультимедиаданных: интеграция неподвижных изображений, видео, аудио, текста и т. д.
Как работает MPEG видео? Цветное цифровое изображение из сжимаемой последовательности переводится в цветовое пространство YUV (YCbCr). Компонента Y представляет собой интенсивность, а U и V — цветность. Так как человеческий глаз менее восприимчив к цветности, чем к интенсивности, то разрешения цветовых компонент могут быть уменьшены в два раза по вертикали, или и по вертикали, и по горизонтали. К анимации и высококачественному студийному видео уменьшение разрешения не применяется, чтобы сохранить качество изображения, а для бытового применения, где потоки более низкие, а аппаратура более дешевая, такое действие не приводит к заметным потерям в визуальном восприятии, сохраняя в то же время драгоценные биты данных.
Основная идея всей схемы — это предсказывать движение от кадра к кадру, а затем применить дискретное косинусное преобразование (ДКП), чтобы перераспределить избыточность в пространстве. ДКП выполняется на блоках 8×8 точек, предсказание движения выполняется на канале интенсивности (Y) на блоках 16×16 точек, или, в зависимости от характеристик исходной последовательности изображения (черезстрочная развертка, содержимое), на блоках 16×8 точек. Другими словами, данный блок 16×16 точек в текущем кадре ищется в соответсвующей области большего размера в предыдущих или последующих кадрах. Коэффициенты ДКП (исходных данных или разности этого блока и ему соответсвующего) квантуются, то есть делятся на некоторое число, чтобы отбросить несущественные биты. Многие коэффициенты после такой операции оказываются нулями. Коэффициент квантизации может изменяться для каждого макроблока (макроблок — блок 16×16 точек из Y-компонент и соответсвующие блоки 8×8 в случае отношения YUV 4:2:0, 16×8 в случае 4:2:2 и 16×16 в случае 4:4:4). Коэффициенты ДКП, параметры квантизации, векторы движения и прочее кодируется по Хаффману с использованием фиксированных таблиц, определенных стандартом MPEG. Закодированные данные складываются в пакеты, которые формируют поток согласно синтаксису MPEG.
Как кадры соотносятся друг с другом? Существует три типа закодированных кадров. I-кадры — это кадры, закодированные как неподвижные изображения без ссылок на последующие или предыдущие. Они используются как стартовые. P-кадры — это кадры, предсказаные из предыдущих I- или P-кадров. Каждый макроблок в P-кадре может идти с вектором и разностью коэффициентов ДКП от соответвующего блока последнего раскодированного I или P, или может быть закодирован как в I, если не соответсвующего блока не нашлось.
И, наконец, существуют B-кадры, которые предсказаны из двух ближайших I или P-кадров, одного предыдущего и одного последующего. Соответсвующие блоки ищутся в этих кадрах и из них выбирается лучший. Ищется прямой вектор, затем обратный, и вычисляется среднее между соответсвующими макроблоками в прошлом и будущем. Если это не работает, то блок может быть закодирован как в I-кадре.
Последовательность раскодированных кадров обычно выглядит как
I B B P B B P B B P B B I B B P B B P B ...
Здесь 12 кадров от I до I. Это основано на требовании произвольного доступа, согласно которому начальная точка должна повторяться каждые 0,4 секунды. Соотношение P и B основано на опыте.
Чтобы декодер мог работать, необходимо, чтобы первый P-кадр в потоке встретился до первого B, поэтому сжатый поток выгдядит так:
0 x x 3 1 2 6 4 5 ...
где числа — это номера кадров, а xx может не быть ничем, если это начало последовательности, или B-кадры −2 и −1, если это фрагмент из середины потока.
Сначала необходимо раскодировать I-кадр, затем P, затем, имея их оба в памяти, раскодировать B. Во время декодирования P показывается I-кадр, B показывается сразу, а раскодированный P показывается во время декодирования следующего.
Как сжимается аудио? При комперссии звука используются хорошо разработанные психоакустические модели, полученные из экспериментов с самыми взыскательными слушателями, чтобы выбросить звуки, которые не слышны человеческому уху. Это называется «маскированием». Например, большая составляющая в некоторой частоте не позволяет услышать компоненты с более низким коэффициентом в близлежащих частотах, где соотношение между энергиями частот, которые маскируются, описывается некоторой эмпирической кривой. Существуют похожие временные эффекты маскирования, а также более сложные взаимодействия, когда временной эффект может выделить частоту или наоборот.
Звук разбивается на спектральные блоки с помощью гибридной схемы, которая объединяет синусные и полосные преобразования, и психоакустической модели, описанной на языке этих блоков. Все, что можно убрать или сократить, убирается и сокращается, а остаток посылается в выходной поток. В действительности, все выглядит несколько сложнее, поскольку биты должны распределяться между полосами. И, конечно же, все, что посылается, кодируется с сокращением избыточности.
Странные слухи об MPEG. Существует множество зачастую непонятных и надуманных слухов об MPEG.
1. Коэффициет сжатия свыше 100:1
Зачастую статьи в прессе и маркетинговой литературе заявляют, что MPEG достигает необычайно высокого качества видео при степени компрессии свыше 100:1. Эти заявления обычно не включают понижение цветового разрешения исходного цифрового изображения. На практике, поток кодируемого изображения редко превышает величину потока, закодированного в MPEG, более чем в 30 раз. Предварительное сжатие за счет уменьшения цветового разрешения играет основную роль в формировании коэффициентов сжатия с 3 нулями во всех методах кодирования видео, включая отличные от MPEG.
2. MPEG-1 всегда 352×240
Как MPEG-1, так и MPEG-2, могут быть применены к широкому классу потоков, частот и размеров кадров. MPEG-1, знакомый большинству людей, используется для передачи 25 кадр/с с разрешением 352×288 в PAL или 30 кадр/с с разрешением 352×240 в NTSC при величине потока менее 1.86 Мбит/с — комбинация, известная как Constrained Parameters Bitstreams. Эти цифры введены спецификацией стандарта White Book для видео на CD (VideoCD).
Фактически, синтаксис позволяет кодировать изображения с разрешением до 4095×4095 с потоком до 100 Мбит/с. Эти числа могли бы быть и бесконечными, если бы не ограничение на количество бит в заголовках.
С появлением стандарта MPEG-2, самые популярные комбинации были объединены в уровни и профили. Самые общие из них:
Source Input Format (SIF), 352 точки x 240 линий x 30 кадр/с, известный также как Low Level (LL) — нижний уровень, CCIR 601 (например 720 точек/линию x 480 линий x 30 кадр/с), или Main Level — основной уровень. 3. Компенсация движения заменяет макроблоки макроблоками из предыдущих картинок
Предсказания макроблоков формируются из соответсвующих 16×16 блоков точек (16×8 в MPEG-2) из предыдущих восстановленных кадров. Никаких ограничений на положение макроблока в предыдущей картинке, кроме ее границ, не существует.
Исходные кадры (reference, из которых формируются предсказания) показаны безотносительно своей закодированной формы. Как только кадр раскодирован, он становится не набором блоков, а обычным плоским цифровым изображением из точек.
4. Размер отображаемой картинки совпадает с размером закодированной
В MPEG размеры отображаемого изображения и частота кадров может отличаться от закодированного в потоке. Например, перед кодированием некотрое подмножество кадров в исходной последовательности может быть опущено, а затем каждый кадр фильтруется и обрабатывается. При восстановлении интерполированы для восстановления исходного размера и частоты кадров.
Три фундаментальных фазы (исходная частота, кодированная и показываемая) могут отличаться в параметрах. Синтаксис MPEG описывает кодированную и показываемую частоту через заголовки, а исходная частота кадров и размер известен только кодеру. Именно поэтому в заголовки MPEG-2 введены элементы, описывающие размер экрана для вывода цифрового видео.
5. В I, P и B-фреймах все макроблоки одного типа.
В I-фрейме макроблоки должны быть закодированы как внутренние — без ссылок на предыдущие или последующие кадры, если не используются масштабируемые режимы. Однако, макроблоки в P-фрейме могут быть как внутренними, так и ссылаться на предыдущие кадры. Макроблоки в B-фрейме могут быть как внутренними, так и ссылаться на предыдущий кадр, последующий или оба. В заголовке каждого макроблока есть элемент, определяющий его тип.
Без компенсации движения:
С компенсацией движения:
Пропущенные макроблоки в P-фреймах:
Пропущенные макроблоки в B-фреймах:
6. Структура последовательности строго фиксирована шаблоном I,P,B.
Последовательность кадров в MPEG может иметь любую структуру размещения I, P и B фреймов. В промышленной практике принято иметь фиксированную последовательность (вроде IBBPBBPBBPBBPBB), однако, более мощные кодеры могут оптимизировать выбор типа кадра в зависимости от контекста и глобальных характеристик видеоряда.
Каждый тип кадра имеет свои преимущества в зависимости от особенностей изображения (активность движения, временные эффекты маскирования,...). Например, если последовательность изображений мало меняется от кадра к кадру, есть смысл кодировать больше B-фреймов, чем P. Поскольку B-фреймы не используются в дальнейшем процессе декодирования, они могут быть сжаты сильнее, без влияния на качество видеоряда в целом.
Требования конкретного приложения также влияют на выбор типа кадров: ключевые кадры, переключение каналов, индексирование программ, восстановление от ошибок и т. д.
Откуда берутся огромные коэфициенты сжатия? Коэфициент сжатия MPEG видео часто заявляется как 100:1, тогда как в действительности он находися в районе от 8:1 до 30:1.
Как получается «более 100:1» для видео на компакт-диске (White Book) с потоком 1.15 Мбит/с.
1. Высокое разрешение исходного видео.
Большинство источников видеосигнала для компрессии имеют большее разрешение, чем то, которое актуально оказывается в закодированном потоке. Самый популярный студийный сигнал, известный как цифровое видео D-1 или CCIR 601, кодируется на 270 Мбит/с.
Цифра 270 Мбит/с получается из следующих вычислений:
Интенсивность (Y): 858 точек/линию x 525 линий/кадр x 30 кадр/с x 10 бит/точку ~= 135 Мбит/с R-Y (Cb): 429 точек/линию x 525 линий/кадр x 30 кадр/с x 10 бит/точку ~= 68 Мбит/с B-Y (Cb): 429 точек/линию x 525 линий/кадр x 30 кадр/с x 10 бит/точку ~= 68 Мбит/с Итого: 27 млн. точек/с x 10 бит/точку = 270 Мбит/с
Итак, начинаем с коэффициента сжатия 270/1.15... 235:1!!!!!
2. Выбросим гасяшие интервалы.
Из 858 точек яркости на линию под информацию изображения задействованы только 720. В действительности, количество точек на линию — предмет многих ссор на инженерных семинарах, и это значение лежит в пределах от 704 до 720. Аналогично, только 480 линий из 525 задействованы под изображение по вертикали. Настоящее значение лежит в пределах от 480 до 496. В целях совместимости MPEG-1 и MPEG-2 определяют эти числа как 704×480 точек на интенсивность и 352×480 для цветоразностей. Пересчитывая исходный поток, будем иметь:
Y 704 точек/линию x 480 линий x 30 кадр/с x 10 бит/точку ~= 104 Мбит/с C 2 компоненты x 352 точки/линию x 480 линий x 30 кадр/с x 10 бит/точку ~= 104 Мбит/с Итого: ~ 207 Мбит/с
Отношение (207/1.15) составляет всего 180:1.
3. Учтем большее количество бит/точку.
В MPEG на точку отводится 8 бит. Принимая во внимание этот фактор, отношение становится 180 * (8/10) = 144:1.
4. Учтем более высокое разрешение цветности.
Известный студийный сигнал CCIR-601 представляет сигнал цветности с половинным разрешением по горизонтали, но с полным вертикальным разрешением. Это соотношение частот оцифровки известно как 4:2:2. Однако, MPEG-1 и MPEG-2 Main Profile устанавливают использование формата 4:2:0, который считается достаточным для бытовых приложений. В этом формате разрешение цветоразностных сигналов в 2 раза меньше по горизонтали и вертикали, чем интенсивность. Таки образом, имеем:
720 точек x 480 линий x 30 кадр/с x 8 бит/отсчет x 1.5 остчетов/точку = 124 Мбит/с
...и отношение уже становится 108:1.
5. Учтем размер кодируемого изображения.
Последняя стадия предварительной обработки — это преобразование кадра формата CCIR-601 в формат SIF с уменьшением в 2 раза по горизонтали и вертикали. Всего в 4 раза. Качественное масштабирование по горизонтали выполняется с помощью взвешенного цифрового фильтра с 7 или 4-мя узлами, а по вертикали — выбрасыванием каждой второй линии, второго поля или, опять, цифровым фильтром, управляемым алгоритмом оценки движения между полями. Отношение теперь становится
352 точек x 240 линий x 30 кадр/с x 8 бит/отсчет x 1.5 отсчетов/точку ~= 30 Мбит/с !!
... 26:1.
Таким образом, настоящее отношение A/B должно вычисляться между исходной последовательностью в стадии 30 Мбит/с перед кодированием, поскольку это есть действительная частота оцифровки, записываемая в заголовках потока и воспроизводимая при декодировании. Так, сжатия можно добиться уже одним сокращением частоты оцифровки.
6. Не забудем о частоте кадров.
Большинство коммерческих видеофильмов снимаются с киноленты, а не с видео. Основная часть фильмов, записанных на компакт-дисках, была оцифрована и редактирована при 24 кадр/с. В такой последовательности 6 из 30 кадров, отображаемых на телевизионном мониторе (30 кадр/с или 60 полей/с а NTSC), фактически избыточна, и может быть не кодирована в MPEG поток. Это ведет нас к шокирующему выводу, что действительный поток был всего 24 Мбит/с (24 кадр/с / 30 кадр/с * 30 Мбит/с), и коэффициент сжатия составляет всего каких-то 21:1.
Даже при таком скромном коэффициенте сжатия, как 20:1, несоответствия могут возникнуть между исходной и восстановленной последовательностями изображений. Только консервативные коэффициенты в районе 12:1 и 8:1 демонстрируют почти полную прозрачность процесса сжатия последовательностей со сложными пространственно-временными характеристиками (резкие движения, сложные текстуры, резкие контуры и т.д.). Несмотря на это, правильно закодированное видео с использованием предварительной обработки и грамотного распределения битов, может достигать и более высоких коэффициентов сжатия при приемлемом качестве восстановленного изображения.
Как достигается сжатие видео? При сжатии видео используются следующие статистические характеристики:
Пространственная корреляция: дискретное косинусное преобразование 8×8 точек. Особенности человеческого зрения: невосприимчивость к высокочастотным составляющим — скалярное квантование коэффициентов ДКП с потерей качества. Большая пространственная корреляция изображения в целом: предсказание первого низкочастотного коэффициента преобразования в блоке 8×8 (среднее значение всего блока). Статистика появления синтаксических элементов в наиболее вероятном кодируемом потоке: оптимальное кодирование векторов движения, коэффициентов ДКП, типов макроблоков и пр. Разряженная матрица квантованных коэффициентов ДКП: кодирование повторяющихся нулевых элементов с обозначением конца блока. Пространственное маскирование: степень квантования макроблока. Кодирование участков с учетом содержания сцены: степень квантования макроблока. Адаптация к локальным характеристикам изображения: кодирование блоков, тип макроблока, адаптивное квантование. Постоянный размер шага при адаптивном квантовании: новая степень квантования устанавливается только специальным типом макроблока и не передается по умолчанию. Временная избыточность: прямые и обратные векторы движения на уровне макроблоков 16×16 точек. Кодирование ошибки предсказаний макроблоков с учетом восприятия: адаптивное квантование и квантование коэффициентов преобразования. Малая ошибка предсказания: для макроблока может быть сигнализировано отсутвие ошибки. Тонкое кодирование ошибки предсказания на уровне макроблоков: каждый из блоков внутри макроблока может быть кодирован или пропущен. Векторы движения — медленное движение фрагмента изображения со сложным рисунком: предсказание векторов движения. Появления и исчезновения: прямое и обратное предсказание в B-фреймах. Точность межкадрового предсказания: билинейно интерполированные (фильтрованные) разности блоков. В реальном мире движения объектов от кадра к кадру редко попадают на границы точек. Интерполяция позволяет выяснить настоящее положение объекта, зачастую увеличивая эффективность компрессии на 1 дБ. Ограниченная активность движения в P-фреймах: пропущенные макроблоки. Когда вектор движения и ошибка предсказания нулевые. Пропущенные макроблоки очень желательны в кодированном потоке, поскольку не занимают битов, кроме как в заголовке следующего макроблока. Компланарное движение в B-фреймах: пропущенные макроблоки. Когда вектор движения тот же, а ошибка предсказания нулевая. Как работает MPEG аудио? MPEG стандарт определяет три высокопроизводительных схемы сжатия звука, называемых уровнями: Layer 1, 2 и 3. С возрастанием номера возрастает сложность и производительность алгоритма кодирования, задержка кодирования и соотношение качества восстановленного сигнала к величине потока. Эти три схемы иерархически совместимы, то есть декодер уровня 3 может читать layer 3, 2 и 1, а декодер уровня 2 — 2 и 1. Для каждого уровня стандарт жестко определяет синтаксис потока и алгоритм декодирования.
Все уровни имеют одинаковую базовую структуру. Кодер анализирует входной сигнал, вычисляя для него гребенку фильтров, и применяет к нему психоакустическую модель. На стадии квантования и кодирования кодер пытается так распределить доступные биты данных, чтобы выполнить требования фиксированной, наперед заданной величины потока и маскирования.
Декодер менее сложен. Его задача — синтезировать звуковой сигнал из спектральных компонент.
Все три уровня используют одну гребенку фильтров (32 полосы). Помимо этого, layer 3 применяет модифицированное дискретное косинусное преобразование (МДКП), чтобы увеличить частотную характеристику. Все уровни используют одну структуру потока и одни информационные заголовки, для поддержания иерархической совместимости. Частота оцифровки входного сигнала может быть 32, 44.1 и 48 КГц.В скобках указана приблизительная величина реальной задержки.
Какой уровень MPEG аудио лучше подходит для моего приложения? Layer 1 нацелен на величину выходного потока 192 Кбит/с на канал. Это упрощенная версия Уровня 2. Лучше всего он подходит для больших величин потока в районе 192 Кбит/с. Разновидность Уровня 1 используется в устройствах записи цифровых компакт-кассет (DCC, PASC).
Уровень 2 используется для потоков 128 Кбит/с на канал. Он идентичен MUSICAM, и был разработан как «золотая середина» между качеством звука к величине потока и сложностью кодера. Лучше всего подходит для средних величин потока в районе 128 или даже 96 Кбит/с на канал. Уровень 2 было решено использовать DAB (EU 147) для Цифровой Радиовещательной Сети (Digital Audio Broadcasting network).
Уровень 3 предназначается для потоков 64 Кбит/с на канал. Он объединяет в себе лучшее из MUSICAM и ASPEC, и был разработан специально для низких величин потока в районе 64 Кбит/с и ниже. Формат Уровня 3 определяет ряд усовершенствованных методик, служащих для одной цели — сохранить максимальное качество звука даже при низком потоке. Сегодня Уровень 3 используется в различных сетях связи (ISDN, спутниковые каналы) и системах анализа речи.
Как достигается сжатие аудио? Сердце всей схемы сжатия — психоакустическая модель, применяемая к полосам, полученным после гребенки фильтров. На ее основе строится распределение битов. Этим моделям посвящена целая область науки, познакомиться с которой можно в справочной литературе, учебнике или в университете на курсе по психоакустике.
Где взять исходные тексты программ?