Современные информационные технологии/1. Компьютерная инженерия

 

К.т.н. Томашевський О.М.

Львівська філія Європейського університету, Україна

 

Модифікація алгоритму компресії зображень S3TC із збереженням яскравості вихідного пікселя

 

Проведений аналіз поширених алгоритмів компресії растрових зображень показав, що питання збереження яскравості зображення-оригінала в скомпресованому вигляді є актуальним для всіх систем обробки зображень [1]. Вивчення основ компресії полягав у дослідженні основного об’єкту в області машинної графіки – зображень, які будемо розглядати як своєрідний тип даних.

Розглянемо поняття растрового зображення. Статичні растрові зображення є двовимірним масивом чисел [2]. Елементи цього масиву називають пікселями (від англійського “pixelpicture element”). Всі зображення можна розділити на дві групи – з палітрою і без неї. Зображення без палітри бувають в одній з систем кольоропредставлення (RGB, CMYK, і т.д.) і в градаціях сірого (Grayscale). Найпоширенішою є система RGB, в якій колір передається значеннями інтенсивності червоного (R, red), зеленого (G, green) і синього (В, blue) кольорів.

Для вибору критеріїв порівняння алгоритмів стиску необхідно визначити клас зображення відповідно до галузі застосування:

·            клас 1. Поліграфічні системи. Характеризуються високими вимогами до якості зображень. Компресію або не використовують, або вона є мінімальною;

·            клас 2. Енциклопедії, ігри. Помірно високі вимоги до якості зображень. Використання компресії до 20-30% від оригіналу;

·            клас 3. Інтернет. Якість зображень коливається в широкому діапазоні. Компресія до 50-70% від оригіналу.

Отже, будемо розглядати алгоритми компресії, що оперують останніми двома класами зображень, коли алгоритми порівнюються за наступними критеріями [3]:

·            обсяг вихідного файлу;

·            яскравість стиснутого зображення;

·            відсутність спотворень (артефактів).

Особливий інтерес представляють собою алгоритми стиску з пакету DirectX та OpenGL. Ці набори технологій і інструментів дозволяють створювати ігри і мультимедіа-додатки з якісною графікою та звуком. Розглянемо алгоритм стиску зображень S3TC, що використовується в DirectX (складова DirectDraw). Зазначимо, що подібний алгоритм також використовується в OpenGL для ефективного стиску тестур [4,5].

Основна ідея алгоритму S3TC полягає у розбитті зображення на блоки розміром 4 х 4 пікселя та подальшому обчисленні нових кольорів пікселів за формулою:

Тобто, коефіцієнти RGB визначаються як:

Недоліком алгоритму є часткова втрата яскравості кольорів вихідного зображення (до 30 %). Запобігти втраті яскравості можна шляхом модифікації розглянутого алгоритму. Ідея модифікації алгоритму S3TC полягає у наступному. Вхідне зображення розбивається на блоки розміром 2 х 2 пікселі:

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

.

Алгоритм було реалізовано засобами мови програмування С++, інтерфейс програми є дружнім та інтуїтивно зрозумілим. Проведено тестування розробленої програми (з робочою назвою ImgCompress) на вибірці з 9-ти зображень різного формату. Результати представлено в таблиці 1. Для порівняння проведено аналогічний стиск зображень засобами графічного пакету Adobe Photoshop.

Таблиця 1

Результати 50% стиснення зображень різного формату

Зображення-оригінал

Стиск Adobe Photoshop

Стиск ImgCompress

Формат

Розмір (px)

Об’єм файлу

Розмір (px)

Об’єм файлу

Об’єм файлу

*.bmp

384x480

540 Kb

190x240

135 Kb

180 Kb

*.jpg

473x332

53,4 Kb

237x166

16,5 Kb

7,55 Kb

*.tif

575x698

1,15 Mb

288x349

305 Kb

303 Kb

*.tif JPEG

172 Kb

51,6 Kb

*.tif LZW

724 Kb

204 Kb

302 Kb

*.gif

655x408

140 Kb

328x204

40,1 Kb

*.gif (+)

*.png8

128x128

7,27 Kb

64x64

3,08 Kb

*.png24 (+)

16,6 Kb

7,05 Kb

5,51 Kb

В результаті проведених досліджень можна сформулювати наступні висновки:

1)       функціонування алгоритмів компресії растрових зображень базується на нехтуванні частиною інформації про колір пікселів та визначенні коефіцієнтів схеми кольороподілу нових пікселів;

2)       при стиску зображень можлива поява спотворень та артефактів;

3)       алгоритм компресії з пакетів DirectX та OpenGL проводить початкове розбиття зображення на блоки 4х4 з подальшим визначенням найтемнішого та найяскравішого пікселів і перерахунком параметрів RGB;

4)       модифікований алгоритм компресії оперує 24-бітними (24bppRGB) або 32-бітними (32bppRGB та 32bppARGB) зображеннями, розбиває зображення на блоки 2х2 та обчислює значення вихідного пікселя з врахуванням параметрів решти пікселів блоку;

5)       найбільшого зменшення обсягу файлу зображення досягається при використанні формату *.jpg та *.png24 із підтримкою прозорості.

 

Література:

1.         Р.Вудс, Р.Гонсалес. Цифровая обработка изображений (в 2-х томах). – СПб: “Техносфера”, 2006.– 616с.

2.         Иванов Д.В. Алгоритмические основы растровой машинной графики. – М: ИНТУИТ, 2007.– 284с.

3.         Миано Дж. Форматы и алгоритмы сжатия изображений в действии. – М: Тріумф, 2003.– 336с.

4.         Фленов М.Е. DirectX и C++. Искусство программирования (+CD). – BHV-СПб, 2006.– 384с.

5.         Ивченко А. OpenGL и DirectX: программирование графики. Для профессионалов. – СПб: Питер, 2006.– 352с.**