Лаб №2
Тема: Графічні формати
Мета: Вивчення форматів графічних файлів
Завдання:
- Вивчити формат bmp. Розробити коротку специфікацію формату.
- Вивчити формат jpg. Розробити коротку специфікацію формату.
- Вивчити формат gif. Розробити коротку специфікацію формату.
- Вивчити формат png. Розробити коротку специфікацію формату.
- Вивчити один векторний формат (на Ваш вибір). Розробити коротку специфікацію формату.
- Зберегти в розглянутих форматах, файл нестисненого фото. Зробити таблицю порівняння форматів.
bmp. формат
BMP (Bitmap) — bitmap-формат або DIB -формат файлу зображень растрової графіки, в якому зображення зберігається у вигляді двовимірного масиву пікселів. Запам'ятовує одно і багатокольорові (RGB) ілюстрації у формі Pixel. BMP-формат використовується в операційній системи Windows та OS/2. Формат файлу BMP здатний зберігати 2D цифрові зображення довільної ширини, висоти та роздільної здатності, як монохромні так і кольорові, різної глибини кольору, і, необов'язково, зі стисненням данних, альфа-каналом та керуванням кольору. В даному форматі можна зберігати лише одношарові растри. На кожен піксель в різних файлах може припадати різну кількість біт (глибина кольору). Microsoft пропонує бітності 1, 2, 4, 8, 16, 24, 32, 48 і 64. У Бітність 8 і нижче, колір вказується індексом з таблиці кольорів (палітри), а при великих безпосереднім значенням. Колір же в будь-якому випадку можна задати тільки в колірній моделі RGB (як при безпосередньому вказівці в пікселі, так і в таблиці кольорів), але в Бітність 16 і 32 можна отримати Grayscale з глибиною до 16 і 32 біт відповідно. Часткова прозорість реалізована альфа-каналом різних бітностей, але при цьому прозорість без градацій можна побічно отримати RLE-кодуванням.
У більшості випадків пікселі зберігаються у вигляді відносно простого двовимірного масиву. Для бітності 4 і 8 є RLE-кодування, яке може зменшити їх розмір. Формат BMP також підтримує вбудовування даних в форматах JPEG і PNG. Але останній скоріше більше призначене не для компактного зберігання, а для обходу обмежень архітектури GDI, яка не передбачає пряму роботу із зображеннями відмінних від BMP форматів.
В останніх версіях формату BMP також з'явилися можливості по управлінню кольором. Зокрема, можна вказувати кінцеві точки, виробляти гамма-корекцію і вбудовувати колірні профілі ICC.
jpg. формат
Формат файлу JPEG (Joint Photographic Experts Group - Об'єднана експертна група по фотографії) був розроблений компанією C-Cube Microsystems як ефективний метод зберігання зображень з великою глибиною кольору, наприклад, одержуваних при скануванні фотографій з численними відтінками кольору. Найбільша відмінність формату JPEG від інших форматів полягає в тому, що в JPEG використовується алгоритм стиснення з втратами (а не алгоритм без втрат) інформації. Алгоритм стиснення без втрат так зберігає інформацію про зображення, що розпаковане зображення в точності відповідає оригіналу. При стисненні з втратами приноситься в жертву частина інформації про зображення, щоб досягти більшого коефіцієнта стиснення. Розпаковане зображення JPEG рідко відповідає оригіналу абсолютно точно, але дуже часто ці відмінності настільки незначні, що їх ледве можна виявити.
Процес стиснення зображення JPEG досить складний і часто для досягнення прийнятної продуктивності вимагає спеціальної апаратури. Спочатку зображення розбивається на квадратні блоки із стороною розміром 8 пікселів. Потім проводиться стиснення кожного блоку окремо за три кроки. На першому кроці за допомогою формули дискретного косинусоїдального перетворення фури (DCT) проводиться перетворення блоку 8х8 з інформацією про пікселі в матрицю 8x8 амплітудних значень, що відображають різні частоти (швидкості зміни кольору) в зображенні. На другому кроці значення матриці амплітуд діляться на значення матриці квантування, яка зміщена так, щоб відфільтрувати амплітуди, незначно впливають на загальний вигляд зображення. На третьому і останньому кроці квантованими матриця амплітуд стискається з використанням алгоритму стиснення без втрат.
Оскільки в квантованной матриці відсутня значна частка високочастотної інформації, наявної у вихідній матриці, перша часто стискується до половини свого початкового розміру або навіть ще більше. Реальні фотографічні зображення часто зовсім неможливо стиснути за допомогою методів стиснення без втрат, тому 50% -ве стиснення слід визнати досить хорошим. З іншого боку, застосовуючи методи стиснення без втрат, можна стискати деякі зображення на 90%. Такі зображення погано підходять для стискування методом JPEG.
При стисненні методом JPEG втрати інформації відбуваються на другому кроці процесу. Чим більше значення в матриці квантування, тим більше відкидається інформації з зображення і тим більш щільно стискається зображення. Компроміс полягає в тому, що більш високі значення квантування призводять до гіршого якістю зображення. При формуванні зображення JPEG користувач встановлює показник якості.
gif. формат
Більшість провідних фахівців-графіків, що мають справу з алгоритмом LZW, стикаються з аналогічними юридичними проблемами при використанні популярного міжплатформного формату файлів растрової графіки GIF (Graphics Interchange Format - формат обміну графічними даними), розробленого компанією CompuServe. Зазвичай для імені файлів GIF використовується розширення GIF, і тисячі таких файлів можна отримати в CompuServe.
Структура файлу GIF залежить від версії GIF-специфікації, якій відповідає файл. В даний час використовуються дві версії, GIF87a і GIF89a. Перша з них простіше. Незалежно від номера версії, файл GIF починається з 13-байт заголовка, що містить сигнатуру, яка ідентифікує цей файл в якості GIF-файлу, номер версії GIF і іншу інформацію. Якщо файл зберігає лише одне зображення, слідом за заголовком зазвичай розташовується загальна таблиця кольорів, що визначає кольори зображення. Якщо у файлі зберігається декілька зображень (формат GIF дозволяє в одному файлі кодувати два і більше зображень), то замість загальної таблиці кольорів кожне зображення супроводжується локальної таблицею кольорів.
У файлі GIF87a слідом за заголовком і загальною таблицею квітів розміщується зображення, яке може бути першим з кількох наявних поспіль зображень. Кожне зображення складається з 10-байт описателя зображення, розташованої услід за ним локальної таблиці кольорів і бітів реєстрового масиву. Для підвищення ефективності використання пам'яті дані реєстрового масиву стискаються за допомогою алгоритму LZW.
Файли GIF89a мають аналогічну структуру, але вони можуть містити факультативні блоки розширення з додатковою інформацією про кожному зображенні. У специфікації GIF89a визначено чотири типи блоків розширення. Це блоки розширення для управління графікою, які описують, як зображення повинне виводитися на екран (наприклад, накладається воно на попереднє зображення подібно діапозитивів або просто замінює його); блоки розширення зі звичайним текстом, що містять текст, що відображається разом з графікою; блоки розширення для коментаря, що містять коментарі в коді ASCII; і блоки розширення прикладних програм, в яких зберігається інформація, що належить тільки створила цей файл програмою. Блоки розширення можуть перебувати практично в будь-якому місці файлу після загальної таблиці кольорів.
Основні переваги GIF полягають в широкому поширенні цього формату і його компактності. Але йому притаманні два досить серйозні недоліки. Один з них полягає в тому, що в зображеннях, що зберігаються у вигляді GIF-файлу, не може бути використано більше 256 кольорів. Другий, можливо, ще більш серйозний, полягає в тому, що розробники програм, що використовують в них формати GIF, повинні мати ліцензійну угоду з CompuServe і вносити плату за кожен екземпляр програми; така цінова політика була прийнята CompuServe після того, як Unisys оголосила, що почне добиватися дотримання своїх прав власності і зажадала від тих, хто користується алгоритмом стиснення LZW, вносити ліцензійні платежі. Виник в результаті цього заплутане юридичне становище гальмує впровадження програмістами в свої графічні програми коштів для роботи з файлами GIF.