Kodowanie informacji Kodowanie

Slides:



Advertisements
Podobne prezentacje
Joanna Sawicka Wydział Nauk Ekonomicznych, Uniwersytet Warszawski
Advertisements

Kodowanie informacji Instytut Informatyki UWr Studia wieczorowe
Analiza współzależności zjawisk
Obserwowalność System ciągły System dyskretny
DYSKRETYZACJA SYGNAŁU
dr A Kwiatkowska Instytut Informatyki
WYKŁAD 6 ATOM WODORU W MECHANICE KWANTOWEJ (równanie Schrődingera dla atomu wodoru, separacja zmiennych, stan podstawowy 1s, stany wzbudzone 2s i 2p,
Filtracja obrazów cd. Filtracja obrazów w dziedzinie częstotliwości
Liczby pierwsze.
Badania operacyjne. Wykład 1
Badania operacyjne. Wykład 2
Macierze Maria Guzik.
Proces analizy i rozpoznawania
Geometria obrazu Wykład 8
Zapis informacji Dr Anna Kwiatkowska.
Transformata Fouriera
KOMPRESJA DANYCH DAWID FREJ. Kompresja danych Kompresja danych - polega na zmianie sposobu zapisu informacji w taki sposób, aby zmniejszyć redundancję
Matematyka.
Zależności funkcyjne.
Kod Graya.
Technika Mikroprocesorowa 1
Technika Mikroprocesorowa 1
opracowanie: Agata Idczak
Elementy Rachunku Prawdopodobieństwa i Statystyki
Wyrażenia algebraiczne
Rozkłady wywodzące się z rozkładu normalnego standardowego
Komputerowe metody przetwarzania obrazów cyfrowych
Podstawy automatyki 2012/2013Transmitancja widmowa i charakterystyki częstotliwościowe Mieczysław Brdyś, prof. dr hab. inż.; Kazimierz Duzinkiewicz, dr.
A. Sumionka. Starodawna gra marynarska; Gra dwu i wieloosobowa; Gracze wykonują ruchy naprzemian; Złożona ze stosów, w których znajduje się pewna ilość
Radosław Kaczyński Wrocław 2006
XML – eXtensible Markup Language
Podstawy analizy matematycznej I
1. ŁATWOŚĆ ZADANIA (umiejętności) 2. ŁATWOŚĆ ZESTAWU ZADAŃ (ARKUSZA)
Liczby całkowite dodatnie BCN
Podstawy statystyki, cz. II
Stało- i zmiennopozycyjna reprezentacja liczb binarnych
Matematyka i system dwójkowy
SYSTEMY EKSPERTOWE I SZTUCZNA INTELIGENCJA
IV EKSPLORACJA DANYCH Zadania eksploracji danych: klasyfikacja
Prezentacja Multimedialna
SYSTEMY EKSPERTOWE I SZTUCZNA INTELIGENCJA
User experience studio Użyteczna biblioteka Teraźniejszość i przyszłość informacji naukowej.
Algorytmika.
Seminarium licencjackie Beata Kapuścińska
Jak Jaś parował skarpetki Andrzej Majkowski 1 informatyka +
KARTY DŹWIĘKOWE.
WYKŁAD 3 Temat: Arytmetyka binarna 1. Arytmetyka binarna 1.1. Nadmiar
Systemy dynamiczne 2014/2015Obserwowalno ść i odtwarzalno ść  Kazimierz Duzinkiewicz, dr hab. in ż. Katedra In ż ynierii Systemów Sterowania 1 Obserwowalność.
Działania w systemie binarnym
Wnioskowanie statystyczne
Danuta Stanek KODOWANIE LICZB Systemy liczenia III.
Treści multimedialne - kodowanie, przetwarzanie, prezentacja Odtwarzanie treści multimedialnych Andrzej Majkowski informatyka +
RAR jako format kompresji bezstratnej.. RAR został stworzony przez Rosjanina Eugene Roshala. Do kompresji danych używa odmiany kompresji LZSS. Jest wolniejszym.
Elementy geometryczne i relacje
I T P W ZPT 1 Kodowanie stanów to przypisanie kolejnym stanom automatu odpowiednich kodów binarnych. b =  log 2 |S|  Problem kodowania w automatach Minimalna.
Geometria obrazu Wykład 3 Jak oszczędzać przestrzeń i czas ? 1.Przerzedzanie triangulacji – modelowanie terenu, – kompresja danych. 2.Kompresja stratna.
Algorytmy kodowania Shannona-Fano i Huffmana
Kompresja danych Instytut Informatyki UWr Studia dzienne Wykład nr 3: kody Golomba, kody Tunstalla.
Kompresja danych Instytut Informatyki UWr Studia dzienne Wykład nr 2: rozszerzone i dynamiczne Huffmana.
K ODY ZMIENNEJ DŁUGOŚCI Alfabet Morsa Kody Huffmana.
STATYSTYKA – kurs podstawowy wykład 8 dr Dorota Węziak-Białowolska Instytut Statystyki i Demografii.
Liczbami naturalnymi nazywamy liczby 0,1,2,3,..., 127,... Liczby naturalne poznaliśmy już wcześniej; służą one do liczenia przedmiotów. Zbiór liczb.
Pojęcia podstawowe Algebra Boole’a … Tadeusz Łuba ZCB 1.
Podstawy Informatyki.
Zbiory rozłączne.
Wstęp do Informatyki - Wykład 6
Wstęp do Informatyki - Wykład 4
Podstawy Automatyki Człowiek- najlepsza inwestycja
ALGORYTMY I STRUKTURY DANYCH
Zapis prezentacji:

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.

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ć.)

Nierówność Krafta-McMillana jest warunkiem, który musi spełniać kod, aby był jednoznacznie dekodowalny bez opóźnienia. Jest to warunek konieczny, ale nie wystarczający, tak więc istnieją 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

Przykład: kod A kod B kod C a1 00 a2 01 100 10 a3 110 a4 11 a2 01 100 10 a3 110 a4 11 Mamy więc dla wszystkich kodów r=2, K=4, gdyż nasze kody mają czteroelementowy alfabet wiadomość a1, a2, a3, a4. 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.

Dla kodu B lewa strona wynosi 1, więc ponownie spełniona jest nierówność Krafta-McMillana, 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.

Metody kompresji obrazów 1. Zapotrzebowanie na kompresję. 2. Zarys historii technik kompresji. 3. Techniki kompresji bezstratnej: Metody Huffmana, Kodowanie arytmetyczne, Kodowanie słownikowe, Metody predykcyjne. 4. Kompresje stratne: Kodowanie transformacyjne, Kompresja fraktalna, Kodowanie pasmowe (falkowe)

Czy kompresja jest obrazów jest potrzebna? Do zapisu standardowego obrazu telewizyjnego potrzeba ponad 1,7 MB (RGB). Przy wyświetlaniu 25 obrazów w ciągu sekundy, potrzeba ~42 MB. Zatem na płycie CD można zapisać ok. 17s filmu. Zaś na płycie DVD (17 GB) można zapisać ok. 7 minut filmu. Celem kodowania kompresyjnego obrazu jest redukcja ilości informacji w nim zawartej (tzw. redundancji)

Zapotrzebowanie na kompresję Powstające coraz nowocześniejsze systemy generacji, rekonstrukcji, przetwarzania i analizy obrazów w astronomii, medycynie, poligrafii, sztukach graficznych, sądownictwie, reklamie, produkcji przemysłowej, rynek multimedialny (np. koncerty na żywo w internecie, telekonferencje, teleedukacja) itd. Nie ma technik kompresji, które są optymalne w każdym zastosowaniu. Różnorodność analizowanych danych, zarówno co do ogólnej czy lokalnej charakterystyki zbioru wartości, jak też 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.

Kompresją danych nazywa się proces przekształcenia pierwotnej reprezentacji zbioru danych (dane wejściowe) w inną reprezentację o mniejszej liczbie bitów (kod wyjściowy), a odwrotny proces rekonstrukcji oryginalnego zbioru danych na podstawie reprezentacji skompresowanej (kodu wejściowego) nazywany jest dekompresja. Zwykle w procesie kompresji występują 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.

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, 11, 11, 7}. Wówczas pośrednia reprezentacja tego zbioru M = {3 x 5, 2 x 4, 5 x 11, 1 x 7}.

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.

Można wyróżnić 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. Jeżeli F’=F, (T=S-1) to kompresja jest bezstratna Jeżeli F’ ≠F, (T ≠ S-1) to kompresja jest stratna

Efektywność kompresji Zdolność do maksymalnego zmniejszenia rozmiaru nowej reprezentacji kompresowanych danych w stosunku do rozmiaru pierwotnego zbioru danych. Miary liczbowe tak rozumianej efektywności: stopień kompresji CR - stosunek liczby bitów reprezentacji obrazu oryginalnego do liczby bitów reprezentacji obrazu skompresowanego procent kompresji: średnia bitowa BR - średnia ilość bitów skompresowanej reprezentacji danych przypadająca na element oryginalnego zbioru danych. redundancja

Efektywność kompresji cd. 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. 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 ...

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. 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.

Miara ilości informacji Entropia obrazu f(x,y) jest zdefiniowana jako: 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. Przykładowe wartości entropii dla różnych obrazów: E = 5.31 E = 7.01

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 nie 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. MP3 lub JPEG. Pomimo, że nie jest doskonały, stosuje się go ze względu na prostotę oraz brak ograniczeń patentowych.

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.

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.

Algorytm statycznego kodowania Huffmana Określ prawdopodobieństwo (lub częstość występowania) dla każdego symbolu ze zbioru S. 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. 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.

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.

Na podstawie drzewa Huffmana tworzone są słowa kodowe według algorytmu: Każdej lewej krawędzi drzewa przypisz 0, prawej 1 (można też odwrotnie). Przechodź w głąb drzewa od korzenia do każdego liścia (symbolu): Jeśli skręcasz w prawo dopisz do kodu bit o wartości 1. 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.

Przykład Mamy symbole A,B,C,D o prawdopodobieństwach wystąpienia odpowiednio [0.1, 0.2, 0.3, 0.4]. 0.1 A 0.2 B 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.1 A 0.2 B 0.3 C 0.4 D

Łączymy węzły odpowiadające drzewku (A + B) oraz (C) Łączymy węzły odpowiadające drzewku (A + B) oraz (C). Teraz mamy ((A + B) + C)=0.6 i (D) = 0.4 0.4 D 0.3 C 0.1 A 0.2 B 0.6

Łączymy węzły odpowiadające drzewku ((A + B) + C) oraz (D) Łą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.4 D 0.3 C 0.1 A 0.2 B 0.6 1.0 1

Obliczamy kody znaków: A = lewo, lewo, lewo= 000 B = lewo, 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.  

Z kolei entropia źródła wynosi: E = − 0.1log20.1 − 0.2log20.2 − 0.3log20.3 − 0.4log20.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 .

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.

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, 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

((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

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

Średnia liczba bitów przypadająca na parę symboli to 3 Ś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.

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.

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).

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.

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. 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 bez pamięci DMS, które jest całkowicie zdefiniowane przez swój alfabet AS={a1, a2,...,an} oraz PS={p1, p2,...,pn}, gdzie pi=P(s=ai), pi 0 i np..: AS={0,1} oraz Źródło z pamięcią CSM jest określone poprzez: alfabet symboli AS={a1, a2,...,an}, zbiór wartości kontekstu XS={x1, x2,...,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:

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 przedział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.

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.

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.

Rodzaje redundancji (nadmiarowości) definiowane przy kompresji obrazów: Redundancja kodu, Redundancja przestrzenna (geometryczna), Redundancja psychowizualna.

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: m1avg = 3; m2avg = 2,7; E = 2,651 CR = 1,11; R = 0,099 ok. 10% danych w kodzie #1 jest nadmiarowych

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.

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 6x6, 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: 6x6=36 bajtów  CR = 36/24 = 1,5

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

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.

Obraz oryginalny rozmiar: 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 8x8 Wykonanie DCT na każdym bloku Zastąpienie liczb zmiennoprzecinkowych liczbami całkowitymi (kompresja stratna) Obraz oryginalny rozmiar: 196 662 b

Kompresja bardzo silna 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

Zastosowanie analizy Fouriera do filtracji obrazów Zniekształcony funkcją o sinusoidalnym kształcie Oryginał

Zastosowanie analizy Fouriera do filtracji obrazów Po wykonaniu transformaty Fouriera Wyzerowanie wartości odpowiedzialnych za częstotliwości zniekształceń

Zastosowanie analizy Fouriera do filtracji obrazów Obraz po wykonaniu odwrotnej transformaty Fouriera Oryginał

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):

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):

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):

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

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ć.