Серия "Интерактивные учебные пособия"

Кодирование изображений с потерями. Стандарт JPEG

Описание

Электронное учебное пособие в формате EPUB-3. Версия от 30.05.2017 г. Разработчик - Курочкин А.Е., доцент кафедры ИРТ БГУИР. Пособие предназначено для студентов факультета радиотехники и электроники, изучающих классические радиоприёмные устройства.

Для корректного отображения формул в MathML и элементов HTML5 рекомендуется персональный компьютер с ОС Windows и программным ридером AZARDI.

Кодирование изображений с потерями. Стандарт JPEG

Алгоритм JPEG (Joint Photographic Experts Group) используется для цветных неподвижных изображений. Предложен в 1990 году. JPEG стандарт реализует следующий алгоритм (рис. 1).

Рис. 1

Исходное изображение для яркостной и цветоразностных составляющих делится на пиксельные блоки размером 8 на 8. Эти блоки обрабатываются независимо. Примеры исходных блоков изображения представлены на рис. 2.

Рис. 2

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

B pq = a p a q ∑ m=0 M−1 ∑ n=0 N−1 A mn cos⁡ π(2m+1)p 2M ⋅cos⁡ π(2n+1)q 2N ;

где

a p ={ 1 M ,p=0 2 M , 1≤p≤M−1

a q ={ 1 N ,q=0 2 N , 1≤q≤N−1

0≤p≤M−1 ; 0≤q≤N−1 .

При квадратном блоке M=N=8. Аmn - амплитуда сигнала.

Функции, описываемые выражением

b(x ,y)=cos π(2x +1)u 16 ⋅cos π(2 y+ 1)v 16 ,

где x и y – индексы пространственной области, а u и v – частотной области, называют базисными функциями. На рис. 3 представлены 6 из 64 базисных функций.

Рис. 3

Формула обратного дискретного косинусного преобразования имеет вид:

A mn = ∑ p=0 M−1 ∑ q=0 N−1 a p a q B pq cos⁡ π(2m+1)p 2M ⋅cos⁡ π(2n+1)q 2N ,

где 0≤m≤M−1 ; 0≤n≤N−1 .

ДКП в частотной области создаёт набор из 64 различных по амплитуде и частоте составляющих в виде плоскостей.

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

Таблица 1 - Прямое дискретное косинусное преобразование

Исходный блок

После ДКП

231

224

224

217

217

203

189

196

174

19

0

3

1

0

-3

1

210

217

203

189

203

224

217

224

52

-3

-3

-4

-4

-4

5

-8

196

217

210

224

203

203

196

189

-18

-4

8

3

3

2

0

9

210

203

196

203

182

203

182

189

5

12

-4

0

0

-5

-1

0

203

224

203

217

196

175

154

140

1

2

-2

-1

4

4

2

0

182

186

168

161

154

126

119

112

-1

2

1

3

0

0

1

1

175

154

126

105

140

105

119

84

-2

5

-5

-5

3

2

-1

-1

154

98

105

98

105

63

112

84

3

5

-7

0

0

0

-4

0

Таблица 2 - Матрицы квантования

Низкая компрессия

Высокая компрессия

1

1

1

1

1

2

2

4

1

2

4

8

16

32

64

128

1

1

1

1

1

2

2

4

2

4

4

8

16

32

64

128

1

1

1

1

2

2

2

4

4

4

8

16

32

64

128

128

1

1

1

1

2

2

4

8

8

8

16

32

64

128

128

256

1

1

2

2

2

2

4

8

16

16

32

64

128

128

256

256

2

2

2

2

2

4

8

8

32

32

64

128

128

256

256

256

2

2

2

4

4

8

8

16

64

64

128

128

256

256

256

256

4

4

4

4

8

8

16

16

128

128

128

256

256

256

256

256

Второй шаг на пути сжатия состоит в отказе от передачи некоторых из 64 спектральных значений. Как видно из табл. 1, почти весь сигнал содержится в низкочастотных компонентах. Это означает, что самые высокие компоненты частоты могут быть устранены при некоторой деградации сигнала в качестве.

Степень сжатия определяется таблицей квантования, пример которой для высокого и низкого значений компрессии показан в табл. 2. Каждое значение в спектре делится на соответствующее значение в таблице и результат округляется к ближайшему целому числу. Например, верхнее левое значение таблицы - единица, оставляет неизменным значение постоянной составляющей. Нижнее правое значение при низкой компрессии (16) означает, что первоначальный диапазон от -127 до 127 уменьшен до от -7 до 7. Другими словами, значение будет уменьшено с восьми бит до четырёх бит. При максимальном сжатии, нижнее правое значение (256) полностью устраняет спектральное значение.

На рис. 4 показано, что происходит с преобразованным изображением при увеличении числа спектральных составляющих с 3-х до 64. На рис. 5 представлены фрагменты с различным значением коэффициента сжатия.

Рис. 4

Сжатие 1:1

Сжатие 10:1

Сжатие 45:1

Рис. 5

На следующем шаге кодирования изменённый спектр преобразуется из массива значений в линейную последовательность с помощью так называемого метода диагонального обхода или зигзаг упорядочивания.

Рис. 6

На рис. 6 показан путь, по которому происходит считывание значений из массива. При таком способе все высокочастотные компоненты собираются вместе в конце линейной последовательности. Это позволяет группировать нули от устраняемых компонент спектра в самом конце, после чего нулевые значения кодируются с использованием алгоритма кодирования повторов (RLE), постоянная составляющая - с помощью ДИКМ, а потом результат обрабатывается с помощью «кодирования энтропии», т. е. алгоритма Хаффмана.

Демонстрация применения ДКП для сжатия изображений представлена ниже в интерактивном скрипте.

Таблица "Кодируемый блок" размером 8 на 8 ячеек по умолчанию содержит некоторые фиксированные значения яркостей пикселей блока. Таблица "Блок частотных коэффициентов" такого же размера содержит значения амплитуд частотного спектра после прямого ДКП, т. е. после нажатия кнопки "Прямое ДКП". В ячейках таблицы "Матрица квантования" размещены коэффициенты, пропорционально которым уменьшаются амплитуды составляющих частотного спектра кодируемого блока. После нажатия кнопки "Обратное ДКП" в таблицу "Блок частотных коэффициентов" заносятся значения амплитуд частотного спектра уже после обратного ДКП. Выбор объекта кодирования осуществляется переключателями "Преобразование блока 8X8" и "Преобразование картинки". Графика объектов кодирования до и после сжатия отображается на левом и правом рисунках, соответственно.

Матрица квантования формируется двумя способами: 1) автоматически при выборе положения переключателя "Авто c Q-фактором=" и записи соответствующего значения Q-фактора в текстовое поле и 2) непосредственной записи коэффициентов в ячейки таблицы "Матрица квантования" при выборе положения переключателя "Ручной ввод". Таблицы "Кодируемый блок" и "Матрица квантования" допускают редактирование значений в ячейках.

Кодируемый блок

42
28
35
28
42
49
35
42

49
49
35
28
35
35
35
42

42
21
21
28
42
35
42
28

21
35
35
42
42
28
28
14

56
70
77
84
91
28
28
21

70
126
133
147
161
91
35
14

126
203
189
182
175
175
35
21

49
189
245
210
182
84
21
35

Блок частот

279
44
-40
-4
-2
-7
-1
0

-100
-35
35
9
4
7
0
1

32
8
-7
-5
-3
-3
2
-1

7
1
-1
4
1
0
0
0

-9
-2
0
-5
1
1
0
1

3
0
0
4
-2
0
1
-2

-2
-2
-2
-2
1
1
-1
1

2
1
1
2
0
0
1
0

Матрица квантования

2
3
4
5
6
7
8
9

3
4
5
6
7
8
9
10

4
5
6
7
8
9
10
11

5
6
7
8
9
10
11
12

6
7
8
9
10
11
12
13

7
8
9
10
11
12
13
14

8
9
10
11
12
13
14
15

9
10
11
12
13
14
15
16

Преобразование блока 8X8 | Преобразование картинки
Матрица квантования:
Авто c Q-фактором= | Ручной ввод
Коэффициент сжатия=

С помощью JPEG можно кодировать и движущиеся изображения, если подвергать сжатию каждый кадр независимо от других.