FORMATY GRAFICZNE Dobra ilustracja przychodzi w małym pliku. David Siegel, Tworzenie stron WWW 1. Rodzaje plików graficznych 1. Mapy bitowe reprezentują obraz jako prostokątną tablicę pikseli (np. standardy PCX, BMP, Targa, TIFF, GIF, JPEG), 2. Pliki wektorowe obraz reprezentowany jako zbiór prostych, łuków, krzywych itp. 3. Metapliki oprócz danych wektorowych zawierają listę poleceń dla systemu graficznego (np. WMF), 4. Pliki danych drukarek: Rozszerzone formaty tekstowe włączają informacje graficzne do konwencjonalnego strumienia danych tekstowych (np. PCL), Języki opisu strony język programowania używany do opisu strony (np. PostScript). Przykład kodu Postscriptu: 10.5 11.3 moveto % przesun pioro bez rysowania 40 53.6 lineto % rysuj linie od biezacej pozycji showpage % renderuj strone 2. Rodzaje kompresji Kompresja zmniejsza ilość miejsca na dysku potrzebnego do zachowania obrazu: Kompresja bezstratna umiarkowanie zmniejsza rozmiar pliku bez utraty jakichkolwiek informacji: RLE (run-length encoding) - kodowanie długości ciągów i LZW (Lemple-Ziv-Welch). Kompresja stratna znacznie zmniejsza rozmiar pliku (do 1/40) kosztem straty części informacji, a tym samym kosztem pogorszenia jakości obrazu (JPEG). 2.1. Kompresja RLE Niech a, b, c, d, e reprezentują jednobajtowe wartości pikseli aaaaabcdea dane oryginalne 5a5bcdea dane skompresowane Licznik Bit sterujący: 1-dane powtarzane, 0-dane przepisywane 1
2.2. Kompresja słownikowa LZW (licencja firmy Unisys Corporation) Wartościom wejściowym o zmiennej długości (tzn. poziomym ciągom pikseli tworzących powtarzający się wzór) przypisywane są kody o stałej długości. Kompresor LZW zapisuje na początku słownika kodów wszystkie możliwe wartości pikseli (przy kodowaniu bajtów są to wartości od 0 do 255). Następnie w trakcie tworzenia pliku obrazu do słownika dodawana jest nowa pozycja, gdy znaleziona zostanie sekwencja wartości wejściowych, która jeszcze w słowniku nie występuje. Dekompresor odtwarza oryginalne piksele odszukując ciąg pikseli odpowiadający każdemu kodowi. Przykład 1: zawartość słownika dla 4-bitowych pikseli: Kod Ostatni piksel Poprzedni ciąg 100 7 87 87 1 65 65 4 58 58 1 49 3 3 - Jeżeli w słowniku jest zakodowany ciąg 31417 to są w nim również ciągi 3141, 314, 31, 3. Przykład 2: wszystkie obrazki są 8-bitowe, rozmiar 90 90pikseli (8100 bajtów bez kompresji). Dłuższe ciągi poziome dają lepszą kompresję (źródło D. Siegel). 2
2.3. Kompresja JPEG Każda implementacja JPEG musi zawierać bazowy schemat kompresji: Obraz oryginalny Model kodera symbole Koder Obraz skompresowany Model kodera: Kodowanie koloru Y C b C r f FDCT F Kwantyzacja Uwaga: Silna kompresja (jakość poniżej 25%) daje niebazowy plik JPEG Składowa stała F(0,0) Składowe zmienne Kodowanie koloru: Obraz RGB w skali szarości Zamiast przechowywać trzy składowe r = g = b, barwa każdego piksela kodowana jest w jednym bajcie reprezentującym jasność piksela. Obraz pełnokolorowy (true color) 24-bitowa barwa RGB poddawana jest konwersji do standardu YCbCr opartego na systemie telewizji kolorowej, gdzie Y-luminancja, Cb, Cr chrominancje: Y 0.299, = Cb 0.1687, Cr 0.5, 0.587, 0.3313, 0.4187, 0.114 R 0.5 G 0.0813 B Oko ludzkie jest bardziej czułe na zmiany jasności niż koloru, więc gęstość próbkowania chrominancji pikseli jest zmniejszana: 4 piksele RGB = 12B B G R Cr Cb Y Y = 4B Cb = 1B Cr = 1B Suma = 6B Transformata FDCT Dyskretna transformata kosinusowa Fouriera stosowana jest w celu wykrycia stopnia zmian przetwarzanej składowej f obrazu w bloku (n n) pikseli. W JPEG dla bloku (8 8) pikseli stosuje się szybką dyskretną transformatę kosinusową FDCT: 3
F ( u, v) = 1 4 C( u) C( v) 7 7 i= 0 j= 0 gdzie: f(i,j) wartość piksela w punkcie (i,j), u, v - indeksy w tablicy składowych F[8 8], 1/ C ( u), C( v) = 1 2 dla u, v = 0 dla u, v > 0 (2i + 1) uπ (2 j + 1) vπ f ( i, j)cos cos 16 16 F(0,0) F(0,0) - składowa stała reprezentująca stopień niezmienności f w bloku pikseli (uśredniona wartość f), F(u,v) dla u, v>0 - składowe zmienne reprezentujące szybsze zmiany składowej f w bloku pikseli. Kwantyzacja Stosowana jest dla obrazów poddanych transformacji FDCT w celu dokładniejszego zapamiętania stopniowych zmian składowej f obrazu i mniej dokładnego zapamiętania lub usunięcia informacji o dużych gradientach składowej f (nagłych zmianach jasności lub koloru) w próbkowanym bloku (8 8) pikseli (dokładnie zapamiętywana jest tylko F(0,0)). Składowe F(u,v) dzieli się przez odpowiednie elementy macierzy kwantyzacji Q. Po kwantyzacji wiele składowych zmiennych ulega zaokrągleniu do zera. 16, 12, 14, 14, Q = 18, 24, 49, 72, 11, 12, 13, 17, 22, 35, 64, 92, 10, 14, 16, 22, 37, 55, 78, 95, 16, 19, 24, 29, 56, 64, 87, 98, 24, 26, 40, 51, 68, 81, 103, 112, 40, 58, 57, 87, 109, 104, 121, 100, 51, 60, 69, 80, 103, 113, 120, 103, 61, 55, 56, 62, 77, 92, 101, 99, Dwuwymiarowa tablica składowych F(u,v) jest następnie przekształcana w tablicę jednowymiarową, w której składowe umieszczone są w kolejności określonej zygzakiem (strzałki na macierzy Q). Dzięki temu składowe o niższych częstotliwościach znajdują się na początku tablicy, o wysokich (dużo zer) na końcu tablicy. Ułatwia to kodowanie. 4
mapa bitowa TIFF JPEG - jakość maksymalna JPEG - jakość wysoka (211 308) 190 kb 117 kb (75%) 44,4 kb JPEG - jakość średnia JPEG - jakość najniższa JPEG kompresja 100% 25,5 kb 10,6 kb 1,96 kb 3. Charakterystyka wybranych standardów 3.1. GIF Standardowa metoda kodowania skanowanych i generowanych komputerowo obrazów zdefiniowana przez CompuServe w 1987r. Czym jest GIF? Ilość kodowanych kolorów Format plików (*.gif) Format strumienia danych przesyłanych z komputera głównego do terminala graficznego Maksymalnie 256 barw. Piksele są zapisywane przy użyciu najmniejszej koniecznej liczby bitów: 256 barw 8 bitów/piksel, 2 barwy 1 bit/piksel. 5
Kompresja LZW bezstratna, średni współczynnik kompresji 4:1 Uwagi: Skanowane obrazy 2-kolorowe, w skali szarości, z paletą do 256 kolorów, z dużą ilością szczegółów, linii, krawędzi (wykres, siatka, szkic, diagram, logo, napis, itp.). Obrazy generowane komputerowo (max 256 barw) z dużymi polami jednobarwnych wypełnień i wzorów oraz z ostrymi krawędziami, które powinny być zachowane. Obraz zawierający więcej niż 256 barw jest przybliżany paletą 256 barw przed kodowaniem GIF. GIF89a Stosowany do animacji, udostępnia przeplot (interlaced) i przezroczystość jednego koloru obrazka. Przeplot - dane zapisywane są w kolejności wierszy: co 8-y, 4-ty, 2-gi, nieparzyste. Umożliwia to terminalowi wyświetlanie kolejnych przybliżeń obrazka w trakcie jego ładowania. Animacja - przezroczystość, opóźnienia między klatkami do 1/100sekundy, pętlenie skończone lub nieskończone. GIF (paleta adaptacyjna) 60,4 kb o b r a z e k 1 Nagłówek pliku Globalna mapa kolorów Lokalna mapa kolorów Opcjonalne bloki rozszerzeń Skompresowane dane obrazka Obrazek 2 Obrazek 3... Wymagana gdy brak mapy globalnej. Przesłania globalną gdy są obie. Jak długo obrazek ma być wyświetlany, czy ma być nałożony na poprzedni obraz, itp. 6
3.2. PNG bezpłatny standard, który powstał w 1995r. jako odpowiedź na zapowiedź firm UNISYS i CompuServe o planowanym pobieraniu opłat za korzystanie z oprogramowania do kompresji plików GIF. Czym jest PNG? Ilość kodowanych kolorów Kompresja Uwagi: Format plików (*.png) Format strumienia danych przesyłanych z komputera głównego do terminala graficznego Maksymalna głębia piksela 48 bitów, skala szarości do 16 bitów, pełny 8-bitowy kanał Alfa. LZW bezstratna (nie opatentowana wersja, lepsza niż w GIF) W programach multimedialnych, gdy obraz wymaga efektów przezroczystości, maskowania i przechowywania innych informacji. Obsługuje dwukierunkowy przeplot, korekcję gamma w celu kontroli jasności obrazka na różnych platformach, sprawdzenie poprawności pliku. Pozwala dodać do pliku ilustracji dowolnie określony obszar przeznaczony na tekstową metainformację, włączając w to adres URL i informacje związane z bazami danych. 3.3. JPEG (Joint Photographic Experts Group Wspólna Grupa Ekspertów Fotografii). Standardowa metoda kompresji zdigitalizowanych fotografii przeznaczonych do przesyłania liniami komunikacyjnymi. Czym jest JPEG Kodowanie kolorów Kompresja Uwagi: Format plików (*.jpg) Standard wymiany danych w sieci. True Color RGB 2 24 =16,7 mln. barw Zeskanowana fotografia jest kodowana przy użyciu przeciętnie jednego bitu na piksel (współczynniki kompresji od 10:1 do 100:1). Stratna jpeg. Najpopularniejszy format tonalnych obrazów w skali szarości i pełnokolorowych dla sieci Internet, programów prezentacyjnych i multimedialnych, wymagających małych plików. Im większy stopień kompresji tym mniejszy plik i tym większa strata jakości. Z obrazu mogą zostać usunięte drobne szczegóły, a linie i ostre krawędzie zostaną rozmyte. 7
Należy używać zawsze tego samego stopnia kompresji przy wielokrotnym ponownym kompresowniu tego samego obrazu JPEG. Obrazy o wysokiej rozdzielczości są degradowane o wiele mniej niż obrazy o niskiej rozdzielczości. 3.4. TIFF (Tagged Image Format znacznikowy format pliku obrazowego) Kodowany kolor Kompresja Uwagi Obraz 2-kolorowy, indeksowana paleta kolorów (w tym duotony, tritony, quadtony) pełnokolorowy RGB lub CMYK, YCbCr (model oparty na systemie telewizji kolorowej), CIE La*b* Bez kompresji (mimo to format stosunkowo wydajny) lub bezstratna kompresja LZW. Najpopularniejszy format obrazów skanowanych przeznaczonych do druku oraz do prac DTP (Desktop Publishing skład i montaż komputerowy). Pliki TIFF są praktycznie niezależne od platformy, więc można je przenosić np. między platformami Maintosh i Windows (programy edycji obrazów powinny otworzyć każdy plik TIFF). Część programów prezentacyjnych lub multimedialnych nie obsługuje formatu TIFF. Plik TIFF zawiera katalog IFD (ang. Image File Directory), którego każda pozycja (o długości 12 bajtów) zawiera znacznik identyfikujący dane. Przykładowe znaczniki: Nazwa Znacznik Opis TIFFTAG_IMAGEWIDTH 256 Szerokość obrazu w pikselach TIFFTAG_COMPRESSION 259 Technika kompresji danych: COMPRESSION_LZW 5 Lempel-Ziv&Welch COMPRESSION_JPEG 6 kompresja JPEG COMPRESSION_PACKBITS 32773 Macintosh RLE COMPRESSION_NONE 1 tryb bez kompresji TIFFTAG_PHOTOMETRIC 262 Kolory: PHOTOMETRIC_RGB 2 model RGB PHOTOMETRIC_PALETTE 3 indeksowana paleta kolorów PHOTOMETRIC_SEPARATED 5 separacja CMYK PHOTOMETRIC_YCBCR 6 CCIR 601 PHOTOMETRIC_CIELAB 8 1976 CIE L*a*b TIFFTAG_THRESHHOLDING 263 Technika rastrowania: THRESHHOLD_BILEVEL 1 dwa poziomy THRESHHOLD_HALFTONE 2 półtonowanie THRESHHOLD_ERRORDIFFUSE 3 metoda Floyd-Steinberg 8
TIFFTAG_XPOSITION 286 pozioma pozycja lewej krawędzi obrazu na stronie TIFFTAG_INKNAMES 333 nazwa ASCII atramentu TIFFTAG_DOTRANGE 336 kody punktów 0%-100% TIFFTAG_TARGETPRINTER 337 docelowa drukarka TIFFTAG_MODEL 273 nazwa/nr modelu skanera 3.5. EPS (Encapsulated PostScript niejawny PostScript) Kodowany Obraz 2-kolorowy, obraz w skali szarości, duotone, tritone, kolor quadtone, pełnokolorowy RGB lub CMYK Kodowanie ASCII, binarne, JPEG (od PostScript Level 2) Uwagi Do przechowywania obrazków obiektów zawartych wewnątrz ścieżki obcinania, np. w celu wstawienia do katalogu. Do przechowywania informacji o ekranowaniu (rastrze półtonowym), gdy obraz ma być drukowany na naświetlarce lub stosowane są własne wzory ekranowania. Celowe jest zachowywanie plików EPS z podglądem obrazka. Spłaszczenie = 0 - ścieżka zostanie wydrukowana dokładnie tak jak została stworzona. Spłaszczenie > 0 - obcinane są rogi ścieżki, czyniąc ją mniej dokładną. W większości przypadków ustawienie spłaszczenia na 2 lub 3 daje dobry efekt i znacznie skraca czas druku. 9