background image

Wydział Fizyki, Matematyki i Informatyki 
Instytut Informatyki

Zakład Grafiki Komputerowej i Obliczeń Wysokiej Wydajności

Grafika Komputerowa

wykład 11: 

Formaty plików rastrowych
Budowa przykładowego pliku 

rastrowego (bmp)

                    

background image

Formaty grafiki rastrowej 

          BMP  (Bit  MaP)  -  format  BMP  jest  standardowym  formatem 

bitmap                          w  środowisku  Windows  i  w  systemie  OS/2.  Po 
rozejściu  się  firm  Microsoft      i  IBM  powstały  osobne  standardy. 
Zachowując pliki w „starym” formacie, istnieje możliwość wyboru 
głębi  bitowej  koloru  od  1,  4,  8  lub  24  bitów.            W  „nowym” 
formacie kolor zapisywany może być w systemie RGBA (tu: BGRA 
- 32 bity). W trybach poniżej 8 bitów występuje paleta kolorów.

          Zapis  obrazu  zawiera  informację  o  kolorze,  a  następnie  obszar 

danych  pikseli  opisywanych  od  lewego  dolnego  do  prawego 
górnego rogu.

          W  przypadku  obrazów  BMP  można  skorzystać  z  bezstratnej 

kompresji  Run-Length-Encoding  (RLE).  Wersja  5  została 
wyposażona  w  możliwość obsługi  kompresji stosowanej w  JPEG  i 
PNG.

          Zaletą  tego  formatu  jest  fakt,  iż  jest  on  rozpoznawany  przez 

wszystkie  wersje  systemu  Windows.  Podstawową  wadą  są  duże 
rozmiary plików.

Grafika komputerowa

 

– wykład 11

background image

Do  kompresji  grafiki  szczególnie  nadaje  się  algorytm  RLE  (Run-Leght 
Encoding).
  Jeśli  znak  (lub  w  tym  przypadku  wartość  piksela)  powtórzy 
się  więcej  niż  trzy  razy  z  rzędu,  to  jest  zapisywany  tylko  ten  znak  i 
liczba powtórzeń. Można objaśnić to na przedstawionym schemacie. 
Łańcuch danych do przetwarzania:
DDDDDDBBNNNNKKKKKOOO
po skompresowaniu:
6^DBB4^N5^KOOO
Przed znakiem ^ pojawia się liczba powtórzeń piksela o danej wartości.
W przytoczonym przykładzie oszczędność miejsca sięga 30%. 
Algorytm  jest  wysoce  efektywny  w  stosunku  do  obrazów  o  dużych 
obszarach  wypełnionych  jednolitą  barwą,  a  szczególnie  o  długich 
ciągach poziomych pikseli.

Kompresja RLE

Grafika komputerowa

 

– wykład 11

background image

Formaty grafiki rastrowej 

     Kompresja RLE  (Run Length Encoding)

Grafika komputerowa

 

– wykład 11

background image

Formaty grafiki rastrowej

GIF  (Graphics  Interchange  Format)  -  definiuje  protokół,  który 

umożliwia  niezależną sprzętowo transmisję grafiki on-line. GIF 
składa się               z sekwencji bloków, wśród których można 
wyróżnić 3 grupy: kontrolne, informacyjne oraz specjalne.

• Bloki  kontrolne  (np.:  nagłówek  czy  opis  ekranu  logicznego) 

zawierają informacje dla ustawienia parametrów sprzętu.

 

• Bloki  informacyjne,  np.:  opis  obrazu  i  rozszerzenie  tekstowe, 

mieszczą  dane  używane  do  wyświetlenia  obrazu  na  ekranie 
komputera. 

• Bloki  specjalne,  np.:  komentarze  i  rozszerzenie  aplikacyjne, 

służą jedynie ogólnej informacji.

Grafika komputerowa

 

– wykład 11

background image

Formaty grafiki rastrowej

     GIF (Graphics Interchange Format) 
          Zaletami  formatu  są  małe  rozmiary  plików  oraz  możliwość 

obsługi przez wszystkie przeglądarki internetowe. Nadaje się do 
publikacji grafiki           w Internecie (w tym tworzenia obrazów 
animowanych).  Mimo  swego  podeszłego  wieku  wciąż  cieszy  się 
popularnością,  chociaż  jest  ostatnio  wypierany  przez  animacje 
Flasha. Umożliwia zastosowanie przezroczystości oraz interlacing 
(przeplot).   

     Nie ma on jednak możliwości wykrywania błędów. Głębia barw 

ograniczona jest do 8 bitów (256 kolorów). Paleta kolorów może 
być  optymalizowana.  Do  2006  roku  licencjonowany,  ponieważ 
obrazy  są  kompresowane  bezstratną  metodą  LZW.  Dlatego 
stworzono konkurencyjny format PNG.

Grafika komputerowa

 

– wykład 11

background image

Formaty grafiki rastrowej

GIF (Graphics Interchange Format) 
     

Obraz w formacie GIF (kolor 8-bitowy) i JPEG (kolor 24-bitowy)

Grafika komputerowa

 

– wykład 11

background image

Nazwa  algorytmu  LZW  pochodzi  od  pierwszych  liter  nazwisk  jego 
autorów: Jacob Ziv, Abraham Lempel i Terry A.Welch. Pierwsza wersja 
algorytmu  pochodzi  z  1977  roku  i  znana  jest  jako  LZ77.  Rok  później 
pojawił się nieco zmieniony algorytm LZ78. Po publikacji w 1984 roku 
przez  Terrego  Welcha  praktycznej  realizacji  LZ78,  algorytm  otrzymał 
ostateczna  nazwe  LZW.  W  pliku  GIF  stosowana  jest  jego 
implementacja o nazwie Variable Length Code LZW.
Uwaga: Algorytm LZW jest chroniony patentem.
Właścicielem  patentu  jest  firma  Unisys  Corporation.  Od  1995  roku 
producenci,  którzy  chcą  sprzedawać  oprogramowanie,  używające 
algorytmu  LZW  do  przetwarzania  danych  muszą  mieć  licencję  od 
Unisys Corporation i licencja ta jest płatna. Zwolnieni od opłat są tylko 
użytkownicy końcowi i organizacje nie komercyjne.

Kompresja bezstratna 
LZW

Grafika komputerowa

 

– wykład 11

background image

Idea algorytmu LZW jest stosunkowo prosta i polega na zastępowaniu 
znalezionych  ciągów  danych  specjalnymi  kodami.  W  trakcie 
przeglądania zbioru wejściowego program zapamiętuje w tablicy (lub 
innej strukturze danych) znalezione ciągi danych i odpowiadające im 
kody.  Algorytm  jest  jednoprzebiegowy  i  nie  wymaga  zapisu  tablicy  z 
kodami do zbioru wynikowego.
W  zależności  od  konkretnej  implementacji,  algorytm  może  operować 
na  bajtach  bądź  na  danych  o  innej  długości.  Taka  elastyczność  ma 
szczególne  znaczenie  przy  kompresji  grafiki,  w  której  opis  jednego 
piksela może być kodowany różną ilością bitów.

Kompresja LZW

Grafika komputerowa

 

– wykład 11

background image

Wraz ze wzrostem ilości danych wejściowych rośnie wielkość tablicy  
                        z  sekwencjami  danych.  Dzięki  temu  rośnie  także 
prawdopodobieństwo,  wzrostu  stopnia  kompresji  kolejnych  porcji 
danych. Implementacja algorytmu LZW musi uwzględnić możliwość 
przepełnienia się tablicy oraz koniec danych.

Kompresja LZW

Grafika komputerowa

 

– wykład 11

background image

Podczas  procesu  dekompresji  danych,  program  odtwarza  tablice 
kodów  na  podstawie  odczytanych danych.  Do poprawnego  odczytu 
dekompresor  musi  znać  największy  możliwy  kod  danych  oraz  kody 
specjalne. 

Dekompresja  przeprowadzana  jest  w  oparciu  o  kody  zawarte  w 
tabeli                              i  prowadzi  do  uzyskania  ciągu  analogicznego  z 
wejściowym.

Dekompresja danych

Grafika komputerowa

 

– wykład 11

background image

Formaty grafiki rastrowej

     TIFF (Tagged Image File Format) – został opracowany do druku 

postscriptowego.  Znajduje  zastosowanie  w  wymianie  plików 
między  aplikacjami  i  platformami  komputerowymi.  Jest  czytany 
przez większość systemów operacyjnych. 

          Format  TIFF  może  posługiwać  się  algorytmem  kompresji 

bezstratnej  LZW.  Oparty  jest  on  na  koncepcji  tagów,  które 
dostarczają  informacji  na  temat  obrazu  (typ  kompresji,  rozmiar, 
kolejność bitów oraz autor, data                   i oprogramowanie 
źródłowe).  TIFF  5.0  definiuje  45  tagów.  Ze  względu  na  wysoką 
jakość  obrazu  TIFF  jest  używany  w  poligrafii,  fotografii, 
profesjonalnym przetwarzaniu i analizie obrazu. Jego podstawową 
wadą jest duży rozmiar plików.

          W  przypadku  zastosowania  pewnych  metod  kompresji  mogą 

występować  trudności  z  rozpoznawaniem  przez  różne  programy 
graficzne.

Grafika komputerowa

 

– wykład 11

background image

Formaty grafiki rastrowej

          PNG  (Portable  Network  Graphics  -  "ping")  –  elastyczny, 

przenośny  format  opracowany  jako  alternatywa  dla  standardu 
GIF. Nie zawiera żadnych rozwiązań patentowanych.

     Podobnie jak GIF, jest on używany do wyświetlania obrazów na 

stronach WWW i w serwisach interaktywnych. Jest niezależny od 
platformy. PNG zawiera pełną informację o kolorze (do 48 bitów); 
w  celu  zmniejszenia  rozmiaru  plików  posługuje  się  algorytmem 
kompresji  bezstratnej  DEFLATE,  który  łączy  LZ77  i  kodowanie 
Hufmanna, co zapewnia wydajniejszą kompresję niż GIF. 

     Jego zaletą jest pełna kontrola poprawności pliku i trójstopniowa 

korekcja błędów.

     Wyświetlanie może odbywać się z przeplotem w obu kierunkach, 

co daje lepszy efekt niż jednokierunkowy przeplot w formacie GIF.

Grafika komputerowa

 

– wykład 11

background image

Formaty grafiki rastrowej

     PNG (Portable Network Graphics - "ping") 
     PNG nie daje możliwości zastosowania animacji. Umożliwia za to 

wyświetlanie 

barw 

zadanym, 

dowolnym 

stopniu 

przezroczystości  oraz  dodatkowych  informacji  o  obrazie.  Jego 
wadą  jest  brak  obsługi  przez    niektóre  przeglądarki.  Uwzględnia 
także korekcję gamma.

          Plik  PNG  składa  sie  z  serii  bloków  (chunk).  Po  bloku  PNG  file 

signature,  który  rozpoczyna  plik  PNG,  obowiązkowo  występują: 
IHDR  (nagłówek),  IDAT  (dane  obrazu)  oraz  IEND  (zakończenie). 
Wszystkie  pola  liczbowe            w  pliku  PNG  zapisywane  są  w 
układzie  Big-Endian,  czyli  poszczególne  bajty  zapisywane  są  od 
najstarszego do najmłodszego.

Grafika komputerowa

 

– wykład 11

background image

Formaty grafiki rastrowej

     Kompresja LZ77

     Algorytm LZ77 jest metodą bezstratnej kompresji słownikowej, 

opracowanej    w  1977  roku  przez  Abrahama  Lempela  i  Jacoba 
Ziva.  Opiera  się  on  na  zasadzie,  iż  poszczególne  słowa  lub  ich 
fragmenty  powtarzają  się  w  danym  tekście.  W  słowniku  jest 
zatem  zapamiętywana  pewna  liczba  ostatnio  kodowanych 
danych, następnie w przypadku  powtórzenia się jakiegoś ciągu 
znaków,  jest  on  zastępowany  dwiema  liczbami,  z  których 
pierwsza  określa  jego  pozycję  w  słowniku,  a  druga  długość 
ciągu.  

Grafika komputerowa

 

– wykład 11

background image

Kodowanie Huffmana

Dla  danego  zbioru  symboli  S  =  {x

1

,  …,  x

n

}    istnieje  zbiór 

stowarzyszonych  z  nim  prawdopodobieństw    P  =  {p

1

,  …,  p

n

}. 

Symbolami są najczęściej bajty, lecz mogą nimi być np.: pary znaków. 
Prawdopodobieństwa  mogą  zostać  z  góry  określone  dla  danego 
zestawu 

danych, 

np.: 

poprzez 

wyznaczenie 

częstotliwości 

występowania  znaków  w  tekstach  danego  języka.  Częściej  jednak 
wyznacza się je indywidualnie dla każdego zestawu danych.
Kodowanie  Huffmana  polega  na  utworzeniu  słów  kodowych  (ciągów 
bitowych),  których  długość  jest  odwrotnie  proporcjonalna  do 
prawdopodobieństwa p

i

. Tzn. im częściej dane słowo występuje (może 

wystąpić) w ciągu danych, tym mniej zajmie bitów.

Kompresja JPEG

Grafika komputerowa

 

– wykład 11

background image

Kodowanie Huffmana

Własności kodu:
•  kod  Huffmana  jest  kodem  prefiksowym  -  żadne  słowo  kodowe  nie 
jest początkiem innego słowa; 
• jeśli prawdopodobieństwa są różne, tzn. p

j 

p

i

, to długość kodu dla 

symbolu x

j 

jest nie większa od kodu dla symbolu x

i

• słowa kodu dwóch najmniej prawdopodobnych symboli mają równą 
długość; 
• dwa najdłuższe symbole różnią się tylko jednym, ostatnim bitem. 
Kompresja polega na zastąpieniu symboli otrzymanymi kodami.

Kompresja JPEG

Grafika komputerowa

 

– wykład 11

background image

Drzewo Huffmana

A

0.1

Mamy symbole A,B,C,D 
o prawdopodobieństwach 
wystąpienia odpowiednio [0.1, 
0.2, 0.3, 0.4].

Łączymy węzły odpowiadające 
symbolom (A) i (B). Teraz 
mamy (A + B) = 0.3, (C) = 
0.3, (D) = 0.4

B

0.2

C

0.3

D

0.4

A

0.1

B

0.2

C

0.3

D

0.4

0.3

A

0.1

B

0.2

C

0.3

D

0.4

0.3

Łączymy węzły 
odpowiadające drzewku (A + 
B) oraz (C). Teraz mamy ((A 
+ B) + C)=0.6 i (D) = 0.4

0.6

Grafika komputerowa

 

– wykład 11

background image

Drzewo Huffmana

A

0.1

B

0.2

C

0.3

D

0.4

0.3

Łączymy węzły 
odpowiadające drzewku ((A 
+ B) + C) oraz (D). Teraz 
mamy tylko jeden wolny 
węzeł - drzewko (((A + B) + 
C) + D) = 1.0 
Obliczamy kody znaków: 
A = lewo, lewo, lewo= 000 
B = lewo, lewo, prawo = 001 
C = lewo, prawo = 01 
D = prawo = 1 

0.6

1.0

0

1

0

0

1

1

Grafika komputerowa

 

– wykład 11

background image

Formaty grafiki rastrowej

        JPEG  (Joint  Photographic  Expert  Group)  -  umożliwia 

zastosowanie stratnej kompresji danych o regulowanym stopniu. 
Algorytm  zastosowany  w  formacie  JPEG  opiera  się  o  DCT 
(Discrete  Cosinus  Transformation).  Przy  wyborze  wysokiego 
poziomu  kompresji  pliki  mają  niewielkie  rozmiary,  co  umożliwia 
ich publikację na stronach www. Są odczytywane przez wszystkie 
przeglądarki.  Podstawową  wadą  jest  pogorszenie  jakości  obrazu 
(różnice na granicach bloków, zakłócenia na granicach obszarów) 
przy dużym stopniu kompresji oraz brak przezroczystości.

          Format  pozwala  na  zapis  plików  o  rozdzielczości  barw  do  24 

bitów  (16,7  mln  kolorów)  w  systemach  CMYK  i  RGB,  nadaje  się 
zatem  do  prezentacji  zdjęć  i  obrazów  ciągłotonalnych.  Nie 
zapewnia  dobrych  efektów                              w  przypadku  koloru  1-
bitowego  oraz  obrazów zawierających wyraźne linie czy granice 
między obszarami. 

Grafika komputerowa

 

– wykład 11

background image

JPEG  jest 

najpowszechniejszym  algorytmem  kompresji  obrazów. 

Wiele  rozwiązań  tu  zastosowanych  jest  używanych  także  w  innych 
algorytmach. 

Kolejne kroki algorytmu JPEG to:
•  zamiana  przestrzeni  kolorów  z  RGB  na  kanał  jasności  i  dwa  kanały 
koloru.  Ludzie znacznie dokładniej postrzegają drobne różnice jasności 
od  drobnych  różnic  barwy,  a  więc  użyteczne  jest  tutaj  użycie  różnych 
parametrów kompresji. (Krok nie jest obowiązkowy)
• obniżenie rozdzielczości kanałów koloru, zwykle odrzuca się co drugą 
wartość wzdłuż osi poziomej, i każdą na pionowej, choć możliwe są też 
inne  ustawienia.  Tak  radykalne  cięcie  danych  nieznacznie  wpływa  na 
jakość, ponieważ rozdzielczość postrzegania kolorów przez ludzkie oko 
jest słaba. (Krok nie jest obowiązkowy)

Kompresja JPEG

Grafika komputerowa

 

– wykład 11

background image

•  Podzielenie  każdego  kanału  obrazka  na  bloki  8x8.  W  przypadku 
kanałów  kolorów,  jest  to  8x8  aktualnych  danych,  a  więc  zwykle 
16x8. 
•  Transformata  kosinusowa  każdego  z  bloków.  Zamiast  wartości 
pikseli  mamy  teraz  średnią  wartość  wewnątrz  bloku  oraz 
częstotliwości  zmian  wewnątrz  bloku,  obie  wyrażone  przez  liczby 
zmiennoprzecinkowe.  Transformata  DCT  jest  odwracalna,  więc  na 
tym etapie nie ma utraty żadnych danych. 
•  Zastąpienie  średnich  wartości  bloków  przez  różnice  wobec 
wartości  poprzedniej.  Poprawia  to  w  pewnym  stopniu  współczynnik 
kompresji. 
•  Kwantyzacja,  czyli  zastąpienie  danych  zmiennoprzecinkowych 
przez  liczby  całkowite.  To  właśnie  tutaj  występują  straty  danych. 
Zależnie  od  parametrów  kompresora,  odrzuca  się  mniej  lub  więcej 
danych.  Zasadniczo  większa  dokładność  jest  stosowana  do  danych 
dotyczących niskich częstotliwości niż wysokich. 
Kompresja algorytmem bezstratnym, w tym przypadku algorytmem 
Huffmana. 

Kompresja JPEG

Grafika komputerowa

 

– wykład 11

background image

Formaty grafiki rastrowej

 
Kompresja JPEG

Grafika komputerowa

 

– wykład 11

background image

Kompresja JPEG

Typowe zakłócenia wynikające z algorytmu kompresji JPEG – 
widoczne nieciągłości pomiędzy poszczególnymi blokami pikseli

Grafika komputerowa

 

– wykład 11

background image

Formaty grafiki rastrowej

Kompresja JPEG

Kompresja ze 
współczynnikiem 
jakości 0% - 2 kB

Kompresja ze 
współczynnikiem 
jakości 10% - 3 kB

Grafika komputerowa

 

– wykład 11

background image

Formaty grafiki rastrowej

Kompresja JPEG

Kompresja ze 
współczynnikiem 
jakości 50% - 8 kB

Kompresja ze 
współczynnikiem 
jakości 100% - 48 kB

Grafika komputerowa

 

– wykład 11

background image

Formaty grafiki rastrowej

Opcje

BMP

GIF

PNG

JPEG

Liczba 

kolorów 

(bity)

24

8

48

24

Przezroczysto

ść

NIE

TAK

(jest-nie ma dla 

kolorów)

TAK

(256 stopni dla 

każdego piksela)

NIE

Przeplot/

Progresja

NIE/NIE

TAK/NIE

TAK/TAK

NIE/TAK

Animacja

NIE

TAK

NIE

NIE

Kompresja

NIE

(z małym wyjątkiem)

TAK

(bezstratna, LZW)

TAK

(bezstratna, LZ77)

TAK

(stratna)

Rozmiar pliku

BARDZO DUŻY

ŚREDNI

MAŁY

BARDZO MAŁY

Zastosowanie

Zdjęcia do dalszej 

obróbki

Ozdobniki graficzne, 

przyciski, bannery

Ozdobniki graficzne, 

przyciski

Zdjęcia do prezentacji 

w Internecie

Grafika komputerowa

 

– wykład 11

background image

Optymalne formaty grafiki rastrowej dla publikacji na 

stronach www 

Obiekt graficzny Cechy charakterystyczne

Optymalny format

Banery reklamowe Animacje z napisami, niewielką liczbą 

kolorów

GIF 32 kolory

Przyciski, 

odnośniki

Napisy, różna liczba kolorów

W zależności od cech:
GIF, JPG 40% jakości

Animacje

Średnia liczba kolorów, mała 

rozdzielczość

GIF

Galerie 

internetowe

Duża liczba kolorów, łagodne przejścia 

tonalne, wysokie rozdzielczości

JPG 40% - 50%

Miniatury
(thumbnails)

Duża liczba kolorów, niskie 

rozdzielczości
funkcja podglądu

GIF, JPG 30% jakości

Tła

Mała liczba kolorów

GIF

Tła

Duża liczba kolorów, mała jakość

JPG 20% - 40%

Grafika komputerowa

 

– wykład 11

background image

Budowa pliku rastrowego na przykładzie 

formatu BMP

Nagłówek pliku BMP (BITMAPFILEHEADER) zajmuje 14 
bajtów:

— bfType/usType - pole identyfikacji rodzaju pliku ( „BM”),
— bfSize/cbSize - liczba określająca długość pliku (w 
bajtach),
— bfReserved1/xHotspot oraz bfReserved2/yHotspot – 
każdorazowo po cztery bajty zarezerwowane i nie używane
w bitmapach (wartość 0),
— bfOBits/oBits - liczba określająca położenie obszaru 
danych względem początku pliku.

Grafika komputerowa

 

– wykład 11

background image

Budowa pliku BMP

Struktura BITMAPCOREHEADER (w starym formacie BMP, 
bezpośrednio po nagłówku, zawiera informacje o obrazie 
zapisanym    w pliku):

— bcSize/cbFix - liczba zawierająca wielkość struktury 
(definicja wersji; w starej wersji wartość ta wynosi 12),
— bcWidth/cx - liczba określająca szerokość obrazu (w 
pikselach),
— bcHeight/cy - wysokość obrazu (w pikselach),
— bcPlanes/cPlanes - liczba określająca ilość płatów 
urządzenia docelowego, wartość 1,
— bcBitCount/cBitCount - liczba bitów na piksel obrazu, 
dopuszczalne wartości to: 1, 4, 8 i 24.

Grafika komputerowa

 

– wykład 11

background image

Budowa pliku BMP

Struktura BITMAPINFOHEADER (w nowym formacie BMP, 
bezpośrednio po nagłówku, tylko dla Windows):

— bcSize - liczba zawierająca wielkość struktury (numer 
wersji);
w „nowym” formacie BMP dla Windows wynosi 40,
— bcWidth - liczba określająca szerokość obrazu (w 
pikselach),
— bcHeight - wysokość obrazu (w pikselach),
— bcPlanes - ilość płatów urządzenia docelowego (wartość 
1),
— bcBitCount - ilość bitów na piksel obrazu (1, 4, 8, 16, 24 
lub 32),
— biCompression – sposób kompresji obrazu:
0 - brak kompresji,
1 - kompresja RLE8 (ang. Run Length Encoding 8-Bits),
2 - kompresja RLE4 (ang. Run Length Encoding 4-Bits),
3 - brak kompresji, 
4 - obraz jest w formacie JPEG,
5 - obraz jest w formacie PNG;

Grafika komputerowa

 

– wykład 11

background image

Budowa pliku BMP

Struktura BITMAPINFOHEADER (c.d.):

— biSizeImage - liczba określająca wielkość obszaru danych 
obrazu  (w bajtach),
— biXPelsPerMeter – rozdzielczość pozioma obrazu (w 
punktach na metr),
— biYPelsPerMeter – rozdzielczość pionowa (w punktach na 
metr),
— biClrUsed - liczba określająca, ile kolorów z mapy kolorów 
jest wykorzystywanych w obrazie (0, gdy wykorzystywana jest 
cała mapa kolorów),
— biClrImportant - liczba określająca, ile kolorów wystarcza, 
aby możliwie poprawnie wyświetlić obraz zawarty w pliku.

Grafika komputerowa

 

– wykład 11

background image

Budowa pliku BMP

Mapa kolorów
„Stary format”: 
Mapa kolorów składa się z trzybajtowych struktur nazywanych  
           w Windows RGBTRIPLE (trójka RGB)Struktury te 
zawierają definicje składowych barw w układzie BGR 
(niebieski, zielony i czerwony). 
Mapa ta nie występuje w obrazach o głębokości bitowej 
koloru24.
„Nowy” format:
Każda pozycja mapy kolorów opisywana jest czterobajtowymi 
strukturami nazywanymi w Windows RGBQUAD. Struktury te 
zawierają
definicje składowych barw w układzie BGRA (niebieski, zielony, 
czerwony oraz nieużywany atrybut). 
Jeżeli pole biClrUsed struktury BITMAPINFOHEADER jest 
większe od zera, to jego wartość wyznacza ilość definicji 
kolorów zawartych
w mapie kolorów. W przeciwnym wypadku o wielkości mapy 
kolor decyduje ilość bitów na piksel. Mapa kolorów nie 
występuje w obrazach o głębokości bitowej barwy 16, 24 i 32.

Grafika komputerowa

 

– wykład 11

background image

Budowa pliku BMP

Dane obrazu
W pliku BMP po palecie kolorów następuje obszar danych 
poszczególnych pikseli obrazu. Piksele są zapisywane 
wierszami od najniższego do najwyższego i w kolejności od 
lewej do prawej, zatem lewy dolny róg obrazu jest zapisany na 
początku obszaru danych, a prawy górny - na końcu.

Kolejne wersje plików BMP (4 oraz 5) zawierają odpowiednio 
struktury
BITMAPV4HEADER oraz BITMAPV5HEADER, które pojawiają się 
bezpośrednio po nagłówku pliku (BITMAPFILEHEADER). Dają 
one nie tylko możliwość zastosowania korekcji gamma dla 
poszczególnych kanałów koloru, ale także zapisu barwy w 
niezależnym sprzętowo systemie CIE XYZ.

Grafika komputerowa

 

– wykład 11


Document Outline