Кодирование изображений

       

Пирамидальное кодирование


Другой принцип лежит в основе пирамидального кодирования. Пусть x(k,l) - исходное изображение. Получим из него его низкочастотную, с частотой среза f1,

«версию»

x1(k,l) с помощью локального усреднения с одномодовым гауссоподобным

двумерным импульсным откликом. x1(k,l) можно рассматривать как предсказание для c. e1(k,l) = x(k,l) - x1(k,l) - ошибка предсказания, далее повторяем для частоты среза f2: e2(k,l) = x1(k,l) - x2(k,l) - ошибка предсказания меньше чем для e1 в f1/f2 раз. Получаем в итоге последовательность e1 ,e2 , .., et. На каждой итерации размерность изображения сокращается в fi /fi+1 раз. Легче изобразить данный принцип в виде схемы:

Данный метод уменьшает занимаемый размер в 10..20 раз при приемлемом качестве изображения. Но сложность алгоритма выше по сравнению с предыдущими методами.

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

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


             Уменьшение числа областей. Обычно в изображении 70% созданных областей содержатся в 4% изображения. Соседние области объединяют, если они обладают близкими свойствами, также удаляют незначительные (по размеру), области. Алгоритмы создания и удаления областей - задача не простая и может быть оптимизирована по многим направлениям различными способами. Именно от  нее зависит дальнейшая эффективность алгоритма.

Рассмотрим собственно кодирование. Оно состоит из двух этапов: 1 - кодирование контуров и 2 - текстур, лежащих в них. Контуры представляются в виде матрицы с битовыми элементами, который равен 1, если точка входит в границу области - контур и 0 - иначе. Данную матрицу можно энтропийно сжать с эффективностью ~1.2 .. 1.3 бита на пиксел контура. Текстура (содержимое) каждой области приближается средним уровнем свойства ее области и двумерным полиномом (линейным, квадратным или кубическим - в зависимости от реализации и требований к качеству). При декодировании прибавим зернистость в текстуру с помощью гауссова псевдослучайного фильтра с уже известной среднеквадратичной ошибкой. Данный метод позволяет добиться сжатия изображения в 20..55 раз с приемлемым качеством изображения. Временные затраты при его реализации весьма велики. При работе данного метода мы также можем (с небольшими дополнительными вычислениями) параллельно перевести изображение в векторную форму.

  


Содержание раздела