Принципы сжатия видеоданных алгоритмом MPEG-1

"Урезанная" версия формата 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 бит. После квантования многие коэффициенты в матрице обнуляются. И в качестве завершающей стадии происходит преобразование матрицы в линейную форму.


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: