Przejdź do zawartości

JPEG

Z Wikipedii, wolnej encyklopedii
Joint Photographic Experts Group (JPEG)
Ikona formatu
Ilustracja
Zdjęcieżbika europejskiegoze stopniem kompresji i związanymi z nim stratami, malejącymi od lewej do prawej strony
Rozszerzenia pliku

.jpg,.jpeg,.jpe
.jif,.jfif,.jfi(rozszerzenie.jfi nie jest bezpośrednio obsługiwane przezWindows XP) (kontenery)

Typ MIME

image/jpeg

Producent

Joint Photographic Experts Group

Typ

stratnaibezstratna kompresjagrafiki rastrowej

Strona internetowa

JPEG(ang.Joint Photographic Experts Group) – algorytm[1][2]stratnej kompresjigrafiki rastrowej, wykorzystany w formacie plików graficznych o tej samej nazwie. Motywacją do powstania tego standardu było ujednoliceniealgorytmówkompresji obrazów monochromatycznych i kolorowych.

Format plików JPEG/JFIF obok formatówGIFiPNGjest najczęściej stosowanym formatem grafiki na stronachWWW.TypMIMEzarejestrowany dla tego formatu nosi nazwęimage/jpegi został zdefiniowany wRFC 1341 ↓.

Historia standardu JPEG

[edytuj|edytuj kod]

Prace nad standardem rozpoczęły się w kwietniu1983roku w organizacjiISO.W1986roku z inicjatywy ISO orazCCITTpowstał zespół ekspertów nazwanyJoint Photographic Experts Group(po ang.Połączona Grupa Ekspertów Fotograficznych), który zjednoczył wysiłki różnych niezależnych grup.

Standard o nazwieISO/IEC IS 10918-1 | ITU-T Recommendation T.81został opublikowany w dwóch częściach w 1991 roku i definiował podstawowy (ang.baseline), sekwencyjny trybkompresji stratnej,oparty nadyskretnej transformacji kosinusowej(DCT) oraz jego różne rozszerzenia:

  • Tryb progresywny kompresji, również oparty na DCT, przewidziany do wyświetlania obrazów w trakcie przesyłania danych. Efekt płynnie wyostrzającego się obrazu jest szczególnie dobrze widoczny przy użyciu szybkiego dekompresora i wolnej transmisji danych. Tryb ten zyskał rozpowszechnienie wraz z rozwojem Internetu.
  • Tryb hierarchiczny, pozwalający na zapis w jednym pliku tego samego obrazu jako sekwencji kadrów o różnych rozdzielczościach. Kolejne kadry są kodowane jako różnice względem kadrów poprzednich, o niższej rozdzielczości, a nie jako oddzielne obrazy, co zmniejsza rozmiar pliku. Tryb ten nie definiuje, która z metod kompresji ma zostać użyta. Tryb hierarchiczny umożliwia szybki podgląd obrazów bez czasochłonnej dekompresji obrazów o wysokiej rozdzielczości, co ma zastosowanie np. wfotografii cyfrowej.

Opisane metody kompresji stratnej umożliwiają uzyskanie dużej kompresji obrazu, rzędu 20:1 kosztem pewnej utraty szczegółów, na ogół niezauważalnej.

Opublikowany standard JPEG nie opisywał dokładnych implementacji algorytmów kompresji, W rezultacie powstało wiele rozwiązań różniących się nawet w takich szczegółach, jak skala jakości obrazu. Równocześnie z implementacjami komercyjnymi, częściowoopatentowanymi,zaczęły powstawać rozwiązania rozprowadzane na innych licencjach. Szczególnie wyróżniła się praca zespołu znanego jakoIndependent JPEG Group(IJG), zakończona publikacją bibliotek kompresji i dekompresji JPEG jakowolnego oprogramowaniana licencji zbliżonej dolicencji BSD.

Standard JPEG nie określał też dokładnegoformatuplików graficznych,zdefiniowano tylko podstawy znane pod nazwąJPEG Interchange Format.W rezultacie największą popularność uzyskał wprowadzony przez firmę C-cube Microsystems format JFIF (ang.JPEG File Interchange Format), stanowiący rozszerzenie wobec standardu i posługujący sięrozszerzeniem„jpeg” albo „jpg”, dlatego często błędnie identyfikowany ze standardem JPEG. Inny popularny format pliku wykorzystujący standard JPEG toTIFF.

W1993roku opracowano rozszerzenie standardu JPEG dlabezstratnej kompresji,używające zupełnie innej metody niż istniejące metody stratne. Rozszerzenie to nie jest obsługiwane przez biblioteki IJG i nigdy się szerzej nie przyjęło.

W1995pod nazwąISO/IEC IS 10918-3 | ITU-T Recommendation T.84opublikowano część trzecią standardu, zawierającą kolejne rozszerzenia, które miały poprawić jakość obrazu przy tym samym stopniu kompresji. Są to m.in.:

  • zmienna kwantyzacja (ang.variable quantization) uwzględnia różne poziomy szczegółowości w różnych częściach obrazu;
  • wybiórcza poprawa jakości (ang.selective refinement) umożliwia kontynuację progresywnej dekompresji lub podjęcie dekompresji z kadru o wyższej rozdzielczości tylko dla fragmentów obrazu zawierających najwięcej szczegółów;
  • podział na kafelki (ang.tiling), umożliwiający składanie obrazu z kawałków o różnych rozmiarach, rozdzielczościach, współczynnikach kompresji czy nawet paletach barw.

Poza tym zdefiniowano standardowy format pliku o nazwie SPIFF (ang.Still Picture Interchange File Format), który jako kompatybilny wstecznie miał zastąpić format JFIF. Darmowe biblioteki IJG nie obsługują rozszerzeń zawartych w tej części standardu.

Krytyka braku w standardzie dobrych metod bezstratnej kompresji, które nadawałyby się do zapisu obrazu o najwyższej jakości czy kompresji różnic między kadrami w trybie hierarchicznym, przyczyniła się do rozpoczęcia prac nad kolejnym rozszerzeniem standardu. Komitet JPEG rozpatrzył różne algorytmy i jako podstawę kolejnego rozszerzenia standardu wybrał sekwencyjny algorytm LOCO-I (ang.low complexity, context-based, lossless image compression algorithm), opracowany wHPLabs w1996.Standard został opublikowany w1999roku w dokumencieISO/IEC IS 14495-1 | ITU-T T.87,a metoda kompresji jest znana pod nazwąJPEG-LS.Metoda ta daje kompresję rzędu 2:1 i nie jest zbyt powszechnie stosowana. Standard opisuje również (mało) stratny tryb metody JPEG-LS.

W tym samym czasie trwały też prace nad modyfikacją metod stratnych, które miały wyeliminować wady stosowanego dotychczas algorytmu DCT. Na następcę wybrano algorytmdyskretnej transformaty falkowej,co dało możliwość połączenia kompresji stratnej i bezstratnej oraz zastosowania wcześniej zdefiniowanych rozszerzeń w jednej metodzie. Tak zdefiniowany standard otrzymał nazwęJPEG 2000i został ogłoszony w2000roku w dokumencieISO/IEC 15444-1:2000.

Algorytm stratny JPEG

[edytuj|edytuj kod]

Algorytm kompresji używany przez JPEG jest algorytmemstratnym,tzn. w czasie jego wykonywania tracona jest bezpowrotnie część pierwotnej informacji.

Algorytm przebiega następująco: (część danych zaczerpnięto z hasłakompresja stratna)

  • obraz jest konwertowany z kanałów czerwony-zielony-niebieski (modelRGB) na jeden kanał jasności/luminancji i 2 kanały barwy/chrominancji (modelYCbCr). Ludzkie oko znacznie dokładniej postrzega drobne różnice jasności od drobnych różnic barwy, a więc użyteczne jest tutaj rozbicie obrazu na te kanały, żeby użyć na nich różnych parametrów kompresji.
  • zachodzipodpróbkowanie chrominancji:zmniejszana jest rozdzielczośćpikselikanałów barwy. Można nie redukować wcale, redukować 2 do 1 lub 4 do 1.
  • kanały są dzielone na bloki 8 × 8 pikseli. W przypadku kanałów kolorów, jest to 8 × 8 danych po redukcji rozdzielczości, a więc zwykle 16 × 16 pikseli obrazu początkowego. Bloki są traktowane w dalszych operacjach matematycznych jako macierze 8 × 8.
  • na blokach wykonywana jest dyskretna transformata kosinusowa (DCT). Zamiast wartości pikseli mamy teraz średnią wartość wewnątrz bloku (współczynnik DC) oraz częstotliwości zmian wewnątrz bloku (współczynniki AC), obie wyrażone przez liczby zmiennoprzecinkowe. Transformata DCT jest teoretycznie odwracalna, więc jedyna strata danych to drobne różnice wynikające z użycia zaokrągleń.
  • Różnicowa reprezentacja współczynników DC (DPCM).
  • 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.
  • współczynniki AC są uporządkowywane zygzakowato, aby zera leżały obok siebie.
  • współczynniki niezerowe są kompresowane kodowaniem entropijnym, zazwyczajalgorytmem Huffmana(standard JPEG pozwala też na użyciekodowania arytmetycznego). Kod Huffmana stosowany w formacie JPEG ma specjalne symbole dla ciągów zer i końca niezerowych współczynników (EOB,end of block).

Użyta transformata powoduje efekty blokowe w przypadku mocno skompresowanych obrazków.

Wielką innowacją algorytmu JPEG była możliwość kontroli stopnia kompresji w jej trakcie, co umożliwia dobranie jego stopnia do danego obrazka, tak aby uzyskać jak najmniejszy plik, ale o zadowalającej jakości.

Przykłady

[edytuj|edytuj kod]
Obraz Jakość Rozmiar (bajty) Współczynnik kompresji Komentarz
Pełna jakość (Q = 100) 83 261 2,6:1 Niezauważalnie małe artefakty
Przeciętna jakość (Q = 50) 15 138 15:1 Pierwsze oznaki artefaktów małej skali na granicach obiektów
Średnia jakość (Q = 25) 9553 23:1 Silniejsze artefakty; strata informacji z dużej rozdzielczości
Niska jakość (Q = 10) 4787 46:1 Duże straty rozciągłości tonalnej; artefakty na krawędziach obiektów
Najniższa jakość (Q = 1) 1523 144:1 Bardzo duża strata kolorów i kształtów; niektóre obiekty niemalże nierozpoznawalne

Wykorzystanie do zapisu obrazówstereoskopowych

[edytuj|edytuj kod]

Najczęściej stosowanym formatem w prezentacji treścistereoskopowych,w postaci elektronicznej, jestJPS,stanowiący pojedynczy obraz JPEG o parzystej liczbie pikseli w poziomie, zawierający umieszczone obok siebie treści przeznaczone dla prawego i lewego oka; zbiór JPS może być (jako „płaski” podwójny obraz) obsługiwany dowolnym narzędziem rozpoznającym JPEG (zwyczajnie widoczne są obie części).

Zobacz też

[edytuj|edytuj kod]

Przypisy

[edytuj|edytuj kod]

Linki zewnętrzne

[edytuj|edytuj kod]