Цифрові та комп’ютерні технології в фотовиробництві Урок 17 Стиснення зображення та його якість залежно від цього.
Сти́снення зобра́жень — використання алгоритмів стиснення даних до зображень, що зберігаються в цифровому виді. В результаті стиснення зменшується розмір зображення, що зменшує час передачі зображення по мережі і економить простір для зберігання. Стиснення зображень розділяють на стиснення з втратами якості і стиснення без втрат. Стиснення без втрат більш підходить для штучно побудованих зображень, таких як графіки, іконки програм, або для спеціальних випадків, наприклад, якщо зображення призначені для подальшої обробки алгоритмами розпізнавання зображень. Алгоритми стиснення з втратами при збільшенні степені стиснення, як правило, породжують добре помітні людському оку артефакти.
Вимоги до алгоритмів компресії
Характер використання зображень визначає ступінь важливості наведених нижче суперечливих вимог до алгоритму:
- Високий ступінь компресії.
- Висока якість зображень. Виконання цієї вимоги напряму суперечить виконанню попередньої.
- Висока швидкість компресії. Ця вимога для деяких алгоритмів з втратою інформації є взаємовиключною з першими двома. Що більше часу необхідно витратити на аналіз зображення з метою отримання найвищої ступені компресії, тим кращим буде результат. І, відповідно, чим менше буде витрачено на компресію (аналіз), тим нижчою буде якість зображення і більшим його розмір.
- Висока швидкість декомпресії.
- Масштабування зображень. Дана вимога передбачає легкість зміни розмірів зображення до розміру вікна активного додатку. Одні алгоритми дозволяють легко масштабувати зображення під час декомпресії, в той час як інші не тільки не дозволяють легко масштабувати, але і збільшують вірогідність появи «неприємних» артефактів після застосування стандартних алгоритмів масштабування до декомпресованих зображень. Приміром можна навести приклад «поганого» зображення для алгоритму JPEG - це зображення з досить дрібним регулярним малюнком (піджак в дрібну клітку). Характер внесених алгоритмом JPEG спотворень такий, що зменшення або збільшення зображення може дати неприємні ефекти.
- Стійкість до помилок. Дана вимога означає локальність порушень у зображенні при пошкодженні або втраті фрагмента переданого файлу. Дана вимога суперечить вимозі високого ступеня архівації, оскільки необхідно вводити надлишкову інформацію. Однак для різних алгоритмів обсяг цієї надлишкової інформації може істотно відрізнятися.
- Редагованість. Під редагованістю розуміється мінімальна ступінь погіршення якості зображення при його повторному збереженні після редагування. Багато алгоритмів з втратою інформації можуть істотно пошкодити зображення за декілька ітерацій редагування.
- Незначна вартість апаратної реалізації.
Критерії порівняння алгоритмів
Характеристики алгоритму залежать від конкретних умов, в які буде поставлений алгоритм. Так, ступінь компресії залежить від того, на якому класі зображень алгоритм тестується. Аналогічно, швидкість компресії нерідко залежить від того, на якій платформі реалізований алгоритм. Виділяють кілька критеріїв порівняння алгоритмів компресії:
- Найгірший, середній і найкращий коефіцієнти стиснення. Тобто частка, на яку зросте зображення, якщо вихідні дані будуть найгіршими; середньостатистичний коефіцієнт для класу зображень, на який орієнтований алгоритм, і, найкращий коефіцієнт. Останній необхідний лише теоретично, оскільки показує ступінь стиснення найкращого (як правило, абсолютно чорного) зображення, іноді фіксованого розміру.
- Клас зображень, на який орієнтований алгоритм.
- Симетричність. Співвідношення характеристики алгоритму кодування до аналогічної характеристики при декодуванні. Характеризує ресурсомісткість процесів кодування і декодування.
- Втрати якості.
- Характерні особливості алгоритму і зображень, до яких його застосовують. Тут можуть зазначатися найважливіші для алгоритму властивості, які можуть стати визначальними при його виборі.
Алгоритми архівації без втрат
Алгоритм RLE (Run Length Encoding) — один з найстаріших і найпростіших алгоритмів архівації графіки. Зображення в ньому витягується в ланцюжок байт по рядках растра. Саме стиснення в RLE відбувається за рахунок того, що у вихідному зображенні зустрічаються ланцюжки однакових байт. Алгоритм орієнтований на зображення з невеликою кількістю кольорів: ділову та наукову графіку. До позитивних сторін алгоритму можна віднести тільки те, що він не вимагає додаткової пам'яті при архівації та розархівації, а також швидко працює.
Алгоритм LZW
Назву алгоритм LZW отримав за першими літерами прізвищ його розробників — Lempel, Ziv і Welch. Стиснення в ньому, на відміну від RLE, здійснюється за рахунок однакових ланцюжків байт. Процес стиснення виглядає досить просто. Ми зчитуємо послідовно символи вхідного потоку і перевіряємо, чи є у створеній нами таблиці рядків такий рядок. Якщо рядок є, то ми зчитуємо наступний символ, а якщо рядка немає, то ми заносимо в потік код для попередньої знайденої рядки, заносимо рядок в таблицю і починаємо пошук знову. Алгоритм LZW орієнтований на 8-бітові зображення. LZW є універсальним алгоритмом — саме його варіанти використовуються у звичайних архіваторах.
Алгоритм Хаффмана - один з класичних алгоритмів, відомих з 60-х років. Використовує тільки частоту появи однакових байт в зображенні. Зіставляє символам вхідного потоку, які зустрічаються більше число раз, ланцюжок біт меншої довжини. І, навпаки, тим, які зустрічається рідко - ланцюжок більшої довжини. Для збору статистики вимагає двох проходів по зображенню. Алгоритм Хаффмана практично не застосовується до зображень у чистому вигляді. Зазвичай використовується як один з етапів стиснення в складніших схемах. Цей алгоритм реалізований у форматі TIFF. Він є надзвичайно простим у реалізації, швидким і може бути легко реалізований апаратно.
Алгоритм JBIG розроблений групою експертів ISO (Joint Bi-level Experts Group) спеціально для стиснення однобітних чорно-білих зображень, наприклад, факсів або відсканованих документів. Може також застосовуватися і до 2-х, і до 4-х бітових зображень. При цьому алгоритм розбиває їх на окремі бітові площини. JBIG дозволяє управляти такими параметрами, як порядок розбиття зображення на бітові площини, ширина смуг в зображенні, рівні масштабування.
Алгоритм Lossless JPEG розроблений групою експертів в області фотографії (Joint Photographic Expert Group). На відміну від JBIG, Lossless JPEG орієнтований на повнокольорові 24-бітні або 8-бітові зображення в градаціях сірого без палітри. Він являє собою спеціальну реалізацію JPEG без втрат. Lossless JPEG рекомендується застосовувати в тих додатках, де необхідно побітова відповідність вихідного і декомпресованого зображень.
Алгоритми архівації з втратами
JPEG - один з найновіших і досить потужних алгоритмів. Практично він є стандартом де-факто для повнокольорових зображень. Оперує алгоритм областями 8х8, на яких яскравість і колір змінюються порівняно плавно. Внаслідок цього, при розкладанні матриці такої області в подвійний ряд косинусів значущими виявляються тільки перші коефіцієнти. Таким чином, стиснення в JPEG здійснюється за рахунок плавності зміни кольорів у зображенні. Алгоритм розроблений групою експертів в області фотографії спеціально для стиснення 24-бітових зображень. JPEG - Joint Photographic Expert Group - підрозділ у рамках ISO - Міжнародної організації зі стандартизації. В цілому алгоритм заснований на дискретному косинусному перетворенні (надалі ДКП), що застосовується до матриці зображення для отримання деякої нової матриці коефіцієнтів. Для отримання початкового зображення застосовується зворотне перетворення.
Фрактальний алгоритм
Фрактальна архівація заснована на тому, що зображення представляють в компактнішій формі — з допомогою коефіцієнтів системи ітерованих функцій (Iterated Function System — IFS). IFS являє собою набір тривимірних афінних перетворень, які переводять одне зображення в інше. Перетворенню підлягають точки в тривимірному просторі (х_координата, у_координата, яскравість).
Найвідоміші два зображення, отриманих за допомогою IFS: «трикутник Серпінського» і «папороть Барнслі». «Трикутник Серпінського» задається трьома, а «папороть Барнслі» чотирма афінними перетвореннями. Кожне перетворення кодується кількома байтами, в той час як зображення, побудоване з їх допомогою, може займати і декілька мегабайт.
Алгоритм використовують при стисненні повнокольорових 24 бітних зображень або зображень у градаціях сірого без різких переходів кольорів (фотографії). Бажано, щоб області більшої значимості (для сприйняття) були більш контрастними і різкими, а області меншої значимості — неконтрастними і розмитими.