Цифровой формат видеозаписи M.P.E.G.-2 (Motion Picture Expert Group)
Для представления видеопотока в цифровом виде пришлось решить немало проблем. Большие сложности составила проблема совместимости с существующими аналоговыми форматами (PAL, SECAM, NTSC). Стандарт CCIRR-601 определил базовые характеристики для видеопотоков 720×576×25 кадров/сек (совместимость с PAL), 720×480×30 (совместимость с NTSC). Для хранения такого количества данных требуются огромные ресурсы, поэтому очевидно, что необходимо применять сжатие информации. Но сжимать видеоизображения без потерь невозможно из-за большой энтропии, поэтому приходится применять алгоритм сжатия с потерями качества.
Иерархия потока выделяет несколько уровней: собственно сам видеоряд (sequence), группа кадров (GOP, Group Of Pictures), срез (slice), макроблок (macroblock) и блок (block). Видеоряд начинается с заголовка, содержит одну или несколько групп кадров и заканчивается суффиксом (end-of-sequence code). Группы кадров, содержащие свои собственные заголовки, позволяют осуществлять быструю навигацию в потоке.
Кадр является единицей кодирования информации видеоряда. Кадр состоит из трех прямоугольных матриц, одна из которых содержит информацию о яркости (Y — luminance), а две другие о насыщенности (Cb — blue chrominance, Cr — red chrominance) синего и красного цветов элементов изображения. Матрица Y имеет вдвое меньшую ширину и высоту по отношению к размерам кадра, а матрицы Cb и Cr — в 4 раза. Вообще-то, допускается кодирование с соотношениями: 4:2:0, 4:2:2 и 4:4:4. Где 4:2:0 означает, что матрицы Cb и Cr имеют половинное разрешение по вертикали и по горизонтали, то есть они меньше в 4 раза. 4:2:2 — матрицы цветности имеют уменьшенное в два раза разрешение только по горизонтали, и 4:4:4 — Cb и Cr имеют полное разрешение. Срез — это один или более смежных макроблоков, которые упорядочены слева-направо и сверху-вниз. Группирование макроблоков в срез позволяет усилить устойчивость к сбоям и ошибкам в потоке. Макроблок представляет собой квадратный 16×16 фрагмент кадра и состоит из четырех Y блоков, одного Cb и одного Cr блока. В свою очередь блок представляет собой квадратную матрицу 8×8 яркости или насыщенности.
Формат MPEG использует следующие 3 типа кадров в группе:
Вступительные (опорные) кадры представляют собой сжатые по алгоритму, аналогичному JPEG, кадры изображения. Они несут смысл опорных кадров в группе, так как по ним можно построить другие кадры. Для увеличения степени сжатия анализируется корреляция кадров, вычисляется разница как с предыдущими кадрами, так и со следующими. Разница текущего кадра со вступительным оформляется в виде дельта-кадра (P-Picture), если в группе более одного дельта-кадра, то все последующие дельта-кадры «опираются» на предыдущие, соответственно. Кадры, «опирающиеся» как на предыдущие, так и на последующие, аппроксимируют разницу кадров (B-Picture).
Перво-наперво, кадр изображения разбивается на макроблоки и блоки. В зависимости от выбранной модели сжатия количество блоков в макроблоке может отличаться. Каждому Y, Cb и Cr блоку сопоставляется матрица соответствующего размера.
Далее над матрицами производится прямое дискретное косинус-преобразование (пДКП, fDCT, forward Discrete Cosine Transform) каждого 8×8 блока (разложение в спектр). Одномерное ДКП по n дискретным значениям амплитуды сигнала формирует вектор длины n, состоящий из коэффициентов разложения. То есть рассматривая строку матрицы как вектор значений амплитуды некоего сигнала, можно применить одномерное ДКП. В результирующем векторе сначала будут находиться низкочастотные, а в конце — высокочастотные компоненты сигнала.
|
|
|
После обработки строк матриц, ДКП применяется для столбцов.
|
|
|
В итоге получается матрица коэффициентов разложения, которая в левом верхнем углу содержит низкочастотные составляющие, а правом нижнем — высокочастотные.
Далее идет процесс квантования коэффициентов разложения, а по сути уменьшение динамического диапазона, путем деления на матрицы квантования. В связи с тем, что цветовая характеристика элементов изображения имеет сильную пространственную корреляцию (то есть соседние пикселы обычно не очень сильно отличаются друг от друга), в полученном спектре будут преобладать низкочастотные составляющие. Поэтому появляется возможность провести не статическое квантование, а адаптированное, то есть не делить на матрицы из одинаковых элементов, а подобрать коэффициенты наиболее удобным образом, чтобы исключить излишнюю информацию о высокочастотной составляющей. В связи с этим матрицы квантования в левом верхнем углу содержат минимальные по модулю делители, а в правом нижнем — максимальные.
После квантования часть коэффициентов из-за выравнивания сравняется, а большинство малых коэффициентов округлится до нуля, образовав подобласти с нулевым значением. Это обстоятельство позволяет произвести упаковку длинных цепочек одинаковых значений методом группового кодирования (RLE, Run Length Encoding). Для этого квадратная матрица преобразуется зиг-заг обходом в вектор, и цепочки повторяющихся коэффициентов упаковываются в пары (длина, значение).
В формате MJPEG и MPEG-1 используется обычный для JPEG зиг-заг обход, но в MPEG-2 используется немного другой способ. Такой модифицированный обход повышает эффективность группового кодирования для чересстрочного видеопотока.
Далее производится уменьшение энтропии по алгоритму Хаффмана. Суть его заключается в статистическом анализе потока данных и составления специальной кодирующей таблицы. В такой таблице наиболее часто встречающимся данным сопоставляется наиболее короткие коды, а редко встречающимся — длинные.
Из-за особенностей структуры потока (см. выше о макроблоках) высота и ширина каждого кадра изображения должна быть кратна 16, то есть в MPEG-2 можно закодировать любой видеоряд с разрешением кратным 16. Но ISO предлагает несколько стандартных форматов для различных целей.
Качество | Разрешение и частота кадров | <Пикселов/сек | Мак. ширина потока | Область применения |
---|---|---|---|---|
Низкое | 352 × 240 × 30 | 3.05 M | 4 Мб/сек | CIF, аналогично бытовым видеозаписям |
Среднее | 720 × 480 × 30 | 10.40 M | 15 Мб/сек | CCIR 601, студийное телевидение |
Высокое 1440 | 1440 × 1152 × 30 | 47.00 M | 60 Мб/сек | 4× 601, студийное телевидение высокой четкости (HDTV) |
Высокое | 1920 × 1080 × 30 | 62.70 M | 80 Мб/сек | SMPTE 240 std, кинопроизводство |