profil

Standardy graficzne stosowane w internecie.

poleca 85% 753 głosów

Treść
Grafika
Filmy
Komentarze



W Internecie są stosowane przede wszystkim dwa standardy graficzne GIF i JPEG. Ze względu na ich wady i zalety różnią się ich zastosowania.

Format GIF

Compuserve zdefiniował format GIF w 1987 roku, aby zapewnić standardowy sposób kodowania wielkiej liczby skanowanych i generowanych komputerowo obrazów. Format ten stał się jednym z najczęściej używanych formatów do kolorowych map bitowych, gdyż ten standard zapisu jest bardzo dobrze udokumentowany, co powodowało iż został zastosowany w dużej liczbie programów. Format ten ma też niewielką liczbę wariantów (najczęściej spotykane to GIF87 i GIF89) i jest stosunkowo prosty. Obrazy GIF mogą zawierać przeplot i w takim przypadku dane są zapisywane w kolejności: najpierw co ósmy rząd obrazu, potem co czwarty, potem co drugi, i na końcu wiersze nieparzyste. Pozwala to bardzo w dobry sposób wyświetlać dane przesyłane przez internet w kolejnych przybliżeniach. Format ten może zawierać także klatki prostych animacji. Każda klatka jest oddzielnym obrazem oddzielonym od drugiego zwykłym przecinkiem.
GIF jest zasadniczo prostym formatem mapy bitowej. Najbardziej nieocenioną cechą plików GIF jest to iż piksele są spakowane przy użyciu tzw: „kompresji słownikowej LZW”. Kompresja LZW jest wyjątkowo efektowną dla obrazów z powtarzającymi się wzorami pikseli, włączając w to obszary czystych plam kolorystycznych. Gożej format ten sprawdza się z kompresją ze skanowanych i skomplikowanych obrazów, lecz mimo to kompresja LZW jest najskuteczniejszą kompresją bezstratną.
Wadą plików GIF jest to iż mogą zawierać jedynie do 256 różnych kolorów, wymagając przy tym 8 bitów na piksel, lecz jeśli plik jest zapisywany z mniejszą liczbą kolorów używana jest najmniejsza możliwa liczba bitów.

Budowa pliku GIF:

Plik GIF rozpoczyna się nagłówkiem i opcjonalną globalną mapą kolorów, która jest używana dla wszystkich obrazów zawartych w pliku. Po tym następuje jeden lub więcej obrazów, każdy składający się bloku opisu obrazu, opcjonalnej lokalnej mapy kolorów i skompresowanych danych.

Kodowanie GIF:

Obrazy w pliku GIF są rozdzielone przecinkami I kończą się średnikiem. Każdy obraz rozpoczyna się przecinkiem I nagłówkiem obrazu. Nagłówek obejmuje pozycję lewego górnego rogu obrazu względem brzegów ekranu. Obejmuje również bajt znaczników, w którym są zawarte dane przeplotu. Następny bajt zawiera minimalny rozmiar słowa kodu LZW, a po nim następuje sam obraz. Plik kończy się średnikiem oznaczającym brak dalszych obrazów.







Kompresja LZW

Kompresja LZW działa na zasadzie budowy słownika ciągów pikseli. Każdy ciąg w słowniku jest identyfikowany przez wartość kodu, a rezultatem działania operacji jest lista kodów ze słownika. Kompresor buduje słownik w locie. Na przykład załóżmy, że każdy piksel jest 4-bitowy, z możliwymi wartościami od 0 do 15. Rozpoczynamy od ustawienia pozycji 0 do 15 naszej tabeli kodów ciągi 1- pikselowe, tak więc kodowi 0 odpowiada ciąg złożony z pojedynczego piksela o wartości 0, kodowi 1 piksel 1 , itd. Kod 16 rezerwujemy jako kod czyszczący, a kod 17 jako koniec pliku, więc następnym nieużywanym kodem jest liczba 18. Kiedy kompresor czyta piksele, znajduje najdłuższy ciąg pikseli, który może dopasować do pozycji słownika. Zawsze więc ma „próbne dopasowywanie” ciągu pikseli, które już zostały wczytane, ale dla których kod nie został jeszcze wysłany na wyjście. Za każdym razem gdy kompresor wczytuje piksel wykonuje kilka operacji:
· Dodaje piksel do próbkowanego ciągu dopasowanego i sprawdza, czy w słowniku istnieje dopasowanie do nowego ciągu próbnego. Jeśli tak to zapamiętuje kod odpowiadający nowemu próbnemu ciągowi dopasowanemu i przechodzi do następnego piksela.
· Jeśli nowy próbny ciąg nie znajduje się w słowniku, wysyłany jest na wyjście kod starego ciągu. Następnie nowy ciąg próbny, czyli stary ciąg plus wczytany piksel jest umieszczany w słowniku dla przyszłego użytku. Stary ciąg jest usuwany ze słownika i proces rozpoczyna się od nowa z nowym próbnym ciągiem dopasowywanym, składającym się z jednego, ostatnio przeczytanego piksela.
Kompresor kontynuuje ten proces, aż przeczyta wszystkie dane wejściowe, na koniec zapisuje kod ostatniego próbnego dopasowywania i kod końca pliku.

Format JPEG

Kolejnym używanym w internecie formatem graficznym są pliki typu JPEG, z rozsrzeżeniem zapisywanym w formie *.jpg. JPEG jest najbardziej wyrafinowanym formatem zapisu map bitowych. Same instrukcje kodera tego formatu zajęłyby 200 stronicową książkę!!!.
Skrót JPEG oznacza: Wspólna Grupa Rzeczoznawców Fotografii (ang. Joint Photographic Experts Group), grupę pracującą pod auspicjami ISO (Internatoinal Organizatoin for Standarization). JPEG jest w zamierzeniu twórców standardową metodą kompresji dla zdigitalizowanych fotografii.
W przeciwieństwie do formatu GIF JPEG jest formatem stratnym, co oznacza, że nie zawsze dokładnie rekonstruuje piksele oryginalnego obrazu pełno kolorowego. Mimo to zredukowany obraz zdjęcia przypomina bardziej oryginalny obraz niż pochodzący z „Bezstratnego” formatu GIF. Jest to spowodowane tym iż GIF zapisuje obrazy w palecie 256 kolorowej. Oznacza to, ze GIF również nie odtwarza oryginalnego obrazu w pełnym kolorem. W rzeczywistości powoduje to iż mapowanie kolorów powoduje znacznie większe pogorszenie jakości obrazu dla pliku JPEG o podobnym rozmiarze co plik GIF. W odróżnieniu od GIF, w formacie JPEG możliwa jest zmiana wielkości i jakości obrazu. Za regułę uznaje się iż JPEG może zakodować grafikę przy użyciu przeciętnie 1 bitu na piksel.
Niektóre rodzaje obrazów nie są odpowiednie dla JPEG. Ponieważ format ten został zaprojektowany do obsługi fotografii, nie radzi sobie dobrze z ostrymi krawędziami, charakterystycznymi dla wykresów i obrazów tworzonych komputerowo. Nie kompresuje też dobrze dużych powierzchni o jednakowym kolorze.
JPEG jest zaprojektowany właściwie jako standard kodowania strumienia danych, a nie pliku. Sprzętowe dekodowanie JPEG powinny być dostatecznie szybkie do dekodowania obrazów w trakcie ich odbierania np. z internetu. Sam format JPEG ma pewne opcjonalne odmiany, które pozwalają wyświetlić obraz niskiej rozdzielczości i poprawić obraz w trakcie jego dalszego odbierania. Każdy nieraz widział ściągając z internetu jakąś grafikę powolną jej krystalizację na ekranie.

Inne formaty JPEG

Powstały dwa formaty plików JPEG. Prostszy nazywa się JFIF i składa się ze strumienia danych JPEG z kilkoma obowiązkowymi elementami, dzięki którym obraz JFIF można rozkodować bez sięgania do jakichkolwiek danych zewnętrznych, lecz jest to jednak format rzadko spotykany w internecie.
Drugim formatem jest pewna odmiana TIFF wprowadzona w specyfikacji TIFF6.0, która osadza obraz JPEG, podzielony w miarę możliwości na paski i tzw „kafelki” w pliku TIFF. Format ten jest zwany JPEG-w-TIFF i nie stał się popularny prawdopodobnie dlatego, że jest znacznie bardziej złożony, ale niewiele bardziej użyteczny niż JFIF, a różni się tyle od innych formatów kodowania TIFF, że istniejące programy odczytujące TIFF nie poradziły by sobie z nim.

Kodowanie JPEG.

Zmiana 24-bitowego obrazu na strumień danych JPEG przebiega w czterech etapach:
· Kodowanie koloru
· Transformacja DCT
· Kwantyzacja
· Kodowanie
Zwykle pierwszym krokiem w kompresji pełno kolorowego obrazu jest kodowanie kolorów. Jest to krok opcjonalny, ale ponieważ daje 50 % oszczędność miejsca, jest niemal niezmiennie używany.
Oko ludzkie jest znacznie bardziej wyczulone na zmianę jasności niż barwy. Jeśli będziemy mogli przekształcić dane z kanałów RBG tak, aby jasność była przechowywana w jednej składowej, a kolory w pozostałych dwóch, to okazuje się, że możemy usunąć większość informacji o kolorze, bez zauważalnego pogorszenia wyglądu obrazu. Najpowszechniejszy układ kodowania koloru jest znany jako YCbCr i jest oparty na układzie używanym w telewizji. Trzy komponenty obrazu stanowią Y – luminancja piksela, oraz Cb i Cr – chrominancja, którą można jak stopień „niebieskości” i czerwoności” piksela. Oblicza je się według wzorów:
Y = 0,299 R + 0,587 G + 0,114 B
Cb = -0,1687 R – 0,3313 G + 0,5 B
Cr = 0,5 R – 0,4187 G – 0,0813 B
Jest to jeszcze zmian bezstratna, gdyż wartości RGB mogą być odtworzone przez odwrócenie procesów arytmetycznych. Kiedy już mamy składowe YCbCr zmniejszamy gęstość tzw: „podpróbkowania”. Polega to na uśrednieniu wartości składowych chrominancji dla bloku 2 x 2 piksele. Tak więc dla bloku 2 x 2 piksele mamy cztery wartości Y, jedną Cb i Cr, czyli razem sześć składowych zamiast 12 ( po cztery R, G i B), z których wyszliśmy. Każda z trzech składowych jest teraz traktowana jako oddzielny płat obrazu, jest oddzielnie przekształcana i kompresowana.
Kodowanie kolorów nie jest stosowane przy obrazach z skalą szarości. W tym przypadku wartość piksela jest bezpośrednio poddawana transformacji DCT.
Transformacja DCT jest następnym etapem. DCT to skrót od: Dyskretna Transformacja Kosinusowa (ang. Discrete Cosine Transform). Wykorzystuje ona fakt, iż oko ludzkie jest bardziej czułe na stopniowe zmiany jasności lub koloru niż na nagłe. DCT pozwala właśnie na dyskretne przejścia pomiędzy barwami. Pobiera ona blok 8 x 8 komponentów i wykonuje transformacje matematyczną której wynikiem jest tablica 8 X 8 tzw: „przestrzennych częstotliwości”. Składowa (0.0) rezultatu określa stopień niezmienności składowych wejściowych, równoznaczny ze średnią wartością składowych. Składowe o większych numerach odzwierciedlają wyższe częstotliwości przestrzenne, które reprezentują szybsze zmiany jasności lub barwy.
Aby wszystkich znudzić jeszcze bardziej podaje wzór na transformatę DCT, z f(x,y) oznaczającym wartość składową w punkcie(x,y) i F(u,v) będącym wynikową wartością DTC w tablicy (u,v). Każda wartość wyjściowa zależy od wszystkich wartości wyjściowych.


DCT jest ciągle transformacją bezstratną. Oryginalne wartości komponentów mogą być odtworzone odwrotną transformacją DCT. W praktyce błędy zaokrągleń mogą spowodować, że odtworzone wartości różnią się nieco, jednak różnice te są nieistotne w porównaniu z efektami kwantyzacji.
Kwantyzacja jest głównym etapem stratnym podczas kodowania JPEG. Każda z wartości wyjściowych transformaty DCT jest 12 bitową liczbą całkowitą. Dla dowolnego obrazu JPEG istnieje tablica kwantyzacyjna o rozmiarze 8 x 8, którą jest po prostu tablica wartości, przez które podzielone zostaną odpowiednie wartości Transformacji DCT. Dekoder otrzymuje taką samą tablicę z pliku obrazu w którym jest ona zapisana i mnoży wartości z pliku przez odpowiednią pozycję tablicy, aby w przybliżeniu odtworzyć prawdzie dane. Im większy podzielnik tym mniejsza dokładność odtwarzanych wartości, ale im mniejszy wynik kwantyzacji tym mniejszy plik JPEG. Przy zapisywaniu wybierając odpowiedni zestaw podzielników aplikacja może sterować między jakością obrazu a wielkością pliku.
Ostatnim etapem jest pobranie rezultatów kwantyzacji i skompresowanie ich do pliku, proces ten jest znany jako kodowanie entropii. Najpowszechniejszym rodzajem kodowania jest kodowanie Huffmana zmiennej długości z charakterystycznym dla RLE kodowaniem ciągu zer. Kwantowanie składowych wysokich częstotliwości często powoduje ich wyzerowanie. Alternatywnym sposobem do kodowania Huffmana jest kodowanie arytmetyczne. Jest nieco bardziej złożone, lecz nieco bardziej zbija dane niż kod Huffmana. Kodowanie arytmetyczne jest tematem kilku patentów IBM i innych, co powoduje liczne niepewności co do licencjonowania. Spowodowało to iż nie jest ono szeroko stosowane. Biblioteka JPEG używa kodowania Huffman. Na kodowaniu Huffmana proces kompresji został zakończony. Dane zapisane do pliku są kilka, albo kilkanaście razy mniejsze niż plik wyjściowy.
Te dwa standardy są najczęściej używane na stronach WWW. Ze względu na specyficzne cech obu formatów wykorzystuje je się do przedstawiania różnych rzeczy:
Format GIF najlepiej sprawdza się w:
- prostych mapach tworzących menu strony,
- animacjach zamieszczanych na stronie,
- publikowaniu rysunków technicznych
Format JPEG wykorzystuje się do:
- publikacji zdjęć
- tworzenia bardziej zaawansowanych grafik na stronach WWW.

Te dwa formaty są jak dotychczas najlepszymi standardami kompresji jakie opracował człowiek i wszystko na to wskazuje iż długo to się nie zmieni.


Czy tekst był przydatny? Tak Nie

Czas czytania: 10 minut