Obraz zapisany w postaci rastrowej stanowi układ barwnych (lub czarnych i białych)
punktów — pikseli (ang. pixel = picture element = element obrazu),
wypełniających obszar, zwykle o kształcie prostokąta.
Niżej przedstawiamy kilka próbek tego samego obrazu:
pierwsza wyraża go za pomocą matrycy znakowej,
druga korzysta z profesjonalnego formatu gif
,
trzecia zaś przedstawia w postaci poglądowej jego matrycę pikseli.
Niezależnie od przyjętych w poszczególnych przypadkach szczegółów technicznych,
zapis obrazu zawiera jedynie informacje o poszczególnych pikselach.
-------------------------------- ------------*******------------- ---------*************---------- --------***************--------- ------******-------******------- -----****-------------****------ ----****---------------****----- ----***----***---***----***----- ---***-----*@*---*@*-----***---- --****-----***---***-----****--- --***---------------------***--- --***---------------------***--- -****---------------------****-- -***----*------------**----***-- -***---**------------***---***-- -***--***-------------***--***-- -***--*-**-----------**-*--***-- -***----**-----------**----***-- -****----**---------**----****-- --***----***-------***----***--- --***-----***-----***-----***--- --****-----*********-----****--- ---***------*******------***---- ----***-------***-------***----- ----****---------------****----- -----****-------------****------ ------******-------******------- --------***************--------- ---------*************---------- ------------*******------------- -------------------------------- -------------------------------- |
Powyższy opis wskazuje, że niezależnie od szczegółów realizacji konkretnych rozwiązań, obraz rastrowy przechowuje mniej więcej taką samą informację, jak obraz fotograficzny o regularnym układzie jednorodnych ziaren. Jeżeli nawet punkty obrazu układają się w linie, napisy, barwne obszary o regularnym kształcie i inne „rozpoznawalne” obiekty, jest to tylko złudzenie powstające przy oglądaniu. Dokumentacja fotograficzna tekstów pozwala na przedstawienie np. strony wydawnictwa w postaci obrazka rastrowego.
Ponieważ obraz taki zawiera tylko piksele, nie da się na nim prowadzić operacji edycyjnych typowych dla tekstu.
Typowymi źródłami obrazów rastrowych są: skanowanie optyczne obrazów analogowych i fotografia cyfrowa.
Atrybut przypisany pojedynczemu pikselowi w zapisie cyfrowym jest oczywiście liczbą, zaś podczas prezentacji zwykle wyraża się go za pomocą odpowiedniego koloru. Liczba bitów przeznaczonych do zakodowania pojedynczego piksela nosi nazwę głębi (depth) obrazu. Głębia n-bitowa daje możliwość reprezentowania 2n różnych barw. W modelu RGB o 8-bitowej reprezentacji barw czystych mamy zatem do czynienia z głębią 24-bitową. W obrazie z 256-barwną paletą głębia wynosi 8 bez względu na to, jakie barwy zawiera paleta.
Dla porządku trzeba wspomnieć, że „kolor” pikseli może wyrażać nie tylko „barwę” przedmiotu (czyli cechy światła odbitego). Za pomocą barw można przedstawiać informacje dotyczące dowolnej mierzalnej wielkości (np. temperatury, prędkości, wieku, nachylenia, elastyczności, naprężeń, koncentracji zanieczyszczeń itp.). Szczególnie sensowne jest wykorzystanie do tego celu obrazów cyfrowych generowanych komputerowo na podstawie danych pomiarowych lub wyników obliczeń. Należy jednak pamiętać, że powstały tym sposobem obraz rastrowy nie zawiera w ogóle danych, na podstawie których został utworzony.
Zależnie od użytej w danym obrazie liczby kolorów (związanej m.in. z głębią obrazu) obraz może lepiej lub gorzej oddawać rzeczywistość. Przy jednakowej siatce rastra, obrazy o mniejszej głębi zawierają mniej informacji i ogląda się je z pewnym dyskomfortem. Mimo to trzeba przyznać, że nawet obrazy czarno-białe dostarczają sporo istotnej informacji. W końcu nie tak dawno druk, fotografia, kino i telewizja oferowały wyłącznie obrazy czarno-białe lub z odcieniami szarości, zaś mechanizmy rozpoznawania obrazu w mózgu doskonalą się od milionów lat.
głębia 8-bitowa (256 kolorów) | głębia 8-bitowa (256 kolorów, negatyw) | głębia 8-bitowa (256 odcieni szarości) |
głębia 4-bitowa (16 kolorów) | głębia 1-bitowa (2 kolory) | głębia 1-bitowa (czarno-biały) |
Zadaniem kompresji danych jest umożliwienie zapisania stosunkowo dużej ilości danych w stosunkowo małej przestrzeni (czyli za pomocą małej liczby znaków).
Przy zapisie obrazu bez kompresji informacje o barwie poszczególnych punktów następują jedna po drugiej w ustalonej kolejności, podobnie jak zapis znaków w tekście:
00000000000000000000000000000000 00000000000011111110000000000000 00000000011111111111110000000000 00000000111111111111111000000000 00000011111100000001111110000000 00000111100000000000001111000000 00001111000000000000000111100000 00001110000111000111000011100000 00011100000121000121000001110000 00111100000111000111000001111000 00111000000000000000000000111000 00111000000000000000000000111000 01111000000000000000000000111100 01110000100000000000011000011100 01110001100000000000011100011100 01110011100000000000001110011100 01110010110000000000011010011100 01110000110000000000011000011100 01111000011000000000110000111100 00111000011100000001110000111000 00111000001110000011100000111000 00111100000111111111000001111000 00011100000011111110000001110000 00001110000000111000000011100000 00001111000000000000000111100000 00000111100000000000001111000000 00000011111100000001111110000000 00000000111111111111111000000000 00000000011111111111110000000000 00000000000011111110000000000000 00000000000000000000000000000000 00000000000000000000000000000000
Zapis taki obowiązuje np. w plikach formatów
xpm
,
ppm
i bmp
.
Istnieje wiele sposobów kompresowania danych. Jeden z nich polega na zastąpieniu powtarzającego się znaku (ciągu znaków) jego jednym egzemplarzem i adnotacją o liczbie powtórzeń. Oto przykład prymitywnej kompresji tego typu:
32- 12-7*13- 9-13*10- 8-15*9- 6-6*7-6*7- 5-4*13-4*6- 4-4*15-4*5- 4-3*4-3*3-3*4-3*5- 3-3*5-1*1@1*3-1*1@1*5-3*4- 2-4*5-3*3-3*5-4*3- 2-3*21-3*3- 1-4*21-4*2- 1-3*4-1*12-2*4-3*2- 1-3*3-2*12-3*3-3*2- 1-3*2-3*13-3*2-3*2- 1-3*2-1*1-2*11-2*1-1*2-3*2- 1-3*4-2*11-2*4-3*2- 1-4*4-2*9-2*4-4*2- 2-3*4-3*7-3*4-3*3- 2-3*5-3*5-3*5-3*3- 2-4*5-6*5-4*3- 3-3*6-7*6-3*4- 4-3*7-3*7-3*5- 4-3*17-3*5- 4-4*15-4*5- 5-4*13-4*6- 6-6*7-6*7- 8-15*9- 9-13*10- 12-7*13- 32- 32-.
Jest ona realizowana np. w plikach formatu pcx
.
Zdarza się, że zapis skompresowany jest dłuższy od zapisu tych samych danych
bez kompresji. Jednak w „typowych” sytuacjach występowania
rozległych obszarów jednobarwnych udaje się zaoszczędzić sporo miejsca.
W bardziej zaawansowanych technikach kompresji prowadzone jest analiza częstości
występowania ciągów znaków (najczęściej dotyczy to ciągów bitów, czyli cyfr dwójkowych).
Ciągi często występujące są zastępowane krótszymi zamiennikami.
Metoda ta znajduje zastosowanie nie tylko w zapisie obrazu,
ale także przy archiwizowaniu danych dowolnego typu;
jej pierwowzoru można doszukać się w kodach komunikacyjnych
od początku ich istnienia.
Z metody tej korzysta się np. w formatach plików gif
i png
.
niech S znaczy ************ niech $ znaczy ****** niech + znaczy ----*** niech q znaczy ***---- niech # znaczy *** niech O znaczy *@* niech p znaczy ** niech ^ znaczy -------------------------------- niech ~ znaczy -------- niech % znaczy ----- niech = znaczy ---- niech _ znaczy --- niech i znaczy -- ^ ~=$*~% ~-S*~i ~S#~- =i$=_$=_ %#*~%#*=i +*~=_#*% ++_#+% _q-O_O%q i#*%#_q-#*_ i#~~%#_ i#~~%#_ -#*~~%#*i -q*~=p+i -#_p~+_#i -#i#~%#i#i -#i*-p~_p-*i#i -qp~_p+i -#*=p~-p+*i i#+=_#+_ iq-q-q-#_ i#*%$q-#*_ _qi$*=iq +=_q_q- +*~=_#*% %#*~%#*=i =i$=_$=_ ~S#~- ~-S*~i ~=$*~% ^ ^ |
|||
Nieformalne poglądowe przedstawienie kompresji bezstratnej | Obraz pobrany z pliku gif |
Obraz pobrany z pliku png |
W technikach zapisu obrazu można również wykorzystywać fakt, że dane są
przeznaczone do oglądania. Wprowadzenie pewnych zmian w układzie
punktów barwnych na fotografii może być niezauważalne dla odbiorcy,
lecz istotne dla zmniejszenia rozmiaru pliku.
Tego typu kompresja obrazu nosi nazwę kompresji nieodwracalnej
lub stratnej. Z zapisu stratnego nie można wiernie odtworzyć
pierwowzoru informacji. Format jpeg
zapisu obrazów korzysta
z kompresji nieodwracalnej. Jest to format świetny do fotografii,
lecz zupełnie nie nadaje się do rysunków technicznych ani do wykresów.
---------> |
Mówiąc o nadaniu obrazowi rastrowemu określonego rozmiaru w jednostkach metrycznych, posługujemy się pojęciem rozdzielczości. Wyraża się ją w liczbie pikseli obrazu przypadających na jednostkę długości (liczba pikseli na cal — ppi, liczba pikseli na centymetr — ppcm, liczba pikseli na szerokość obrazu — tożsama z rozmiarem matrycy rastrowej). Przez skalowanie obrazu rozumiemy naniesienie jego rysunku na matrycę (siatkę) o innej liczbie pikseli w pionie i/lub w poziomie, niż siatka oryginału.
Obrazy rastrowe z trudem znoszą operację skalowania, przy czym jakość ich na ogół się pogarsza, a nigdy nie polepsza.
Rozpatrzmy następujący obrazek testowy, rozpięty na siatce 32×32 pikseli.
Wygenerujmy na jego podstawie obraz dwukrotnie mniejszy, tzn. na siatce 16×16 pikseli. Nie powinno dziwić, że nowy obraz zawiera znacznie mniej informacji — jest przecież na nią znacznie mniej miejsca: każdy piksel nowego obrazu odpowiada blokowi czterech pikseli oryginału.
Ponowne powiększenie małego obrazka do poprzednich rozmiarów nie zwiększy ilości szczegółów. W końcu jedyna informacja, jaką dysponujemy podczas powiększania, zawiera się w tablicy pikseli powiększanego obrazu (tym razem jest to siatka 16×16 pikseli). Jakość efektu końcowego 32×32 jest zatem znacznie niższa, niż oryginału 32×32, choć do pewnego stopnia można nią sterować określając zasady przydzielania kolorów pikselom nowego obrazu, jak to jest widoczne w poniższych przykładach. Wykonano je za pomocą programu GNU GIMP z wyłączoną opcją stosowania barw pośrednich (z lewej) oraz z liniową (pośrodku) i sześcienną (z prawej) interpolacją barwy pikseli.
Otrzymane w wyniku powiększenia obrazy różnią się stopniem „wygładzenia” (co bywa pożyteczne np. przy powiększaniu skanu z rysunkiem) lub „zmiękczenia” (co bywa interesującym zabiegiem artystycznym, lecz nie wnosi żadnej nowej treści). Skalowanie z interpolacją barw stosuje się rutynowo w urządzeniach fotografii cyfrowej, gdzie nosi handlową nazwę „zoomu cyfrowego”.
Przypadek utraty informacji, jaki towarzyszy skalowaniu obrazu zawierającego powtarzalne wzorce (paski, desenie), nosi nazwę efektu moiré. Po zmianie rozmiaru matrycy często okazuje się, że regularny wzór został zaburzony, lub że pojawił się inny, niepożądany wzorzec. Zniekształcenie takie może towarzyszyć nawet niewielkiej zmianie rozmiarów matrycy, a jego bezpośrednią przyczyną jest nakładanie się wzorców obrazu i rastra, mające charakter interferencyjny. Zjawisko to występuje także podczas druku bądź skanowania obrazów. Moiré, czyli mora, to rodzaj półprzezroczystej tkaniny, na której obserwuje się podobne efekty po nałożeniu na siebie dwóch lub więcej warstw.
W przykładzie posłużymy się obrazem testowym składającym się z poziomych pasków o szerokości 2 pikseli:
Obraz o matrycy 64×64 poddany testom |
|||
Po przeskalowaniu do matrycy 61×61 i z powrotem bez interpolacji barw pośrednich |
|||
Po przeskalowaniu do matrycy 61×61 i z powrotem z interpolacją barw pośrednich |
|||
Podobny efekt związany z obrotem obrazu i z ponownym obrotem o ten sam kąt w przeciwnym kierunku, mającym „naprawić” szkody |
|||
Przeskalowanie programowe do rozmiarów 122×122 i 134×134 dokonane w momencie prezentacji obrazu (w tym przypadku przez przeglądarkę Czytelnika) |
Z każdą operacją przekształcającą dany obraz rastrowy (nie licząc interaktywnego wzbogacania go o nowe elementy) wiąże się strata informacji: niekiedy tak drastyczna jak w przedstawionych przykładach, częściej jednak znacznie mniej widoczna. Strata ta jest konsekwencją szeroko pojętej drugiej zasady termodynamiki (procesy zachodzące w układzie zamkniętym nieodwracalnie zwiększają stopień wymieszania ośrodka, będący miarą chaosu).
Od skalowania obrazów nie da się uciec; jest niezbędne choćby przy przygotowywaniu dokumentów i podczas druku (matryca drukarki też jest rastrem). Pozostaje tylko starać się, by nie tracić informacji przez nieprzemyślane skalowanie.
Mówiliśmy o skalowaniu jako o operacji edycyjnej, która zmienia rozmiar matrycy obrazu. Można również rozpatrywać „powiększanie” i „pomniejszanie” obrazu związane z chwilowym wyborem sposobu prezentacji (np. w środowiskach interaktywnych lub podczas przygotowywania dokumentów sformatowanych). Taka operacja nie zawsze prowadzi do utrwalenia zapisu nowego obrazu, lecz mimo to możemy mówić o rozmiarze matrycy służącej do prezentacji — będzie nią np. zbiór pikseli ekranowych. Zatem mamy do czynienia ze skalowaniem odwracalnym w tym sensie, że w każdej chwili można wrócić do obrazu oryginalnego (a więc bogatszego pod względem informacyjnym), lecz w ostatecznym efekcie — a jest nim odbiór wzrokowy — skutek będzie podobny, jak użycie obrazu przeskalowanego.
Powiększanie obrazka rastrowego nie jest w stanie zwiększyć ilości dostrzegalnych szczegółów. Pojedyncze piksele będą reprezentowane przez jednobarwne kwadraty lub prostokąty. Każdy z występujących niżej obrazków został przedstawiony dwukrotnie: raz w naturalnej skali wynikającej z wielkości matrycy (tablicy pikseli) pliku graficznego, a drugi raz po powiększeniu do rozmiaru wspólnego dla wszystkich próbek.
Obrazy w skali naturalnej (matryca zapisu jest identyczna z matrycą prezentacji) | |||
---|---|---|---|
szerokość 330 pikseli | szerokość 110 pikseli | szerokość 55 pikseli | szerokość 27 pikseli |
Obrazy o różnych matrycach sprowadzone do tego samego rozmiaru prezentacyjnego przez powiększenie | |||
szerokość 330 pikseli, powiększenie 1× | szerokość 110 pikseli, powiększenie 3× | szerokość 55 pikseli, powiększenie 6× | szerokość 27 pikseli, powiększenie 12× |
Obrazy o różnych matrycach sprowadzone do tego samego rozmiaru prezentacyjnego przez pomniejszenie | |||
szerokość 330 pikseli, pomniejszenie 12× | szerokość 110 pikseli, pomniejszenie 4× | szerokość 55 pikseli, pomniejszenie 2× | szerokość 27 pikseli, pomniejszenie 1× |
Liczba pikseli znajdujących się w obrazie jest równa iloczynowi liczby kolumn przez liczbę wierszy matrycy. Zatem k-krotne powiększenie obrazu sprawi, że liczba jego pikseli wzrośnie k2 razy. Podobnie powinien wzrosnąć rozmiar pliku graficznego, w którym nie stosuje się kompresji. Przy kompresji zapisu zależność między rozmiarem pliku a rozmiarami obrazu nie jest już tak oczywista. Należy się spodziewać, że im mniej zróżnicowany obraz, tym bardziej efektywna będzie jego kompresja.
format BMP (bez kompresji) | |||||
szerokość bazowa (496054 B) | 2/3 szerokości bazowej (218514 B) | 1/2 szerokości bazowej (124054 B) | 1/3 szerokości bazowej (54502 B) | 1/6 szerokości bazowej (13338 B) | 1/12 szerokości bazowej (3174 B) |
format JPEG (silna kompresja) | |||||
szerokość bazowa (33401 B) | 2/3 szerokości bazowej (7506 B) | 1/2 szerokości bazowej (4975 B) | 1/3 szerokości bazowej (2892 B) | 1/6 szerokości bazowej (1295 B) | 1/12 szerokości bazowej (709 B) |
Jak już wcześniej stwierdzono, przypisanie barw obiektom może odbywać się bezpośrednio lub pośrednio — z wykorzystaniem przygotowanej wcześniej palety barw. Ponieważ w obrazach rastrowych jedynymi obiektami graficznymi są piksele, w kontekście tego rodzaju grafiki będzie mowa jedynie o kolorach przypisanych poszczególnym pikselom.
Na przykład każdy 256-kolorowy obraz formatu gif
ma paletę 256 barw,
wybranych spośród większej liczby barw możliwych do określenia.
Obraz rastrowy zapisany znakowo w formacie xpm
ma sekcję opisu palety barw,
po której następuje tablica pikseli. Można to łatwo sprawdzić,
oglądając przykładowy plik źródłowy tego formatu.
Pliki formatu png
mogą mieć paletę, ale nie muszą.
Zmiana definicji jednego koloru palety spowoduje zmianę barwy wszystkich elementów obrazu, którym kolor ten był przypisany. Sprawdź w swoim edytorze grafiki rastrowej, jak dokonać zmiany koloru w palecie. Wcześniej może być niezbędna transformacja obrazu z trybu bezpośredniego opisu barw pikseli (np. RGB) do trybu z paletą (indeksowanego).
Zamieszczony niżej obrazek przedstawia okno narzędziowe programu GNU GIMP udostępniające paletę barw pliku graficznego (oczywiście z fotografią Księżyca). No cóż: nie korzysta on wcale z 256 kolorów — widać, że jest ich tylko 128.
Niektóre formaty zapisu obrazów umożliwiają wykorzystanie specjalnego koloru
przezroczystego, którego opis nie jest możliwy w klasycznych
systemach RGB ani HSB.
Do formatów tych należą m.in. gif
, png
i xpm
.
Obrazy zawierające piksele barwy przezroczystej mogą służyć do prezentacji
elementów graficznych o obrysie innym, niż prostokątny.
Są one również użyteczne w dokumentach i grafikach o strukturze warstwowej,
gdy warstwy nimi nakryte mają pozostać całkowicie lub częściowo widoczne.
Uśmiech kota z Cheshire (format gif ) |
Księżyc w przestworzach (format png z kolorem przezroczystym) |
Chmury zakrywające niebo (format png z kanałem alfa) |
Format png
pozwala ponadto obsłużyć znany z systemu barw
ERGB liczbowy „współczynnik przezroczystości”
zwany współczynnikiem alfa, analogiczny do współczynników dla kolorów czystych.
Pozwala on na „prześwitywanie” warstw dokumentu umieszczonych pod obrazem.
ppm
xpm
xpm
można tworzyć nawet zwykłym edytorem znakowym.bmp
pcx
gif
jpeg
j2
png
tif
djvu
Poniższy wyciąg ze spisu zawartości kartoteki zawiera rozmiary niektórych plików graficznych prezentowanych w tym dokumencie. Są to same „księżyce” różnych formatów, rozmiarów i głębi.
-rw-r--r-- 495015 moon.ppm -rw-r--r-- 334172 moon.xpm -rw-r--r-- 166160 moon.bmp -rw-r--r-- 157009 moon.png -rw-r--r-- 152994 moon.pcx -rw-r--r-- 144731 -moon.png -rw-r--r-- 126464 moon.tif -rw-r--r-- 87287 moon.gif -rw-r--r-- 73694 -moon256col.png -rw-r--r-- 73694 moon256col.png -rw-r--r-- 68906 moon256gray.png -rw-r--r-- 33401 moon.jpg -rw-r--r-- 32536 moon2bw.jpg -rw-r--r-- 30395 moon016col.png -rw-r--r-- 29057 moon2.jpg -rw-r--r-- 14655 moon16.jpg -rw-r--r-- 13752 -moon.jpg -rw-r--r-- 12684 moonbw.jpg -rw-r--r-- 11036 moon004col.png -rw-r--r-- 7506 moon-220.jpg -rw-r--r-- 7371 moon002gray.png -rw-r--r-- 7371 moon002col.png -rw-r--r-- 6662 moontran.png -rw-r--r-- 5765 moont.gif -rw-r--r-- 4925 moon-165.jpg -rw-r--r-- 2892 moon-110.jpg -rw-r--r-- 1295 moon-055.jpg -rw-r--r-- 709 moon-027.jpg
format bmp |
format pcx |
format gif |
format tiff |
format png |
format jpeg |
format bmp |
format pcx |
format gif |
format tiff |
format png |
format jpeg |