Kodowanie informacji

Podobne dokumenty
Kodowanie i kompresja Streszczenie Studia dzienne Wykład 9,

Kody Tunstalla. Kodowanie arytmetyczne

Granica kompresji Kodowanie Shannona Kodowanie Huffmana Kodowanie ciągów Kodowanie arytmetyczne. Kody. Marek Śmieja. Teoria informacji 1 / 35

Kompresja Kodowanie arytmetyczne. Dariusz Sobczuk

Kompresja bezstratna. Entropia. Kod Huffmana

Kodowanie i kompresja Streszczenie Studia Licencjackie Wykład 11,

Kodowanie i kompresja Tomasz Jurdziński Studia Wieczorowe Wykład Kody liniowe - kodowanie w oparciu o macierz parzystości

teoria informacji Entropia, informacja, kodowanie Mariusz Różycki 24 sierpnia 2015

Algorytmy kompresji. Kodowanie Huffmana, kodowanie arytmetyczne

Wstęp Statyczne kody Huffmana Dynamiczne kody Huffmana Praktyka. Kodowanie Huffmana. Dawid Duda. 4 marca 2004

Nierówność Krafta-McMillana, Kodowanie Huffmana

mgr inż. Grzegorz Kraszewski SYSTEMY MULTIMEDIALNE wykład 4, strona 1. GOLOMBA I RICE'A

Teoria informacji i kodowania Ćwiczenia

Kodowanie Huffmana. Platforma programistyczna.net; materiały do laboratorium 2014/15 Marcin Wilczewski

Temat: Algorytm kompresji plików metodą Huffmana

Entropia Kodowanie. Podstawy kompresji. Algorytmy kompresji danych. Sebastian Deorowicz

0-0000, , , itd

KODY SYMBOLI. Kod Shannona-Fano. Algorytm S-F. Przykład S-F

Podstawowe pojęcia. Teoria informacji

Kodowanie predykcyjne

Teoria Informacji - wykład. Kodowanie wiadomości

LZ77 LZ78. Kompresja danych. Tomasz Jurdziński. Wykład 5: kodowanie słownikowe

Kodowanie i entropia

Kompresja danych kodowanie Huffmana. Dariusz Sobczuk

Kodowanie informacji

Założenia i obszar zastosowań. JPEG - algorytm kodowania obrazu. Geneza algorytmu KOMPRESJA OBRAZÓW STATYCZNYCH - ALGORYTM JPEG

teoria informacji Kanały komunikacyjne, kody korygujące Mariusz Różycki 25 sierpnia 2015

Kwantyzacja wektorowa. Kodowanie różnicowe.

0 + 0 = 0, = 1, = 1, = 0.

Kodowanie i kompresja Streszczenie Studia dzienne Wykład 6

Def. Kod jednoznacznie definiowalny Def. Kod przedrostkowy Def. Kod optymalny. Przykłady kodów. Kody optymalne

Kodowanie predykcyjne

Wygra Polska czy Brazylia, czyli o tym jak zwięźle zapisywać informacje

Definicja. Jeśli. wtedy

Wstęp do Informatyki

KODY SYMBOLI. Materiały KODA, A.Przelaskowski. Koncepcja przedziałów nieskończonego alfabetu

Systemy liczbowe. 1. Przedstawić w postaci sumy wag poszczególnych cyfr liczbę rzeczywistą R = (10).

ZADANIE 1. Rozwiązanie:

Teoretyczne Podstawy Informatyki

Dane, informacja, programy. Kodowanie danych, kompresja stratna i bezstratna

Algorytmy kodowania entropijnego

Ćwiczenie nr 4: Kodowanie arytmetyczne, range coder

Przetwarzanie i transmisja danych multimedialnych. Wykład 5 Kodowanie słownikowe. Przemysław Sękalski.

Kompresja danych DKDA (7)

Modulacja i kodowanie. Labolatorium. Kodowanie źródłowe Kod Huffman a

Kodowanie Shannona-Fano

Kodowanie informacji. Kody liczbowe

Kod IEEE754. IEEE754 (1985) - norma dotycząca zapisu binarnego liczb zmiennopozycyjnych (pojedynczej precyzji) Liczbę binarną o postaci

Podstawy Informatyki

Elementy teorii informacji i kodowania

Teoria przetwarzania A/C i C/A.

Kody blokowe Wykład 2, 10 III 2011

Kodowanie i kompresja Streszczenie Studia Licencjackie Wykład 14, Kryptografia: algorytmy asymetryczne (RSA)

Algorytmy i struktury danych. Co dziś? Tytułem przypomnienia metoda dziel i zwyciężaj. Wykład VIII Elementarne techniki algorytmiczne

Matematyka dyskretna

Kodowanie i kompresja Streszczenie Studia Licencjackie Wykład 15, Kryptografia: algorytmy asymetryczne (RSA)

LICZBY ZMIENNOPRZECINKOWE

Wstęp do programowania. Reprezentacje liczb. Liczby naturalne, całkowite i rzeczywiste w układzie binarnym

Wielkości liczbowe. Wykład z Podstaw Informatyki dla I roku BO. Piotr Mika

Niech x 1,..., x n będzie ciągiem zdarzeń. ---

Wielkości liczbowe. Wykład z Podstaw Informatyki. Piotr Mika

Kodowanie i kompresja Streszczenie Studia dzienne Wykład 12,

Według raportu ISO z 1988 roku algorytm JPEG składa się z następujących kroków: 0.5, = V i, j. /Q i, j

Podstawy kompresji danych

złożony ze słów zerojedynkowych o długości co najmniej 3, w których druga i trzecia litera od końca sa

Met Me ody numer yczne Wykład ykład Dr inż. Mic hał ha Łan Łan zon Instyt Ins ut Elektr Elektr echn iki echn i Elektrot Elektr echn olo echn

Przetwarzanie i transmisja danych multimedialnych. Wykład 2 Podstawy kompresji. Przemysław Sękalski.

Algorytmy zachłanne. dr inż. Urszula Gałązka

Przetwarzanie i transmisja danych multimedialnych. Wykład 3 Kodowanie Shannona Fano i Huffmana. Przemysław Sękalski.

Algorytmy i struktury danych. wykład 8

Przykład: Σ = {0, 1} Σ - zbiór wszystkich skończonych ciagów binarnych. L 1 = {0, 00, 000,...,1, 11, 111,... } L 2 = {01, 1010, 001, 11}

Zapis liczb binarnych ze znakiem

Teoria Informacji i Metody Kompresji Danych

2 Kryptografia: algorytmy symetryczne

Podstawy Informatyki dla Nauczyciela

Arytmetyka binarna - wykład 6

Stan wysoki (H) i stan niski (L)

Kody Huffmana. Konrad Wypyski. 11 lutego 2006 roku

Podstawy Informatyki. Inżynieria Ciepła, I rok. Wykład 5 Liczby w komputerze

Teoria informacji i kodowania Ćwiczenia Sem. zimowy 2016/2017

Modelowanie motywów łańcuchami Markowa wyższego rzędu

Logiczny model komputera i działanie procesora. Część 1.

Kompresja danych Streszczenie Studia Dzienne Wykład 10,

Teoria liczb. Magdalena Lemańska. Magdalena Lemańska,

Technologie Informacyjne

Dane, informacja, programy. Kodowanie danych, kompresja stratna i bezstratna

Pracownia Komputerowa wykład V

Metody numeryczne Technika obliczeniowa i symulacyjna Sem. 2, EiT, 2014/2015

pobieramy pierwszą literę komunikatu i wypełniamy nią (wszystkie pozycje tą samą literą) bufor słownikowy.

SYSTEMY UCZĄCE SIĘ WYKŁAD 10. PRZEKSZTAŁCANIE ATRYBUTÓW. Dr hab. inż. Grzegorz Dudek Wydział Elektryczny Politechnika Częstochowska.

Indukcja. Materiały pomocnicze do wykładu. wykładowca: dr Magdalena Kacprzak

Kodowanie transformacyjne. Plan 1. Zasada 2. Rodzaje transformacji 3. Standard JPEG

W jaki sposób użyć tych n bitów do reprezentacji liczb całkowitych

Przepustowość kanału, odczytywanie wiadomości z kanału, poprawa wydajności kanału.

Samodzielnie wykonaj następujące operacje: 13 / 2 = 30 / 5 = 73 / 15 = 15 / 23 = 13 % 2 = 30 % 5 = 73 % 15 = 15 % 23 =

Kod znak-moduł. Wartość liczby wynosi. Reprezentacja liczb w kodzie ZM w 8-bitowym formacie:

1.1. Pozycyjne systemy liczbowe

Technologie Informacyjne Wykład 4

Wstęp do informatyki- wykład 1 Systemy liczbowe

2 Arytmetyka. d r 2 r + d r 1 2 r 1...d d 0 2 0,

Transkrypt:

Kodowanie informacji Tomasz Wykład 4: kodowanie arytmetyczne

Motywacja Podstawy i własności Liczby rzeczywiste Motywacje 1 średnia długość kodu Huffmana może odbiegać o p max + 0.086 od entropii, gdzie p max = max i=1,...,n {p i } - może to powodować duże odchylenia od wartości entropii 2 efekt ten można zniwelować poprzez zastosowanie kodów Huffmana, w którym alfabet stanowia ciagi symboli określonej długości - ale wtedy rośnie gwałtownie rozmiar alfabetu. : zastosowanie podejścia z punktu 2. bez konieczności tworzenia słów kodowych dla wszystkich ciagów symboli. Uogólnienie kodowania Shannona.

Ogólnie Podstawy i własności Liczby rzeczywiste Pierwsze spojrzenie tekst zostaje odwzorowany na liczbę z przedziału [0, 1) nazywana ZNACZNIKiem. zakodowana postać tekstu tworzy ZNACZNIK, reprezentowany z odpowiednio dobrana dokładnościa oraz n - długość kodowanego tekstu.

Jedna litera Podstawy i własności Liczby rzeczywiste Znacznik dla jednej litery alfabetu: elementy alfabetu numerujemy a 1,a 2,...,a n ; oznaczmy ich prawdopodobieństwa przez p 1,p 2,...,p n ; literze a i przyporzadkowujemy dowolna liczbę z przedziału [F(i),F (i + 1)), gdzie F (i) = i 1 j=1 p i

Znacznik dla ciagu Podstawy i własności Liczby rzeczywiste Kodowanie ciagu x 1...x n nad alfabetem a 1,...,a m : 1 z = [0,1); l = 0; p = 1; 2 Dla i = 1,2,...,n: 1 niech x i = a j 2 l = l + F (j)(p l) 3 p = l + F (j + 1)(p l) 3 znacznik = (l + p)/2 (lub dowolna liczba z przedziału [l,p))

Przykład Podstawy i własności Liczby rzeczywiste P(a) = 0.7, P(b) = 0.1, P(c) = 0.2. Kodujemy tekst abc. Tekst Lewy Prawy Znacznik 0 1 0.5 a 0 0.7 0.35 b 0.49 0.56 0.53 c 0.546 0.560 0.553

Jednoznaczność Podstawy i własności Liczby rzeczywiste Lemat Dla ustalonej długości tekstu n, każdy ciag jest odwzorowany na przedział rozłaczny z przedziałami odpowiadajacymi innym ciagom. Gwarantuje to jednoznaczność kodowania. Dowód Indukcja ze względu na długość kodowanego tekstu.

Dekodowanie Podstawy i własności Liczby rzeczywiste Dekodowanie ciagu o długości n ze znacznika z: 1 l = 0; p = 1; 2 Dla i = 1,2,...,n: 1 wybierz j takie, że l + F (j)(p l) z < l + F (j + 1)(p l) 2 przyjmij, że x i = a j 3 l = l + F (j)(p l); 4 p = l + F (j + 1)(p l). 3 Ciag oryginalny to x 1...x n.

Przykład Podstawy i własności Liczby rzeczywiste Niech z = 0.55 dla P(a) = 0.7, P(b) = 0.1, P(c) = 0.2 i n = 3. Tekst Lewy Prawy Znacznik 0 1 a 0 0.7 b 0.49 0.56 c 0.546 0.560

Liczby rzeczywiste Własności kodowania arytmetycznego 1 Wygenerowanie znacznika dla konkretnego ciagu nie wymaga wyznaczania badź pamiętania znaczników innych ciagów 2 Problem! Komputerowa reprezentacja znacznika może wymagać dużej pamięci - jak dobrać wartość znacznika aby zminimalizować potrzebna pamięć?

Długość znacznika Podstawy i własności Liczby rzeczywiste Twierdzenie Niech x = x 1...x n będzie ciagiem danych o prawdopodobieństwie wystapienia P(x) = n i=1 P(x i). Zaokraglenie z znacznika z dla ciagu x do m(x) = log1/p(x) + 1 bitów (polegajace na usunięciu dalszych bitów) gwarantuje jednoznaczność kodowania.

Dowód Podstawy i własności Liczby rzeczywiste Oznaczenia: z = (l + p)/2 - znacznik; z - zaokraglenie do m = m(x) bitów. Wystarczy pokazać, że l z < p dla l i p wyznaczonych przy omawianiu algorytmu. Jest to równoważne warunkowi: z z < (p l)/2. Zauważmy, że z z < p oraz 0 <= z z < 2 m. Pozostaje lewy koniec przedziału...

Dowód c.d. Podstawy i własności Liczby rzeczywiste Zauważmy: z z < p; p l = P(x) (dla ciagów jednoliterowych z definicji, dla dłuższych dowód indukcyjny) z(x) l = P(x)/2, z (x) > z(x) 1/2 m(x) z(x) 1/2 log(1/p(x))+1 > z(x) 1/(2 1/P(x)) = z(x) P(x)/2 = (p + l)/2 (p l)/2 = l.

Liczby rzeczywiste Jednoznaczność kodowania z zaokragleniem Ostatecznie, jednoznaczność wynika z: rozłaczności przedziałów. faktu, że z należy do przedziału odpowiadajacego danemu tekstowi.

Kod prefiksowy Podstawy i własności Liczby rzeczywiste Twierdzenie Kod arytmetyczny jest (dla ustalonej długości kodowanego tekstu) przy zaokraglaniu do log 1/P(x) + 1 bitów jest kodem prefiksowym. Dowód Wynika z następujacych faktów: przybliżenie z znacznika z do log1/p(x) + 1 bitów znajduje się w przedziale przypisanym ciagowi x, przedziały różnych ciagów sa rozłaczne. każde słowo (liczba) o prefiksie z też mieści się w przedziale przypisanym ciagowi x.

Przykład Podstawy i własności Liczby rzeczywiste Znacznik dla P(a)=0.7, P(b)=0.1, P(c)=0.2 i tekstu abc to 0.553, binarnie 0.100011011. Liczba potrzebnych bitów to (log 1/0.014) + 1 = 8. Czyli zakodowana postać tekstu to 10001101.

Kod arytmetyczny a entropia Liczby rzeczywiste Kod a entropia Średnia liczba bitów na jeden symbol kodu arytmetycznego (z zaokragleniem) dla ciagów o długości n jest H(P) + 2/n, gdzie P to rozkład prawdopodobieństwa dla alfabetu wejściowego. Dowód {x x =n} P(x)m(x) = {x x =n} P(x)( log1/p(x) + 1) {x x =n} P(x)(log(1/P(x)) + 1 + 1) = {x x =n} P(x)logP(x) + 2 {x x =n} P(x) = H(P n ) + 2 A zatem, liczba bitów na symbol jest nie większa niż H(P) + 2/n.

Problemy z implementacja wraz ze wzrostem długości ciagu potrzebna coraz większa precyzja reprezentacji liczb; a czas operacji arytmetycznych jest proporcjonalny do długości liczb... dla efektywności transmisji danych - potrzebny przyrostowy algorytm kodowania (znacznik powstaje wraz z wydłużaniem się ciagu, nie dopiero po przeczytaniu całego ciagu).

Przeskalowanie Podstawy i własności E 1 (x) = 2x: [l,p) [0,0.5) l = 0.0l,p = 0.0p 2 p = 0.p,2 p = 0.p E 2 (x) = 2(x 0.5): [l,p) [0.5,1) l = 0.1l,p = 0.1p 2(l 1/2) = 0.l,2(p 1/2) = 0.p E 3 (x) = 2(x 0.25): l [0.25,0.5), p [0.5,0.75) l = 0.01l, p = 0.10p 2(l 1/4) = 0.0l, 2(p 1/4) = 0.1p

Kodowanie z przeskalowaniem Na poczatku: licznik := 0, l = 0, p = 1, kod jest słowem pustym. Po zakodowaniu każdej litery: Dopóki [l,p) [0,0.5) lub [l,p) [0.5,1) lub [l,p) [0.25,0.75): 1 Jeśli [l,p) [0,0.5): 1 zamień [l,p) na [E 1 (l),e 1 (p)), gdzie E 1 (x) = 2x. 2 dołacz do kodu słowo 01 licznik 3 licznik := 0 2 Jeśli [l,p) [0.5,1): 1 zamień [l,p) na [E 2 (l),e 2 (p)), gdzie E 2 (x) = 2(x 0.5). 2 dołacz do kodu słowo 10 licznik 3 licznik := 0 3 l < 0.5 < p oraz [l,p) [0.25,0.75): 1 zamień [l,p) na [E 3 (l),e 3 (p)), gdzie E 3 (x) = 2(x 0.25) 2 licznik := licznik + 1;

Przeskalowanie: poprawność Lemat 1 (E 1 ) 2 num(0.0x) = num(0.x) 2 (E 2 ) num(0.1x) 1/2 = num(0.0x); 3 (E 3 ) Ciag przeskalowań E 1 E2 i jest równoważny E 3 i E 1. 4 (E 3 ) ciag przeskalowań E 2 E1 i jest równoważny E 3 i E 2 gdzie num(y) oznacza wartość liczby zapisanej binarnie jako słowo y.

Dekodowanie z przeskalowaniem Wejście: znacznik, czyli ciag binarny będacy zakodowana postacia tekstu; n długość tekstu. Inicjalizacja: 1 Niech m = max ai log(1/p(a i )) + 3. Odczytujemy pierwsze m bitów znacznika i ustalamy pierwsze przybliżenie znacznika z i pierwszy symbol w tekście, a j. 2 l := F (j); p := F(j + 1); 3 licznik := 0;

Dekodowanie z przeskalowaniem Kontynuacja (powtarzaj aż do odkodowania n liter): 1 jeśli [l,p) spełnia warunki dla przeskalowania E 1 lub E 2 : 1 przeskaluj [l,p) przy pomocy E 1 lub E 2, 2 usuń 1 + licznik najbardziej znaczacych bitów z i dołacz kolejne 1 + licznik bitów jako najmniej znaczace bity z 3 licznik := 0 2 jeśli [l,p) spełnia warunek dla E 3 : przeskalowanie E 3 dla [l,p) i z i zwiększenie licznik o 1; 3 jeśli przedział nie spełnia żadnego z warunków dla E 1, E 2, E 3 : odczytujemy kolejne bity z tak aby było ich co najmniej m; na podstawie z wyznaczamy kolejna literę tekstu i kolejny przedział.

Co daje skalowanie wielkość przedziału (p l) pozostaje nie mniejsza niż p min /4, gdzie p min to najmniejsze prawdopodobieństwo pojedynczego symbolu; Uwaga: mały przedział wymaga dużej dokładności (aby wartości l i p nie zrównały się). kodowanie progresywne: kod powstaje w trakcie kodowania, nie dopiero na końcu; dekodowanie: operacje na znaczniku długości log(1/p min ), nie na pełnym znaczniku; dekodowanie bardziej skomplikowane

całkowitoliczbowa Problem Arytmetyka zmiennoprzecinkowa: Cel generuje błędy zaokragleń, więc konieczna dokładna implementacja (komplikacje...); przeskalować przedział [0, 1) na zbiór naturalnych liczb m-bitowych, czyli [0,2 m 1], binarnie [0 m,1 m ]. Pytanie jak dobrać parametr m aby zachować jednoznaczność kodowania (nie możemy uzyskać przedziału o wielkości 0).

całkowitoliczbowa c.d. Założenia prawdopodobieństwa wyliczone na podstawie częstości występowania... niech c i to liczba wystapień symbolu a i, C = n i=1 c i wówczas p i = c i /C niech f i = i 1 j=1 c i Dobór parametru m dla jednego symbolu: 2 m > C (najmniejszy przedział to 1/C) dla k symboli: 2 m > C k... :( ale przeskalowanie gwarantuje, że po każdym kroku mamy przedział nie mniejszy niż p min /4 (czyli 1/4C) zatem wystarczy, że: 2 m > 4C.

całkowitoliczbowa c.d. Algorytm: jak zaokraglamy Kodowanie ciagu x 1...x n nad alfabetem a 1,...,a r : 1 l = 0; p = 2 m 1; 2 Dla i = 1,2,...,n: 1 niech x i = a j (p l+1) f (j) 2 l = l + C (p l+1) f (j+1) 3 p = l + C 1 3 znacznik: dowolna liczba całkowita z przedziału [l, p] Uwaga Musimy też stosować przeskalowania (w przeciwnym razie potrzebne bardzo duże m i rośnie czas obliczeń).

całkowitoliczbowa c.d. Jak zaokraglamy dlaczego 1: ponieważ [l,p) reprezentujemy jako [l,p 1]; dlaczego (p l+1) a nie (p l): z powyższego powodu; dlaczego f (j)/c i f (j + 1)/C: ponieważ odpowiadaja skumulowanym prawdopodobieństwom F(j) i F(j + 1).

Kodowanie adaptacyjne Idea W każdym kroku używamy częstości (a tym samym prawdopodobieństw) wyliczonych z już odkodowanej części tekstu. Modyfikacja algorytmu (de)kodujac k-ty symbol, dzielimy aktualny przedział zgodnie z częstościami dla pierwszych (k 1) symboli. Problem zerowego prawdopodobieństwa Jak kodować symbol pojawiajacy się po raz pierwszy: przydzielić częstości 1: niepraktyczne przy dużym alfabecie; zarezerwować symbol specjalny o częstości (np.) 1, który poprzedza pierwsze pojawienie się symbolu; po zakodowaniu tego symbolu kodujemy nowy symbol wg rozkładu jednostajnego.

Kodowanie z uwzględnieniem kontekstu Założenie Tekst nie jest ciagiem wartości niezależnych. Zależności dotycza sasiednich liter. Idea Dla każdego symbolu a i, badamy prawdopodobieństwo pojawienia się symboli a 1,...,a n bezpośrednio za a i.

Kontekst c.d. Podstawy i własności Przykład a b c a.4.2.4 b.1.8.1 c.25.25.5 Modyfikacja algorytmu (de)kodujac k-ty symbol, dzielimy aktualny przedział zgodnie z częstościami dla wystapień symboli za symbolem (k 1)szym.

Kontekst i adaptacja a implementacje Adaptacja i kontekst a implementacja dodatkowe struktury danych i ich modyfikacje: niekonieczne! algorytm z przeskalowaniem: wystarczy znać najmniejsze prawdopodobieństwo; implementacja całkowitoliczbowa: wystarczy znać długość kodowanego tekstu.

a kodowanie Huffmana Co lepsze? gdy grupujemy m symboli: Huffman koduje ze średnia H(P) + 1/m, kodowanie arytmetyczne H(P) + 2/m ale grupowanie dla dużych m w Huffmanie nierealistyczne kod arytmetyczny bardziej elastyczny: wersja adaptacyjna: dużo łatwiej przy kodowaniu arytmetycznym; uwzględnienie kontekstu: kodowanie arytmetyczne ma mniejsze wymagania pamięciowe.

: zastosowania bezstratna kompresja obrazów (JBIG): wariant predykcyjny; progresywna transmisja obrazów; algorytm PPM (kodowanie arytmetyczne z kontekstem): jedna z najlepszych metod kompresji tekstów w języku naturalnym. problem: patenty!