Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ОТЦС_Ч1_2008.doc
Скачиваний:
13
Добавлен:
01.07.2025
Размер:
5 Мб
Скачать
☆

Процедуру дкп можно записать в матричной форме:

DCT = TC T∙IMG∙TC, (2.36)

где TC – матрица базисных (косинусных) коэффициентов для преобразования размером 8 х 8, имеющая вид

.353553 .353553 .353553 .353553 .353553 .353553 .353553 .353553

.490393 .415818 .277992 .097887 -.097106 -.277329 -.415375 -.490246

.461978 .191618 -.190882 -.461673 -.462282 -.192353 .190145 .461366

TC = .414818 -.097106 -.490246 -.278653 .276667 .490710 .099448 -.414486 (2.37)

.353694 -.353131 -.354256 .352567 .354819 -.352001 -.355378 .351435

.277992 -.490246 .096324 .416700 -.414486 -.100228 .491013 -.274673

.191618 -.462282 .461366 -.189409 -.193822 .463187 -.460440 .187195

.097887 -.278653 .416700 -.490862 .489771 -.413593 .274008 -.092414

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

Для ДКП размером 8 х 8 система базисных функций задается формулой

. (2.38)

Представить, как выглядят двумерные базисные функции ДКП с различными индексами u и ν, можно из рис. 2.32.

Самая низкочастотная базисная функция, соответствующая индексам (0,0), изображена в левом верхнем углу рисунка. Все ее значения равны единице. Это означает, что спектральная составляющая DCT(0,0) получается как сумма всех пикселей блока изображения 8 х 8 (средняя яркость блока). Самая высокочастотная базисная функция изображена в нижнем правом углу. Базисная функция для (0,1) представляет собой половину периода косинусоиды по одной координате и константу – по другой, базисная функция с индексами (1,0) – то же самое, но по другой координате.

Рис. 2.32

Дискретное косинусное преобразование вычисляется путем поэлементного перемножения и суммирования блоков изображения 8 х 8 пикселов с каждой из этих базисных функций. В результате компонента ДКП-спектра с индексами (0,0) будет представлять собой просто сумму всех элементов блока изображения, то есть среднюю для блока яркость. В компоненту с индексом (0,1) усредняются с одинаковыми весами все горизонтальные детали изображения, а по вертикали вычисляется разница яркостей верхней и нижней частей фрагмента изображения. Компонента с индексом (1,0) – это разница яркостей правой и левой частей фрагмента изображения и т.д. Чем ниже и правее в матрице DCT  его компонента, тем более высокочастотным деталям изображения она соответствует.

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

В приведенной ниже табл. 2.7 представлены числовые значения пикселов для одного из блоков изображения и его ДКП-спектра.

Таблица 2.7

Отсчеты изображения

139

144

149

153

155

155

155

155

144

151

153

156

159

156

156

156

150

155

160

163

158

156

156

156

159

161

161

160

160

159

159

159

159

160

161

162

162

155

155

155

161

161

161

161

160

157

157

157

161

162

161

163

162

157

157

157

162

162

161

161

163

158

158

15

Результат ДКП

235,6

-1

-12,1

-5,2

2,1

-1,7

-2,7

1,3

-22,6

-17,5

-6,2

-3,2

-2,9

-0,1

0,4

-1,2

-10,9

-9,3

-1,6

1,5

0,2

-0,9

-0,6

-0,1

-7,1

-1,9

0,2

1,5

0,9

-0,1

0

0,3

-0,6

-0,8

1,5

1,6

-0,1

-0,7

0,6

1,3

1,8

-0,2

1,6

-0,3

-0,8

1,5

1

-1

-1,3

-0,4

-0,3

-1,5

-0,5

1,7

1,1

-0,8

-2,6

1,6

-3,8

-1,8

1,9

1,2

-0,6

-0,4

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

Очередным этапом работы алгоритма JPEG является квантование коэффициентов ДКП, смысл которого состоит в следующем.

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

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

Таблица 2.8

Ранее полученный результат ДКП

235,6

-1

-12,1

-5,2

2,1

-1,7

-2,7

1,3

-22,6

-17,5

-6,2

-3,2

-2,9

-0,1

0,4

-1,2

-10,9

-9,3

-1,6

1,5

0,2

-0,9

-0,6

-0,1

-7,1

-1,9

0,2

1,5

0,9

-0,1

0

0,3

-0,6

-0,8

1,5

1,6

-0,1

-0,7

0,6

1,3

1,8

-0,2

1,6

-0,3

-0,8

1,5

1

-1

-1,3

-0,4

-0,3

-1,5

-0,5

1,7

1,1

-0,8

-2,6

1,6

-3,8

-1,8

1,9

1,2

-0,6

-0,4

Таблица квантования

16

11

10

16

24

40

51

61

12

12

14

19

26

58

60

55

14

13

16

24

40

57

69

56

14

17

22

29

51

87

80

62

18

22

37

56

68

109

103

77

24

35

55

64

81

104

113

92

49

64

78

87

103

121

120

101

72

92

95

98

112

100

103

99

Результат квантования

15

0

-1

0

0

0

0

0

-2

-1

0

0

0

0

0

0

-1

-1

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

Очевидно, что от выбора таблицы квантования будет в значительной степени зависеть как эффективность сжатия – число нулей в квантованном (округленном) спектре, так и качество восстановленного изображения.

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

Следующим этапом работы алгоритма JPEG является преобразование 8 х 8 матрицы ДКП-спектра в линейную последовательность. Но делается это таким образом, чтобы сгруппировать по возможности вместе все большие и все нулевые значения спектра. Совершенно очевидно, что для этого нужно прочесть элементы матрицы коэффициентов ДКП в порядке, изображенном на рис. 2.33, то есть зигзагообразно – из левого верхнего угла к правому нижнему. Эта процедура называется зигзаг-сканированием.

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

На следующем, пятом, этапе JPEG-коди-рования получившиеся цепочки нулей подвергаются кодированию длин повторений для

Рис. 2.33 исключения длинных цепочек повторяющихся

символов (в данном случае – нулей).

Последним этапом работы алгоритма JPEG является кодирование получившейся последовательности каким-либо статистическим алгоритмом. Обычно используется арифметическое кодирование или алгоритм Хаффмена. В результате получается новая последовательность, размер которой существенно меньше размера массива исходных данных.

Декодирование данных, сжатых согласно алгоритму JPEG, проводится точно так же, как и кодирование, но все операции следуют в обратном порядке.

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

Таблица 2.9

Квантованные данные

15

0

-1

0

0

0

0

0

-2

-1

0

0

0

0

0

0

-1

-1

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

Деквантованные данные

240

0

-10

0

0

0

0

0

-24

-12

0

0

0

0

0

0

-14

-13

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

Результат обратного ДКП

144

146

149

152

154

156

156

156

148

150

152

154

156

156

156

156

155

156

157

158

158

157

156

155

160

161

161

162

161

159

157

155

163

163

164

163

162

160

158

156

163

164

164

164

162

160

158

157

160

161

162

162

162

161

159

158

158

159

161

161

162

161

159

158

Отсчеты исходного изображения (для сравнения)

139

144

149

153

155

155

155

155

144

151

153

156

159

156

156

156

150

155

160

163

158

156

156

156

159

161

161

160

160

159

159

159

159

160

161

162

162

155

155

155

161

161

161

161

160

157

157

157

161

162

161

163

162

157

157

157

162

162

161

161

163

158

158

157

Видно, что восстановленные данные несколько отличаются от исходных. Это естественно, потому что JPEG и разрабатывался как сжатие с потерями.

На представленном ниже рис. 2.34 показано исходное изображение (справа), а также изображение, сжатое с использованием алгоритма JPEG в 10 раз (слева) и в 45 раз (в центре). Потеря качества в последнем случае достаточно заметна, но и выигрыш по размеру кода также очевиден.

Рис. 2.34

Итак, JPEG-сжатие состоит из следующих этапов:

  1. Разбиение изображения на блоки размером 8 х 8 пикселов.

  2. Применение к каждому из блоков дискретного косинусного преобразования.

  3. Округление коэффициентов ДКП в соответствии с заданной матрицей весовых коэффициентов.

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

  5. Кодирование повторений для сокращения количества нулевых компонент.

  6. Статистическое кодирование результата кодом Хаффмена или арифметическим кодом. Декодирование производится точно так же, но в обратном порядке.

Существенными положительными сторонами алгоритма сжатия JPEG являются:

– возможность задания в широких пределах (от 2 до 200) степени сжатия;

– возможность работы с изображениями любой разрядности;

– симметричность процедур сжатия–распаковки.

К недостаткам можно отнести наличие ореола на резких переходах цветов – эффект Гиббса, а также распадение изображения на отдельные квадратики 8 х 8 при высокой степени сжатия.