Лабораторні роботи Годуна Дмитра: Обробка зображень та мультимедіа

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

Лабораторна робота 1

Лабораторна робота 2

BMP

BMP (Bitmap) — bitmap-формат або DIB (англ. device independent bitmap)-формат файлу зображень растрової графіки, в якому зображення зберігається у вигляді двовимірного масиву пікселів. запам'ятовує одно і багатокольорові (RGB) ілюстрації у формі Pixel. BMP-формат використовується в операційній системи Windows та OS/2. Дані цього формату включаються в двійкові файли ресурсів RES і в PE-файли.

Формат файлу BMP здатний зберігати 2D цифрові зображення довільної ширини, висоти та роздільної здатності, як монохромні так і кольорові, різної глибини кольору, і, необов'язково, зі стисненням данних, альфа-каналом та керуванням кольору. Специфікація Windows Metafile (WMF) охоплює формат файлу BMP. Серед іншого, wingdi.h визначає BMP-константи та структури.


Можливості формату BMP

У даному форматі можна зберігати тільки одношарові растри. На кожен піксель в різних файлах може приходити різна кількість біт (глибина кольору). Microsoft пропонує бітності 1, 2, 4, 8, 16, 24, 32, 48 і 64. В бітності 8 і нижче він вказується індексом з таблиці кольорів (палітри), а при великих: безпосереднім значенням. Колір же в будь-якому випадку можна задати тільки в колірній моделі RGB, але в бітності 16 і 32 можна отримати Grayscale[ru] з глибиною до 16 і 32-ох біт відповідно. Часткова прозорість реалізована альфа-каналом різних бітностей, але при цьому прозорість без градацій можна побічно отримати RLE-кодуванням.

У більшості випадків пікселі зберігаються у вигляді відносно простого двовимірного масиву. Для бітності 4 і 8 доступно RLE-кодування, яке може зменшити їх розмір. Формат BMP так само підтримує вбудовування даних у форматах JPEG і PNG. Але останнє скоріше більше призначене не для компактного зберігання, а для обходу обмежень архітектури GDI, яка не передбачає пряму роботу із зображеннями форматів відмінних від BMP.

В останніх версіях формату BMP так само з'явилися можливості по управлінню кольором. Зокрема, можна вказувати кінцеві точки, виробляти гамма-корекцію і вбудовувати колірні профілі ICC[en].


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

Офіційну інформацію по формату BMP можна знайти в MSDN або в довідці Microsoft Windows SDK (може йти в комплекті з деякими IDE). У файлі wingdi.h від компанії Microsoft є всі оголошення мовою C++, які стосуються даного формату. У цей файл не були включені оголошення типів, так як від цього він може бути занадто громіздким. До того ж офіційні оголошення деякі розробники можуть вважати незручними і тому їх необхідність сумнівна. Якщо вам будуть потрібні оригінальні імена констант, структур, типів та їх полів, то всі вони є в тексті даної статті.

Максимальний розмір неподільних комірок (виключаючи поля бітових структур): 32 біта і тому формат можна класифікувати як 32-бітний. Винятком можуть бути 64-бітові пікселі, але значення їх каналів можна обробляти і 16-бітними словами. Порядок байтів в 16-бітних і 32-бітових комірках усюди від меншого до більшого. Цілі числа записуються в прямому коді[ru], зі знаком — в додатковому. Якщо порівнювати з апаратними архітектурами, то порядок байт і формат чисел відповідає архітектурі x86.

Можна зустріти чотири числових типа:

   BYTE — 8-бітове беззнаковое ціле.
   WORD —16-бітове беззнаковое ціле.
   DWORD — 32-бітове беззнаковое ціле.
   LONG —32-бітове ціле зі знаком.

У форматі Windows Bitmap під структурами розуміється блок з послідовними комірками різного фіксованого розміру, у яких є умовні імена (є в багатьох мовах програмування), а не щось складніше (наприклад, потік команд довільного розміру).

У деяких елементів формату вказана версія Windows, починаючи з якої він підтримується. Мова йде в першу чергу про основні бібліотеки WinAPI такі як gdi32.dll, shell32.dll, user32.dll і kernel32.dll. Інші компоненти операційної системи (наприклад, GDI+,. NET, DirectX) можуть мати інші більш широкі можливості.


Расширение BMP обычно используется для хранения растровых изображений. .BMP – это стандартный, не сжатый битовый графический формат, используемый в Windows. BMP файл хранить графику в формате, который называется аппаратно-независимый растр (DIB от англ. Device Independent Bitmap). Файл .BMP состоит из заголовка файла (растровый идентификатор, размер файла, ширина, высота, варианты цвета, и растровые данные начальной точки), заголовка изображения (может отсутствовать), палитры (может отсутствовать) и самого изображения.

Битмапы, которые также называются растровыми изображениями, используют сетку (битовую карту или растровую) малых квадратов, которые известны, как пиксели, для представления изображений. Для каждого пикселя отводится определенное место и значение цвета. Файлы BMP могут содержать различные уровни глубины цвета на пиксель, в зависимости от количества битов на пиксель, указанной в заголовке файла. Они также могут храниться с использованием оттенков серого цветов.

Формат BMP-файлов

BMP — стандартный формат графических файлов Windows. Подавляющее большинство BMP-файлов хранится без сжатия, что облегчает работу с ними.

BMP-файлы состоят из трех основных частей:

   заголовок;
   палитра;
   графические данные (значения пикселей).

Заголовок содержит информацию о файле и находящемся в нем графическом изображении. Здесь хранятся параметры изображения (ширина, высота, глубина пикселей), а также количество цветов в нем.

Палитра присутствует только в BMP-файлах, содержащих палитровые изображения (с глубиной пикселей 8 бит и менее).

Графические данные — это и есть само изображение. Формат этих данных зависит от глубины пикселей.

Элемент палитры представляет собой четырёхбайтовую запись (структуру). В этой структуре хранятся составляющие R-красного, G-зеленого и B-синего цветов. Один байт зарезервирован. Палитра может и не использоваться, например в True Color. Структура элемента палитры:

typedef struct tagRGBQUAD {

       char   rgbBlue;
       char   rgbGreen;
       char   rgbRed;
       char   rgbReserved;

} RGBQUAD;

JPG

GIF

PNG

Лабораторна робота 3

Лабораторна робота 4

Лабораторна робота 5

Лабораторна робота 6

Лабораторна робота 7

Лабораторна робота 8

Лабораторна робота 9

Лабораторна робота 10

Лабораторна робота 11

Лабораторна робота 12

Лабораторна робота 13

Лабораторна робота 14

Лабораторна робота 15

Лабораторна робота 16