Kodowanie informacji Kodowanie Przyporzdkowanie elementom jakiego alfabetu cigw
Kodowanie informacji Kodowanie Przyporządkowanie elementom jakiegoś alfabetu ciągów binarnych. Kodowanie może mieć różne cele: • Zmniejszenie objętości danych – kompresja. • Zapewnienie odporności na błędy – kody korekcyjne. • Zapewnienie poufności danych – kryptografia. 1
Rodzaje kodów • Kody stałej długości – np. kody ASCII o długości 8 bitów. (Ponieważ długość jest stała nie ma kłopotu z podziałem na znaki. ) • Kody o różnej długości – kody prefiksowe, kod Morse’a. (Ważne jest zapewnienie, że kody da się prawidłowo odczytać. ) 2
Nierówność Krafta-Mc. Millana – warunek, który musi spełniać kod, aby był jednoznacznie dekodowalny bez opóźnienia. Jest to warunek konieczny, ale nie wystarczający, istnieją więc kody które spełniają tą nierówność, lecz nie są jednoznacznie dekodowalne bez opóźnienia. gdzie: r - wartościowość kodu (np. dla kodu binarnego r=2), K - ilość sygnałów elementarnych, li - długość i-tego sygnału elementarnego 3
Przykład: a 1 a 2 a 3 a 4 kod A 00 01 10 11 kod B 0 100 11 kod C 0 10 11 Mamy więc dla wszystkich kodów r=2, K=4, gdyż nasze kody mają czteroelementowy alfabet wiadomość a 1, a 2, a 3, a 4. Dla kodu A, otrzymujemy 1, więc nierówność jest spełniona. Dodatkowo widzimy, że ma on wszystkie ciągi kodowe o stałej długości i do tego każdy z nich jest inny. Na tej podstawie wnioskujemy, że jest to kod jednoznacznie dekodowalny, bez opóźnienia. 4
Dla kodu B lewa strona wynosi 1, więc ponownie spełniona jest nierówność Krafta-Mc. Millana, lecz widzimy, że czwarte słowo kodowe jest przedrostkiem słowa trzeciego, co eliminuje go z naszych rozważań. Natomiast dla kodu C lewa strona wynosi 9/8, czyli nierówność nie jest spełniona, możemy więc jednoznacznie określić, że nie jest to kod jednoznacznie dekodowalny bez opóźnienia. 5
Czy kompresja obrazów jest potrzebna? Jeżeli do zapisu standardowego obrazu telewizyjnego potrzeba ok. 2 MB, przy wyświetlaniu 25 obrazów w ciągu sekundy, potrzeba ~50 MB, na płycie CD można by zapisać kilkanascie sekund filmu. Zaś na płycie DVD (4, 4 GB) można zapisać ok. 1, 5 minuty filmu. Celem kodowania kompresyjnego obrazu jest redukcja ilości informacji w nim zawartej (tzw. redundancji) 6
Zapotrzebowanie na kompresję: Systemy generacji, rekonstrukcji, przetwarzania i analizy obrazów w: • astronomii, • medycynie, • rynek multimedialny np. : • poligrafii, - koncerty na żywo • sztukach graficznych, - w internecie, • sądownictwie, - telekonferencje, • reklamie, - teleedukacja itd. • produkcji przemysłowej, 7
Zapotrzebowanie na kompresję: Nie ma technik kompresji, które są optymalne w każdym zastosowaniu. Różnorodność analizowanych danych, co do - ogólnej czy lokalnej charakterystyki zbioru wartości, - sposobu ich wykorzystania powoduje, że dla różnych typów danych należy stosować dopasowane do ich własności algorytmy w celu uzyskania maksymalnej skuteczności kompresji. 8
Kompresja danych - proces przekształcenia pierwotnej reprezentacji zbioru danych (dane wejściowe) w inną reprezentację o mniejszej liczbie bitów (kod wyjściowy). Dekompresja danych - odwrotny proces rekonstrukcji oryginalnego zbioru danych na podstawie reprezentacji skompresowanej (kodu wejściowego). 9
W procesie kompresji występują najczęściej dwie kolejne fazy, które odnoszą się do całego zbioru lub poszczególnych jego części: • modelowanie - wykorzystując pewne metryczne zależności w przestrzeni danych, transformuje wartości danych w pewne symbole, • kodowanie binarne - wykorzystuje się utworzone wcześniej symbole. 10
Przykład: Prosty algorytm kodowania długości sekwencji (ang. RLE – run length encoding). Niech zbiór danych w reprezentacji oryginalnej O będzie następujący: O={5, 5, 5, 4, 4, 11, 11, 11, 7}. Wówczas pośrednia reprezentacja tego zbioru M = {3 x 5, 2 x 4, 5 x 11, 1 x 7}. 11
Jeśli przyjmiemy teraz zasadę, iż ta pośrednia reprezentacja jest kodowana binarnie tak, że na pierwszych czterech bitach zapisywana jest liczba wystąpień danego symbolu, a na następnych czterech wartość tegoż symbolu, wówczas kod wyjściowy K wygląda następująco: K={00110101, 00100100, 01011011, 00010111}. Można zauważyć, że długość oryginalnej reprezentacji danych wynosząca 44 bity (przy założeniu 4 -bitowej reprezentacji pojedynczego symbolu) została zmniejszona do 32 bitów nowej, skompresowanej reprezentacji. 12
Wyróżnia się dwie zasadnicze kategorie metod kompresji danych: • bezstratne – (odwracalne) gdzie zrekonstruowany po kompresji zbiór danych jest numerycznie identyczny ze zbiorem oryginalnym z dokładnością do pojedynczego bitu • stratne – (nieodwracalne) gdzie zrekonstruowany zbiór danych jest jedynie przybliżeniem oryginału. 13
Jeżeli F’=F, (T=S-1) - kompresja bezstratna Jeżeli F’ ≠F, (T ≠ S-1) - kompresja stratna 14
Efektywność kompresji Zdolność do maksymalnego zmniejszenia rozmiaru nowej reprezentacji kompresowanych danych w stosunku do rozmiaru pierwotnego zbioru danych. Miary liczbowe efektywności: • stopień kompresji CR - stosunek liczby bitów reprezentacji obrazu oryginalnego do liczby bitów reprezentacji obrazu skompresowanego: • procent kompresji: 15
Efektywność kompresji cd. • średnia bitowa BR - średnia ilość bitów skompresowanej reprezentacji danych przypadająca na element oryginalnego zbioru danych. • redundancja: Efektywność czy skuteczność metod kompresji to najczęściej zdolność do osiągnięcia w procesie kompresji możliwie dużych wartości CR lub CP, czy tez możliwie malej średniej bitowej BR. 16
Efektywność kompresji cd. Innymi kryteriami efektywności mogą być: • iloczyn: czas x średnia bitowa, • rodzaj powstających zniekształceń przy kompresji stratnej i ich poziom przy danym CR, • iloczyn: miara zniekształceń x średnia bitowa, • odporność tworzonego kodu na zakłócenia w czasie transmisji, • zdolność do uzyskania w procesie kompresji założonej z góry wartości CR • . . . 17
Zarys historii technik kompresji Sformułowanie przez C. Shannona pod koniec lat czterdziestych XX w. pojęcia entropii jako miary informacji, nadmiarowości, modeli źródeł informacji itp to zręby współczesnych technik kompresji danych. Opublikowanie 1952 r. przez D. A. Huffmana pracy, w której przedstawia algorytm tworzenia optymalnego kodu dla zbioru danych przy założeniu przyporządkowania każdemu symbolowi alfabetu źródła modelującego ten zbiór danych całkowitej liczby bitów. Metoda ta była dominującą aż do lat osiemdziesiątych w dziedzinie bezstratnych metod kompresji. 18
Zarys historii technik kompresji W latach 1977 i 1978 panowie Lempel i Ziv opublikowali dwa algorytmy bezstratnej kompresji, które stały się podstawą nowej grupy technik tzw. słownikowego kodowania - algorytmy nazwano LZ 77 i LZ 78. Doczekały się one praktycznej realizacji dopiero w 1984 r. przez Welcha – algorytm LZW. Stały się one podstawą tak znanych i powszechnie stosowanych kompresorów jak: Unix Compress, ARC, PKZIP, LHarc, ARJ. 19
Miara ilości informacji Entropia obrazu f(x, y): gdzie: p(Ii) - prawdopodobieństwo wystąpienia poziomu jasność Ii w obrazie. Logarytm o podstawie 2, to entropia określa średnią liczbę bitów potrzebnych do zakodowania każdego poziomu jasności obrazu. 20
Miara ilości informacji Przykładowe wartości entropii dla różnych obrazów: E = 7. 01 E = 5. 31 21
Kodowanie Huffmana Jedna z najprostszych i łatwych w implementacji metod kompresji bezstratnej. Została opracowana w 1952 roku przez Amerykanina Davida Huffmana. Algorytm Huffmana nie należy do najefektywniejszych systemów bezstratnej kompresji danych, dlatego też praktycznie używa się go samodzielnie. Często wykorzystuje się go jako ostatni etap w różnych systemach kompresji, zarówno bezstratnej jak i stratnej, np. MP 3 lub JPEG. Mimo, że nie jest doskonały, stosuje się go ze względu na prostotę oraz brak ograniczeń patentowych. 22
Dany jest alfabet źródłowy (zbiór symboli) oraz zbiór stowarzyszonych z nim prawdopodobieństw Symbolami są najczęściej bajty (chociaż mogą to być też np. pary znaków). Prawdopodobieństwa mogą zostać z góry określone dla danego zestawu danych, np. poprzez wyznaczenie częstotliwości występowania znaków w tekstach danego języka. Częściej jednak wyznacza się je indywidualnie dla każdego zestawu danych. Kodowanie Huffmana polega na utworzeniu słów kodowych (ciągów bitowych), których długość jest odwrotnie proporcjonalna do prawdopodobieństwa pi. Tzn. im częściej dane słowo występuje (może wystąpić) w ciągu danych, tym mniej zajmie bitów. Kompresja polega na zastąpieniu symboli otrzymanymi kodami. 23
Własności kodu: • kod Huffmana jest kodem prefiksowym; oznacza to, że żadne słowo kodowe nie jest początkiem innego słowa; • jeśli prawdopodobieństwa są różne, tzn. pj > pi, to długość kodu dla symbolu xj jest niewiększa od kodu dla symbolu xi; • słowa kodu dwóch najmniej prawdopodobnych symboli mają równą długość; • dwa najdłuższe symbole różnią się tylko jednym, ostatnim bitem. 24
Algorytm statycznego kodowania Huffmana 1. Określ prawdopodobieństwo (lub częstość występowania) dla każdego symbolu ze zbioru S. 2. Utwórz listę drzew binarnych, które w węzłach przechowują pary: symbol, prawdopodobieństwo. Na początku drzewa składają się wyłącznie z korzenia. 3. Dopóki na liście jest więcej niż jedno drzewo powtarzaj: • usuń z listy dwa drzewa o najmniejszym prawdopodobieństwie zapisanym w korzeniu. • wstaw nowe drzewo, w którego korzeniu jest suma prawdopodobieństw usuniętych drzew, natomiast one same stają się jego lewym i prawym poddrzewem. Korzeń drzewa nie przechowuje symbolu. 25
Drzewo, które pozostanie na liście, jest nazywane drzewem Huffmana – prawdopodobieństwo zapisane w korzeniu jest równe 1, natomiast w liściach drzewa zapisane są symbole. Algorytm Huffmana jest algorytmem niedeterministycznym ponieważ nie określa w jakiej kolejności wybierać drzewa z listy, jeśli mają takie samo prawdopodobieństwo. Nie jest również określone, które z usuwanych drzew ma stać się lewym bądź prawym poddrzewem. Jednak bez względu na przyjęte rozwiązanie średnia długość kodu pozostaje taka sama. 26
Na podstawie drzewa Huffmana tworzone są słowa kodowe według algorytmu: 1. Każdej lewej krawędzi drzewa przypisz 0, prawej 1 (można też odwrotnie). 2. Przechodź w głąb drzewa od korzenia do każdego liścia (symbolu): 3. Jeśli skręcasz w prawo dopisz do kodu bit o wartości 1. 4. Jeśli skręcasz w lewo dopisz do kodu wartości 0. Długość słowa kodowego jest równa głębokości symbolu w drzewie, wartość binarna zależy od jego położenia w drzewie. 27
Przykład Mamy symbole A, B, C, D o prawdopodobieństwach wystąpienia odpowiednio [0. 1, 0. 2, 0. 3, 0. 4]. 0. 2 B 0. 1 A 0. 3 C 0. 4 D Łączymy węzły odpowiadające symbolom (A) i (B). Teraz mamy (A + B) = 0. 3, (C) = 0. 3, (D) = 0. 4 0. 3 C 0. 3 0. 1 A 0. 2 B 0. 4 D 28
Łączymy węzły odpowiadające drzewku (A + B) oraz (C). Teraz mamy ((A + B) + C)=0. 6 i (D) = 0. 4 D 0. 6 0. 3 0. 1 A 0. 3 C 0. 2 B 29
Łączymy węzły odpowiadające drzewku ((A + B) + C) oraz (D). Teraz mamy tylko jeden wolny węzeł - drzewko (((A + B) + C) + D) = 1. 0 0 1 0. 6 0 1 0. 3 0 0. 1 A 0. 4 D 0. 3 C 1 0. 2 B 30
Obliczamy kody znaków: • A = lewo, lewo= 000 • B = lewo, prawo = 001 • C = lewo, prawo = 01 • D = prawo = 1 średnia długość kodu wyniesie: Jest to mniej niż 2 bity potrzebne w trywialnym kodowaniu o stałej długości znaku. 31
Z kolei entropia źródła wynosi: E = − 0. 1 log 20. 1 − 0. 2 log 20. 2 − 0. 3 log 20. 3 − 0. 4 log 20. 4 = 1. 8464 - optymalne kodowanie powinno charakteryzować się taką właśnie średnią długością kodu. Jednak widać, że jest ona większa - efektywność wynosi w tym przypadku. 32
Praktyczne zastosowanie Jednym z głównych problemów stosowania statycznego algorytmu Huffmana jest konieczność transmisji całego drzewa lub całej tablicy prawdopodobieństw (zwykle to drugie jako bardziej efektywne). Lepszą kompresję, kosztem jednak bardzo szybkiego wzrostu wymagań pamięciowych, uzyskuje się kodując kilka kolejnych znaków na raz, nawet jeżeli nie są one skorelowane. 33
Przykład kodowania po 2 znaki naraz Symbole to tak jak wtedy - A, B, C, D o prawdopodobieństwach wystąpienia odpowiednio [0. 1, 0. 2, 0. 3, 0. 4]. Jeśli liczba symboli jest nieparzysta, robimy coś z pierwszym lub ostatnim symbolem. Nie jest to w praktyce duży problem. Zastępujemy symbole parami symboli: AA, AB, AC, AD, BA, BB, BC, BD, CA, CB, CC, CD, DA, DB, DC, DD o prawdopodobieństwach odpowiednio: [0. 01, 0. 02, 0. 03, 0. 04, 0. 02, 0. 04, 0. 06, 0. 08, 0. 03, 0. 06, 0. 09, 0. 12, 34 0. 04, 0. 08, 0. 12, 0. 16].
Drzewko rośnie po kolei: (AA + AB) = 0. 03 (BA + AC) = 0. 05 (CA + (AA + AB)) = 0. 06 (BB + AD) = 0. 08 (DA + (BA + AC)) = 0. 09 (BC + CB) = 0. 12 ((CA + (AA + AB)) + BD) = 0. 14 (DB + (BB + AD)) = 0. 16 ((DA + (BA + AC)) + CC) = 0. 18 (CD + DC) = 0. 24 35
((BC + CB) + ((CA + (AA + AB)) + BD)) = 0. 26 (DD + (DB + (BB + AD))) = 0. 32 (((DA + (BA + AC)) + CC) + (CD + DC)) = 0. 42 (((BC + CB) + ((CA + (AA + AB)) + BD)) + (DD + (DB + (BB + AD)))) = 0. 58 ((((DA + (BA + AC)) + CC) + (CD + DC)) + (((BC + CB) + ((CA + (AA + AB)) + BD)) + (DD + (DB + (BB + AD))))) = 1. 0 36
Zatem odpowiednim parom znaków odpowiadają: AA - 101010 AB - 101011 AC - 00011 AD - 11111 BA - 00010 BB - 11110 BC - 1000 BD - 1011 CA - 10100 CB - 1001 CC - 001 CD - 010 DA - 0000 DB - 1110 DC - 011 DD - 110 37
Średnia liczba bitów przypadająca na parę symboli to 3. 73, a więc średnia liczba bitów na symbol to 1. 865. Jest to znacznie lepsza kompresja niż poprzednio. Używając większej liczby znaków można dowolnie przybliżyć się do kompresji maksymalnej, jednak znacznie wcześniej wyczerpie się pamięć, ponieważ wymagania pamięciowe rosną wykładniczo do liczby kompresowanych jednocześnie symboli. 38
Algorytm dynamicznego kodowania Huffmana Dynamiczne kodowanie Huffmana to kodowanie danych o nieznanej statystyce. Statystykę buduje się w miarę napływania danych i co znak lub co daną liczbę znaków poprawia drzewo Huffmana. Zaletą kodowania dynamicznego jest to, że nie ma potrzeby przesyłania drzewa kodów. Zamiast tego identyczną procedurę poprawiania drzewa muszą przeprowadzać zarówno koder jak i dekoder. 39
Algorytmy kompresji bezstratnej dobrze kompresują "typowe" dane, czyli takie w których występuje znaczna nadmiarowość informacji (redundancja). Pewne rodzaje danych są bardzo trudne lub niemożliwe do skompresowania: • strumienie liczb losowych (niemożliwe do skompresowania), • strumienie liczb pseudolosowych (w praktyce trudne, choć teoretycznie bardzo dobrze kompresowalne), • dane skompresowane za pomocą tego samego lub innego algorytmu (w praktyce trudne). 40
Najczęściej używane metody kompresji bezstratnej można podzielić na słownikowe i statystyczne, choć wiele metod lokuje się pośrodku: • metody słownikowe poszukują dokładnych wystąpień danego ciągu znaków, np. zastępują 'the ' krótszą ilością bitów niż jest potrzebna na zakodowanie 4 niezwiązanych znaków. Jednak znajomość symbolu 'the ' nie pociąga za sobą usprawnień w kompresowaniu 'they' czy 'then'. • metody statystyczne używają mniejszej ilości bitów dla częściej występujących symboli, w przypadku praktycznie wszystkich oprócz najprostszych metod, prawdopodobieństwa zależą od kontekstu. A więc np. dla 'h' występującego po 't' używają mniejszej ilości bitów niż dla innych znaków w tym kontekście. 41
Techniki kompresji bezstratnej: Konstrukcja różnych metod kodowania polega zasadniczo na określeniu sposobu realizacji dwu etapów bezstratnego procesu kompresji: modelowania i binarnego kodowania. Znajdowanie odpowiednich modeli źródeł danych, opisujących z dobrym przybliżeniem przekazywane rzeczywiste zbiory (strumienie) danych, umożliwią konstruowanie efektywnych technik kompresji. Przy konstruowaniu źródeł informacji należy wykorzystać wszelką informację dostępną a priori, aby uprościć model statystyczny ’niewiadomej’, czyli rzeczywistej informacji. 42
Techniki kompresji bezstratnej: Przyjmując model probabilistyczny zakładamy, ze informacja jest realizacją pewnej zmiennej losowej (procesu losowego) o określonych własnościach statystycznych. Najprostszą postacią źródła informacji S jest dyskretne źródło, które jest całkowicie zdefiniowane przez swój alfabet AS={a 1, a 2, . . . , an} oraz PS={p 1, p 2, . . . , pn}, gdzie pi=P(s=ai), pi 0 i np. . : AS={0, 1} oraz 43
Źródło z pamięcią CSM jest określone poprzez: • alfabet symboli AS={a 1, a 2, . . . , an}, • zbiór wartości kontekstu XS={x 1, x 2, . . . , xm}, • prawdopodobieństwa warunkowe P(ai xj) dla i =1, 2, . . . , n, j=1, 2, . . . , m, przy czym: N(ai, xj) - liczba łącznych wystąpień kontekstu x, i symbolu ai, N(xj) – liczba wystąpień kontekstu xj. • zasada określania kontekstu w każdej ’chwili czasowej’ przez funkcję f( ) symboli już wyemitowanych przez źródło. np. . : AS={0, 1, . . . , 255}, XS={31, 95, 159, 223} gdzie: 44
Kodowanie arytmetyczne to metoda kodowania źródłowego dyskretnych źródeł sygnałów, stosowana jako jeden z systemów w bezstratnej kompresji danych. Została wynaleziona przez Petera Eliasa około 1960 roku. Ideą tego kodu jest przedstawienie ciągu wiadomości jako podprzedziału jednostkowego [0, 1) wyznaczonego rekursywnie na podstawie prawdopodobieństw wystąpienia tychże wiadomości generowanych przez źródło. Ciąg kodowy reprezentujący kodowane wiadomości jest binarnym zapisem wartości z wyznaczonego w ten sposób przedziału. 45
Kodowanie Weźmy alfabet a, b, c z prawdopodobieństwami 0, 7; 0, 1; 0, 2. Zakodujmy tekst abc. Na początku mamy przedział: [0, 1). Kodujemy a i otrzymujemy przedział [0, 0. 7). Kodujemy b i otrzymujemy przedział [0. 49, 0. 56). Kodujemy c i otrzymujemy przedział [0. 546, 0. 56). Za znacznik możemy przyjąć 0. 553. 46
Własności • Dla ustalonej długości tekstu n, każdy ciąg jest odwzorowany na przedział rozłączny z przedziałami odpowiadającymi innym ciągom. Gwarantuje to jednoznaczność kodowania. • Wygenerowanie znacznika dla konkretnego ciągu nie wymaga wyznaczania bądź pamiętania znaczników innych ciągów. 47
Kodowanie słownikowe kodowanie danych, w którym podciągi komunikatu koduje się za pomocą słów ze słownika (tj. zbioru słów), zapisując ich pozycję (indeks) w słowniku. Takie metody dobrze kompresują dane, w których podciągi powtarzają się, np. w przypadku tekstów naturalnych (teksty książek, czasopism itp. ) wiele słów a nawet całych fraz występuje wielokrotnie. Powszechnie stosuje się metody kodowania słownikowego, w których słownik jest dynamiczny, budowany na podstawie kodowanych danych; słownik dynamiczny ma zwykle ograniczony rozmiar. 48
Rodzaje redundancji (nadmiarowości) definiowane przy kompresji obrazów: • Redundancja kodu, • Redundancja przestrzenna (geometryczna), • Redundancja psychowizualna. 49
Redundancja kodu: Średnia długość słowa kodowego obrazu wynosi: gdzie m(Ii) - długość słowa wykorzystywana do zakodowania poziomu jasności Ii Optymalna liczba bitów wykorzystywana do kodowania poziomów jasności w obrazie jest równa entropii. Przykład: m 1 avg = 3; m 2 avg = 2, 7; E = 2, 651 CR = 1, 11; R = 0, 099 ok. 10% danych w kodzie #1 jest nadmiarowych 50
Metody Huffmana: 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. 51
Redundancja przestrzenna (geometryczna) Wykorzystuje się fakt, że poziomy jasności sąsiednich punktów obrazu są ze sobą silnie skorelowane Kodowanie RL – obraz kodowany jest za pomocą par liczb (I, g) gdzie I oznacza poziom jasności, zaś g jest długością ciągu punktów obrazu o jasności I. Przykład kodowania RL obraz 6 x 6, 4 poziomy jasności: ciągi RL: (1, 4); (3, 3); (0, 2); (2, 5); (3, 2); (0, 7); (3, 11); (1, 2) czyli do zakodowania obrazu potrzeba 8*3=24 bajty ( I - 1 bajt, g - 2 bajty) reprezentacja obrazu: 6 x 6=36 bajtów CR = 36/24 = 1, 5 52
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 53
54
Kompresja JPEG • DCT dzieli obraz wideo na bloki po 64 punkty każdy, co tworzy blok 8 x 8. • Każdy tak utworzony blok jest kompresowany indywidualnie. 55
Kompresja JPEG • 3 kanały RGB zastępujemy dwoma kanałami barw i kanałem jaskrawości • Odrzucenie części pikseli z kanału barw • Podział na bloki 8 x 8 • Wykonanie DCT na każdym bloku • Zastąpienie liczb zmiennoprzecinkowych liczbami całkowitymi (kompresja stratna) Obraz oryginalny rozmiar: 196 662 b 56
Kompresja JPEG Kompresja silna do poziomu około 25% rozmiar: 4 070 b Kompresja bardzo silna do poziomu około 5% rozmiar: 1 741 b 57
Zastosowanie analizy Fouriera do filtracji obrazów Oryginał Zniekształcony funkcją o sinusoidalnym kształcie 58
Zastosowanie analizy Fouriera do filtracji obrazów Po wykonaniu transformaty Fouriera Wyzerowanie wartości odpowiedzialnych za częstotliwości zniekształceń 59
Zastosowanie analizy Fouriera do filtracji obrazów Obraz po wykonaniu odwrotnej transformaty Fouriera Oryginał 60
Miary błędu wnoszone przez kompresję stratną: 1. Średnia różnica: 2. Zawartość strukturalna (ang. Structual Content): 3. Znormalizowana korelacja wzajemna (ang. Normalized Cross-Correlation): 61
4. Jakość korelacji (Correlation Quality): 5. Maksymalna różnica (Maximum Difference), zwana też szczytowym błędem bezwzględnym (Peak Absolute Error-PAE): 6. Wierność obrazu (Image Fidelity): 7. Błąd średniokwadratowy (Mean Square Error): 8. Szczytowy błąd średniokwadratowy (Peak Mean Square Error): 62
9. Normalizowany błąd bezwzględny (Normalized Absolute Error): 10. Znormalizowany błąd średniokwadratowy (Normalized Mean Square Error): 11. Stosunek sygnału do szumu (Signal to Noise Ratio): 63
12. Szczytowy stosunek sygnału do szumu (Peak Signal to Noise Ratio): przy czym wartość jest zwykle stała (niezależna od obrazu) i wynosi np. 255 dla danych 8 bitowych. gdzie: i oznaczają wartości pikseli odpowiednio obrazu oryginalnego i przekształconego. M, N – wymiary analizowanych obrazów 64
Metody predykcyjne - prognozujące Predykcja to wybór, w ramach danego układu, najbardziej prawdopodobnej drogi rozwoju wyróżnionego zjawiska w nadchodzącym okresie, gdzie podstawę tego wyboru stanowi dotychczasowy przebieg tego zjawiska i aktualny stan układu. Im bardziej zróżnicowane prawdopodobieństwa wystąpienia symboli tym większą kompresję można uzyskać. 65
- Slides: 65