Обробка зображень та мультимедіа Лабораторна 2-3 Туртуріка

Матеріал з Вікі ЦДУ
Перейти до: навігація, пошук

Тема: Графічні формати

Мета: Вивчення форматів графічних файлів


Завдання:

  1. Вивчити формат bmp. Розробити коротку специфікацію формату.
  2. Вивчити формат jpg. Розробити коротку специфікацію формату.
  3. Вивчити формат gif. Розробити коротку специфікацію формату.
  4. Вивчити формат png. Розробити коротку специфікацію формату.
  5. Вивчити один векторний формат (на Ваш вибір). Розробити коротку специфікацію формату.
  6. Зберегти в розглянутих форматах, файл нестисненого фото. Зробити таблицю порівняння форматів.


Формат BMP

BMP (Bitmap Picture) - формат зберігання растрових зображень, розроблений компанією Microsoft. Файли формату BMP можуть мати розширення .bmp, .dib і .rle.

Зображення зберігається у вигляді двовимірного масиву пікселів. Формат дозволяє зберігати тільки одношарові растри. На кожен піксель в різних файлах може приходити різна кількість біт (глибина кольору). Пропоновані варіанти бітності: 1, 2, 4, 8, 16, 24, 32, 48 та 64. Колір можна задати тільки в колірній моделі RGB, але при бітності 16 і 32 можна отримати Grayscale з глибиною до 16 і 32-ох біт відповідно.

Часткова прозорість реалізована альфа-каналом різних бітностей, але при цьому прозорість без градацій можна побічно отримати RLE-кодуванням.

До особливостей формату можна віднести стиснення без втрат. Великим недоліком є погана передача мережею.

Внутрішня будова

BMP-файл складається з чотирьох частин:

  1. Заголовок файлу (BITMAPFILEHEADER)
  2. Заголовок зображення (BITMAPINFOHEADER, може бути відсутнім). BITMAPV4HEADER (Win95, NT4.0) BITMAPV5HEADER (Win98/Me, 2000/XP)
  3. Палітра (може бути відсутня)
  4. Піксельні дані

Детальний огляд внутрішньої структури BMP-файлу

(на прикладі зображення із глибиною кольору 8 біт/піксель)

Заголовок файлу
Сигнатура файлу BMP 2
Розмір файлу 4
Не використовується 2
Не використовується 2
Адреса растрового масиву 4
Всього 14 байт
Заголовок зображення
Довжина заголовку 4
Ширина зображення 4
Висота зображення 4
Число кольорових площин 2
Біт/Піксель 2
Довжина растрового масиву 4
Горизонтальне розширення 4
Вертикальне розширення 4
Кількість кольорів зображення 4
Кількість основних кольорів 4
Всього 40 байт
Таблиця кольорів (Палітра)
Всього від 8 до 1024 байт
Дані растрового масиву

Не всі файли BMP мають подібну структуру. Наприклад, файли BMP з глибиною 16 і 24 біт / піксель не мають таблиць кольорів; в цих файлах значення пікселів растрового масиву безпосередньо характеризують значення кольорів RGB.

Також можуть відрізнятися внутрішні формати зберігання окремих розділів файлу. Наприклад, інформація растрового масиву в деяких 16 і 256-кольорових BMP-файлах може стискатися за допомогою алгоритму RLE, який замінює послідовності ідентичних пікселів зображення на лексеми, що визначають число пікселів в послідовності та їх колір.

Джерела

Формат JPEG

JPEG (Joint Photographic Experts Group) — растровий формат збереження графічної інформації, що використовує стиснення з втратами. Файли формату JPEG можуть мати розширення .jpg, .jpeg, .jpe, .jif, .jfif, .jfi.

Формат JPEG є True Color-форматом, тобто має здатність зберігати зображення з глибиною кольору 24 біт/піксель. Такої глибини кольору досить для практично точного відтворення зображень будь-якої складності на екрані монітора.

Найбільш поширений JPEG в цифровій фотографії та для зберігання і передачі зображень мережею Інтернет. Алгоритм JPEG якнайкраще підходить для стиснення фотографій і картин, що містять реалістичні сцени з плавними переходами яскравості і кольору.

З іншого боку, JPEG малопридатний для стиснення креслень, текстової та знакової графіки, де різкий контраст між сусідніми пікселями приводить до появи помітних артефактів.

Алгоритм стиснення JPEG

  1. Зображення перетворюється з простору кольорів RGB в YCbCr;
  2. Зазвичай канали Cb і Cr проріджують, тобто блоку пікселів присвоюють середнє значення;
  3. Значення каналів розбиваються на блоки 8x8;
  4. Кожен блок перетворюють згідно дискретно-косинусного-перетворення (ДКП), що є різновидом дискретного перетворення Фур'є. Отримують матрицю коефіцієнтів 8x8. Причому лівий верхній коефіцієнт називається DC-коефіцієнт, а інші 63 - AC-коефіцієнтами;
  5. Утворені коефіцієнти квантуються, тобто кожен множиться на коефіцієнт матриці квантування (кожен кодувальник зазвичай використовує свою матрицю квантування);
  6. Коефіцієнти кодуються кодами Хаффмана.

Структура файлу

Файл JPEG містить послідовність маркерів, кожен з яких починається з байта 0xFF, що свідчить про початок маркера, та байта-ідентифікатора. Деякі маркери складаються тільки з цієї пари байтів, інші ж містять додаткові дані, (двухбайтове поле з довжиною інформаційної частини маркера і власне даних. Така структура файлу дозволяє швидко відшукати маркер з необхідними даними (наприклад, з довжиною рядка, числом рядків і числом колірних компонентів стисненого зображення).

Основні маркери JPEG
Маркер Байти Довжина Призначення Коментарі
SOI 0xFFD8 - Початок зображення
SOF0 0xFFC0 Змінний розмір Початок фрейму (базовий, ДКП) Вказує, що зображення кодувалося в базовому режимі з використанням ДКП та кодів Хаффмана. Маркер містить число рядків і довжину рядка зображення , кількість компонентів, число біт на компонент (завжди 8), а також співвідношення компонентів.
SOF1 0xFFC1 Змінний розмір Початок фрейму (розширений, ДКП, код Хаффмана) Вказує, що зображення кодувалося в розширеному режимі з використанням ДКП та кодів Хаффмана. Маркер містить число рядків і довжину рядка зображення, кількість компонентів, число біт на компонент (8 або 12), а також співвідношення компонентів.
SOF2 0xFFC2 Змінний розмір Початок фрейму (прогресивний, ДКП, код Хаффмана) Вказує, що зображення кодувалося в прогресивному режимі з використанням ДКП та кодів Хаффмана. Маркер містить число рядків і довжину рядка зображення, кількість компонентів, число біт на компонент (8 или 12), а також співвідношення компонентів.
DHT 0xFFC4 Змінний розмір Містить таблиці Хаффмана Описує одну або декілька таблиць Хаффмана.
DQT 0xFFDB Змінний розмір Містить таблиці квантування Описує одну або декілька таблиць квантування.
DRI 0xFFDD 4 байти Вказує довжину рестарт-інтервалу Задає інтервал між маркерами RST 'n в макроблоках. За відсутності DRI поява в потоці кодованих даних маркерів RST n є неприпустимою і вважається помилкою. Якщо при кодуванні маркери RST n не застосовуються, маркер DRI або не використовується зовсім, або інтервал повторень в ньому вказується рівним 0.
SOS 0xFFDA Змінний розмір Початок сканування Початок першого або наступного скану зображення з напрямком обходу зліва направо зверху вниз. Якщо використовувався базовий режим кодування, використовується один скан. При використанні прогресивних режимів використовується кілька сканів. Маркер SOS є роздільником між інформативною (заголовком) і закодованою (власне стисненими даними) частинами зображення.
RSTn 0xFFDn - Перезапуск Маркери перезапуску використовуються для сегментування кодованих ентропійних кодувальником даних. У кожному сегменті дані декодуються незалежно, що дозволяє розпаралелити процедуру декодування. При пошкодженні кодованих даних в процесі передачі або зберігання JPEG-файлу використання маркерів перезапуску дозволяє обмежити втрати (макроблоки з непошкоджених сегментів будуть відновлені правильно). Вставляється в кожному r - му макроблоці, де r - інтервал перезапуску DRI маркера.
APPn 0xFFEn Змінний розмір Задається програмно
COM 0xFFFE Змінний розмір Коментар Містить коментар
EOI 0xFFD9 - Кінець закодованої частини зображення

Джерела

Формат GIF

Формат PNG

Формат SVG

Порівняння