SlideShare a Scribd company logo
Сжатие изображений
Первыми для архивации изображений стали применяться привычные
алгоритмы. Эти алгоритмы архивировали информацию без изменений.
Старые алгоритмы перестали удовлетворять требованиям,
предъявляемым к архивации. Многие изображения практически не
сжимались, хотя “на взгляд” обладали явной избыточностью. Это привело
к созданию нового типа алгоритмов — сжимающих с потерей
информации. Как правило, коэффициент архивации и, следовательно,
степень потерь качества в них можно задавать. При этом достигается
компромисс между размером и качеством изображений.
Одна из серьезных проблем заключается в том, что до сих пор не найден
адекватный критерий оценки потерь качества изображения. А
теряется оно постоянно — при оцифровке, при переводе в ограниченную
палитру цветов, при переводе в другую систему цветопредставления для
печати, и, что для нас особенно важно, при архивации с потерями. Можно
привести пример простого критерия: среднеквадратичное отклонение
значений пикселов (L2 мера, или root mean square — RMS):
Сжатие изображений
По нему изображение будет сильно испорчено при понижении яркости всего
на 5% (глаз этого не заметит — у разных мониторов настройка яркости
варьируется гораздо сильнее). В то же время изображения со “снегом” —
резким изменением цвета отдельных точек, слабыми полосами или
“муаром” будут признаны “почти не изменившимися”. Свои неприятные
стороны есть и у других критериев
Рассмотрим, например, максимальное отклонение:
Эта мера, как можно догадаться, крайне чувствительна к биению отдельных
пикселов. Т.е. во всем изображении может существенно измениться
только значение одного пиксела (что практически незаметно для глаза),
однако согласно этой мере изображение будет сильно испорчено.
Сжатие изображений
Мера, которую сейчас используют на практике, называется мерой отношения
сигнала к шуму (peak-to-peak signal-to-noise ratio — PSNR).
Данная мера, по сути, аналогична среднеквадратичному отклонению, однако
пользоваться ей несколько удобнее за счет логарифмического масштаба
шкалы. Ей присущи те же недостатки, что и среднеквадратичному
отклонению.
Лучше всего потери качества изображений оценивают наши глаза. Отличной
считается архивация, при которой невозможно на глаз различить
первоначальное и разархивированное изображения. Хорошей — когда
сказать, какое из изображений подвергалось архивации, можно только
сравнивая две находящихся рядом картинки. При дальнейшем
увеличении степени сжатия, как правило, становятся заметны побочные
эффекты, характерные для данного алгоритма. На практике, даже при
отличном сохранении качества, в изображение могут быть внесены
регулярные специфические изменения. Поэтому такие сжатые
изображения лучше не использовать для распознавания образов.
Дискретное косинусное преобразование.
Однако принципы используемые для сжатия изображений, можно
использовать в распознающих программах, поскольку при сжатии из
изображений извлекается существенная информация, присущая
конкретным изображениям.
Дискретное косинусное преобразование
ДКП (DCT) раскладывает изображение по амплитудам некоторых частот.
Таким образом, при преобразовании мы получаем матрицу, в которой
многие коэффициенты либо близки, либо равны нулю.
1 1
0 0
(2 1) (2 1)
cos cos ,
2 2
0 1, 0 1,
1/ , 0; 1/ , 0;
.
2/ ,1 1 2/ ,1 1
M N
pq p q mn
m n
p p
m p n p
B I
M N
p M q N
M p N q
M p M N p M
 
 
 
 
 
 

     
 
 
 
 
 
     
 
 

Дискретное косинусное преобразование.
Существует обратное косинусное преобразование (IDCT)
С точность до ошибок вычисления эти преобразования обратимы
Следует отметить, что в результате этих преобразований получаются
матрицы одинаковой размерности.
Идея сжатия изображения – описывать изображение с помощью
коэффициентов преобразования, отбрасывая часть из них.
1 1
0 0
(2 1) (2 1)
cos cos ,
2 2
0 1, 0 1,
1/ , 0; 1/ , 0;
.
2/ ,1 1 2/ ,1 1
M N
mn p q pq
m n
p p
m p n p
I B
M N
m M n N
M p N q
M p M N p M
 
 
 
 
 
 

     
 
 
 
 
 
     
 
 

I ( ( )
mn mn
IDCT DCT I

Сжатие изображений
-10
-5
0
5
10
Исходное
Восстановленное с В > 10
Матрица DCT (B)
Восстановленное с В > 100
Сжатие изображений
Кроме отбрасывания коэффициентов с небольшими значениями, благодаря
несовершенству человеческого зрения, можно аппроксимировать сами
коэффициенты достаточно грубо без заметной потери качества
изображения.
Для этого используется квантование коэффициентов (quantization). В самом
простом случае — это арифметический побитовый сдвиг вправо. При
этом преобразовании теряется часть информации, но могут достигаться
большие коэффициенты сжатия.
На дискретном косинусном преобразовании построен алгоритм JPEG.
Как работает алгоритм
Итак, рассмотрим алгоритм подробнее. Пусть мы сжимаем 24-битное
изображение.
Шаг 1.
Переводим изображение из цветового пространства RGB, с компонентами,
отвечающими за красную (Red), зеленую (Green) и синюю (Blue)
составляющие цвета точки, в цветовое пространство YCrCb (иногда
называют YUV).
Сжатие изображений
В нем Y — яркостная составляющая, а Cr, Cb — компоненты,
отвечающие за цвет (хроматический красный и хроматический синий). За
счет того, что человеческий глаз менее чувствителен к цвету, чем к
яркости, появляется возможность архивировать массивы для Cr и Cb
компонент с большими потерями и, соответственно, большими
коэффициентами сжатия. Подобное преобразование уже давно
используется в телевидении
Обратное преобразование осуществляется умножением вектора YUV
на обратную матрицу
Сжатие изображений
Шаг 2.
Разбиваем исходное изображение на матрицы 8х8. Формируем из каждой три
рабочие матрицы ДКП — по 8 бит отдельно для каждой компоненты. При
больших коэффициентах сжатия этот шаг может выполняться чуть
сложнее. Изображение делится по компоненте Y — как и в первом случае,
а для компонент Cr и Cb матрицы набираются через строчку и через
столбец. Т.е. из исходной матрицы размером 16x16 получается только
одна рабочая матрица ДКП. При этом, как нетрудно заметить, мы теряем
3/4 полезной информации о цветовых составляющих изображения и
получаем сразу сжатие в два раза. Мы можем поступать так благодаря
работе в пространстве YCrCb. На результирующем RGB изображении,
как показала практика, это сказывается несильно.
Шаг 3.
Применяем ДКП к каждой рабочей матрице. При этом мы получаем матрицу,
в которой коэффициенты в левом верхнем углу соответствуют
низкочастотной составляющей изображения, а в правом нижнем —
высокочастотной.
Сжатие изображений
Шаг 4.
Производим квантование. В принципе, это просто деление рабочей матрицы
на матрицу квантования поэлементно. Для каждой компоненты (Y, U и
V), в общем случае, задается своя матрица квантования qm[p,q] (МК)
На этом шаге осуществляется управление степенью сжатия, и происходят
самые большие потери. Понятно, что, задавая МК с большими
коэффициентами, мы получим больше нулей и, следовательно, большую
степень сжатия.
В стандарт JPEG включены рекомендованные МК, построенные опытным
путем. Матрицы для большего или меньшего коэффициентов сжатия
получают путем умножения исходной матрицы на некоторое число
gamma.
С квантованием связаны и специфические эффекты алгоритма. При больших
значениях коэффициента gamma потери в низких частотах могут быть
настолько велики, что изображение распадется на квадраты 8х8. Потери в
высоких частотах могут проявиться в так называемом “эффекте Гиббса”,
когда вокруг контуров с резким переходом цвета образуется своеобразный
“нимб”.
( , ) ( ( , )/ ( , ))
qm
Y p q round Y p q qm p q

Сжатие изображений
Шаг 5.
Переводим матрицу 8x8 в 64-элементный вектор при помощи “зигзаг”-
сканирования, т.е. берем элементы с индексами (0,0), (0,1), (1,0), (2,0)...
Таким образом, в начале вектора мы получаем коэффициенты
матрицы, соответствующие низким частотам, а в конце — высоким
Сжатие изображений
Шаг 6.
Свертываем вектор с помощью алгоритма группового кодирования. При этом
получаем пары типа (пропустить, число), где “пропустить” является
счетчиком пропускаемых нулей, а “число” — значение, которое
необходимо поставить в следующую ячейку. Так, вектор 42 3 0 0 0 -2 0 0 0
0 1 ... будет свернут в пары (0,42) (0,3) (3,-2) (4,1) ...
Шаг 7.
Свертываем получившиеся пары кодированием по Хаффману с
фиксированной таблицей.
Процесс восстановления изображения в этом алгоритме полностью
симметричен. Метод позволяет сжимать некоторые изображения в 10-15
раз без серьезных потерь.
Сжатие изображений
Существенными положительными сторонами алгоритма является то,
что:
1. Задается степень сжатия.
2. Выходное цветное изображение может иметь 24 бита на точку.
Отрицательными сторонами алгоритма является то, что:
1. При повышении степени сжатия изображение распадается на
отдельные квадраты (8x8). Это связано с тем, что происходят большие
потери в низких частотах при квантовании, и восстановить исходные
данные становится невозможно.
2. Проявляется эффект Гиббса — ореолы по границам резких переходов
цветов.
Рекурсивный (волновой) алгоритм или вейвлет - сжатие
Английское название рекурсивного сжатия — wavelet. На русский язык оно
переводится как волновое сжатие, и как сжатие с использованием
всплесков. Этот вид архивации известен довольно давно и напрямую
исходит из идеи использования когерентности областей. Ориентирован
алгоритм на цветные и черно-белые изображения с плавными
переходами. Идеален для картинок типа рентгеновских снимков.
Сжатие изображений
Коэффициент сжатия задается и варьируется в пределах 5-100. При попытке
задать больший коэффициент на резких границах, особенно проходящих
по диагонали, проявляется “лестничный эффект” — ступеньки разной
яркости размером в несколько пикселей.
Идея алгоритма заключается в том, что мы в вычислении разницы между
средними значениями соседних блоков в изображении, которая обычно
принимает значения, близкие к 0.
Так два числа a2i и a2i+1 всегда можно представить в виде
b1
i=(a2i+a2i+1)/2 и b2
i=(a2i-a2i+1)/2.
Аналогично последовательность ai может быть попарно переведена в
последовательность b1,2
i.
Разберем конкретный пример: пусть мы сжимаем строку из 8 значений
яркости пикселов (ai): (220, 211, 212, 218, 217, 214, 210, 202). Мы получим
следующие последовательности b1
i, и b2
i: (215.5, 215, 215.5, 206) и (4.5, -3,
1.5, 4). Заметим, что значения b2
i достаточно близки к 0.
Сжатие изображений
Повторим операцию, рассматривая b1
i как ai. Данное действие выполняется
как бы рекурсивно, откуда и название алгоритма. Мы получим из
(215.5, 215, 215.5, 206): (215.25, 210.75) (0.25, 4.75).
Полученные коэффициенты, округлим до целых и сожмем, например, с
помощью алгоритма Хаффмана с фиксированными таблицами,
Это сжатое представление коэффициентов и помещается в файл.
Заметим, что мы применяли наше преобразование к цепочке только два раза.
Реально мы можем позволить себе применение wavelet- преобразования
4-6 раз. Более того, дополнительное сжатие можно получить, используя
таблицы алгоритма Хаффмана с неравномерным шагом (т.е. нам придется
сохранять код Хаффмана для ближайшего в таблице значения). Эти
приемы позволяют достичь заметных коэффициентов сжатия.
Алгоритм для двумерных данных реализуется аналогично. Если у нас есть
квадрат из 4 точек с яркостями
a2i,2j, a2i+1,2j a2i, 2j+1, a2i+1,2i+1,
Сжатие изображений
Тогда их можно представить с помощью четырех комбинаций
Используя эти формулы, мы для изображения 512х512 пикселов получим
после первого преобразования 4 матрицы размером 256х256 элементов.
B1 B2 B3 B4.
В первой, будет храниться уменьшенная копия изображения. Во второй —
усредненные разности пар значений пикселов по горизонтали. В третьей
— усредненные разности пар значений пикселов по вертикали. В
четвертой — усредненные разности значений пикселов по диагонали.
По аналогии с двумерным случаем мы можем повторить наше
преобразование и получить вместо первой матрицы 4 матрицы размером
128х128. Повторив наше преобразование в третий раз, мы получим в
итоге: 4 матрицы 64х64, 3 матрицы 128х128 и 3 матрицы 256х256.
Сжатие изображений
B1 B2
B3 B4
Сжатие изображений
К достоинствам этого алгоритма можно отнести то, что он очень легко
позволяет реализовать возможность постепенного “прояв–ления”
изображения при передаче изображения по сети. Кроме того, поскольку в
начале изображения мы фактически храним его уменьшенную копию,
упрощается показ “огрубленного” изображения по заголовку.
В отличие от JPEG и данный метод не оперирует блоками, например, 8х8
пикселей. Точнее, мы оперируем блоками 2х2, 4х4, 8х8 и т.д. Однако за
счет того, что коэффициенты для этих блоков мы сохраняем независимо,
мы можем достаточно легко избежать дробления изображения на
“мозаичные” квадраты.
Данный алгоритм представляет собой вейвлет – разложение изображения
С использованием в качестве базового - вейвлет Хаара. Однако можно
использовать и другие базовые вейвлеты.

More Related Content

Similar to 29. Сжатие изображений.ppt

Denis Perevalov -- Computer Vision with OpenCV 2
Denis Perevalov -- Computer Vision with OpenCV 2Denis Perevalov -- Computer Vision with OpenCV 2
Denis Perevalov -- Computer Vision with OpenCV 2
Uralcsclub
 
Презентация ученика
Презентация ученикаПрезентация ученика
Презентация ученикаAlenaSamsonova
 
Презентация ученика.
Презентация ученика.Презентация ученика.
Презентация ученика.AlenaSamsonova
 
радуга за стеклом
радуга за стекломрадуга за стеклом
радуга за стекломAnatoliyR
 
радуга за стеклом
радуга за стекломрадуга за стеклом
радуга за стекломAnatoliyR
 
КОЛИЧЕСТВЕННАЯ ОЦЕНКА КАЧЕСТВА ИЗОБРАЖЕНИЙ С ИСПОЛЬЗОВАНИЕМ МЕТОДОВ НЕЧЕТКОЙ ...
КОЛИЧЕСТВЕННАЯ ОЦЕНКА КАЧЕСТВА ИЗОБРАЖЕНИЙ С ИСПОЛЬЗОВАНИЕМ МЕТОДОВ НЕЧЕТКОЙ ...КОЛИЧЕСТВЕННАЯ ОЦЕНКА КАЧЕСТВА ИЗОБРАЖЕНИЙ С ИСПОЛЬЗОВАНИЕМ МЕТОДОВ НЕЧЕТКОЙ ...
КОЛИЧЕСТВЕННАЯ ОЦЕНКА КАЧЕСТВА ИЗОБРАЖЕНИЙ С ИСПОЛЬЗОВАНИЕМ МЕТОДОВ НЕЧЕТКОЙ ...
ITMO University
 
13 встреча — Сжатие данных (Р. Одинцов)
13 встреча — Сжатие данных (Р. Одинцов)13 встреча — Сжатие данных (Р. Одинцов)
13 встреча — Сжатие данных (Р. Одинцов)
Smolensk Computer Science Club
 
Современные методы Optical Flow c GPU реализацией
Современные методы Optical Flow c GPU реализациейСовременные методы Optical Flow c GPU реализацией
Современные методы Optical Flow c GPU реализациейMSU GML VideoGroup
 
“ComputerVision(Ruby && OpenCV)”, Людмила Дежкина ( Senior Ruby, DataArt)
 “ComputerVision(Ruby && OpenCV)”, Людмила Дежкина ( Senior Ruby, DataArt) “ComputerVision(Ruby && OpenCV)”, Людмила Дежкина ( Senior Ruby, DataArt)
“ComputerVision(Ruby && OpenCV)”, Людмила Дежкина ( Senior Ruby, DataArt)
Alina Vilk
 
2016-12-03 01 Вадим Литвинов. От 2D к 3D обзор методов реконструкции поверхно...
2016-12-03 01 Вадим Литвинов. От 2D к 3D обзор методов реконструкции поверхно...2016-12-03 01 Вадим Литвинов. От 2D к 3D обзор методов реконструкции поверхно...
2016-12-03 01 Вадим Литвинов. От 2D к 3D обзор методов реконструкции поверхно...
Омские ИТ-субботники
 
Grafika 9
Grafika 9Grafika 9
Векторная и растровая графика
Векторная и растровая графикаВекторная и растровая графика
Векторная и растровая графика
Katerina Gavrilo
 
Расчетная работа Цифровой коллаж
Расчетная работа Цифровой коллажРасчетная работа Цифровой коллаж
Расчетная работа Цифровой коллажsheplyakov
 
Grafika 9klass
Grafika 9klassGrafika 9klass
Современные проблемы в области фильтрации цифровых изображений
Современные проблемы в области фильтрации цифровых изображенийСовременные проблемы в области фильтрации цифровых изображений
Современные проблемы в области фильтрации цифровых изображенийVladimir Pavlov
 
расчетная работа(исправлен)
расчетная работа(исправлен)расчетная работа(исправлен)
расчетная работа(исправлен)Евгений Белов
 

Similar to 29. Сжатие изображений.ppt (20)

Vvelkdkg
VvelkdkgVvelkdkg
Vvelkdkg
 
Denis Perevalov -- Computer Vision with OpenCV 2
Denis Perevalov -- Computer Vision with OpenCV 2Denis Perevalov -- Computer Vision with OpenCV 2
Denis Perevalov -- Computer Vision with OpenCV 2
 
Презентация ученика
Презентация ученикаПрезентация ученика
Презентация ученика
 
Презентация ученика.
Презентация ученика.Презентация ученика.
Презентация ученика.
 
радуга за стеклом
радуга за стекломрадуга за стеклом
радуга за стеклом
 
радуга за стеклом
радуга за стекломрадуга за стеклом
радуга за стеклом
 
лекция 7
лекция 7лекция 7
лекция 7
 
КОЛИЧЕСТВЕННАЯ ОЦЕНКА КАЧЕСТВА ИЗОБРАЖЕНИЙ С ИСПОЛЬЗОВАНИЕМ МЕТОДОВ НЕЧЕТКОЙ ...
КОЛИЧЕСТВЕННАЯ ОЦЕНКА КАЧЕСТВА ИЗОБРАЖЕНИЙ С ИСПОЛЬЗОВАНИЕМ МЕТОДОВ НЕЧЕТКОЙ ...КОЛИЧЕСТВЕННАЯ ОЦЕНКА КАЧЕСТВА ИЗОБРАЖЕНИЙ С ИСПОЛЬЗОВАНИЕМ МЕТОДОВ НЕЧЕТКОЙ ...
КОЛИЧЕСТВЕННАЯ ОЦЕНКА КАЧЕСТВА ИЗОБРАЖЕНИЙ С ИСПОЛЬЗОВАНИЕМ МЕТОДОВ НЕЧЕТКОЙ ...
 
13 встреча — Сжатие данных (Р. Одинцов)
13 встреча — Сжатие данных (Р. Одинцов)13 встреча — Сжатие данных (Р. Одинцов)
13 встреча — Сжатие данных (Р. Одинцов)
 
Современные методы Optical Flow c GPU реализацией
Современные методы Optical Flow c GPU реализациейСовременные методы Optical Flow c GPU реализацией
Современные методы Optical Flow c GPU реализацией
 
“ComputerVision(Ruby && OpenCV)”, Людмила Дежкина ( Senior Ruby, DataArt)
 “ComputerVision(Ruby && OpenCV)”, Людмила Дежкина ( Senior Ruby, DataArt) “ComputerVision(Ruby && OpenCV)”, Людмила Дежкина ( Senior Ruby, DataArt)
“ComputerVision(Ruby && OpenCV)”, Людмила Дежкина ( Senior Ruby, DataArt)
 
2016-12-03 01 Вадим Литвинов. От 2D к 3D обзор методов реконструкции поверхно...
2016-12-03 01 Вадим Литвинов. От 2D к 3D обзор методов реконструкции поверхно...2016-12-03 01 Вадим Литвинов. От 2D к 3D обзор методов реконструкции поверхно...
2016-12-03 01 Вадим Литвинов. От 2D к 3D обзор методов реконструкции поверхно...
 
Grafika 9
Grafika 9Grafika 9
Grafika 9
 
Векторная и растровая графика
Векторная и растровая графикаВекторная и растровая графика
Векторная и растровая графика
 
Расчетная работа Цифровой коллаж
Расчетная работа Цифровой коллажРасчетная работа Цифровой коллаж
Расчетная работа Цифровой коллаж
 
лекция 11
лекция 11лекция 11
лекция 11
 
лекция 11
лекция 11лекция 11
лекция 11
 
Grafika 9klass
Grafika 9klassGrafika 9klass
Grafika 9klass
 
Современные проблемы в области фильтрации цифровых изображений
Современные проблемы в области фильтрации цифровых изображенийСовременные проблемы в области фильтрации цифровых изображений
Современные проблемы в области фильтрации цифровых изображений
 
расчетная работа(исправлен)
расчетная работа(исправлен)расчетная работа(исправлен)
расчетная работа(исправлен)
 

More from MisterTom1

صيانة الاجهزه الطبية.pdf
صيانة الاجهزه الطبية.pdfصيانة الاجهزه الطبية.pdf
صيانة الاجهزه الطبية.pdf
MisterTom1
 
21-22. Преобразование изображений.ppt
21-22. Преобразование изображений.ppt21-22. Преобразование изображений.ppt
21-22. Преобразование изображений.ppt
MisterTom1
 
23-24. Обработка изображений.ppt
23-24. Обработка изображений.ppt23-24. Обработка изображений.ppt
23-24. Обработка изображений.ppt
MisterTom1
 
23-24. Обработка изображений.ppt
23-24. Обработка изображений.ppt23-24. Обработка изображений.ppt
23-24. Обработка изображений.ppt
MisterTom1
 
109130.ppt
109130.ppt109130.ppt
109130.ppt
MisterTom1
 
Основы термодинамики живых организмов.pptx
Основы термодинамики живых организмов.pptxОсновы термодинамики живых организмов.pptx
Основы термодинамики живых организмов.pptx
MisterTom1
 
основы термодинамики.pptx
основы термодинамики.pptxосновы термодинамики.pptx
основы термодинамики.pptx
MisterTom1
 
probabilities1.ppt
probabilities1.pptprobabilities1.ppt
probabilities1.ppt
MisterTom1
 
19. Цветовые пространства.ppt
19. Цветовые пространства.ppt19. Цветовые пространства.ppt
19. Цветовые пространства.ppt
MisterTom1
 

More from MisterTom1 (9)

صيانة الاجهزه الطبية.pdf
صيانة الاجهزه الطبية.pdfصيانة الاجهزه الطبية.pdf
صيانة الاجهزه الطبية.pdf
 
21-22. Преобразование изображений.ppt
21-22. Преобразование изображений.ppt21-22. Преобразование изображений.ppt
21-22. Преобразование изображений.ppt
 
23-24. Обработка изображений.ppt
23-24. Обработка изображений.ppt23-24. Обработка изображений.ppt
23-24. Обработка изображений.ppt
 
23-24. Обработка изображений.ppt
23-24. Обработка изображений.ppt23-24. Обработка изображений.ppt
23-24. Обработка изображений.ppt
 
109130.ppt
109130.ppt109130.ppt
109130.ppt
 
Основы термодинамики живых организмов.pptx
Основы термодинамики живых организмов.pptxОсновы термодинамики живых организмов.pptx
Основы термодинамики живых организмов.pptx
 
основы термодинамики.pptx
основы термодинамики.pptxосновы термодинамики.pptx
основы термодинамики.pptx
 
probabilities1.ppt
probabilities1.pptprobabilities1.ppt
probabilities1.ppt
 
19. Цветовые пространства.ppt
19. Цветовые пространства.ppt19. Цветовые пространства.ppt
19. Цветовые пространства.ppt
 

29. Сжатие изображений.ppt

  • 1. Сжатие изображений Первыми для архивации изображений стали применяться привычные алгоритмы. Эти алгоритмы архивировали информацию без изменений. Старые алгоритмы перестали удовлетворять требованиям, предъявляемым к архивации. Многие изображения практически не сжимались, хотя “на взгляд” обладали явной избыточностью. Это привело к созданию нового типа алгоритмов — сжимающих с потерей информации. Как правило, коэффициент архивации и, следовательно, степень потерь качества в них можно задавать. При этом достигается компромисс между размером и качеством изображений. Одна из серьезных проблем заключается в том, что до сих пор не найден адекватный критерий оценки потерь качества изображения. А теряется оно постоянно — при оцифровке, при переводе в ограниченную палитру цветов, при переводе в другую систему цветопредставления для печати, и, что для нас особенно важно, при архивации с потерями. Можно привести пример простого критерия: среднеквадратичное отклонение значений пикселов (L2 мера, или root mean square — RMS):
  • 2. Сжатие изображений По нему изображение будет сильно испорчено при понижении яркости всего на 5% (глаз этого не заметит — у разных мониторов настройка яркости варьируется гораздо сильнее). В то же время изображения со “снегом” — резким изменением цвета отдельных точек, слабыми полосами или “муаром” будут признаны “почти не изменившимися”. Свои неприятные стороны есть и у других критериев Рассмотрим, например, максимальное отклонение: Эта мера, как можно догадаться, крайне чувствительна к биению отдельных пикселов. Т.е. во всем изображении может существенно измениться только значение одного пиксела (что практически незаметно для глаза), однако согласно этой мере изображение будет сильно испорчено.
  • 3. Сжатие изображений Мера, которую сейчас используют на практике, называется мерой отношения сигнала к шуму (peak-to-peak signal-to-noise ratio — PSNR). Данная мера, по сути, аналогична среднеквадратичному отклонению, однако пользоваться ей несколько удобнее за счет логарифмического масштаба шкалы. Ей присущи те же недостатки, что и среднеквадратичному отклонению. Лучше всего потери качества изображений оценивают наши глаза. Отличной считается архивация, при которой невозможно на глаз различить первоначальное и разархивированное изображения. Хорошей — когда сказать, какое из изображений подвергалось архивации, можно только сравнивая две находящихся рядом картинки. При дальнейшем увеличении степени сжатия, как правило, становятся заметны побочные эффекты, характерные для данного алгоритма. На практике, даже при отличном сохранении качества, в изображение могут быть внесены регулярные специфические изменения. Поэтому такие сжатые изображения лучше не использовать для распознавания образов.
  • 4. Дискретное косинусное преобразование. Однако принципы используемые для сжатия изображений, можно использовать в распознающих программах, поскольку при сжатии из изображений извлекается существенная информация, присущая конкретным изображениям. Дискретное косинусное преобразование ДКП (DCT) раскладывает изображение по амплитудам некоторых частот. Таким образом, при преобразовании мы получаем матрицу, в которой многие коэффициенты либо близки, либо равны нулю. 1 1 0 0 (2 1) (2 1) cos cos , 2 2 0 1, 0 1, 1/ , 0; 1/ , 0; . 2/ ,1 1 2/ ,1 1 M N pq p q mn m n p p m p n p B I M N p M q N M p N q M p M N p M                                        
  • 5. Дискретное косинусное преобразование. Существует обратное косинусное преобразование (IDCT) С точность до ошибок вычисления эти преобразования обратимы Следует отметить, что в результате этих преобразований получаются матрицы одинаковой размерности. Идея сжатия изображения – описывать изображение с помощью коэффициентов преобразования, отбрасывая часть из них. 1 1 0 0 (2 1) (2 1) cos cos , 2 2 0 1, 0 1, 1/ , 0; 1/ , 0; . 2/ ,1 1 2/ ,1 1 M N mn p q pq m n p p m p n p I B M N m M n N M p N q M p M N p M                                         I ( ( ) mn mn IDCT DCT I 
  • 6. Сжатие изображений -10 -5 0 5 10 Исходное Восстановленное с В > 10 Матрица DCT (B) Восстановленное с В > 100
  • 7. Сжатие изображений Кроме отбрасывания коэффициентов с небольшими значениями, благодаря несовершенству человеческого зрения, можно аппроксимировать сами коэффициенты достаточно грубо без заметной потери качества изображения. Для этого используется квантование коэффициентов (quantization). В самом простом случае — это арифметический побитовый сдвиг вправо. При этом преобразовании теряется часть информации, но могут достигаться большие коэффициенты сжатия. На дискретном косинусном преобразовании построен алгоритм JPEG. Как работает алгоритм Итак, рассмотрим алгоритм подробнее. Пусть мы сжимаем 24-битное изображение. Шаг 1. Переводим изображение из цветового пространства RGB, с компонентами, отвечающими за красную (Red), зеленую (Green) и синюю (Blue) составляющие цвета точки, в цветовое пространство YCrCb (иногда называют YUV).
  • 8. Сжатие изображений В нем Y — яркостная составляющая, а Cr, Cb — компоненты, отвечающие за цвет (хроматический красный и хроматический синий). За счет того, что человеческий глаз менее чувствителен к цвету, чем к яркости, появляется возможность архивировать массивы для Cr и Cb компонент с большими потерями и, соответственно, большими коэффициентами сжатия. Подобное преобразование уже давно используется в телевидении Обратное преобразование осуществляется умножением вектора YUV на обратную матрицу
  • 9. Сжатие изображений Шаг 2. Разбиваем исходное изображение на матрицы 8х8. Формируем из каждой три рабочие матрицы ДКП — по 8 бит отдельно для каждой компоненты. При больших коэффициентах сжатия этот шаг может выполняться чуть сложнее. Изображение делится по компоненте Y — как и в первом случае, а для компонент Cr и Cb матрицы набираются через строчку и через столбец. Т.е. из исходной матрицы размером 16x16 получается только одна рабочая матрица ДКП. При этом, как нетрудно заметить, мы теряем 3/4 полезной информации о цветовых составляющих изображения и получаем сразу сжатие в два раза. Мы можем поступать так благодаря работе в пространстве YCrCb. На результирующем RGB изображении, как показала практика, это сказывается несильно. Шаг 3. Применяем ДКП к каждой рабочей матрице. При этом мы получаем матрицу, в которой коэффициенты в левом верхнем углу соответствуют низкочастотной составляющей изображения, а в правом нижнем — высокочастотной.
  • 10. Сжатие изображений Шаг 4. Производим квантование. В принципе, это просто деление рабочей матрицы на матрицу квантования поэлементно. Для каждой компоненты (Y, U и V), в общем случае, задается своя матрица квантования qm[p,q] (МК) На этом шаге осуществляется управление степенью сжатия, и происходят самые большие потери. Понятно, что, задавая МК с большими коэффициентами, мы получим больше нулей и, следовательно, большую степень сжатия. В стандарт JPEG включены рекомендованные МК, построенные опытным путем. Матрицы для большего или меньшего коэффициентов сжатия получают путем умножения исходной матрицы на некоторое число gamma. С квантованием связаны и специфические эффекты алгоритма. При больших значениях коэффициента gamma потери в низких частотах могут быть настолько велики, что изображение распадется на квадраты 8х8. Потери в высоких частотах могут проявиться в так называемом “эффекте Гиббса”, когда вокруг контуров с резким переходом цвета образуется своеобразный “нимб”. ( , ) ( ( , )/ ( , )) qm Y p q round Y p q qm p q 
  • 11. Сжатие изображений Шаг 5. Переводим матрицу 8x8 в 64-элементный вектор при помощи “зигзаг”- сканирования, т.е. берем элементы с индексами (0,0), (0,1), (1,0), (2,0)... Таким образом, в начале вектора мы получаем коэффициенты матрицы, соответствующие низким частотам, а в конце — высоким
  • 12. Сжатие изображений Шаг 6. Свертываем вектор с помощью алгоритма группового кодирования. При этом получаем пары типа (пропустить, число), где “пропустить” является счетчиком пропускаемых нулей, а “число” — значение, которое необходимо поставить в следующую ячейку. Так, вектор 42 3 0 0 0 -2 0 0 0 0 1 ... будет свернут в пары (0,42) (0,3) (3,-2) (4,1) ... Шаг 7. Свертываем получившиеся пары кодированием по Хаффману с фиксированной таблицей. Процесс восстановления изображения в этом алгоритме полностью симметричен. Метод позволяет сжимать некоторые изображения в 10-15 раз без серьезных потерь.
  • 13. Сжатие изображений Существенными положительными сторонами алгоритма является то, что: 1. Задается степень сжатия. 2. Выходное цветное изображение может иметь 24 бита на точку. Отрицательными сторонами алгоритма является то, что: 1. При повышении степени сжатия изображение распадается на отдельные квадраты (8x8). Это связано с тем, что происходят большие потери в низких частотах при квантовании, и восстановить исходные данные становится невозможно. 2. Проявляется эффект Гиббса — ореолы по границам резких переходов цветов. Рекурсивный (волновой) алгоритм или вейвлет - сжатие Английское название рекурсивного сжатия — wavelet. На русский язык оно переводится как волновое сжатие, и как сжатие с использованием всплесков. Этот вид архивации известен довольно давно и напрямую исходит из идеи использования когерентности областей. Ориентирован алгоритм на цветные и черно-белые изображения с плавными переходами. Идеален для картинок типа рентгеновских снимков.
  • 14. Сжатие изображений Коэффициент сжатия задается и варьируется в пределах 5-100. При попытке задать больший коэффициент на резких границах, особенно проходящих по диагонали, проявляется “лестничный эффект” — ступеньки разной яркости размером в несколько пикселей. Идея алгоритма заключается в том, что мы в вычислении разницы между средними значениями соседних блоков в изображении, которая обычно принимает значения, близкие к 0. Так два числа a2i и a2i+1 всегда можно представить в виде b1 i=(a2i+a2i+1)/2 и b2 i=(a2i-a2i+1)/2. Аналогично последовательность ai может быть попарно переведена в последовательность b1,2 i. Разберем конкретный пример: пусть мы сжимаем строку из 8 значений яркости пикселов (ai): (220, 211, 212, 218, 217, 214, 210, 202). Мы получим следующие последовательности b1 i, и b2 i: (215.5, 215, 215.5, 206) и (4.5, -3, 1.5, 4). Заметим, что значения b2 i достаточно близки к 0.
  • 15. Сжатие изображений Повторим операцию, рассматривая b1 i как ai. Данное действие выполняется как бы рекурсивно, откуда и название алгоритма. Мы получим из (215.5, 215, 215.5, 206): (215.25, 210.75) (0.25, 4.75). Полученные коэффициенты, округлим до целых и сожмем, например, с помощью алгоритма Хаффмана с фиксированными таблицами, Это сжатое представление коэффициентов и помещается в файл. Заметим, что мы применяли наше преобразование к цепочке только два раза. Реально мы можем позволить себе применение wavelet- преобразования 4-6 раз. Более того, дополнительное сжатие можно получить, используя таблицы алгоритма Хаффмана с неравномерным шагом (т.е. нам придется сохранять код Хаффмана для ближайшего в таблице значения). Эти приемы позволяют достичь заметных коэффициентов сжатия. Алгоритм для двумерных данных реализуется аналогично. Если у нас есть квадрат из 4 точек с яркостями a2i,2j, a2i+1,2j a2i, 2j+1, a2i+1,2i+1,
  • 16. Сжатие изображений Тогда их можно представить с помощью четырех комбинаций Используя эти формулы, мы для изображения 512х512 пикселов получим после первого преобразования 4 матрицы размером 256х256 элементов. B1 B2 B3 B4. В первой, будет храниться уменьшенная копия изображения. Во второй — усредненные разности пар значений пикселов по горизонтали. В третьей — усредненные разности пар значений пикселов по вертикали. В четвертой — усредненные разности значений пикселов по диагонали. По аналогии с двумерным случаем мы можем повторить наше преобразование и получить вместо первой матрицы 4 матрицы размером 128х128. Повторив наше преобразование в третий раз, мы получим в итоге: 4 матрицы 64х64, 3 матрицы 128х128 и 3 матрицы 256х256.
  • 18. Сжатие изображений К достоинствам этого алгоритма можно отнести то, что он очень легко позволяет реализовать возможность постепенного “прояв–ления” изображения при передаче изображения по сети. Кроме того, поскольку в начале изображения мы фактически храним его уменьшенную копию, упрощается показ “огрубленного” изображения по заголовку. В отличие от JPEG и данный метод не оперирует блоками, например, 8х8 пикселей. Точнее, мы оперируем блоками 2х2, 4х4, 8х8 и т.д. Однако за счет того, что коэффициенты для этих блоков мы сохраняем независимо, мы можем достаточно легко избежать дробления изображения на “мозаичные” квадраты. Данный алгоритм представляет собой вейвлет – разложение изображения С использованием в качестве базового - вейвлет Хаара. Однако можно использовать и другие базовые вейвлеты.