Garbage / Информатика / 3.1.4 - Структура алгоритма JPEG
.pdfРассмотрим более подробно структуру алгоритма JPEG .
Название данного алгоритма является аббревиатурой Joint Photographic Expert Group, которой и был утвержден в 1992 г. стандарт сжатия цветных и нецветных изображений. Необходимость разработки данного стандарта была обусловлена следующими причинами.
-Значение коэффициента сжатия изображений с использованием алгоритмов без потерь (методом Хаффмана, например) крайне невелико, в особенности, когда гистограмма распределения значений точек изображений стремится к равномерной.
Алгоритм JPEG использует спектральные преобразования для кодирования, поскольку:
-Значительная часть изображений изменяется относительно медленно вдоль всей площади, т.е. редко встречается случай, когда значение интенсивности уменьшается или увеличивается несколько раз подряд в пределах небольшой области, скажем, размером 8 x 8 точек.
-Психофизические эксперименты подтверждают тот факт, что человеческое зрение менее чувствительно к утрате высокочастотных компонент в спектре нежели низкочастотных.
Структура алгоритма JPEG.
Кодирование осуществляется по схеме приведенной на рис. 3. Декодирование выполняется в обратной последовательности.
YIQ или YUV f (i, j) |
F (u, v) |
F/q(u, v) |
|
ДКП |
Квантование |
8 x 8 |
|
Таблицы |
|
|
|
Заголовок |
Таблицы |
квантования |
Таблицы |
кодирования |
|
Данные |
|
ПС |
ДИКМ |
|
|
|
|
|
Кодирование |
|
|
по Хаффману |
Зигзаг |
|
|
КДС |
|
|
ГС |
|
|
|
|
Рис. 3. Структура алгоритма кодирования JPEG. |
Как видно из рис. 3, кодирование состоит из следующих шагов:
1.ДКП (Дискретное косинусное преобразование)
2.Квантование
3.Сканирование методом "Зигзага"
4.ДИКМ кодирование постоянных составляющих
5.КДС кодирование гармонических составляющих
6.Энтропийное кодирование по методу Хаффмана.
A. Дискретное косинусное преобразование
Необходимо для перехода от пространственного к спектральному представлению.
f (i,j) |
|
|
|
|
|
|
|
|
ДКП |
|
|
|
|
|
|
|
|
F (u, v) |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Выполняется по следующим формулам.
Прямое преобразование:
F |
(u,v) = |
Λ(u)Λ(v) |
7 7 |
(2 i +1) u π |
cos |
(2 j +1) v π |
f (i, j) |
|||||||||||
4 |
|
∑∑cos |
|
|
16 |
|
|
|
|
16 |
|
|
|
|||||
|
|
|
i=0 j=0 |
|
|
|
|
|
|
|
|
|
|
|
||||
|
|
|
|
|
|
1 |
дляξ =0 |
|
|
|
|
|
|
|
|
|
||
|
|
|
|
Λ(ξ) = |
|
2 |
|
|
|
|
|
|
|
|
|
|||
|
|
|
|
|
|
|
1 |
иначе |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||
|
|
|
|
Обратное преобразование: |
|
|
|
|
|
|
|
|
|
|||||
~ |
(i, j) = |
7 7 |
|
|
|
i +1) u π |
cos (2 |
|
j |
+ |
1) |
|
v |
π |
F (u,v) |
|||
f |
∑∑Λ(u)Λ(v) cos (2 |
|
|
|
|
|||||||||||||
|
u=0v=0 |
4 |
|
|
16 |
|
|
|
|
|
16 |
|
|
|
|
F[0,0] называется постоянной составляющей спектра.
Для спектрального разложения используется базис из 64 (8 x 8) функций:
B. Квантование.
Полученная матрица спектральных коэффициентов F[u, v] поэлементно делится на матрицу квантования q[u, v] с последующим округлением:
F'[u, v] = округление ( F[u, v] / q[u, v] ).
В результате, если исходное значение, например F[u, v] = 62 ( = 1111012) имело размер 6 дв. разрядов, то после деления на q[u, v] = 5 с последующим округлением останется всего (1210
= 11002) 4 разряда.
Очевидно, что возникающая в этом случае ошибка квантования, объясняет почему данный алгоритм относится к классу методов сжатия с потерями.
Существует два варианта квантования:
a)все элементы матрицы F[u, v] делятся на одно и тоже значение N (равномерное квантование).
b)используется таблица квантования
Ниже приводятся примеры двух матриц квантования для яркостной составляющей (Y) и для цветоразностных составляющих (I, Q или U, V).
|
Табл. квант-ия яркост. составл. q(u, v) |
|
Табл. квант-ия. цветоразн. составл. q(u, v) |
||||||||||||
16----------------------------------- |
11 |
10 |
16 |
24 |
40 |
51 |
61 |
------------------------------ |
|||||||
17 |
18 |
24 |
47 |
99 |
99 |
99 |
99 |
||||||||
12 |
12 |
14 |
19 |
26 |
58 |
60 |
55 |
18 |
21 |
26 |
66 |
99 |
99 |
99 |
99 |
14 |
13 |
16 |
24 |
40 |
57 |
69 |
56 |
24 |
26 |
56 |
99 |
99 |
99 |
99 |
99 |
14 |
17 |
22 |
29 |
51 |
87 |
80 |
62 |
47 |
66 |
99 |
99 |
99 |
99 |
99 |
99 |
18 |
22 |
37 |
56 |
68 |
109 |
103 |
77 |
99 |
99 |
99 |
99 |
99 |
99 |
99 |
99 |
24 |
35 |
55 |
64 |
81 |
104 |
113 |
92 |
99 |
99 |
99 |
99 |
99 |
99 |
99 |
99 |
49 |
64 |
78 |
87 |
103 |
121 |
120 |
101 |
99 |
99 |
99 |
99 |
99 |
99 |
99 |
99 |
72 |
92 |
95 |
98 |
112 |
100 |
103 |
99 |
99 |
99 |
99 |
99 |
99 |
99 |
99 |
99 |
----------------------------------- |
|
|
|
|
|
|
|
------------------------------ |
Очевидно, что значения низкочастотных составляющих в спектре (левый верхний угол) будут уменьшены после квантования в меньшей степени, чем высокочастотные (в нижнем правом углу).
C. Сканирование методом "Зигзага".
В результате формируется вектор (1 x 64), в начальной части которого размещены все низкочастотные компоненты спектра:
D. ДИКМ кодирование постоянных составляющих.
Поскольку абсолютное значение постоянных составляющих в каждом блоке 8 x 8 велико, но незначительно изменяется от блока к блоку, имеет смысл использовать кодирование разности между их значениями в смежных блоках.
E. КДС (кодирование длин серий) кодирование гармонических компонент спектра.
Поскольку полученный вектор (1 x 64) содержит длинные последовательности нулей, то может быть успешно использован алгоритм кодирования длин серий. А именно, вместо кодирования всей длинной серии из нулевых значений, кодируется только значение, указывающее длину этой серии.
|
F. Энтропийное кодирование. |
Представленные таким |
образом спектральные компоненты кодируются методом |
Хаффмана. |
|