Рис.1. Типы кадров в MPEG-2.
Рассмотрим более подробно, как кодируются отдельные кадры
(рис. 2). Для кодирования цветного изображения используется схема YUV,
применяемая в обычном телевещании. То есть изображение раскладывается не
по трем каналам цветности (схема RGB), а по двум каналам цветности (U,
V) и по каналу яркости (Y).
Рис.2. Последовательность преобразований в MPEG-2.
Изображение в канале яркости - это, по существу, черно-белое
изображение. Подмечено, что одна из особенностей восприятия изображения
человеческим глазом состоит в том, что он обладает большим разрешением
(рис. 3) по каналу яркости (Y), чем по каналам цветности (U, V). Поэтому,
расслаивая цветной кадр на эти три составляющие, мы можем подвергнуть слои
U и V большему сжатию, чем слой Y. Как было сказано в начале, этот принцип
был использован еще при создании цветного аналогового телевидения, где
U, V передаются не одновременно, а поочередно.
Рис.3. Разрешающая способность человеческого глаза.
I-кадр кодируется как статическое изображение следующим
образом. Каждый слой кадра разбивается на блоки размером 8х8 точек и повергается
дискретному косинус-преобразованию (ДКП, DCT). ДКП является полностью обратимым
преобразованием. По сути ДКП - это частный случай преобразования Фурье
для
четной функции, когда функция раскладывается только на косинусные гармоники.
Итак, при ДКП вместо значения пикселя (то есть уровня
цветности и яркости) в ячейке блока ставится коэффициент ДКП (рис. 4).
То есть блок преобразуется в свой двумерный спектр. Как правило, энергетический
спектр изображения сосредотачивается в низкочастотных гармониках, поэтому
коэффициенты, расположенные ближе к верхнему левому углу, имеют большие
значения, чем остальные. Чем меньше соседние пиксели отличаются друг от
друга в исходном блоке, тем ближе к нулю значения большинства коэффициентов
ДКП.
Рис.4. Дискретное косинус-преобразование (ДКП).
Для пикселей монотонного изображения коэффициенты ДКП
равны нулю, за исключением коэффициента в левом верхнем углу, который задает
интенсивность изображения.
Полученные коэффициенты квантуются (то есть округляются
до некоторой степени 2). Главная задача при этом - увеличить количество
нулевых коэффициентов. По сути отбрасываются высокочастотные гармоники.
Как показывает опыт, обычно это практически не влияет на качество изображения.
Полученный набор двоичных векторов (коэффициентов) сжимается
известным кодом Хаффмана. Так формируется сжатый I-кадр, который
с известной потерей качества можно восстановить независимо от других кадров.
P- и B-кадры кодируются с учетом их отличия от опорных
I- и P-кадров. Поэтому они поддаются более сильному сжатию, чем I-кадры.
При кодировании P-кадра (B-кадры кодируются практически
аналогичным образом), он также разбивается на блоки 8х8 и сравнивается
с исходным кадром (будем считать, что это I-кадр, хотя может быть
и предшествующий P-кадр). Если некоторый блок в кодируемом P-кадре совпадает
с аналогичным блоком в опорном кадре, то достаточно указать, что он тот
же самый. Другим случаем является нахождение точно такого же блока в опорном
I-кадре, но в другой позиции, поэтому вместо блока P-кадра можно указать
лишь ссылку на другой блок I-кадра в виде вектора смещения. Остальные
блоки кодируются так же, как в случае I-кадра.
Заметим, что если в подвижном изображении часть объектов
будет двигаться поступательно (а это бывает часто), то несколько блоков
будут закодированы одним и тем же вектором смещения. При последующем сжатии
по методу Хаффмана это даст дополнительное увеличение степени компрессии
P-кадра.
Для кодирования звукового сопровождения может использоваться
несколько методов. Это MPEG Layer 3 (наследство MPEG-1), MPEG AAC или Dolby
AC-3. Основная идея сжатия, по крайней мере, в MPEG Layer 3, построена
на упрощении формы звукового сигнала, которое производится с учетом свойств
человеческого слуха и практически не влияет на качество закодированного
звука. Это позволяет при потоке оцифрованного и сжатого сигнала 128 кбит/с
получить качество звука, близкое к CD Audio.
Надо только добавить, что в MPEG-2 предусмотрено использование
не одного (как в MPEG-1), а нескольких звуковых сигналов. Благодаря этому
возможно создание эффектов объемного звучания, а также многоязычного сопровождения
фильмов.
Если заглянуть более подробно в MPEG-2, то оказывается,
что это целое семейство стандартов. Например, MPEG-2 позволяет использовать
в качестве исходных телевизионные сигналы разных систем. Для этого в стандарте
введены понятия уровней (level) и профилей (profile).
|
Число отсчетов
в строке |
Число строк в кадре | Число кадров в секунду | Максимальный поток, Mбит/c |
высокий (HL) | 1920 | 1152 | 60 |
80
(100 для 422P) |
высокий 1440
(H1440) |
1440 | 1152 | 60 | 80 |
главный (ML) | 720 | 576 | 30 | 15
(20 для 422P) |
низкий (LL) | 352 | 288 | 30 | 4 |
Simple profile | Main profile | SNR scalable
profile |
Spatially
scalable profile |
High rofile | 4:2:2 Profile | |
HL | x | x | ||||
H1440 | x | x | x | |||
ML | x | x | x | x | x | |
LL | x | x |