Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лекции ОУ МТКС (2-я часть).doc
Скачиваний:
0
Добавлен:
18.01.2020
Размер:
3.63 Mб
Скачать

Стандарты сжатия изображений

Разработан группой экспертов в области фотографии специально для сжатия 24‑битных изображений и стандартизован в 1991 году. Фактически он является стандартом для полноцветных изображений. Алгоритм оперирует областями 8x8, на которых яркость и цвет меняются сравнительно плавно. Вследствие этого, при разложении матрицы такой области в двойной ряд по косинусам (дискретное косинусное преобразование, ДКП) значимыми оказываются только первые коэффициенты. Таким образом, сжатие в JPEG осуществляется за счет плавности изменения цветов в изображении.

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

Шаг 1 (преобразование в новое цветовое пространство)

Переводим изображение из цветового пространства RGB, с компонентами, отвечающими за красную (Red), зеленую (Green) и синюю (Blue) составляющие цвета точки, в цветовое пространство YCrCb (иногда называют YUV). В нем Y — яркостная составляющая, a Cr, Cb — компоненты, отвечающие за цвет (хроматический красный и хроматический синий). За счет того, что человеческий глаз менее чувствителен к цвету, чем к яркости, появляется возможность архивировать массивы для цветовых компонент с большими потерями и, соответственно, большими степенями сжатия.

RGB to YUV  Y  = (0.257 * R) + (0.504 * G) + (0.098 * B) + 16  V =  (0.439 * R) - (0.368 * G) - (0.071 * B) + 128  U = -(0.148 * R) - (0.291 * G) + (0.439 * B) + 128  YUV to RGB  B = 1.164(Y - 16) + 2.018(U - 128)  G = 1.164(Y - 16) - 0.813(V - 128) - 0.391(U - 128)  R = 1.164(Y - 16) + 1.596(V - 128) 

Шаг 2 (субдискретизация)

Исходное изображение разбивается на матрицы 8x8 элементов. Каждый элемент описывается с помощью 3 байт (3 байта цветности в пространстве RGB, 1 байт яркости и 2 байта цветности в пространстве YCrCb). Производится сохранение информации о яркости всех 64 элементов матрицы, а информация о цветности сохраняется только для каждых вторых строки и столбца. При таком представлении каждый байт цветности будет относиться к области 2х2 пиксела исходного изображения. В результате для каждого блока 2х2 необходимо хранить всего 6 байт информации (4 байта яркости и 2 байта цветности) вместо 12 байт при обычном описании (1 байт яркости и 2 байта цветности для каждого из 4 пикселов). Практика показала, что уменьшение объема данных на 50% почти незаметно отражается на качестве большинства изображений.

Шаг 3 (дискретное косинусное преобразование)

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

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

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

Шаг 4 (квантование коэффициентов ДКП)

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

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

Пример матрицы квантования

3

5

7

9

11

13

15

17

5

7

11

13

15

17

19

21

7

11

13

15

17

19

21

23

9

11

13

15

17

19

21

23

11

13

15

17

19

21

23

25

13

15

17

19

21

23

25

27

15

17

19

21

23

25

27

29

17

19

21

23

25

27

29

31

В результате получается матрица, содержащая достаточно большое количество нулей.

Шаг 5 (вторичное кодирование)

Полученная в результате квантования матрица 8x8 преобразуется в 64-элементный вектор при помощи «зигзаг»-сканирования.

Таким образом, в начале вектора располагаются коэффициенты, соответствующие низким частотам, а в конце — высоким. Зигзаг-сканирование позволяет получить длинные цепочки нулей. Поэтому 64-элементный вектор кодируется сначала с помощью алгоритма RLE, а затем – алгоритма Хаффмана (сжатие без потерь).

Недостатки алгоритма:

- При повышении степени сжатия изображение распадается на отдельные квадраты (8x8).

- Проявляется эффект Гиббса — ореолы вокруг резких вертикальных и горизонтальных границ.

- Плохая приспособленность для сжатия черно-белых изображений, сканированного текста, векторной графики.

Достоинства алгоритма:

- Высокий коэффициент сжатия при приемлемом качестве восстановления (3..20 раз) изображений без резких переходов цвета (большинство фотографий).

- Симметричность алгоритма (кодирование и декодирование производятся за одинаковое время).

Степень сжатия алгоритма: 2..200 (задается пользователем).

Progressive JPEG, Motion JPEG.

Стандарт JPEG-2000 Основные отличия от JPEG: вместо дискретного косинусного преобразования используется дискретное вейвлет-преобразование; вместо алгоритма Хаффмана используется арифметическое кодирование; не применяется субдискретизация цветовых компонент, поскольку использование вейвлетов позволяет достичь того же результата, но с меньшими потерями и др.