Kompresja falkowa na przykładzie JPEG2000 [1/143] [dr inż. Paweł Forczmański] Katedra Systemów Multimedialnych, Wydział Informatyki, Zachodniopomorski Uniwersytet Technologiczny w Szczecinie
Zawartość wykładu Transformata falkowa Aproksymacja/predykcja sygnału (obrazu) uproszczona transformata falkowa Statystyczne zależności we współczynnikach tr. falkowej dlaczego kompresja falkowa działa? State-of-the-art w kompresji falkowej [2/143]
[3/143] Generalne założenia kompresji Dwie fundamentalne zasady: Redukcja redundancji aims at removing duplication from the signal source (image/video). Redukcja nieistotności omits parts of the signal that will not be noticed by the signal receiver, namely the Human Visual System (HVS).
Typowe kroki: Oryginał (zrekonstruowany) Koder źródła (tr. odwrotna) dekorelacja danych -bezstratna kwantyzacja dekwantyzacja (bezstratne) Skompresowany [4/143] Kodowanie entropijne dekodowanie (stratne)
[5/143] Koncepcje Zmiana układu współrzędnych (reprezentacji) sygnału) pozwala na lepsze dopasowanie do dalszej obróbki Należy dążyć do reprezentacji, która będzie możliwie kompaktowa Większość energii sygnału powinno zmieścić się w niewielkiej liczbie współczynników.
[8/143] Obrazy w różnych skalach
[9/143] Korelacja między cechami w różnych skalach
[10/143] Konstrukcja falek podnoszenie (lifting) 3 kroki: Podział (krok S, Split) Przewiduwanie (krok P, Predict) Aktualizacja (krok U, Update)
[11/143] Przykład falka Haara Krok S Podział sygnału na nieparzyste I parzyste próbki: sn en 1 parzyste próbki on 1 nieparzyste próbki
[12/143] Przykład falka Haara Krok P Przewidywanie nieparzystych próbek z parzystych próbek sn, l l Dla falki Haara, przewidywanie nieparzystej próbki na podstawie poprzedniej próbki: sˆn, 2l 1 sn, 2l
[13/143] Przykład falka Haara Sygnał szczegółow : d n 1,l =sn,2l+1 sn,2l s n,l d n 1,l l l
[14/143] Przykład falka Haara Krok U Aktualizacja parzystych próbek aby uzyskać nastepną zgrubną aproksymację na nast. poziomie skali s n 1,l s n, 2l d n 1,l / 2 Średnia sygnału jest zachowana : 2 n 1 1 s l 0 2 n 1 n 1,l 1 / 2 s n,l l 0
[15/143] Falka Haara - podsumowanie d n 1,l s n, 2l 1 s n, 2l s n 1,l s n, 2l d n 1,l / 2 Można obliczyć 'w miejscu':.. sn, 2l 1 sn, 2 l -1 sn, 2l 1.. -1 d n 1,l 1 sn, 2 l 1/2 d n 1,l 1/2 d n 1,l 1 sn 1,l d n 1,l Krok P Krok U
[16/143] Falka Haara tr. odwrotna Realizacja transformacji w odwrotnym kierunku! sn, 2l sn 1,l d n 1,l / 2 sn, 2l 1 sn, 2l d n 1,l Następnie 'połącz' próbki nieparzyste i parzyste sn, 2 l sn, 2l 1 Połącz s n,l
[17/143] Uogólniony schemat podnoszenia w dekompozycji falkowej e j 1 + sj P S o j 1 - s j 1 U d j 1
[18/143] Dekompozycja wielopoziomowa Zestawienie w formie kaskady elementarnych procedur podnoszenia daje dekompozycję wielopoziomową sn lift sn 1 lift d n 1 d n 2 lift s0 d0
[19/143] Uogólniony schemat podnoszenia w tr. odwrotnej s j 1 e j 1 - U d j 1 P Połącz + o j 1 sj
[20/143] Wielopoziomowa tr. odwrotna Połączenie w kaskadę indywidualnych procedur podnoszenia s0 lift s1 lift s2... sn 1 d0 d1 d2 d n 1 lift sn
[21/143] Zalety przedstawionej implementacji Transformacja odwrotna Trywialna odwrtony kierunek wykonywania kodu Brak konieczności stosowania technik widmowych w projektowaniu filtrów Ogólność Nie istnieje potrzeba dopasowywania algorytmu do innych operatorów P I U Może zawierać nieliniowości (np. dla tr. stałoprzecinkowych)
[22/143] Falka na bazie spline Zaawnsowana falka wykorzystuje bardziej złożone operatory P i U Wykorzystuje predykcję liniową tw celu obliczenia próbek nieparzystych i przystych
Falka na bazie spline Krok P liniowa predykcja Sygnał wejściowy [23/143] Liniowa predykcja próbek nieparzystych Sygnał szczegółów (błąd predykcji pr. nieparzystych)
[24/143] Falka na bazie spline Predykcja nieparzystych próbek bazuje na próbkach parzystych znajdujących się w bezpośrednim sąsiedztwie: sˆn, 2l 1 1 / 2 sn, 2l sn, 2l 2 d n 1,l sn, 2l 1 1 / 2 sn, 2l sn, 2l 2
[25/143] Falka na bazie spline Krok U wykorzystuje poprzednią i bieżącą próbkę detali sn 1,l sn, 2l 1 / 4(d n 1,l 1 d n 1,l )
[26/143] Falka na bazie spline Zachowuje średnią wartośc sygnału i moment pierwszego rzędu : 2 n 1 1 s l 0 2 n 1 n 1,l 2 n 1 1 ls l 0 1 / 2 s n,l l 0 2 n 1 n 1,l 1 / 2 ls n,l l 0
[27/143] Falka na bazie spline Implementacja 'w miejscu' s n, 2l -1/2 sn, 2l 1-1/2 s n, 2l 1/4-1/2 d n 1,l 1/4 sn 1,l sn, 2 l 2 Krok P 1/4 Krok U sn, 2 l 2 1/4 d n 1,l -1/2 sn 1,l 1
[28/143] Falka na bazie spline d n 1,l sn, 2l 1 1 / 2 sn, 2l sn, 2l 2 sn 1,l sn, 2l 1 / 4(d n 1,l 1 d n 1,l ) Transformacja obwrotna jest prosta: sn, 2l sn 1,l 1 / 4(d n 1,l 1 d n 1,l ) sn, 2l 1 d n 1,l 1 / 2 sn, 2l sn, 2l 2 Połączenie próbek parzystych i nieparzystych następuje jak wcześniej
[29/143] Dekompozycja obrazu approx lift..... lift detail approx detail
[30/143] Dekompozycja obrazu approx lift detail in 1,n 1 lift approx lift detail d n1 1,n 1 approx detail d n2 1,n 1 lift detail approx d n3 1,n 1
[32/143] Dekompozycja: Struktura banku filtrów
[33/143] Rekonstrukcja : struktura banku filtrów
[34/143] Przykład LENA LH HL HH
[35/143]
[36/143]
[43/143] Dlaczego Falki (a nie DCT)? DCT dla bloków korelacja między blokami Widoczne granice bloków Artefakty blokowe w niskich bitrate'ach Mozna stosować nakładanie bloków (overlapping) ale to kosztowne obliczeniowo
[44/143] Dlaczego falki Nie trzeba dzielić na bloki Badziej odporne na błędy transmisji Mozliwa jest transmisja progresywna
JPEG2000 Nowy standard komitetu JPEG dla stratnej i bezstratnej kompresji obrazów ITU-T; ISO/IEC: Information technology JPEG 2000 image coding system: Core coding system. ITU-T Recommendation T.800 and ISO/IEC International Standard 15444-1, August 2002. Z roku 2000, następca algorytmu JPEG i Lossless JPEG, wyłoniony w drodze konkursu (ogłoszonego w 1997) oparty o algorytm CREW (Zandi, Allen, Schwartz, Boliek) Algorytm CREW był zgłoszony w odpowiedzi na konkurs, który miał wyłonić algorytm JPEG-LS. Jako podstawę JPEG-LS wybrano LOCO-I, lecz bogactwo dodatkowych własności algorytmu CREW (innych niż stratna/bezstratna kompresja obrazu jako całości) skłoniło komitet do rozpoczęcia prac nad JPEG2000. [45/143] Christopoulos, C.; Skodras, A.; Ebrahimi, T.: The JPEG2000 Still Image Coding System an Overview. IEEE Transactions on Consumer Electronics, November 2000, Vol. 46(4), pp. 1103-27.
JPEG2000 zarys Cechy algorytmu Algorytm stratnej/bezstratnej kompresji obrazów multispektralnych, barwnych oraz w stopniach szarości oparty o transformatę falkową Dla kompresji stratnej i bezstratnej, dostępne możliwości kodowanie progresywne, w tym progresja: stratne bezstratne kodowanie piramidowe kodowanie progresywne względem ROI (region of interest) dostęp swobodny do fragmentów obrazu Dla stratnej lepsza jakość od JPEG przy tym samym współczynniku dla współczynników poniżej 0.25 bpp znacznie lepsza ROI w standardzie (w JPEG formalnie również było jako extension) niezła odporność na błędy transmisji poprawienie współczynnika (kosztem pogorszenia jakości) nie wymaga pełnego dekodowania [46/143]
[47/143] JPEG2000 zarys Kroki algorytmu Sprowadzenie nominalnego zakresu jasności pikseli do przedziału symetrycznego względem 0 (jak w JPEG) Transformacja przestrzeni barw (opcjonalnie) Podział składowej na kafelki (opcjonalnie) Transformata falkowa kafelka (opcjonalnie) dekompozycja/kodowanie podpasmowe (subband decomposition) reprezentacja wielorozdzielcza Kwantyzacja współczynników transformaty (właściwie również opcjonalnie) Kodowanie arytmetyczne skwantowanych współczynników po dekompozycji na składowe/kafle/warstwy/percints obcinanie strumienia bitów Zapisanie zakodowanych danych w pliku o strukturze opisanej przez standard struktura elastyczna, tzn. możliwość kodowania dla wybranej preferencji progresji
Transformacja przestrzeni barw ICT (Irreversible Color Transform) RGB YCrCb Tylko do użycia z nieodwracalną transformatą falkową (9-7) RCT (Reversible Color Transform) stałopozycyjna aproksymacja ICT dla C1 i C2 ekspansja alfabetu [48/143]
[49/143] Podział składowej na kafelki Realizowany przez nałożenie prostokątnej siatki na obraz, przy czym krawędzie siatki nie muszą pokrywać się z krawędziami obrazu można dopasować podział do treści obrazu oraz zasobów komputera cały obraz może być jednym kafelkiem rozmiar kafelka typowo jest rzędu 28 x 28 pikseli
[50/143] Kodowanie podpasmowe
[51/143] Transformata falkowa Transformata falkowa rzędu I obrazu 2D... realizowana za pomocą jednowymiarowej transformaty falkowej zastosowanej najpierw do wierszy obrazu (otrzymujemy pasma L i H) a następnie do kolumn już przetransformowanego obrazu (otrzymujemy pasma LL, HL, LH, HH) L H LL HL LH HH
[52/143] Transformata falkowa LL HL LH HH
[53/143] Transformata falkowa Transformata falkowa wyższych rzędów do pasma LL zastosuj ponownie transformatę rzędu I (poniżej rzędy I i III) reprezentacja wielorozdzielcza: dla rzędu transformaty i mamy i + 1 poziomów rozdzielczości typowy rząd transformaty w JPEG2000: V LL HL LH HH
Transformata falkowa w JPEG2000 Transformata nie-odwracalna do zastosowania przy kompresji stratnej filtr 9-tap/7-tap Daubechies real-to-real Transformata odwracalna dla kompresji bezstratnej oraz stratnej filtr 5-tap/3-tap Daubechies integer-to-integer szczegóły na następnym slajdzie Realizowalne metodą liftingu (9-7 w 6 krokach, 5-3 w 2 krokach) (Ingrid Daubechies, Wim Sweldens Factoring Wavelet Transforms into Lifting Steps ) Przed transformatą ekstrapolujemy wiersze: (wiersz rozszerzony wiersz)... C B A A B C D E F G H H G F...... A B C C B A A B C C B A A B C C B A... [54/143]
[55/143] Transformata falkowa 5-3 Transformata DWT, implementacja metodą liftingu (X piksele wiersza przed transformatą, Y po transformacie, 2 koki: najpierw nieparzyste Y) X X 2n 2 Y2 n 1 X 2 n 1 2 n 2 następnie parzyste Y to tworzą pasmo L, nieparzyste pasmo H X 2 n 1 2 Y X 2 n Y2 n 2 n 1 4 Y 2 Y Y2 n X 2 n 2 n 1 2 n 1 4 X X 2n 2 X 2 n 1 Y2 n 1 2 n 2 przekształcenie jest odwracalne kosztem ekspansji alfabetu Transformata odwrotna L H
[56/143] Kwantyzacja współczynników transformaty Dla kompresji bezstratnej z krokiem 1 Dla stratnej (U współczynniki przed kwantyzacją, V po kwantyzacji, Δ krok kwantyzacji) V U / sgn(u ) koder dobiera krok kwantyzacji tak, aby osiągnąć zadany współczynnik krok dobierany jest dla każdego podpasma z osobna jego wartość dołączana jest do zakodowanego obrazu koder może stosować różne strategie doboru kroku kwantyzacji kwantyzacja nie jest jedyną metodą kontroli współczynnika w JPEG2000
[57/143] Kodowanie współczynników po kwantyzacji Etap 1. Podpasma kafelka są dzielone na bloki kodowe (przez nałożenie siatki prostokątnej na kafelek po kwantyzacji), typowy rozmiar bloku to 64x64. Blok kodowy dekomponowany jest na płaszczyzny bitowe (w kodowaniu płaszczyzn mniej znaczących bitów uwzględnia się te bardziej znaczące) Poszczególne bloki kodowe są kodowane niezależnie od siebie (MQ-Coder) Kodowanie każdej z płaszczyzn bitowych wykonywane jest w trzech przebiegach kodowania (Significance/Refinement/Cleanup). Wynikiem etapu 1 jest kolekcja ciągów bitów uzyskanych w przebiegach kodowania płaszczyzn bitowych bloków kodowych pasm komponentu po kwantyzacji i DCT Etap 1. pozwala na uwzględnienie preferencji kodowania (współczynnik kompresji vs. szybkość/ odporność na błędy; ROI)
[58/143] Kodowanie współczynników po kwantyzacji Etap 2. Definiuje się warstwy jakości rekonstrukcji obrazu Przebiegi kodowania bloków kodowych grupowane są w pakiety przypisując poszczególnym warstwom przebiegi kodowania warstwy mogą by warunkowo odrzucane Podpasma kafelka dzielone są na prostokątne obszary precints ograniczenie: każdy z bloków kodowych podpasma musi w całości zawierać się w jednym z precints sposób podziału podpasm na obszary precints jest zależny od poziomu rozdzielczości odpowiadającego danemu podpasmu pakiet zawiera wszystkie przebiegi kodowania płaszczyzn bitowych należące do danej warstwy jakości danego precint Pakiet opisuje dane obrazowe związane z konkretnym obszarem kafelka składowej, konkretnym podpasmem (a więc poziomem rozdzielczości) i konkretną warstwą jakości. Grupowanie zakodowanych płaszczyzn bitowych bloków kodowych w pakiety a następnie określenie kolejności umieszczenia pakietów w strumieniu bitów umożliwia transmisję progresywną względem jakości albo rozdzielczości
[59/143] JPEG2000 UWAGA: to był tylko zarys podstawowego standardu...... są również rozszerzenia standardu uogólniona transformata falkowa inna kwantyzacja transformacje przestrzeni barw inne... (standard liczy 200 stron a rozszerzenia standardu ponad 300)
[60/143] Algorytm bazowy JPEG2000 Dlaczego JPEG2000 jest stratny? przede wszystkim kwantyzacja odrzucanie pakietów wyższych warstw jakości (podpróbkowanie składowych chrominancji jak w JPEG można zrealizować za pomocą warstw jakości) również nie-odwracalne transformacja przestrzeni barw DWT
[62/143] Dlaczego kompresja falkowa jest efektywna? Original 1 level linear spline 1 level Haar 2 level Haar
[63/143] Dlaczego kompresja falkowa jest efektywna? Histogram współczynników falkowych 25000 20000 15000 Original Haar wavelet 10000 5000 0-255 -205-155 -105-55 -5 45 95 145 195 245
[64/143] Dlaczego kompresja falkowa jest efektywna? Etropia współczyników Entropia Obraz oryginalny 7.22 1-level Haar wavelet 5.96 1-level linear spline wavelet 5.53 2-level Haar wavelet 5.02 2-level linear spline wavelet 4.57
[65/143] Dlaczego kompresja falkowa jest efektywna? Zależności współczynników w różnych skalach P( X ) X
[71/143] 1993-2003 Embedded Zerotree Wavelet (EZW) 1993 Set Partition In Hierarchical Tree (SPIHT) 1995 Space-Frequency Quantization (SFQ) 1996 Estimation Quantization (EQ) 1997 Embedded Block Coding with Optimal Truncation (EBCOT) 2000 Least-Square Estimation Quantization (LSEQ) 2003