Кодирование преобразований. Стандарт сжатия JPEG
Популярный стандарт кодирования изображений JPEG (Joint Photographers Experts Group) является очень хорошей иллюстрацией к объяснению принципов разрушающего сжатия на основе кодирования преобразований.
Основную идею кодирования преобразований можно понять из следующих простых рассуждений. Допустим, мы имеем дело с некоторым цифровым сигналом (последовательностью отсчетов Котельникова). Если отбросить в каждом из отсчетов половину двоичных разрядов (например, 4 разряда из восьми), то вдвое уменьшится скорость кода R и потеряется половина информации, содержащейся в сигнале.
Если же подвергнуть сигнал преобразованию Фурье (или какому-либо другому подобному линейному преобразованию), разделить его на две составляющие – НЧ и ВЧ, продискретизовать, подвергнуть квантованию каждую из них и отбросить половину двоичных разрядов только в высокочастотной составляющей сигнала, то результирующая скорость кода уменьшится на одну треть, а потеря информации составит всего 5%.
Этот эффект обусловлен тем, что низкочастотные составляющие большинства сигналов (крупные детали) обычно гораздо более интенсивны и несут гораздо больше информации, нежели высокочастотные составляющие (мелкие детали). Это в равной степени относится и к звуковым сигналам, и к изображениям.
Рассмотрим работу алгоритма сжатия JPEG при кодировании черно-белого изображения, представленного набором своих отсчетов (пикселов) с числом градаций яркости в 256 уровней (8 двоичных разрядов). Это самый распространенный способ хранения изображений - каждой точке на экране соответствует один байт (8 бит - 256 возможных значений), определяющий её яркость. 255 - яркость максимальная (белый цвет), 0 - минимальная (черный цвет). Промежуточные значения составляют всю остальную гамму серых цветов (рис. 8.3).
Рис. 8.3. Чёрно-белое изображение, продлежащее кодированию
Работа алгоритма сжатия JPEG начинается с разбиения изображения на квадратные блоки размером 8×8 = 64 пиксела. Почему именно 8×8, а не 2×2 или 32×32? Выбор такого размера блока обусловлен тем, что при его малом размере эффект кодирования будет небольшим (при размере 1×1 – вообще отсутствует), а при большом - свойства изображения в пределах блока будут сильно изменяться и эффективность кодирования снова снизится.
На рис. 8.3 изображено несколько таких блоков (в виде матриц цифровых отсчетов), взятых из различных участков изображения. В дальнейшем эти блоки будут обрабатываться, и кодироваться независимо друг от друга.
Второй этап сжатия – применение ко всем блокам дискретного косинусного преобразования – DCT. Для сжатия данных пытались применить множество различных преобразований, в том числе специально разработанных для этих целей, например, преобразование Карунены-Лоэва, обеспечивающее максимально возможный коэффициент сжатия. Но оно очень сложно реализуется на практике. Преобразование Фурье выполняется очень просто, но не обеспечивает хорошего сжатия. Выбор был остановлен на дискретном косинусном преобразовании, являющем разновидностью ПФ. В отличие от ПФ, которое применяет для разложения сигнала синусные и косинусные частотные составляющие, в DCT используются только косинусные составляющие. Дискретное косинусное преобразование позволяет перейти от пространственного представления изображения (набором отсчетов или пикселов) к спектральному представлению (набором частотных составляющих) и наоборот.
Дискретное косинусное преобразование от изображения IMG (x,y) может быть записано следующим образом:
DCT(u,v) = sqrt(2/N) ∑i,j IMG(xi, yj)cos((2i +1)π u/2N)cos((2j+1)π v/2N),(8.4)
где N = 8, 0< i < 7 , 0 < j < 7,
Дата добавления: 2016-02-04; просмотров: 1319;