ЛАБОРАТОРНА РОБОТА №3

Лабораторна робота "JPEG зображення"

Мета роботи

Дана лабораторна робота призначена для дослідження методу стиснення зображень JPEG та отримання практичних навиків вибору оптимальних співвідношень якість/розмір файлу при створенні та збереженні зображень.

Загальна інформація про графічний формат JPEG

Для виведення графіки на екран було придумано величезну кількість форматів. Найпопулярніші з них: JPEG, TIFF, PSD, GIF і RAW. Не буде помилкою, якщо сказати, що найбільшу кількість зображень записано саме в графічний формат JPEG – технологію стиснення (компресію) зображення, яка значно зменшує розміри файлу. Причина такої високої популярності стандарту JPEG очевидна - невеликий розмір і висока якість. При цьому показник розмір/якість у JPEG практично завжди краще, ніж у будь-якого іншого графічного формату.

Назва алгоритму компресії JPEG - це абревіатура від Joint Photographic Expert Group, ініціативної групи, утвореної з експертів ITU (International Telecommunication Union) і ISO (International Organization for Standartization). Саме тому в її назві присутня приставка Joint. У 1992 р. JPEG був оголошений міжнародним стандартом в області графічних зображень.

Базові аспекти стандарту JPEG

Отже, стиснення. Воно може як призводити до втрати якості, так і не приводити. В останньому випадку застосовуються такі методи, як RLE (Run Length Encoding, кодування довжин серій, в результаті якого утворюються пари типу (skip, value, де skip - це число підряд йдучих нулів, а value - наступне за ними значення) і LZW (компресія методом Lempel-Ziff-Welch), вони реалізовані в форматах PSD, GIF і TIFF. Широко використовуються вони і архиваторами типу RAR та ZIP, де середній ступінь стиснення без втрат – 2-3 рази.

Якщо ж потрібно стиснути зображення сильніше, то без втрати якості не обійтися. Які ж критерії? По-перше, будь-яке зображення містить певну надмірність, видалення якої не призведе до помітної зміни якості картинки. По-друге, людське око більш сприйнятливий до змін яскравості, ніж кольору. Тому для різних каналів зображення застосовуються різні ступені стиснення - інформація втрачається, але візуально це не помітно. Крім того, чутливість ока до дрібних елементів зображення невелика, що дозволяє без шкоди для якості їх видалити. Так можна стискати зображення (навіть якщо погіршення якості стає вже помітним) аж до прийнятного порога. Ступінь деградації якості визначається для кожного конкретного випадку. Для поліграфії припустимі лише мінімальні спотворення, а для розміщення в Інтернеті (в залежності від призначення) - набагато більші.

Найбільшу популярність серед методів компресії з втратами отримав JPEG, який навіть при тридцятикратному стисненні зберігає достатню якість картинки. До речі, в більшості сучасних методів стиснення даних (наприклад, Layer-3, відомий як mp3, а також MPEG) реалізовані механізми, аналогічні JPEG. При компресії методом JPEG якість втрачається завжди, але при цьому є вибір: віддати перевагу якості на шкоду обсягу (розмір файлу стиснеться приблизно в три рази) або ж навпаки, добитися мінімального розміру зображення, при якому воно ще залишиться впізнаваним (ступінь компресії може досягати 100). Стиснення, при якому відмінність в якості між отриманим зображенням і оригіналом ще залишається непомітним, дає 10-20-кратне скорочення розміру файлу.

Теоретична частина

Стандарт JPEG ( Joint Photographic Experts Group) є одним з найбільш ефективних та вживаних методів стискання нерухомих зображень. Стандарт визначає послідовність та параметри операцій при кодуванні та декодуванні нерухомих зображень. JPEG відноситься до гібридних методів стискання зображень з втратами і використовується в основному при запису зображень в різноманітні ЗП. Для більшості зображень стандарт дозволяє зменшити об`єм інформації в 5 – 10 разів без суттєвого погіршення якості. JPEG не призначений для стискання малюнків, креслень та зображень, які мають два рівня яскравості.

Послідовність операцій при кодуванні пояснюється структурною схемою (мал.1):

1.розбиття зображення на блоки 8*8 пікселів;

2.виконання швидкого двовимірного дискретно-косінусного перетворення (ШДКП) в кожному блоці;

3.квантування коефіцієнтів ДКП з використанням таблиць коефіцієнтів квантування (таблиця Q);

4.ентропійне кодування коефіцієнтів ДКП, що квантовані, кожного блоку з формуванням та використанням таблиці кодування (таблиці кодів). 

Мал. 1

В результаті кодування зображення перетворюється в стиснуті відеодані, що записуються в файл.

Послідовність операцій при декодуванні пояснюється структурною схемою (мал.2):

1.декодування ентропійного коду;

2.деквантування коефіцієнтів ДКП для кожного блоку 8*8 пікселів;

3.зворотнє ШДКП для кожного блоку;

4.об`єднання блоків в декодоване зображення. 

 

При декодуванні використовують таблиці, які зчитуються із файла з стиснутими відеоданими.

Формування блоків

Напівтонове чорно-біле зображення розбивається на блоки 8*8 пікселів, що кодуються один за одним.

Кольорове зображення може бути надано в форматі RGB. В цьому випадку кожен блок надається трьома блоками чисел. Більш вживаним є формат Y,CB,CR - 4:2:0. В цьому випадку на кожні 4 блока елементів сигналу яскравості Y буде один блок елементів сигналу СВ та один блок елементів сигналу CR . 

Формати

 

4:2:0

4:2:2

Блоки

Y

СR

CB

Y

СR

CB

1

2

5

6

1

2

5,7

6,8

3

4

3

4

 

Якщо число елементів в рядку не кратне 8, то крайні праві блоки в останньому рядку стовбцями попередніх елементів, щоб число стовбців було кратно 8. Аналогічно, якщо число рядків не кратне 8.

При об`єднанні блоків в декодоване зображення кількість елементів СВ та CR відновлюється за допомогою інтерполяції.

Дискретне косинусне перетворення

Вихідні дані для ДКП мають вигляд блоків або матриц 8*8 елементів сигналу Y,CB,CR у вигляді 8- або 12- розрядними цілими позитивними двійковими числами. Перед виконанням ДКП значення кожного елементу блока зсувається шляхом відніманням числа 128 (або 2048), після чого елементи блоків надаються цілими числами із знаком.

В результаті виконання ДКП матриці 8*8 чисел отримується матриця з 8*8 коефіціентів ДКП, які можуть бути позитивними або негативними. Ця операція не зменшує кількість інформації, що передається, і є обертованою?

Тобто після виконання зворотнього ДКП в кожному блоці та об`єднання блоків буде отримане вихідне зображення.

Необхідно відмітити, що кожний коефіцієнт ДКП надає інформацію не про один будь який елемент матриці елементів зображення, а про всі 64 елементи. Лівий верхній коефіцієнт пропорційний постійній складовій, тобто середній яскравості блоку зображення.

Квантування коефіцієнтів ДКП

Ця операція дозволяє значно зменшити швидкість передавання двійкових символів ДКП за рахунок зменшення психовізуальної збитковості. Квантування здійснюється діленням матриці коефіцієнтів ДКП на матрицю коефіцієнтів квантування, результати цієї операції округлюють до найближчого цілого числа. Стандарт JPEG не встановлює конкретні таблиці 

квантування. Приклади таблиць квантування для сигналу яскравості та кольорорізностних сигналів надані в таблиці 1 та 2 відповідно.

 

Таблиця 1

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

Таблиця 2

17

18

24

47

99

99

99

99

18

21

26

66

99

99

99

99

24

26

56

99

99

99

99

99

47

66

99

99

99

99

99

99

99

99

99

99

99

99

99

99

99

99

99

99

99

99

99

99

99

99

99

99

99

99

99

99

99

99

99

99

99

99

99

99

На таблиці 3, як приклад, наведені матриці, що пояснюють послідовність операцій кодування. Видно, що значення квантованих коефіцієнтів ДКП зменшуються, а більшість з них дорівнює нулю. Таким чином нехтуються високі просторові частоти, які відповідають за мілкі деталі зображення. 

Таблиця 3

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

165

160

160

159

159

159

161

161

161

161

160

157

157

157

161

161

161

161

160

157

157

157

162

162

161

163

162

157

157

157

162

162

161

161

163

158

158

158

1260

-1

-12

-6

2

-2

-2

-2

-22

-17

-6

-3

-3

0

1

-1

-11

-10

-1

2

1

-1

-1

-1

-7

-2

0

2

1

0

0

0

0

-1

1

1

-1

-1

1

2

2

0

1

-1

-1

2

2

0

-1

-1

0

-1

0

2

1

-1

-3

1

-3

-1

2

1

-1

-1

Вибірка оригінала

Коефіцієнти DCT

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

158

0

-1

0

0

0

0

0

-2

-1

0

0

0

0

0

0

-1

-1

0

0

0

0

0

0

-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

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

Коефіцієнти після квантування

 

 

1264

0

-10

0

0

0

0

0

-24

-12

0

0

0

0

0

0

-14

-13

0

0

0

0

0

0

-14

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

142

144

147

150

152

153

154

154

149

150

153

155

156

157

156

156

157

158

159

161

161

160

159

158

162

162

163

163

162

160

158

157

162

162

162

162

161

158

156

155

160

161

161

161

160

158

156

154

160

160

161

162

161

160

158

157

160

161

163

164

164

163

161

160

Вибірка оригінала

Коефіцієнти DCT

   
   

3

0

-2

-3

-3

-2

-1

-1

5

-1

0

-1

-3

1

0

0

7

3

-1

-2

3

4

3

2

3

1

-2

3

2

1

-1

-2

3

2

1

0

-1

3

1

0

-1

0

0

0

0

1

-1

-3

-2

-1

0

-1

-1

3

1

0

-2

-1

2

3

1

5

3

2

Похибка відновлення відліків

Ентропійне кодування

В стандарті передбачено використання двох видів ентропійного кодування: кодування по Хаффману та арифметичне кодування. Кодування по Хаффману входить в базовий метод кодування. Для побудови таблиці кода Хаффмана, яка задає відповідність символів, що кодуються, і кодових слів, необхідно тільки значення частот появи символів в повідомленні, що кодується – чим частіше з`являється символ, тим коротше кодове слово. Ці дані зберігаються в файлі і використовуються при декодуванні.

Постійна складова кожного блока кодується окремо з урахуванням такої самої складової попереднього блока та будується таблиця кода Хаффмана.

Решта 63 квантовані коефіцієнти ДКП кодуються незалежно для кожного блока. Перед ентропійним кодуванням цих 63 коефіціентів виконується підготовча операція – двовимірна матриця коефіцієнтів перетворюється в одновимірну послідовність шляхом зчитування її елементів зигзаг-скануванням (мал. 3). Ця послідовність кодується по Хаффману і завершується спеціальним символом ЕОВ ( End of Block )

Мал. 3
В процесі декодування кода Хаффмана кодові слова знову перетворюються в послідовність чисел, по яким відновлюються значення квантованих коефіцієнтів ДКП, ці коефіцієнти деквантуються за допомогою таблиці Q, виконується зворотнє ДКП та формується зображення.
Формат файла
Файл починається з маркера SOI. Наступні за маркером записані таблиці квантування та ентропійного кодування. Потім ідуть параметри зображення, далі стиснуті відеодані. Область даних завершується маркером EOI.
 
 
Завдання до лабораторної роботи:
1.Вивчити алгоритм JPEG та бути готовим до відповідей на контрольні запитання.
2.За допомогою віртуальної реалізації алгоритму JPEG в середовищі інформаційно-комунікаційної системи "ПОЛІДАР" дослідити роботу методу стиснення при різних відсотках компресії по відношенню до візуальної оцінки якості.
3.За результатами дослідження скласти звіт.
Порядок виконання роботи:
1.Вибрати зображення "Фото 1".
2.Кнопками "-" та "+" зменшувати та збільшувати компресію зображення (в %).
3.Визначити при якому максимальному стисненні зображення ще є прийнятним для перегляду (відсутні артефакти).
4.Скласти таблицю з розміром зображення (в КБ) при компресуванні від 0% до 100%.
5.Пункти 1-4 повторити з іншими зображеннями (Фото 2, Фото 3, Фото 4).
6.На основі таблиць з даними про всі види зображень побудувати графік залежності розміру зображення (в КБ) від % стиснення.
7.Зробити висновки.
Контрольні запитання
1.Чому JPEG відносять до гібридних методів стискання зображень?
2.Які параметри операцій кодування визначають ступінь компресії зображень?
3.При виконанні яких операцій відбувається стискання зображень?
4.Виконання яких операцій призводить до зміни якості компресованого зображення?
5.Як формат дискретизації впливає на компресію зображення? 
1.Яким чином може бути покращена якість стиснутого зображення?
2.На яких етапах вібуваються невідновні втрати інформації, в чому вони полягають?
3.В чому полягає сутність процедури ДКП?
4.Для чого проводиться зігзаг-сканування квантованої ДКП-матриці перед ентропійним кодуванням?
5.В чому полягає сутність ентропійного кодування?
6.Яким чином декодер JPEG відновлює інформацію про таблиці квантування Q та таблицю Хаффмана?