Мультимедийные технологии в САПР. Часть II. Майстренко Н.В - 26 стр.

UptoLike

7. Групповое кодирование.
8. Кодирование Хаффмана.
При декодировании весь конвейер повторяется для обратных преобразований, начиная с конца.
6.3.2.2. Улучшение схемы алгоритма сжатия видеоданных
Существует несколько путей увеличения степени сжатия при применении общей схемы компрессии ви-
деоинформации.
Использование векторов смещений блоков. Простейший способ учитывать подобие соседних кадровэто
вычитать каждый блок сжимаемого кадра из соответствующего блока предыдущего.
Однако более гибким является алгоритм поиска векторов, на которые сдвинулись блоки текущего кадра по
отношению к предыдущему. Для каждого блока в изображении находится блок, близкий по некоторой метрике
(например, по сумме квадратов разности пикселов), в предыдущем кадре в некоторой окрестности текущего
положения блока (рис. 6.1). Если минимальное расстояние по выбранной метрике с блоками в предыдущем
кадре больше выбранного порога, блок сжимается независимо [3].
Рис. 6.1. Схема использования векторов смещений блоков
Таким образом, вместе с каждым блоком в поток теперь сохраняются координаты смещения максимально
похожего блока в предыдущем I- или Р-кадре, либо признак того, что данные сжаты независимо. Эти координа-
ты задают вектор смещения блока. В ситуациях, когда камера наезжает на объект или даёт панораму, использо-
вание векторов смещений блоков позволяет значительно уменьшить амплитуду разности кадров и, как следст-
вие, значительно поднять степень сжатия.
Анализ реальных фильмов показывает, что часто блок сдвигается не на кратное число пикселов, а, напри-
мер, на 10,4 пиксела (камера быстро движется вправо, план съёмки сдвигается равномерно и проходит полный
кадр размером 352 × 240 за 1,35 с). При этом оказывается, что для повышения степени сжатия выгодно строить
четыре области поиска векторов смещений: исходную, сдвинутую на полпиксела по горизонтали, сдвинутую на
полпиксела по вертикали и сдвинутую на полпиксела по горизонтали и по вертикали (по диагонали), которые
строятся с помощью достаточно быстрых алгоритмов билинейной или кусочно-линейной аппроксимации. Этот
приём также позволяет уменьшить разность между блоками и повысить степень сжатия при минимальной до-
полнительной информации, которую надо сохранять в файл (плюс 2 бита на каждый блок). Правда,
строить аппроксимированные блоки придётся и при декомпрессии, однако это сравнительно дешёвая по време-
ни операция, которая весьма незначительно увеличивает общее время декомпрессии.
Возможности по распараллеливанию работы алгоритма. Анализ обобщённой схемы алгоритма сжатия
видеоданных позволяет заметить, что он сравнительно легко распараллеливается. Изображение 320 × 288 со-
держит 330 макроблоков, которые можно кодировать и декодировать независимо. Каждый макроблок, в свою
очередь, содержит 6 блоков данных для ДКП. Распараллелить ДКП очень важно, так как, не считая поиска век-
торов смещения, это самая медленная операция. Заметим также, что остальные преобразования легко конвейе-
ризуются. В результате получается параллельно-конвейерная схема обработки потока видеоданных.
Возможно распараллелить обработку различных кадров, но данный шаг сопряжен со сложностями. Как
правило, компрессор строится таким образом, чтобы после сжатия изображение подвергалось обратным преоб-
разованиям. Таким образом, формируется кадр с потерями, а остальные кадры архивируются отталкиваясь от
него. Это позволяет не накапливать ошибки, получаемые ещё при квантовании. Таким образом, если на экране
между кадрами наблюдались большие изменения и качество изображения пришлось понизить, то при стабили-
зации изображения качество быстро повышается практически до качества исходного видеоряда. Неприятный
эффект, порождаемый этим приёмом, заключается в том, что появляется мерцание отдельных точек (или облас-
тей) изображения, значение цвета в которых округляется то в большую, то в меньшую сторону.
При распаковке возможности по параллельной обработке различных кадров достаточно ограничены, по-
скольку велика зависимость между кадрами в потоке (велик процент Р- и В-кадров).
Найденный
подобный блок
Сжимаемое
изображение
Окрестность
блока в пред.
кадре
Блок, для которого
мы ищем похожий