Первый вариант алгоритма MPEG-1 появился в 1990 году. Он обладал существенными ограничениями, связанными с возможностями аппаратной части того времени. В частности, формат кадра был ограничен величиной 352 х 288 элементов.
Стандарт MPEG-2 появился в 1994 году и получил широкое распространение как основной стандарт сжатия в таких применениях как DVD, цифровое спутниковое телевидение, компьютерные приложения, связанные с видеозахватом и позже – в цифровых телевизионных системах безопасности и в телевидении высокой четкости.
Стандарт описывает лишь битовый поток. Техническая и программная реализация этого стандарта у различных производителей оборудования и программного обеспечения может существенно отличаться.
Основу алгоритма MPEG-2 составляют следующие методы:
- внутрикадровое кодирование: блочная структура кадра, дискретное косинусное преобразование, нелинейная таблица квантования, формат изображения 4:2:0, 4:2:2, 4:4:4, поддержка произвольного размера кадра.
- межкадровое кодирование: кадровая структура видеопоследовательности, использование кадров трех типов, использование векторов движения.
Стандарт обладает высокой гибкостью, которая обеспечивается большим количеством (методов) инструментов, используемых при кодировании, а также большим количеством настраиваемых параметров. Для упрощения работы со стандартом в различных приложениях предусмотрены понятия профилей и уровней.
Профили определяют набор используемых инструментов кодирования и, следовательно, эффективность работы алгоритма, которая выражается в степени сжатия и качестве сжатого видеопотока. Вместе с тем, профиль определяет и общую сложность алгоритма, а также требования к ресурсам.
Уровень обычно определяет разрешение, частоту кадров и скорость битового потока.
Сочетание профилей и уровней дает возможность выбрать наиболее удобную реализацию алгоритма для конкретного использования. Например, сочетание при кодировании главного профиля и главного уровня может быть применено в обычном цифровом телевидении (DVD и спутниковое вещание), сочетание главного профиля и высокого уровня – в телевидении высокой четкости.
Таблица сочетаний профилей и уровней приведена на рис.3.10. Как видно из таблицы, стандартом предусмотрены четыре уровня с фиксированным разрешением. Однако, это не значит, что другие варианты форматов не используются. Может быть практически любой формат вплоть до разрешения 16К х 16К.
Рис. 3.10. Профили и уровни стандарта MPEG-2
Для удобства изучения алгоритма MPEG-2 его обычно рассматривают как иерархическую структуру:
- Видеоряд,
- группа кадров,
- кадр,
- срез,
- макроблок,
- блок.
Видеоряд рассматривается как конечная или непрерывная видеопоследовательность, обладающая некоторыми исходными и неизменными параметрами. К таким параметрам можно отнести формат кадров и их скорость, формат представления цвета, ограничения по битовому потоку. То есть, видеоряд определяет профиль и уровень алгоритма, тем самым, накладывая определенные требования к аппаратной и программной части кодера и декодера. Здесь же обычно присутствует таблица квантования и пользовательские данные. В качестве примера видеоряда можно привести файл с фильмом (конечная видеопоследовательность) и поток видеоданных со спутникового ресивера.
Группа кадров (Group of Pictures, GOP) представляет собой наименьшую независимую структуру кодирования в видеопоследовательности. С точностью до группы кадров возможен произвольный доступ к видеопоследовательности. Связанная с группой кадров информация включает в себя временной код, флаг закрытого состояния и пользовательскую информацию.
Кадр – это основная структура кодирования. С кадром связаны следующие параметры: время, тип кадра, признак инициализации буфера, разрешение векторов движения и их порядок и пользовательские данные.
Используемый в алгоритме метод межкадрового сжатия использует четыре типа кадров [ватолин]:
- I-кадры (Intra)– кадры, сжатые независимо от других кадров;
- Р-кадры (Predicted)– сжатые с использованием ссылки на один предыдущий кадр;
- В-кадры (Bidirection)– сжатые с использованием ссылки на два кадра (предыдущий и последующий);
- DC-кадры – независимо сжатые с большой потерей качества. Используются только при быстром поиске.
На рис. 3.11 показана группа кадров и входящие в нее отдельные кадры различных типов. Группа кадров ограничена двумя I-кадрами, между которыми расположены в определенном порядке P и B-кадры.
Рис. 3.11. Структура Группа кадров (GOP).
I-кадры кодируются аналогично кадрам JPEG. В варианте алгоритма, где имеются только I-кадры видеопоследовательность превращается в M-JPEG. I-кадры могут использоваться для произвольного доступа, поскольку им не требуется дополнительная информация. I-кадры имеют самую низкую степень сжатия.
P-кадры кодируются с использованием прошлых I и P-кадров. Например, кадр, который следует сразу за I-кадром, использует неизменную информацию из этого I-кадра и дополняет ее своей межкадровой разностью. Если за этим P-кадром следует еще один Р-кадр, то он в свою очередь берет неизменную информацию из предыдущего P-кадра (который в свою очередь использовал неизменную информацию I-кадра) и дополняет ее своей межкадровой разностью.
В-кадры используются как интерполяция между предыдущим и последующим кадрами как I так и Р типа.
Частота I-кадров выбирается исходя из требований на время к произвольному доступу и надежности передачи потока видеоданных. Соотношение P и B-кадров выбирается исходя из требований к величине компрессии и мощности вычислительных средств. Следует отметить, что для распаковки В-кадров требуется информация о последующих за ним кадрах. Поэтому порядок кодирования и декодирования изменяется. Обычно для распаковки всей группы кадров требуется задержка, соответствующая времени воспроизведения этой группы кадров. По этой причине передача видеопотока с использованием кодирования и декодирования MPEG-2 происходит с некоторой постоянной задержкой.
Срез представляет собой горизонтальную полосу шириной 16 строк изображения. Срез можно считать неким аналогом строки в цифровом представлении сжатого видеосигнала. Ширина 16 строк определяется тем фактом, что при кодировании изображения используется блочная структура. Основным назначением среза является обеспечение дополнительной синхронизации данных, как аналога строчной синхронизации. Поэтому основной связанной со срезом информацией является вертикальная позиция (номер среза по вертикали).
Макроблок – это структура, из которых строится срез изображения а впоследствии и само изображение. Смысл макроблока заключается в том, что он является наименьшей структурой цветного изображения. Макроблок состоит из отдельных блоков размером 8 х 8 элементов, к которым применяется ДКП. Но блоки не содержат в себе информацию о цветном изображении, поэтому над ними появляется дополнительная структура в виде макроблока.
Тип макроблока зависит от структуры цветного изображения. Например, при наиболее часто используемом формате цветности 4:2:0 (прореживание цветоразностных сигналов в два раза по каждой координате), макроблок будет состоять из одного блока сигнала U (8 х 8 элементов), одного блока сигнала V (8 х 8 элементов) и четырех блоков сигнала яркости Y (также размером 8 х 8 элементов каждый). В результате получается макроблок, содержащий квадрат 16 х 16 элементов цветного изображения.
Как одна из основных структур кодирования макроблок имеет большое количество связанной информации: тип макроблока, масштаб квантования, вектора движения.
На уровне макроблока принимается решение о формировании межкадровой разности и вычисление векторов компенсации движания. Для предсказания движения используется информация от предыдущего, последующего или одновременно с этих обоих кадров. Для каждого из макроблоков в В-кадре выбираем один из макроблоков, определенных векторами движения с предыдущего, последующего кадра, или средний от этих двух. При этом минимизируется ошибка между двумя кадрами, определяемая векторами движения, которая затем и кодируется.
Рисунок 3.12. Иллюстрация двунаправленной компенсации движения.
Блок – минимальная структура изображения, к которому применяется ДКП. На уровне обработки блоков алгоритм MPEG-2 напоминает JPEG. Последовательность действий включает в себя:
- дискретное косинусное преобразование,
- квантование,
- зигзаг-сканирование,
- групповое кодирование (RLE),
- кодирование Хаффмана.
На рис. 3.13 . представлена последовательность действий алгоритма от формирования макроблока до появления битового потока.
Следует отметить также еще некоторые особенности алгоритма MPEG-2, используемые на практике:
- поддержка чересстрочной развертки. В этом случае изменяется порядок зигзаг-сканирования,
Рисунок 3.13. Часть алгоритма MPEG-2 от формирования макроблоков до битового потока.
- использование нелинейной таблицы квантования и различных матриц квантования для I, P и B-кадров,
- поддержка полупиксельной точности при формировании векторов движения,
- двухуровневая защита от ошибок при потоковой передаче данных. На уровне видеоряда восстановление сигнала происходит при смене группы кадров, т.е. при появлении ближайшего I-кадра. На уровне кадра восстановление происходит при появлении очередного среза.