Wybrane metody kompresji obrazów Celem kodowania kompresyjnego obrazu jest redukcja ilości informacji w nim zawartej. Redukcja ta polega na usuwaniu informacji nadmiarowej w obrazie, tzw. redundancji. Obraz zakodowany stanowi zbiór wzajemnie nieskorelowanych elementów
Czy kompresja jest obrazów jest potrzebna? Standardowy obraz telewizyjny (w postaci cyfrowej) ma wymiary 64 576. Do jego zapisu potrzeba ponad 1.1 MB (RGB). Przy wyświetlaniu 25 obrazów w ciągu sekundy, potrzeba ~28 MB. Zatem na płycie CD można zapisać ok. 25 s filmu. Na płycie DVD (dwustronna, 17 GB) można zapisać ok. 1 min. filmu.
Prosty schemat transmisji obrazu OBRAZ ORYGINALNY F OBRAZ ZAKODOWANY Y KODOWANIE KANAŁU KODER: Y=S(F) KANAŁ TRANSMISYJNY OBRAZ ODEBRANY F DEKODER: F =T(Y ) OBRAZ ZAKODOWANY Y DEKODOWANIE KANAŁU KANAŁ BEZSTRATNY: Y =Y Jeżeli F = F, (T = S -1 ) to kompresja jest bezstratna Jeżeli F F, (T S -1 ) to kompresja jest stratna
Miary błędu określone dla kompresji stratnej Błąd średniokwadratowy e N N 1 = 2 rms [ F( i, j ) F' ( i, j )] 2 N i= 1 j= 1 Średniokwadratowy stosunek sygnału do szumu SNR ms = N N i= 1 j= 1 N N i= 1 j= 1 [F ( i, F'( i, j) j) 2 F'( i, j) ] 2
Redundancja, stopień (współczynnik) kompresji... Niech n 1, n 2 oznaczają różną liczbę bitów niosących tę samą informację. Wtedy względna redundancja pierwszego zbioru danych (opisanego przez n 1 ) jest zdefiniowana jako: R = 1-1/C R gdzie C R - stopień kompresji (ang. compression ratio): dla n 1 = n 2 : C R = 1; R = dla n 1 >> n 2 : C R -> ; R -> 1 dla n 1 << n 2 : C R -> ; R -> - C R = n 1 / n 2
... entropia Entropia obrazu F(i,j) jest zdefiniowana jako: E F L 1 = i= p ( l ) log p( l ) i 2 i gdzie p(l i ) - prawdopodobieństwo wystąpienia poziomu jasność l i w obrazie (dane z histogramu obrazu) Jeżeli stosuje się logarytm o podstawie 2, to entropia określa średnią liczbę bitów potrzebnych do zakodowania jednego punktu obrazu cyfrowego
Przykładowe wartości entropii dla różnych obrazów E = 7.1 E = 5.31
Rodzaje redundancji definiowane przy kompresji obrazów Redundancja kodu Redundancja przestrzenna (geometryczna) Redundancja psychowizualna
Redundancja kodu Średnia długość słowa kodowego obrazu wynosi: m avg L 1 = i= m l ( ) p( l ) i i gdzie m(l i ) - długość słowa wykorzystywana do zakodowania poziomu jasności l i Optymalna liczba bitów wykorzystywana do kodowania poziomów jasności w obrazie jest równa entropii.
Przykład l k p(l k ) kod 1 m 1 (l k ) kod 2 m 2 (l k ).19 3 11 2 1.25 1 3 1 2 2.21 1 3 1 2 3.16 11 3 1 3 4.8 1 3 1 4 5.6 11 3 1 5 6.3 11 3 1 6 7.2 111 3 6 m 1 avg = 3, m 2 avg = 2.7, E = 2.651 C R = 1.11, R =.99 ok. 1% danych w kodzie #1 jest nadmiarowych
Kod Huffmana Źródło Redukcja źródła Symbol p(l k ) #1 #2 #3 #4 a2.4.4.4.4.6 a6.3.3.3.3.4 a1.1.1.2.3 a4.1.1.1 a3.6.1 a5.4
Kod Huffmana Źródło Kodowanie Symbol p(l k ) kod #1 #2 #3 #4 a2.4 1 1.4 1.4 1.4.6 a6.3.3.3.3 1.4 a1.1 11 11.1 1.2 1.3 a4.1 1 1.1 11.1 a3.6 11 11.1 a5.4 111
Właściwości kodu Huffmana kod o zmiennej długości zapewnia teoretycznie minimalną średnią liczbę symboli wykorzystywanych do kodowania ma zerową pamięć - kodowanie kolejnych symboli jest niezależne jest wzajemnie jednoznaczny w przyporządkowaniu symbolu i kodu
Metody kompresji wykorzystujące redundancję przestrzenną (geometryczną) - wykorzystuje się fakt, że poziomy jasności sąsiednich punktów obrazu są ze sobą silnie skorelowane kodowanie RL (ang. run length coding) - obraz kodowany jest za pomocą par liczb (g, l) gdzie g oznacza poziom jasności, zaś l jest długością ciągu punktów obrazu o jasności g
Przykład kodowania RL obraz 6x6, 4 poziomy jasności 1 1 2 3 4 2 3 ciągi RL: (1,4); (3,3); (,2); (2,5); (3,2); (,7); (3,11); (1,2) czyli do zakodowania obrazu potrzeba 8*3=24 bajty ( g - 1 bajt, l - 2 bajty) reprezentacja obrazu: 6x6=36 bajtów C R = 36/24 = 1.5
Kodowanie predykcyjne - kompresja bezstratna KODOWANIE e(n) F(n) obraz wejściowy PREDYKTOR F (n) + - KODER SYMBOLI e(n) = F(n) - F (n) obraz po kompresji DEKODOWANIE DEKODER SYMBOLI e(n) + + G (n) Modulacja DPCM (Differential Pulse Code Modulation) PREDYKTOR F' ( n ) = G(n) round[ m i= 1 obraz po rekonstrukcji = obraz wejściowy G(n)=F(n) G(n) = G (n) + e(n) a F( n i )] i
Kodowanie bez utraty jakości - przykład ' n = round[.9 f ( n 1) ] 1 2 3 4 5.. f n 1 11 15 12 17 2.. f n - round(9)=9 round(9.9)=1 round(13.5)=14 round(1.8)=11 round(15.3)=15. e Pierwszy piksel wysyłany bez kodowania n = f n f ' n g = e + n ' n - 1 2 2+9=11 5 5+1=15-2 -2+14=12 6 6+11=17 5 5+15=2.. dekoder n g
Kodowanie predykcyjne - przykład m F' ( n) = round [ ai F( n i)] = F( n 1) m = 1, a1 i= 1 e(n) e(n) = 1 E = 2.44 (5.31) C R = 3.28 (1.51) E = 5.6 (7.1) C R = 1.58 (1.14)
Kodowanie predykcyjne - algorytm f[ i ],g[ i ] = array[1..n*n] of byte {obraz zapisany w postaci wektora} e[ i ] = array[2..n*n] of integer {obraz błędu} {predyktor 1-go rzędu, a 1 =1} {kodowanie} for i := 2 to N*N do begin e[ i ] := f[ i ] - f[ i-1 ]; e[ i ] :=e [ i ] + 128; if e[ i ] > 255 then e[ i ] := 255; if e[ i ] < then e[ i ] := ; end; {dekodowanie} g[ 1 ] := f[ 1 ]; for i := 2 to N*N do g[ i ] := e[ i ] + g[ i-1 ];
Kodowanie predykcyjne - kompresja stratna KODOWANIE F(n) + obraz wejściowy - e(n) F (n) KWANTYZATOR PREDYKTOR F (n) e (n) + + KODER SYMBOLI eta e (n) obraz po kompresji e(n) e(n) = F(n) - F (n) - eta F (n) = e (n) + F (n) KWANTYZATOR F (n) = a 1 F (n-1) = e (n-1) + F (n-1); predyktor 1-go rzędu, a 1 =1 F (1) = F(1)
Kodowanie predykcyjne - kompresja stratna DEKODOWANIE G(1) = F(1) DEKODER SYMBOLI e (n) + + G (n) PREDYKTOR G(n) obraz po rekonstrukcji obraz wejściowy G(n) F(n) G(n) = G (n) + e (n) G (n) = G(n-1)
Kodowanie z utratą jakości - przykład n 1 2 3 4 5.. f n 1 11 15 12 17 2 ' fn - 1 15 2 15 1 e n - 1-8 2 1.. ' e n 5 5-5 -5 5 '' n ' n f = e + 1 15 2 15 1 2. f ' n n ' ' = gn en fn gn g + 1 15 4 2 5 15-3 1 7 2.. Pierwszy piksel wysyłany bez kodowania dekoder
Wpływ współczynnika eta na błędy kodowania za małe eta za duże eta
Eta=1 Eta=1 Eta=2 Eta=4
Kodowanie predykcyjne stratne - algorytm f[ i ], f [ i ], g[ i ] = array[1..n*n] of byte {obraz zapisany w postaci wektora} e[ i ] = array[2..n*n] of integer {obraz błędu} {predyktor 1-go rzędu, a 1 =1, eta - stała kwantyzatora} {kodowanie} f [ 2 ] := f [ 1 ]; for i := 2 to N*N do begin e[ i ] := f[ i ] - f [ i ]; if e[ i ] >= then e[ i ] := eta else e[ i ] := -eta; f [ i+1 ] := e[ i ] + f [ i ]; end; {dekodowanie} g := f ; if g[ i ] < then g[ i ] := ; if g[ i ] > 255 then g[ i ] := 255;
Redundancja psychowizualna Wykorzystuje się specyficzne właściwości układu wzrokowego człowieka; Niektóre cechy obrazu charakteryzują się mniejszą wrażliwością w porównaniu z innymi elementami obrazu.
Redundancja psychowizualna przykład 8 bitów 5 bitów 3 bity
Redundancja psychowizualna przykład (obraz tekstury) 8 bitów 7 bitów 6 bitów 5 bitów 4 bity 3 bity 2 bity 1 bit
Kodowanie transformacyjne F(i,j) KONSTRUKCJA NxN BLOKÓW OBRAZU TRANSFORMATA PROSTA KWANTYZATOR KODER SYMBOLI Obraz zakodowany DEKODER SYMBOLI TRANSFORMATA ODWROTNA REKONSTRUKCJA OBRAZU Z BLOKÓW NxN F (i,j) Obraz po rekonstrukcji
Kodowanie transformacyjne Transformacja Karhunena-Loewe - optymalna w sensie krytererium informacyjnego, złożona obliczniowo (brak szybkiej transformaty) Transformacja kosinusowa (DTK) - rozsądny kompromis pomiędzy uzyskiwanym stopniem kompresji a złożonością obliczeniową (istnieje FCT) Transformacja falkowa - bardzo wysoki stopień kompresji, stosowana m.in. w standardach MPEG 2, JPEG 2
Funkcje bazowe DTK Współczynniki DTK każdego z bloków określają jaka waga jest przyporządkowana każdej funkcji bazowej Bloki obrazu 8x8 są tworzone w wyniku kombinacji liniowej tych funkcji bazowych
MATLB Demo dyskretna transformacja kosinusowa
Podstawowe standardy kompresji JPEG (Joint Photographic Experts Group) - grupa inżynierów i naukowców zajmująca się rozwojem metod i opracowaniem standardów kompresji obrazów nieruchomych (www.jpeg.org) MPEG (Moving Pictures Experts Group) - grupa inżynierów zajmująca się opracowaniem standardów kompresji sekwencji audio/video (www.mpeg.org)
dane obrazowe np. f(i,j) -128, dla l =256 - DTK 8 8 8 8 8 4 8 8 4 4 kodowanie Zigzac kodowanie predykcyjne 68-23 -4-3 -23-28 17 3-4 17 2-11 -3 3-11 -12 SCHEMAT KODERA JPEG-2 (jasność średnia) 68-23 -23-4 28-4 -3 17 17-3 3 2 3-11 -11-12 tablica kwantyzacji kwantyzator 7-2 -2-3 2 2 2-1 -1-1 kod Huffmana dane zakodowane 1111 11 11 111 11 11 11 1 1 1
dane zakodowane f (i,j) +128 SCHEMAT DEKODERA JPEG-2 2 9 7 8 7 8 4 9 8 4 3 7-2 -2-3 2 2 2-1 -1-1 dekodowanie Zigzac 7-2 -2-3 2 2 2-1 -1-1 tablica kwantyzacji 7-2 -2-3 2 2 2-1 -1-1 1111 11 11 111 11 11 11 1 1 1 + DTK -1 zdekodowane dane obrazowe dekodowanie predykcyjne (jasność średnia) kwantyzator -1 (kod Huffmana) -1
Porównanie standardów JPEG Lena 512x512,.3 b/piksel (VCDemo) JPEG (DTK) JPEG 2 (transformacja falkowa)
Standard MPEG Kodowanie INTRA frame (DTK) oraz INTER frame (wektory ruchu, DPCM) MPEG-1 MPEG-2 MPEG-4 Standard 1992 1994 1999 Zastosowania cyfrowy zapis video na CD cyfrowa TV (HDTV) transmisje video przez Internet Rozdzielczość Przestrzenna ok. 288 x 36 ok. 576 x 72 (1152 x 144) zależy od standardu sygnału video Liczba wyświetlanych ramek obrazu 25 3 ramek/s 5-6 ramek/s (1-12 ramek/s) do 6 ramek/s Bit Rate 1.5 Mb/s ok. 4 Mb/s (ok. 2 Mb/s) 5 64 kb/s 4 Mb/s Jakość VHS NTSC/PAL VHS/NTSC/PAL Współczynnik kompresji ok. 2-3 ok. 3-4 do kilkuset
DVD Video standard wykorzystujący DVD ROM (4.4 17 GB), rozdzielczość PAL 72 576, 24 fps, 12 b/pixel, MPEG-2, aspect ratio 4:3, 16:9, bit rate 4 Mbp (max. 9.8 Mbp), 2 8 g. filmu. Video CD (VCD) standard wykorzystujący CD ROM (~7 MB), rozdzielczość VHS 352 288, 24 fps, MPEG-1, aspect ratio 4:3, 7 min. filmu. DivX standard kodowania video wykorzystujący MPEG-4, bardzo rozpowszechniony w Internecie.
Idea kompresji MPEG DivX.com Deltaframes Keyframes
Porównanie jakości różnych standardów video HDTV 192x18 DVD 16:9 http://www.cs.tut.fi/~leopold/ld/resolutioncomparison/
Porównanie jakości różnych standardów video TV PAL VHS (VCD) http://www.cs.tut.fi/~leopold/ld/resolutioncomparison/