ОЗМ Лаб3 Майоров
Зміст
Вивчення форматів графічних файлів
BMP (BitMap Picture)
Формат файлу BMP - це “рідний” формат растрової графіки для Windows, оскільки він найближче відповідає внутрішньому формату Windows. Для імені файлу, представленого в BMP–форматі, найчастіше використовується розширення BMP, хоча деякі файли мають розширення RLE, що означає run length encoding (кодування довжини серій).
У файлах BMP інформація про колір кожного пікселя кодується 1, 4, 8, 16 або 24 бітами (біт/піксель). Цим параметром визначається максимальне число підтримуваних кольорів в зображенні. Наприклад, зображення при глибині кольору 1 біт/піксель може мати всього два кольори, а при глибині 24 біт/піксель — більше 16 млн. різних кольорів.
Файл зображення розбитий на чотири основні розділи: заголовок файлу растрової графіки, інформаційний заголовок реєстрового масиву, таблиця кольорів і власне дані реєстрового масиву. Хоча не всі файли BMP мають подібну структуру. Наприклад, файли BMP з глибиною 16 і 24 біт/піксель не мають таблиць кольорів. В цих файлах значення пікселів растрового масиву безпосередньо характеризують значення кольорів RGB.
JPEG (Joint Photographic Experts Group)
Формат файлу JPEG був розроблений компанією C-Cube Microsystems як ефективний метод зберігання зображень з великою глибиною кольору, наприклад, одержуваних при скануванні фотографій з численними ледь вловимими (а іноді і невловимими) відтінками кольору. Найбільша відмінність формату JPEG полягає в тому, що в ньому використовується алгоритм стиснення з втратами інформації. При цьому втрачається частина інформації про зображення, для досягнення більшого коефіцієнта стиснення.
Процес стиснення зображення JPEG досить складний. Спочатку зображення розбивається на квадратні блоки із стороною розміром 8 пікселів. Потім проводиться стиснення кожного блоку окремо за три кроки:
- На першому кроці за допомогою формули дискретного косинусоїдального перетворення Фур'є (DCT) проводиться перетворення блоку 8х8 з інформацією про пікселі в матрицю 8x8 амплітудних значень, що відображають різні частоти в зображенні.
- На другому кроці значення матриці амплітуд діляться на значення матриці квантування, яка зміщена так, щоб відфільтрувати амплітуди із незначним впливом на загальний вигляд зображення.
- На третьому і останньому кроці квантування матриця амплітуд стискається з використанням алгоритму стиснення без втрат.
При стисненні методом JPEG втрати інформації відбуваються на другому кроці процесу. Чим більше значення в матриці квантування, тим більше відкидається інформації з зображення і тим більш щільно стискається зображення. Компроміс полягає в тому, що так як більш високі значення квантування призводять до гіршої якості зображення, при формуванні зображення JPEG користувач самостійно встановлює показник якості, величина якого “керує” значеннями матриці квантування. Оптимальні показники якості, що забезпечують кращий баланс між коефіцієнтом стиснення і якістю зображення, різні для різних зображень і зазвичай можуть бути знайдені тільки методом проб і помилок.
GIF (Graphics Interchange Format)
Більшість провідних фахівців-графіків, що мають справу з алгоритмом LZW, стикаються з юридичними проблемами при використанні популярного міжплатформного формату файлів растрової графіки GIF, розробленого компанією CompuServe.
Структура файлу GIF залежить від версії GIF-специфікації, якій відповідає файл. В даний час використовуються дві версії, GIF87a і GIF89a. Перша з них простіше. Незалежно від номера версії, файл GIF починається з 13-байт заголовка, що містить сигнатуру, яка ідентифікує цей файл в якості GIF-файлу, номер версії і іншу інформацію. Якщо файл зберігає лише одне зображення, слідом за заголовком зазвичай розташовується загальна таблиця кольорів, що визначає кольори зображення. Якщо у файлі зберігається декілька зображень, то замість загальної таблиці кольорів кожне зображення супроводжується локальної таблицею кольорів.
У файлі GIF87a слідом за заголовком і загальною таблицею кольорів розміщується зображення, яке може бути першим з кількох наявних зображень. Кожне зображення складається з 10-байт опису зображення, розташованої услід за ним локальної таблиці кольорів і бітів реєстрового масиву. Для підвищення ефективності використання пам'яті дані реєстрового масиву стискаються за допомогою алгоритму LZW.
Файли GIF89a мають аналогічну структуру, але вони можуть містити блоки розширення з додатковою інформацією про кожне зображення. У специфікації GIF89a визначено чотири типи блоків розширення. Це блоки розширення для управління графікою, які описують, як зображення повинне виводитися на екран (наприклад, накладається воно на попереднє зображення, або просто замінює його); блоки розширення зі звичайним текстом, що містять текст, що відображається разом з графікою; блоки розширення для коментаря, що містять коментарі в коді ASCII; і блоки розширення прикладних програм, в яких зберігається інформація, що належить програмі у якій було створено цей файл. Блоки розширення можуть перебувати практично в будь-якому місці файлу після загальної таблиці кольорів.
Основні переваги GIF полягають в популярності цього формату та його компактності. Але йому притаманні два досить серйозні недоліки. Один з них полягає в тому, що в зображеннях, що зберігаються у вигляді GIF-файлу, не може бути використано більше 256 кольорів. Другий, можливо, ще більш серйозний, полягає в тому, що розробники програм, що використовують в них формати GIF, повинні мати ліцензійну угоду з CompuServe і вносити плату за кожен екземпляр програми. така цінова політика була прийнята CompuServe після того, як Unisys оголосила, що почне добиватися дотримання своїх прав власності і зажадала від тих, хто користується алгоритмом стиснення LZW, вносити ліцензійні платежі. Заплутане юридичне становище, що виникло в результаті цього гальмує впровадження програмістами в свої графічні програми файли формату GIF.
PNG (Portable Network Graphics)
Формат PNG в свій час (1996 — рік розробки першої версії формату) створювався для заміни GIF, щоб обійти юридичні перешкоди, що стояли на шляху використання GIF-файлів. PNG успадкував багато можливостей GIF і, крім того, дозволяв зберігати зображення, використовуючи більш повну палітру кольорів. Ще більш важливою рисою даного формату є те, що він використовує алгоритм стиснення без втрат — Deflate (який використовує комбінацію алгоритмів LZ77 і алгоритму Хаффмана), яким будь-хто може користуватися безкоштовно. На відміну від GIF, формат PNG підтримує повну (24-бітну) прозорість, але не дозволяє зберігати в собі декілька зображень, тобто не підтримує анімацію.