Format JPEG - Politechnika Białostocka

9
mgr inż. Grzegorz Kraszewski – SYSTEMY MULTIMEDIALNE – wykład 6, strona 1. Format JPEG Cechy formatu JPEG ● Schemat blokowy kompresora ● Transformacja koloru ● Obniżenie rozdzielczości chrominancji ● Podział na bloki ● Transformata cosinusowa ● Kwantyzacja współczynników ● Zbieranie współczynników z macierzy ● Kompresja współczynników ● JPEG progresywny

Transcript of Format JPEG - Politechnika Białostocka

Page 1: Format JPEG - Politechnika Białostocka

mgr inż. Grzegorz Kraszewski – SYSTEMY MULTIMEDIALNE – wykład 6, strona 1.

Format JPEG

Cechy formatu JPEG ● Schemat blokowy kompresora ● Transformacja koloru ● Obniżenie rozdzielczości chrominancji ● Podział na bloki ● Transformata

cosinusowa ● Kwantyzacja współczynników ● Zbieranie współczynników z macierzy ● Kompresja współczynników ● JPEG progresywny

Page 2: Format JPEG - Politechnika Białostocka

mgr inż. Grzegorz Kraszewski – SYSTEMY MULTIMEDIALNE – wykład 6, strona 2.

Cechy formatu JPEG

1. JPEG jest formatem przeznaczonym do zapisu obrazów nieruchomych z zastosowaniem kompresji stratnej.

2. JPEG obsługuje obrazy w odcieniach szarości (8 bitów na piksel) i RGB (24 bity na piksel).3. JPEG wykorzystuje dwie cechy ludzkiego wzroku: mniejszą rozdzielczość widzenia kolorów niż

jasności oraz małą wrażliwość na amplitudę szybkich zmian jasności.4. JPEG posiada dość rozbudowane środki informowania o absolutnej przestrzeni barw obrazu

(możliwość umieszczenia profilu koloru w pliku).5. JPEG obsługuje wyświetlanie progresywne (zwiększanie rozdzielczości obrazka w miarę

napływania nowych danych).6. JPEG jest przystosowany do transmisji w sieci – może być dekodowany przy sekwencyjnym

dostępie do danych.

Page 3: Format JPEG - Politechnika Białostocka

mgr inż. Grzegorz Kraszewski – SYSTEMY MULTIMEDIALNE – wykład 6, strona 3.

Budowa kodera JPEG

Transformacjakoloru

(RGB na YCbCr)

Podział na blokio rozmiarach8 x 8 pikseli

Transformatacosinusowa

(DCT II)

Liniowakwantyzacja

współczynników

Pominięciezer

(ByteRun)

Zebranie danychzygzakiem

Kompresjabezstratna(Huffman)

Obrazek RGB

Plik JPEG

Page 4: Format JPEG - Politechnika Białostocka

mgr inż. Grzegorz Kraszewski – SYSTEMY MULTIMEDIALNE – wykład 6, strona 4.

Transformacja koloru RGB do YCbCr i obniżenie rozdzielczości.

Transformacja ta rozkłada obraz w kolorach RGB na składową luminancyjną (Y) i dwie składowe chrominancyjne (składowa antyczerwona Cr i antyniebieska Cb), podobnie jak to się dzieje w telewizji kolorowej. Składowe chrominancyjne mogą zostać poddane próbkowaniu ze zmniejszoną rozdzielczością. W zależności od wymaganej jakości, składowe chrominancyjne mogą zostać:1.Pozostawione bez zmian, tzw. format 4:4:4.2.Rozdzielczość pozioma jest zmniejszana o połowę (format 4:2:2).3.Rozdzielczość pozioma i pionowa jest zmniejszana o połowę (format 4:2:0).

Y = 0,299·R + 0,587·G + 0,114·BCr = 128 – 0,168736·R – 0,331264·G + 0,5·BCb = 128 + 0,5·R – 0,418688·G – 0,081312·B

Y Cb i Cr 4:2:0Cb i Cr 4:2:2Cb i Cr 4:4:4

Page 5: Format JPEG - Politechnika Białostocka

mgr inż. Grzegorz Kraszewski – SYSTEMY MULTIMEDIALNE – wykład 6, strona 5.

Podział obrazu na bloki.

Każda ze składowych jest oddzielnie dzielona na bloki o rozmiarach 8 x 8 pikseli. Jeżeli składowe Cr i Cb były przeskalowane, bloki tych składowych obejmują obszar 16 x 8 lub 16 x 16 oryginalnego obrazka.

Pewnym problemem jest uzupełnienie bloków leżących na prawej i dolnej krawędzi obrazu do całkowitej wielokrotności 8 (o ile rozmiary obrazu nie są taką wielokrotnością). Najgorszym rozwiązaniem jest uzupełnienie zerami, nieco lepszym – kolorem ostatniego piksela. Najlepsze jest dodanie takich pikseli, aby odwrotna transformata cosinusowa odtworzyła piksele należące do obrazka jak najbardziej zbliżone wartościami do oryginalnych. W praktyce wykonuje się to najczęściej dla trzech pierwszych współczynników transformaty.

Page 6: Format JPEG - Politechnika Białostocka

mgr inż. Grzegorz Kraszewski – SYSTEMY MULTIMEDIALNE – wykład 6, strona 6.

O transformatach słów kilka

Generalnie rzecz biorąc transformata, to wyrażenie jakiejś funkcji jako (skończona lub nie) suma pewnego zestawu funkcji zwanego bazą transformaty. Np. baza transformaty Fouriera to zestaw sinusów i cosinusów o częstotliwości podstawowej i wielokrotnych. Współczynniki transformaty to po prostu zestaw liczb przez jakie mnożymy kolejne funkcje z bazy, aby uzyskać analizowaną funkcję pierwotną. W ogólnym przypadku współczynniki uzyskujemy licząc korelacje między kolejnymi funkcjami z bazy, a funkcją badaną w określonym przedziale.

W przypadku transformat dyskretnych, funkcja badana i funkcje bazy są zbiorami próbek, a korelacja jest iloczynem skalarnym funkcji bazowej i badanej.

Żeby transformata miała sens, jej baza musi być ortogonalna. To znaczy, że korelacja dwóch dowolnych różnych funkcji z bazy jest równa zero. Skąd to wymaganie? Jeżeli nie jest spełnione, to znaczy, że któraś z funkcji bazy może być wyrażona przez kombinację liniową innych funkcji bazy. Wskutek tego transformata nie jest jednoznaczna – badaną funkcję można poskładać z bazowych na kilka różnych sposobów. Nieortogonalność oznacza też, że albo niektóre z funkcji bazowych są zbędne, albo też transformata nie zadziała dla dowolnej funkcji badanej.

Page 7: Format JPEG - Politechnika Białostocka

mgr inż. Grzegorz Kraszewski – SYSTEMY MULTIMEDIALNE – wykład 6, strona 7.

Transformata cosinusowa kontra Fourier

Dyskretna transformata Fouriera zakłada okresowość badanej funkcji:

Przez to funkcja z reguły jest nieciągła na granicach, co zwiększa wartości składowych o wyższych częstotliwoś-ciach. Oprócz tego każda składowa sinusoidalna ma inną fazę, dlatego transformata Fouriera jest zespolona.

Transformata cosinusowa natomiast zakłada symetrię funkcji wokół osi Y (parzystość funkcji). Funkcja parzysta może być wyrażona przez sumę samych cosinusów, nieprzesuniętych w fazie. Dlatego transformata cosinusowa nie jest zespolona. Oprócz tego po lewej stronie badanego przedziału nie ma nieciągłości, więc amplitudy cosinusów o wyższych częstotliwościach są małe (tzw. cecha skupiania energii). Transformata cosinusowa ma w sumie 8 wariantów wynikających z następujących możliwości:● po prawej może nastąpić odbicie tylko po osi Y, albo po obu osiach.● symetria po lewej może być ustawiona na pierwszej próbce sygnału, albo w połowie między

pierwszą próbką a jej lustrzanym odbiciem.● symetria po prawej też może być ustawiona na próbce lub między próbkami.

JPEG używa transformaty typu II: odbicie po prawej tylko w osi Y, symetria po obu stronach między próbkami.

Podobnie jak DFT posiada przyspieszony algorytm FFT, tak DCT posiada również (bazowany na FFT) algorytm przyspieszonego przeprowadzania transformaty.

Page 8: Format JPEG - Politechnika Białostocka

mgr inż. Grzegorz Kraszewski – SYSTEMY MULTIMEDIALNE – wykład 6, strona 8.

Kwantyzacja współczynników i zbieranie zygzakiem.

Po przeprowadzeniu dwuwymiarowej DTC na kwadracie 8-bitowych pikseli o rozmiarach 8 x 8, otrzymujemy macierz 16-bitowych współczynników, również o rozmiarach 8 x 8, a więc 2 razy tyle danych. Gdzie kompresja? Otóż współczynniki poddawane są kwantyzacji liniowej (podzieleniu przez pewną liczbę i odrzuceniu części ułamkowej). Następnie współczynniki zbierane są w kolejności zygzakowatej (żółte strzałki), przez co elementy o największych wartościach znajdują się na HHHHHHHH

0wrażliwość

wzroku,wartości

współczynników

siła kwantyzacji

00

00

00

00

0 00

000

początku szeregu, natomiast na końcu z reguły mamy sporą ilość zer. Zastępowane są one symbolem „zera do końca”. Tak powstały stru-mień danych podawany jest do kodera Huffmana (z predefiniowanym lub dyna-micznym słownikiem).

Page 9: Format JPEG - Politechnika Białostocka

mgr inż. Grzegorz Kraszewski – SYSTEMY MULTIMEDIALNE – wykład 6, strona 9.

JPEG progresywny

Progresywne wyświetlanie obrazów JPEG zostało zrealizowane poprzez zmianę kolejności przesyłania skwantowanych współczynników transformaty cosinusowej. W normalnym obrazku przesyłane są zebrane zygzakiem współczynniki dla kolejnych kwadratów 8 × 8 (kwadraty idą kolejno liniami od góry i od lewej do prawej w linii). W obrazku progresywnym najpierw przesyłane są elementy [0,0] transformaty dla wszystkich kwadratów, następnie elementy [1,0], następnie [0,1] i dalej zgodnie z zygzakiem. Poruszamy się więc zygzakiem jednocześnie po wszystkich kwadratach obrazka.

Progresywność JPEG ma kilka przewag nad progresywnością PNG:1. Rozmiar pliku nie zwiększa się, często się nawet zmniejsza (progresywny PNG z reguły jest nieco

większy od zwykłego), bo koder Hufmana pracuje na symbolach o zbliżonych wartościach.2. Przybliżony obrazek lepiej wygląda. Dlaczego? Przy PNG przybliżony prostokąt ma kolor lewego

górnego piksela. Przy JPEG pierwsze przybliżenie używa współczynników [0,0] transformat, a więc wartości średnie koloru. Tak więc przybliżenia w PNG wyglądają jakbyśmy przeskalowali obrazek w dół metodą usuwania linii i kolumn, a następnie powiększyli. Przy JPEG efekt jest taki jakbyśmy wykonali resampling i powiększyli. Daje to znacznie przyjemniejszy dla oka efekt.

3. Można uzyskać znacznie więcej poziomów pośrednich (chociaż 7 to i tak najczęściej za dużo...).