MPEG: Вопросы и ответы
Что такое 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 всегда 352x240
Как MPEG-1, так и MPEG-2, могут быть применены к широкому классу потоков, частот и размеров кадров. MPEG-1, знакомый большинству людей, используется для передачи 25 кадр/с с разрешением 352x288 в PAL или 30 кадр/с с разрешением 352x240 в 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 КГц.
Уровень | Минимальный поток, Кбит/с | Максимальный поток, Кбит/с | Минимальная теоретическая задержка кодера, мс |
1 | 32 | 448 | 19 (<50) |
2 | 32 | 384 | 35 (100) |
3 | 32 | 320 | 59 (150) |
В скобках указана приблизительная величина реальной задержки.
Какой уровень 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, спутниковые каналы) и системах анализа речи.
Как достигается сжатие аудио?
Сердце всей схемы сжатия — психоакустическая модель, применяемая к полосам, полученным после гребенки фильтров. На ее основе строится распределение битов. Этим моделям посвящена целая область науки, познакомиться с которой можно в справочной литературе, учебнике или в университете на курсе по психоакустике.
Где взять исходные тексты программ?
Существует несколько бесплатно распространяемых архивов, служащих основой всех коммерческих пакетов. Наибольшего интереса заслуживает работа MPEG Software Simulation Group под руководством Chad Fogg. Это реализация схемы Test Model 5 для MPEG 2 с поддержкой MPEG 1, которая является хорошей отправной точкой для создания собственного кодера и изучения практической части как MPEG 2, так и MPEG 1.
5 июля 2018