BMP format

Rastrska grafika.

Splošno o formatu:

BMP datotečni format ima več imen. Tako »bitmap image file«, »device independent bitmap (DIB) file format« oz. najkrajše »bitmap« vse predstavljajo isto stvar. Bitmap spada med rastrske slikovne formate. Namenjen je shranjevanju bitnih digitalnih slik in je neodvisen od naprav za prikazovanje (grafičnih procesorjev). Format ima končnico .BMP ali .DIB [1][2].

Lastnosti formata:

BMP format hrani dvodimenzionalne digitalne slike. Slike so lahko monokromatske ali barvne v različnih barvnih globinah. Dodatno je možna (ne pa nujna) uporaba kompresije, barvnih profilov in nivojev prosojnosti. Primarno je format namenjen za delovanje v Windows in OS/2 okoljih [1].

Uporaba:

Format BMP je zelo razširjen v Windows okolju. Format je relativno dobro dokumentiran, enostaven in brez patentov zato je njegovo procesiranje (branje in zapisovanje) podprto v mnogih operaciskih sistemih. Bitmapi so bili v preteklosti del mnogih grafičnih vmesnikov (GUI) [1]. BMP format je zaradi neprisotne kompresije (surovi – RAW– podatki) danes uporabljen za arhivsko shranjevanje in uporabo pri obdelavi fotografij [3].

Datoteke v BMP formatu so relativno velike zaradi (načeloma) neprisotne kompresije. Večino BMP datotek je mogoče bistveno stisniti z uporabo npr. ZIP algoritma. Pri tem ne pride do izgube izvornih podatkov. Razlog za možno stiskanje je pogosti ponovitvi podatkov v zapisu [1].

Ker je struktura formata (opisana v nadaljevanju) zelo enostavna lahko BMP slike »narišemo« s pomočjo urejevalnikov besedila (npr. Notepad++). Risanje prikazuje spodnji videoposnetek:

Struktura formata .BMP:

Struktura .BMP formata je zelo obširna ampak odlično dokumentirana. Za razumevanje formata v detajle priporočamo branje vira [1] in Microsoft Windows dokumentacije [4]. Celotno strukturo BMP formata prikazuje spodnja slika.

Slika v javni domeni: Wikipedija.

Struktura formata je krajše obrazložena v spodnji tabeli.

ime dela strukture

obvezno

velikost (bajtov)

namen

Bitmap file header

da

14

Shranjevanje osnovnih podatkov o bitni datoteki (tip, velikost, struktura datoteke).

DIB header

da

stalna velikost (7 različnih možnosti)

Shranjevanje natančnejših podatkov o bitni sliki in definicija točkastega (pixel) formata (dimenzija slike, tip stiskanja, barvni format).

Extra bit masks

ne

12 ali 16

Definicija točkastega (pixel) formata.

Color table

odvisno*

različno

Določitev barv uporabljenih v bitni sliki (informacije o barvah, pomembnejše najprej).

Gap1

ne

različno

Poravnanost strukture.

Pixel array

da

različno

Določitev dejanskih vrednosti točk (opis slike, začetek levo spodaj).

Gap2

ne

različno

Poravnanost strukture.

ICC color profile

ne

različno

Izbira barvnega profila za upravljanje z barvami.

*Barvna tabela je nujna za barvne globine manjše od 8 bitov [1][2].

 

Različne barvne globine:

Barvna globina vpliva na število možnih prikazanih barv slike. BMP format podpira različne barvne globine, ki so določene v glavi datoteke (»file header«). Tipična barvna globina za BMP datoteke je 24-bitna [5]. Vse podprte barvne globine so 1, 4, 8, 16, 24, 32, in 64 bitne [1]. Format BMP dovoljuje prosojne plasti, ki prav tako zahtevajo določeno število bitov. Prosojne plasti so pogosteje uporabljene pri višjih barvnih globinah npr. 32-bitni [3].

1-bitna globina: Vsaka točka (pixel) ima lahko le 2 vrednosti. Slike so monokromatske (npr. le črna in bela barva).

2-bitna globina: 4 različne barve

4-bitna globina: 16 različnih barv

8-bitna globina: 256 različnih barv

16-bitna globina: 65,536 različnih barv

24-bitna globina: 16,777,216 različnih barv [5].

Spodnja slika prikazuje razporeditev števila bitov za vsako izmed barv in prosojno plast. Skupaj 16-bitov (štirje za prosojno plast, štiri za rdečo, štiri za zeleno in štiri za modro barvo).

Slika v javni domeni: Wikipedija.

Načini kompresije:

Slike v 16 in 32 bitni globini so vedno hranjene brez kompresije. Prav tako je mogoče brez kompresije hraniti slike v ostalih, poljubnih barvnih globinah. Barvne palete je mogoče stisniti z 4 ali 8 bitnim RLE (Run-length encoding) ali Huffmanovim 1D algoritmom. Slike v 24-bitni globini lahko stisnemo z 24-bitnim RLE algoritmom [1].

Spodnji posnetek prikazuje uporabo RLE kompresije na sliki z barvno 1-bitno barvno globino.

[1] BMP file format (2020). Pridobljeno s https://en.wikipedia.org/wiki/BMP_file_format

[2] Rugelj, J. (2019). Zapiski s predavanj pri predmetu Večpredstavnost in hipertekst. Ljubljana: Pedagoška fakulteta.

[3] Hiwarale. U., (2019), Bits to Bitmaps: A simple walkthrough of BMP Image Format. Pridobljeno s https://itnext.io/bits-to-bitmaps-a-simple-walkthrough-of-bmp-image-format-765dc6857393

[4] Windows Metafile Format (2019). Pridobljeno s https://docs.microsoft.com/en-us/openspecs/windows_protocols/ms-wmf/4813e7fd-52d0-4f42-965f-228c8b7488d2

[5] Types of Bitmaps (2018). Pridobljeno s https://docs.microsoft.com/en-us/windows/win32/gdiplus/-gdiplus-types-of-bitmaps-about