Методы сжатия подвижных изображений (видео)

Основной проблемой в работе с подвижными изображениями являются большие объемы данных, с которыми приходится иметь дело. Например, при записи на компакт-диск в среднем качестве на него можно поместить несколько тысяч фотографий, более 10 часов музыки и всего полчаса видео. Видео телевизионного формата – 720х576 точек и 25 кадров в секунду в системе RGB - требует потока данных примерно 240 Мбит/с (1,8 Гбит/мин). При этом обычные методы сжатия, ориентированные на кодирование отдельных кадров (в том числе и JPEG), не спасают положения, поскольку даже при уменьшении битового потока в 10 - 20 раз он остается чересчур большим для практического использования.

При сжатии подвижных изображений учитывается наличие в них нескольких типов избыточности:

- когерентность (одноцветность) областей изображения – незначительное изменение цвета изображения в его соседних пикселах; это свойство изображения используется при его разрушающем сжатии всеми известными методами;

- избыточность в цветовых плоскостях, отражающую высокую степень связи интенсивностей различных цветовых компонент изображения и важность его яркостной компоненты;

- подобие между кадрами – использование того факта, что при скорости 25 кадров в секунду (а это минимальная их частота, при которой незаметно мелькание изображения, связанное со сменой кадров) различие в соседних кадрах очень незначительно.

С середины 80-х гг. многие западные университеты и лаборатории фирм работали над созданием алгоритма компрессии цифрового видеосигнала. Появилось достаточно большое число внутрифирменных стандартов. Область эта очень специфична и динамична - международные стандарты появляются буквально через 2-3 года после создания алгоритма. Рассмотрим существующие стандарты в области цифрового видео.

В 1988 году в рамках Международной организации по стандартизации (ISO) начала работу группа MPEG (Moving Pictures Experts Group) - группа экспертов в области цифрового видео. В сентябре 1990 года был представлен предварительный стандарт кодирования MPEG-I. В январе 1992 года работа над MPEG-I была завершена.

Работа эта была начата не на пустом месте, и как алгоритм MPEG имеет несколько предшественников. Это прежде всего JPEG - универсальный алгоритм, предназначенный для сжатия статических полноцветных изображений. Его универсальность означает, что алгоритм дает неплохие результаты на широком классе изображений. Алгоритм использует конвейер из нескольких преобразований. Ключевым является дискретное косинусное преобразование (ДКП), позволяющее в широких пределах менять степень сжатия без заметной потери качества изображения. Последняя фраза означает, что различить на глаз восстановленное и исходное изображения практически невозможно. Идея алгоритма состоит в том, что в реальных изображениях малы амплитуды высоких частот при разложении матрицы изображения в двойной ряд по косинусам. Можно достаточно свободно огрублять их представление, не сильно ухудшая изображение. Кроме того, используется перевод в другое цветовое проcтранство (YUV), групповое кодирование и кодирование Хаффмана.

Алгоритм сжатия. Технология сжатия видео в MPEG распадается на две части: уменьшение избыточности видеоинформации во временном измерении, основанное на том, что соседние кадры, как правило, отличаются не сильно, и сжатие отдельных изображений.

Уменьшение избыточности во временном измерении. Чтобы удовлетворить противоречивым требованиям и увеличить гибкость алгоритма, в последовательности кадров, составляющих подвижное изображение, выделяют четыре типа кадров:

I-кадры - независимо сжатые (I-Intrapictures); – Р-кадры - сжатые с использованием ссылки на одно изображение (P-Predicted);

В-кадры - сжатые с использованием ссылки на два изображения (В-Bidirection);

ВС-кадры - независимо сжатые с большой потерей качества (используются только при быстром поиске).

I-кадры обеспечивают возможность произвольного доступа к любому кадру, являясь своеобразными входными точками в поток данных для декодера.

Р-кадры используют при архивации ссылку на один I- или Р-кадр, повышая тем самым степень сжатия фильма в целом.

В-кадры, используя ссылки на два кадра, находящихся впереди и позади, обеспечивают наивысшую степень сжатия; сами в качестве ссылки использоваться не могут.

Последовательность кадров в фильме может быть, например, такой: I B B P B B P B B P B B P B B I B B P ...., или I P B P B P B I P B P B ...

Частоту I-кадра выбирают исходя из требований на время произвольного доступа и надежности потока при передаче по каналу с помехами, соотношение между P и B-кадрами – исходя из необходимой степени сжатия и сложности декодера, поскольку для того, чтобы распаковать B-кадр, нужно уже иметь как предшествующий, так и следующий за ним кадры.

Одно из основных понятий при сжатии нескольких изображений - макроблок. Макроблок - это матрица пикселов 16х16 элементов (размер изображения должен быть кратен 16). Такая величина выбрана не случайно - ДКП работает с матрицами размером 8×8 элементов. При сжатии каждый макроблок из цветового пространства RGB переводится в цветовое пространство YUV. Матрица, соответствующая Y (яркостному компоненту), превращается в четыре исходные матрицы для ДКП, а матрицы, соответствующие компонентам U и V, прореживаются на все четные строки и столбцы, превращаясь в одну матрицу для ДКП.

Таким образом, мы сразу получаем сжатие в два раза, пользуясь тем, что глаз человека хуже различает цвет отдельной точки изображения, чем ее яркость.

Отдельные макроблоки сжимаются независимо, т.е. в В-кадрах можно сжать макроблок как I-блок, Р-блок со ссылкой на предыдущий кадр, Р-блок со ссылкой на последующий кадр и, наконец, как В-блок.

Сжатие отдельных кадров. Существует достаточно много алгоритмов, сжимающих статические изображения. Из них чаще всего используются алгоритмы на базе дискретного косинусного преобразования. Алгоритм сжатия отдельных кадров в MPEG похож на соответствующий алгоритм для статических изображений - JPEG. Напомним, как выглядит процедура JPEG -кодирования.

К макроблокам, которые готовит алгоритм уменьшения избыточности во временном измерении, применяется ДКП. Само преобразование заключается в разложении значений дискретной функции двух переменных в двойной ряд по косинусам некоторых частот. Дискретное косинусное преобразование переводит матрицу значений яркостей в матрицу амплитуд спектральных компонент, при этом амплитуды, соответствующие более низким частотам, записываются в левый верхний угол матрицы, а те, которые соответствуют более высоким, - в правый нижний. Поскольку в реалистичных изображениях высокочастотная составляющая очень мала по амплитуде, в результирующей матрице значения под побочной диагональю либо близки, либо равны нулю.

К полученной матрице амплитуд применяется операция квантования. Именно на этапе квантования - группового кодирования - в основном и происходит адаптивное сжатие, и здесь же возникают основные потери качества фильма. Квантование - это целочисленное поэлементное деление матрицы амплитуд на матрицу квантования (МК). Подбор значений МК позволяет увеличивать или уменьшать потери по определенным частотам и регулировать качество изображения и степень сжатия. Заметим, что для различных компонентов изображения могут быть свои МК.

Следующий шаг алгоритма заключается в преобразовании полученной матрицы 8×8 в вектор из 64 элементов. Этот этап называется зигзаг-сканированием, т.к. элементы из матрицы выбираются, начиная с левого верхнего, зигзагом по диагоналям, параллельным побочной диагонали. В результате получается вектор, в начальных позициях которого находятся элементы матрицы, соответствующие низким частотам, а в конечных - высоким. Следовательно, в конце вектора будет очень много нулевых элементов.

Далее повторяются все действия, соответствующие стандартному алгоритму сжатия неподвижных изображений JPEG.

Использование векторов смещений блоков. Простейшим способом учета подобия соседних кадров было бы вычитание каждого блока текущего кадра из каждого блока предыдущего. Однако гораздо более эффективным является алгоритм поиска векторов, на которые сдвинулись блоки текущего кадра по отношению к предыдущему.

Алгоритм состоит в том, что для каждого блока изображения мы находим блок, близкий к нему в некоторой метрике (например, по минимуму суммы квадратов разностей пикселов), в предыдущем кадре в некоторой окрестности текущего положения блока. Если минимальное расстояние между блоками в этой метрике меньше некоторого порога, то вместе с каждым блоком в выходном потоке сохраняется вектор смещения - координаты смещения максимально похожего блока в предыдущем I или P- кадре. Если различия больше этого порога, блок сжимается независимо.

 








Дата добавления: 2016-02-04; просмотров: 1304;


Поиск по сайту:

При помощи поиска вы сможете найти нужную вам информацию.

Поделитесь с друзьями:

Если вам перенёс пользу информационный материал, или помог в учебе – поделитесь этим сайтом с друзьями и знакомыми.
helpiks.org - Хелпикс.Орг - 2014-2024 год. Материал сайта представляется для ознакомительного и учебного использования. | Поддержка
Генерация страницы за: 0.005 сек.