"Урезанная" версия формата PAL/SECAM содержит 352 ppl (point per line – точек на линию), 288 lpf (line per frame – линий на кадр) и 25 fps (frame per second – кадров в секунду).
Для кодировки глубины цвета алгоритм MPEG-1 использует цветовую схему YСbCr, где Y – это яркостная плоскость, Сb и Cr – плоскости цветовые.
Эти плоскости кодируются с разным разрешением. Существует несколько вариантов кодирования, которые можно представить в следующем виде:
Вариант кодирования | Отношение разрешений Сb/Y (Сr/Y) по горизонтали | Отношение разрешений Сb/Y (Сr/Y) по вертикали |
4:4:4 | 1:1 | 1:1 |
4:2:2 | 1:2 | 1:1 |
4:2:0 | 1:2 | 1:2 |
4:1:1 | 1:4 | 1:1 |
4:1:0 | 1:4 | 1:4 |
Как видно из таблицы Сb и Cr практически всегда кодируются с меньшим разрешением, чем Y. Чем меньше разрешение цветовых плоскостей, тем грубее и неестественнее цветопередача в видеоролике. Разумеется, самым некачественным, но и самым компактным будет последний вариант. Перед началом кодирования происходит анализ видеоинформации, выбираются ключевые кадры, которые не будут изменяться при сжатии, а также кадры, при кодировании которых часть информации будет удаляться. Всего выделяется три типа кадров:
|
|
1. Кадры типа I (Intra frame) – ключевые кадры, которые сжимаются без изменений.
2. Кадры типа P (Predirected frame) – при кодировании этих кадров часть информации удаляется. При воспроизведении P-кадра используется информация от предыдущих I или P-кадров.
3. Кадры типа В (Bidirectional frame) – при кодировании этих кадров потери информации еще более значительны. При воспроизведении В-кадра используется информация уже от двух предыдущих I- или P-кадров. Наличие В-кадров в видеоролике – тот самый фактор, благодаря которому MPEG-1 имеет высокий коэффициент сжатия (но и не очень высокое качество).
При кодировании формируется цепочка кадров разных типов. Наиболее типичная последовательность может выглядеть следующим образом: IBBPBBPBBIBBPBBPBB... Соответственно, очередь воспроизведения по номерам кадров будет выглядеть так: 1423765... По окончании разбивки кадров на разные типы начинается процесс подготовки к кодированию.
С I-кадрами процесс подготовки к кодированию происходит достаточно просто – кадр разбивается на блоки. В MPEG-1 блоки имеют размер 8х8 пикселей. А вот для кадров типа P и B подготовка происходит гораздо сложнее. Для того чтобы сильнее сжать кадры указанных типов используется алгоритм предсказания движения. В качестве входной информации алгоритм предсказания движения получает блок 8х8 пикселей текущего кадра и аналогичные блоки от предыдущих кадров (I или P-типа). На выходе данного алгоритма имеем следующую информацию о вышеуказанном блоке:
· вектор движения текущего блока относительно предыдущих;
|
|
· разницу между текущим и предыдущими блоками, которая, собственно, и будет подвергаться дальнейшему кодированию.
Вся избыточная информация подлежит удалению, благодаря чему и достигается столь высокий коэффициент сжатия, невозможный при сжатии без потерь.
В случае же корректного срабатывания алгоритма предсказания движения, объемы кадров разного типа в байтах соотносятся друг с другом примерно следующим образом – I:P:B как 15:5:2, т.е. уменьшение объема видеоданных очевидно уже на стадии подготовки к кодированию. По окончании этой стадии начинается, собственно, само кодирование. Процесс кодирования содержит в себе 3 стадии:
1. Discrete Cosine Transformation – DTC, дискретное преобразование косинусов, преобразование Фурье.
2. Quantization – квантование. Перевод данных из непрерывной формы в дискретную.
3. Преобразование полученных блоков данных в последовательность, то есть преобразование из матричной формы в линейную.
При кодировании блоки пикселей или вычисленная разница между блоками обрабатываются первым из преобразующих алгоритмов – DTC (дискретное преобразование косинусов). Обычно пиксели в блоке и сами блоки изображения определенным образом связаны между собой, например, однотонный фон, равномерный градиент освещения, повторяющийся узор и т.д. Такая связь называется корреляцией. Алгоритм DTC, используя коррелирующие эффекты, производит преобразование блоков в частотные фурье-компоненты. При этом часть информации теряется за счет выравнивания сильно выделяющихся участков, которые не подчиняются корреляции. После этой процедуры в действие вступает алгоритм Quantization – квантование, который формирует Quantization matrix. Quantization matrix – это матрица квантования, элементами которой являются преобразованные из непрерывной в дискретную форму данные, то есть числа, которые представляют собой значения амплитуды частотных фурье-компонентов. После формирования Quantization matrix происходит разбивка частотных коэффициентов на конкретное число значений. Точность частотных коэффициентов фиксирована и составляет 8 бит. После квантования многие коэффициенты в матрице обнуляются. И в качестве завершающей стадии происходит преобразование матрицы в линейную форму.