« poprzedni punkt |
Po wygenerowaniu obrazu powstaje problem w jaki sposób go przechowywać i przesyłać. Przyjęty sposób reprezentacji obrazu powinien umożliwiać odtworzenie obrazu po odczytaniu z pamięci lub po zakończeniu transmisji. Równocześnie, reprezentacja powinna być możliwie oszczędna, głównie ze względu na ograniczone szybkości transmisji oraz ograniczenia związane z zajętością pamięci. Metoda reprezentacji powinna być dostatecznie elastyczna po to, żeby możliwe było zapisywanie informacji o różnych obrazach, poczynając od niedużych obrazów czarno-białych a kończąc na obrazach o dużej rozdzielczości i dużej liczbie bitów poświęcanych na pamiętanie informacji o barwie pojedynczego piksela.
Jak dotychczas nie opracowano jednolitej reprezentacji obrazów. Wynika to z jednej strony stąd, że trudno jest spełnić równocześnie wymienione wyżej wymagania, z natury sprzeczne ze sobą. Z drugiej strony nie bez znaczenia jest stosowanie przez różne firmy polityki zmierzającej do posiadania "swoich" standardów. Skutkiem tego jest to, że opracowano wiele różnych metod reprezentacji obrazów, tak zwanych formatów.
W każdym z formatów można na ogół wyróżnić następujące części: nagłówek, opis obrazu, określoną reprezentację obrazu oraz informacje dodatkowe. W nagłówku najczęściej są podawane ogólne dane o formacie, w szczególności pozwalające zidentyfikować format, o pochodzeniu obrazu, autorze itd. W części poświęconej opisowi obrazu są dane charakteryzujące obraz jako całość, a więc informacje o wielkości obrazu (rozdzielczości), liczbie bitów/piksel, sposobie reprezentacji informacji o barwie, rodzaju użytej kompresji itd. Część zawierająca reprezentację obrazu obejmuje informacje o obrazie zapisane zgodnie z przyjętą konwencją w danym formacie. Informacje dodatkowe mogą dotyczyć różnych aspektów związanych z możliwościami wyświetlenia czy reprodukcji obrazu - w szczególności, mogą tu być zamieszczane informacje o profilu urządzenia, na którym obraz został uzyskany.
Niektóre z opracowanych formatów są stosowane w ograniczonym zakresie, inne zdobyły większą popularność. Niżej ograniczymy się do scharakteryzowania kilku najpopularniejszych formatów, podając każdorazowo kilka najbardziej charakterystycznych informacji. Więcej uwagi poświęcimy formatowi PNG, który zdobywa coraz większą popularność w aplikacjach internetowych. Omawiane formaty to z reguły formaty, w których obraz reprezentowany jest w postaci mapy bitowej (formaty rastrowe, bitmapowe). Zasygnalizujmy jednak, że są również formaty wektorowe, które umożliwiają przechowywanie informacji o obrazie w postaci ciągu poleceń graficznych i danych, które pozwalają utworzyć obraz w postaci pikselowej. Ponadto zasygnalizujmy istnienie formatów pozwalających na reprezentowanie sekwencji obrazów tworzących animację (na przykład avi).
Wobec istnienia wielu różnych formatów powstaje oczywiście problem konwersji między tymi formatami. Problem ten w praktyce rozwiązuje się na dwa sposoby. Pierwsze rozwiązanie polega na tym, że producenci oprogramowania graficznego wyposażają swoje produkty w możliwości importowania obrazów zapisanych w kilku wybranych formatach oraz w możliwości eksportowania obrazów w kilku wybranych formatach. Drugie rozwiązanie polega na tym, że udostępniane są niezależne programy konwersji między wybranymi formatami. Warto tu zwrócić uwagę na to, że o ile problem konwersji miedzy formatami przeznaczonymi do zapisywania obrazów bitmapowych jest stosunkowo prosty, to w przypadku formatów przechowujących informację w postaci wektorowej realizacja konwersji jest bardziej złożona.
W praktyce stosuje się wiele różnych formatów zapisu obrazów. Do najczęściej stosowanych należą GIF, PNG, JPG. Każdy z tych formatów ma specyficzne cechy, które powodują, że jest on stosowany w odpowiednich aplikacjach.
Format TIFF. Format TIFF (Tag Image File Format) jest bardzo elastyczny. Umożliwia on pamiętanie informacji o obrazach bitmapowych o różnych rozdzielczościach, zarówno czarno-białych jak i kolorowych (do 24 bitów/piksel). Dopuszczalne jest korzystanie z różnych modeli barw (RGB, CMYK, YCbCr itd.). Można przechowywać informację o przezroczystości piksela. Dopuszczalne są różne metody kompresji (w tym brak kompresji, kompresja RLE, LZW, JPEG i inne). Można również dołączać dodatkowe informacje o obrazie umożliwiające jego reprodukcję na różnych urządzeniach.
Format GIF. W formacie GIF (Graphics Interchange Format) wykorzystuje się kompresją bezstratną LZW (chronioną patentem). Format ten dopuszcza przechowywanie informacji o obrazach barwnych, w których wykorzystuje się co najwyżej 256 różnych barw (8 bitów/piksel). Format ten umożliwia określanie przezroczystości tła oraz pamiętanie w pliku wielu obrazów, co stwarza możliwość pamiętania prostych animacji. Format GIF zyskał dużą popularność jednak jego rozwój ograniczają aspekty prawne związane z koniecznością wnoszenia opłat licencyjnych.
Format PNG. Odpowiedzią środowiska internetowego na ograniczenia związane ze stosowaniem formatu GIF było opracowanie formatu PNG (Portable Network Graphics). Format ten zapewnia dobrą kompresję bezstratną, nie jest objęty żadnymi zastrzeżeniami patentowymi i stąd coraz częściej wypiera format GIF.
Sygnatura bloku składa się z 8 bajtów o wartościach 137, 80, 78, 71, 13, 10, 26, 10 odpowiadających znakom ASCII: 137, P, N, G, RETURN, LINEFEED, CTRL/Z, RETURN. Ciąg P, N, G identyfikuje format. Pozostałe znaki są istotne dla dekodera. Dzięki nim np. można odróżnić plik tekstowy od pliku PNG i ewentualnie zatrzymać drukowanie pliku.
W formacie PNG wykorzystywana jest kompresja bezstratna bazująca na metodzie kompresji LZ77, która nie jest chroniona patentami. Po dokonaniu kompresji metodą LZ77 otrzymany ciąg poddawany jest kompresji metodą Huffmana.
Format umożliwia kompresję obrazów, w których dla zapamiętania informacji o pikselu wykorzystuje się do 48 bitów. Dopuszczalny jest kanał a umożliwiający sterowanie przezroczystością. Precyzja próbek (liczba bitów dla reprezentowania składowej barwy) może być 1-, 2-, 4-, 8- lub 16- bitowa.
Format PNG dopuszcza pięć metod reprezentowania koloru piksela w obrazie. Pierwszy sposób polega na reprezentowaniu barwy w postaci trójki RGB. Każdy piksel jest reprezentowany przez trzy składowe 8- albo 16- bitowe (przy pamiętaniu obowiązuje kolejność R, G, B).
Drugi sposób pozwala na używanie palety kolorów. W takim przypadku informacja o konkretnym pikselu faktycznie jest indeksem do palety kolorów (która musi być dołączona do pliku).
W przypadku obrazów monochromatycznych można korzystać ze skali szarości.
Efekt przezroczystości obrazu można uwzględnić korzystając z kanału α, który umożliwia łączenie obrazu z tłem. W tym przypadku, obok wartości RGB pamiętana jest wartość pomocniczego parametru tak zwanego parametru α. Liczba bitów poświęcana na zapamiętanie wartości składowych R, G, B i α jest taka sama (8 albo 16). Jeżeli wartość parametru α jest równa zeru, to piksel jest w pełni przezroczysty, a więc tło jest w pełni widoczne. Przy maksymalnej wartości parametru α tło jest całkowicie zasłonięte przez obraz. W pozostałych przypadkach barwa piksela B jest mieszana z barwą tła T (na zasadzie (a B + (1 - a ) T)).
Ostatni sposób reprezentowania koloru polega na uwzględnieniu współczynnika α w przypadku obrazów monochromatycznych. Podaje się wtedy wartość piksela oraz wartość współczynnika α.
W formacie PNG przewidziano możliwość rozwiązywania problemu przenoszenia obrazów między różnymi urządzeniami. W tym celu pamiętane są informacje pozwalające odtworzyć kolory, które faktycznie były użyte przy tworzeniu źródłowego obrazu (profil urządzenia). W szczególności, pamiętane są parametry luminoforów monitora i informacja o bieli monitora. Pamiętana jest również wartość g systemu użytego do utworzenia obrazu.
Format PNG pozwala opisywać jedynie obrazy statyczne. Ograniczenie to ma szansę być usunięte w tworzonym formacie MNG. Warto zwrócić uwagę na fakt, że w formacie PNG wbudowane są mechanizmy kontroli poprawności danych w procesie kompresji i dekompresji. Jest to szczególnie istotne z punktu widzenia odporności na błędy transmisji.
Format JPG. Wyżej omówione formaty dopuszczały kompresję bezstratną. Spośród formatów wykorzystujących kompresję stratną największą popularność zyskał format JPG, który pozwala zapisywać obrazy skompresowane metodą JPEG. Format ten wykorzystywany jest najczęściej do przechowywania obrazów pełnokolorowych (24 bity/piksel), w tym do przechowywania i przesyłania zdjęć.
« poprzedni punkt |