Алгоритми стиснення зображень

Алгоритми стиснення зображень

Сьогодні професійні фотоапарати здатні видавати фотознімки приголомшливої ​​якості, але для зберігання необроблених знімків буде потрібно величезна кількість дискового простору. Саме тому фахівцями всього світу не один рік розробляються спеціальні алгоритми, що дозволяють стискати растрові зображення до розумних меж. У всіх існуючих на сьогодні алгоритмів в основі закладено трохи різні способи оптимізації підсумкового розміру файлу. Всі розроблені алгоритми стиснення зображень можна розділити на два великі види: алгоритм без втрати якості зображення і алгоритми з втратою якості.

Алгоритми стиснення зображень
Фотознімки приголомшливої ​​якості в стислому форматі

Алгоритми стиснення зображень без втрат якості в основі своїй мають завдання пошуку повторюваних елементів всередині масиву даних і заміну їх на еквівалентну інформацію, але займає менший обсяг даних. Дані алгоритми застосовуються до кожного використовуваному колірному компоненту (наприклад, в колірній схемі RGB алгоритм буде застосовуватися до кожного використовуваному кольором). Поширення таких алгоритмів пояснюється тим, що кожен окремий елемент в цифровому знімку відрізняється від ближніх набагато менше, ніж в підсумковому зображенні, що дає на виході хороші результати щодо зменшення розміру фотографій.

Алгоритми стиснення зображень
Залежність якості зображення від ступеня стиснення

RLE (Run Length Encoding - кодування довжин серій) - найпростіший алгоритм стиснення, в якому обробник відстежує послідовність однакових байт і змінює її на пару "довжина серії - значення байта". Наприклад, серію байт в файлі 55555555 алгоритм замінює на пару 85. Дана технологія дуже добре застосовується в тих файлах, де присутні великі області, залиті одним кольором (блок-схеми, діаграми). Сьогодні даний алгоритм використовується для попередньої обробки в таких форматах, як BMP, PCX, TIFF, JPEG.

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

Алгоритми стиснення зображень з втратою якості - в процесі стиснення файлу частина інформації відкидається, чим досягається велика ступінь стиснення. Однак організатори повинні вирішувати важливе питання: яка саме відкинута інформація не вплине на результат.

JPEG - розробка "Групи експертів в області фотографії" для зображень з 24-бітної колірною глибиною. Сьогодні це майже стандарт повнокольорових зображень. Технологія використовує дискретне косинусное перетворення (DCT), що застосовується до матриці зображення розмірів 8х8 для отримання деякої нової матриці коефіцієнтів. Саме кодування проходить в чотири етапи.
На першому етапі йде вибірка (sampling), де колірні дані перетворюються в модель YCbCr. Потім виконується проріджувати вибірка (down-sampling), де компоненти кольоровості (Cb, Cr) знижуються в якості, так як для ока людини ці втрати найбільш несуттєві.
На другому етапі відбувається DCT, де зображення розбивається на матричні блоки 8х8 для подальшого перетворення.
Третім етапом в алгоритмі є квантування (quantization), де з зображення видаляються останні елементи матриці DCT, які впливають на кінцевий результат зображення в найменшій мірі. Решта коефіцієнти DCT КОЛІР за методом Хоффмана.
Описаний алгоритм застосовується повсюдно, за винятком кодування простих малюнків, де око людини бачить чіткі переходи від одного кольору до іншого. У таких зображеннях при використанні алгоритму стиснення JPEG користувач отримає на кордонах переходу ефект Гіббса (розмазані кордону з брудним ореолом).

Фрактальний алгоритм - метод, який використовує відмінний від інших алгоритмів спосіб стиснення. Тут за основу взято знаходження на зображенні подібних областей, які потім кодуються особливим способом. При цьому подібність елементів шукається в квадратних областях з обмеженим використанням поворотів на певний кут. Даний метод є дуже ресурсномістких, але дозволяє отримати відмінні результати за співвідношенням якість / обсяг файлу. Застосовується метод в повнокольорових зображеннях формату FIF.

Розглянуті алгоритми сьогодні дозволяють користувачеві вибрати з широкого спектру представлених форматів найбільш вигідний, але в цій області є і ряд перешкод. По-перше, нові технології стиснення вимагають великих обчислювальних потужностей і часу на обробку, що критично для портативних апаратів (фотокамери). У зв'язку з цим, не припиняється робота експертів по оптимізації вже розроблених алгоритмів і впровадження апаратних засобів компресії зображень.

Схожі статті