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

Podobne dokumenty
Kompresja Kodowanie arytmetyczne. Dariusz Sobczuk

1.1. Pozycyjne systemy liczbowe

Podstawowe operacje arytmetyczne i logiczne dla liczb binarnych

Technologie Informacyjne

Kod U2 Opracował: Andrzej Nowak

Kodowanie i kompresja Streszczenie Studia dzienne Wykład 9,

Kody Tunstalla. Kodowanie arytmetyczne

ARYTMETYKA BINARNA. Dziesiątkowy system pozycyjny nie jest jedynym sposobem kodowania liczb z jakim mamy na co dzień do czynienia.

Zapis liczb binarnych ze znakiem

Kodowanie informacji

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

LABORATORIUM PROCESORY SYGNAŁOWE W AUTOMATYCE PRZEMYSŁOWEJ. Zasady arytmetyki stałoprzecinkowej oraz operacji arytmetycznych w formatach Q

ARCHITEKRURA KOMPUTERÓW Kodowanie liczb ze znakiem

SYSTEMY LICZBOWE. Zapis w systemie dziesiętnym

Kompresja danych kodowanie Huffmana. Dariusz Sobczuk

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

SYSTEMY LICZBOWE 275,538 =

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

Arytmetyka liczb binarnych

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

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

Wstęp do Informatyki

Kodowanie i kompresja Streszczenie Studia Licencjackie Wykład 11,

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

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

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

ZADANIE 1. Rozwiązanie:

Kompresja video (MPEG)

Algorytmy kompresji. Kodowanie Huffmana, kodowanie arytmetyczne

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

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

ARCHITEKTURA SYSTEMÓW KOMPUTEROWYCH

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

Podstawowe pojęcia. Teoria informacji

Urządzenia Techniki. Klasa I TI. System dwójkowy (binarny) -> BIN. Przykład zamiany liczby dziesiętnej na binarną (DEC -> BIN):

Kompresja danych DKDA (7)

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

Arytmetyka komputera. Na podstawie podręcznika Urządzenia techniki komputerowej Tomasza Marciniuka. Opracował: Kamil Kowalski klasa III TI

Podstawy Automatyki. Wykład 9 - Podstawy matematyczne automatyki procesów dyskretnych. dr inż. Jakub Możaryn. Instytut Automatyki i Robotyki

Teoria informacji i kodowania Ćwiczenia

Pracownia Komputerowa wykład V

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

LICZBY ZMIENNOPRZECINKOWE

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

Kompresja bezstratna. Entropia. Kod Huffmana

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

Wprowadzenie Algorytm ByteRun ByteRun - przykład Algorytm RLE Przykład działania RLE Algorytm LZW Przykład kompresji LZW

Techniki multimedialne

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

Przedmiot: Urządzenia techniki komputerowej Nauczyciel: Mirosław Ruciński

Luty 2001 Algorytmy (7) 2000/2001

Systemy zapisu liczb.

Podstawy Informatyki dla Nauczyciela

Nierówność Krafta-McMillana, Kodowanie Huffmana

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

Wprowadzenie do architektury komputerów systemy liczbowe, operacje arytmetyczne i logiczne

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

12. Wprowadzenie Sygnały techniki cyfrowej Systemy liczbowe. Matematyka: Elektronika:

RODZAJE INFORMACJI. Informacje analogowe. Informacje cyfrowe. U(t) U(t) Umax. Umax. R=(0,Umax) nieskończony zbiór możliwych wartości. Umax.

DYDAKTYKA ZAGADNIENIA CYFROWE ZAGADNIENIA CYFROWE

Kodowanie liczb całkowitych w systemach komputerowych

Podstawy Informatyki

Systemy liczbowe używane w technice komputerowej

Wstęp do informatyki. Pojęcie liczebności. Zapis liczb. Liczenie bez liczebników. Podstawy arytmetyki komputerowej. Cezary Bolek

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

Wstęp do informatyki- wykład 2

Arytmetyka komputera

Wstęp do informatyki. Pojęcie liczebności. Liczenie bez liczebników. Podstawy arytmetyki komputerowej. Cezary Bolek

Arytmetyka binarna - wykład 6

0 --> 5, 1 --> 7, 2 --> 9, 3 -->1, 4 --> 3, 5 --> 5, 6 --> 7, 7 --> 9, 8 --> 1, 9 --> 3.

Pracownia Komputerowa wykład VI

Kwantyzacja wektorowa. Kodowanie różnicowe.

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

Temat 7. Dekodery, enkodery

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

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

Teoria przetwarzania A/C i C/A.

Teoria Informacji i Metody Kompresji Danych

Teoretyczne Podstawy Informatyki

Kodowanie Shannona-Fano

Stan wysoki (H) i stan niski (L)

1259 (10) = 1 * * * * 100 = 1 * * * *1

Arytmetyka stałopozycyjna

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

Zestaw 3. - Zapis liczb binarnych ze znakiem 1

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

Liczby rzeczywiste są reprezentowane w komputerze przez liczby zmiennopozycyjne. Liczbę k można przedstawid w postaci:

Operacje arytmetyczne

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

Kod uzupełnień do dwóch jest najczęściej stosowanym systemem zapisu liczb ujemnych wśród systemów binarnych.

Podstawy Informatyki

7. CIĄGI. WYKŁAD 5. Przykłady :

Temat: Algorytm kompresji plików metodą Huffmana

Zadanie 1. Zmiana systemów. Zadanie 2. Szyfr Cezara. Zadanie 3. Czy liczba jest doskonała. Zadanie 4. Rozkład liczby na czynniki pierwsze Zadanie 5.

Tranzystor JFET i MOSFET zas. działania

Metoda znak-moduł (ZM)

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

Architektura komputerów Reprezentacja liczb. Kodowanie rozkazów.

Ciała i wielomiany 1. przez 1, i nazywamy jedynką, zaś element odwrotny do a 0 względem działania oznaczamy przez a 1, i nazywamy odwrotnością a);

Granice ciągów liczbowych

Transkrypt:

mgr inż. Grzegorz Kraszewski SYSTEMY MULTIMEDIALNE wykład 4, strona 1. KOMPRESJA ALGORYTMEM ARYTMETYCZNYM, GOLOMBA I RICE'A Idea algorytmu arytmetycznego Przykład kodowania arytmetycznego Renormalizacja przedziału Kod Golomba Kod Rice'a jako uproszczenie kodu Golomba Zastosowania omówionych kodów

mgr inż. Grzegorz Kraszewski SYSTEMY MULTIMEDIALNE wykład 4, strona 2. Idea kodowania arytmetycznego Podobnie jak kodowanie Huffmana, kodowanie arytmetyczne bazuje na rozkładzie częstości (lub prawdopodobieństwa) występowania poszczególnych znaków alfabetu w kompresowanej wiadomości. Co więcej, udowodniono matematycznie, że kod Huffmana jest szczególnym przypadkiem kodowania arytmetycznego. W kodowaniu arytmetycznym zastosowanie znajdują te same metody określania rozkładu prawdopodobieństwa, co przy kodowaniu Huffmana, a więc rozkład statyczny (dany z góry, lub liczony dla całej wiadomości), dynamiczny (dla kolejnych bloków), lub adaptacyjny. Dodatkowo istnieje możliwość stosowania rozkładów warunkowych, na przykład możemy wykorzystać fakt, że prawdopodobieństwo wystąpienia B po A jest inne niż po innych znakach. Koder arytmetyczny pozwala na zmianę rozkładu częstości nawet co 1 znak, warunek jest taki, że dekoder musi znać te wszystkie rozkłady i zmieniać je tak samo jak koder. 10/36 = 0,278 11/36 = 0,306 6/36 = 0,166 9/36 = 0,250 0,278 0,584 0,750 Zupełnie inaczej wyglądają dalsze czynności. Nie jest tworzony słownik symboli. Cała wiadomość jest kodowana jako jedna długa liczba z przedziału 0, 1). Na początku na bazie rozkładu częstości tworzymy zestaw przedziałów liczbowych. Każdy znak alfabetu dostaje swój podprzedział, którego szerokość jest proporcjonalna do częstości jego występowania w wiadomości. Oczywiście suma szerokości przedziałów wynosi 1. Na rysunkach obok pokazano rozkład częstości pikseli w przykładowej linii znanej z poprzednich wykładów, oraz skonstruowane przedziały sumujące się do przedziału 0, 1). Kolor pierwszego piksela w linii wybiera nam podprzedział. Następnie cały zestaw przedziałów skalujemy tak, aby zmieścił się w dopiero co wybranym podprzedziale i znów wybieramy podprzedział zgodny z następnym elementem wiadomości. Proces ten dla kilku pierwszych pikseli linii pokazano na następnej stronie.

mgr inż. Grzegorz Kraszewski SYSTEMY MULTIMEDIALNE wykład 4, strona 3. Przykład kodowania arytmetycznego 0,278 0,278 0,077284 0,278 21,484952 10 3 0,584 0,162352 45,133856 10 3 0,750 0,208500 57,963000 10 3 0,278 12,54721197 10 3 13,53869953 10 3 5,972816656 10 3 13,53869953 10 3 0,306 13,84209473 10 3 12,54721197 10 3 0,166 14,63004916 10 3 14,17604771 10 3 16,11371400 10 3 15,22208849 10 3 14,35721175 10 3 Przykład kodowania arytmetycznego dla sekwencji: niebieski, niebieski, niebieski, zielony, czerwony.

mgr inż. Grzegorz Kraszewski SYSTEMY MULTIMEDIALNE wykład 4, strona 4. Kodowanie arytmetyczne renormalizacja przedziału Jest sprawą oczywistą, że liczba będąca wynikiem działania kodera artymetycznego staje się coraz dłuższa w miarę kompresowania kolejnych znaków wiadomości. To oczywiste, bo każdy kolejny przedział musi być zapisany z większą dokładnością (więcej cyfr po przecinku). Trzymanie całej liczby w pamięci mija się z celem, dlatego wykorzystuje się renormalizację przedziału. Renormalizacja polega w uproszczeniu na odrzuceniu najbardziej znaczących cyfr liczby, takich samych dla początku i końca przedziału. Cyfry te zostają zapisane do strumienia wyjściowego a następnie odrzucone. Dzięki temu koder pracuje na liczbach o skończonej precyzji. Po nadejściu zielonego piksela w przykładzie z poprzedniej strony, przedział kodera wyniesie: 0,01417604771 0,01435721175 Początkowe cyfry 0,014 są identyczne, a więc można je zapisać do strumienia, odrzucić i odjąć od przedziału otrzymując: 17604771 35721175 Następnie renormalizujemy przedział o czynnik 1000, otrzymując: 0,17604771 0,35721175 Należy oczywiście pamiętać, że praktyczne implementacje pracują na liczbach w systemie binarnym, dzięki czemu renormalizacja może być realizowana jako przesunięcia bitowe. Najczęściej renormalizacja odbywa się skokami co 1 bajt (8 cyfr binarnych).

mgr inż. Grzegorz Kraszewski SYSTEMY MULTIMEDIALNE wykład 4, strona 5. Wstęp do kodowania Golomba kod unarny i binarny skrócony Jak wspomniałem w poprzednim wykładzie, postać optymalnego kodu Huffmana (1 symbol 1 kod) zależy od rozkładu częstości (lub prawdopodobieństwa) występowania poszczególnych symboli w wiadomości. Jeżeli rozkład jest znany z góry, kod może zostać zdekodowany bez potrzeby przesyłania do dekodera tego rozkładu. Kody unarny i binarny skrócony są właśnie specjalizowanymi kodami dla ściśle określonych rozkładów. Kod unarny Kod ten jest optymalny dla rozkładów silnie nierównomiernych o charakterze zbliżonym do geometrycznego (rozkład ściśle geometryczny to taki, że P(x i ) = αp(x i+1 ), a więc częstość występowania każdego kolejnego elementu alfabetu jest α razy mniejsza od poprzedniego. Warunkiem optymalności kodu unarnego jest P(x i ) P(x i+1 ) + P(x i+2 ), a więc jeżeli posortujemy elementy według malejącej częstości występowania, to częstość danego elementu musi być większa lub równa sumie częstości dwóch następnych elementów. Warunek ten spełniają wszystkie rozkłady ściśle geometryczne o α większym lub równym tzw. liczbie złotego podziału równej około 1,618033989. Warunek ten jest również spełniony przez wiele rozkładów zbliżonych do geometrycznych. Kod unarny jest bardzo prosty. Pierwszy element alfabetu, o największej częstości występowania otrzymuje kod 0, zero jest w tym przypadku tzw. bitem stopu. Kolejne elementy otrzymują kody złożone z odpowiedniej ilości jedynek i zerowego bitu stopu na końcu, a więc: 10, 110, 1110, 11110, 111110, i tak dalej. Oczywiście możliwy jest kod odwrotny, w którym bitem stopu byłoby 1. Kod unarny (jak każdy szczególny przypadek kodu Huffmana) jest nieprefiksowy, co umożliwia jego jednoznaczne zdekodowanie.

mgr inż. Grzegorz Kraszewski SYSTEMY MULTIMEDIALNE wykład 4, strona 6. Wstęp do kodowania Golomba kod unarny i binarny skrócony Kod binarny skrócony Kod binarny skrócony stosowany jest do równomiernego rozkładu częstości znaków alfabetu, ale w przypadku, gdy ilość znaków alfabetu nie jest równa potędze dwójki (gdy jest równa, optymalnym kodem jest zwykłe kodowanie binarne, co prawda prefiksowe, ale o stałej długości, więc łatwe do zdekodowania). 0 1 2 3 4 5 6 7 8 9 kodowanie binarne 0000 0001 0010 0011 0100 0101 0110 0111 1000 1001 1010 1011 1100 1101 1110 1111 kodowanie binarne skrócone 0 0000 1 0001 2 0010 3 0011 4 0100 5 0101 0110 0111 1000 1001 1010 1011 6 1100 7 1101 8 1110 9 1111 Tabela po lewej przedstawia binarne kodowanie skrócone dla N=10 (wymaga czterech bitów, ale 6 kodów jest nieużywanych). W celu uzyskania kodowania skróconego przesuwamy nieużywane kody z końca tabeli do środka tak, aby pierwszy nieużywany kod występował po ilości kodów równej ilości kodów nieużywanych. Jeżeli ilość kodów nieużywanych jest większa lub równa ¼ najbliższej potęgi dwójki po N, z kodów początkowych możemy usunąć wiodące zero, w przeciwnym wypadku zero można usunąć tylko z niektórych kodów tak, aby zachować nieprefiksowość kodu. W przykładzie następna potęga dwójki to 16, ilość nieużywanych kodów jest większa od 16 ¼, a więc można usunąć wiodące zero z wszystkich kodów początkowych. Dla zwykłego kodowania binarnego średnia oczekiwana długość kodu to rzecz jasna 4, dla kodowania skróconego (przy założeniu równomiernej dystrybucji elementów alfabetu) wynosi ona (6 3 + 4 4) / 10 = 3,4.

mgr inż. Grzegorz Kraszewski SYSTEMY MULTIMEDIALNE wykład 4, strona 7. Kodowanie Golomba Kod Golomba przewidziany jest (podobnie jak kodowanie unarne) dla geometrycznych rozkładów prawdopodobieństwa elementów alfabetu. Takie rozkłady spotyka się często w pozostałościach sygnału dźwiękowego po jego predykcji za pomocą filtru adaptacyjnego. Aby zmniejszyć wielkość alfabetu, wykorzystuje się arytmetykę modulo: alfabet reszty po predykcji, elementy 32768 do +32767 (65536 elementów) zakodowanie liczb dodatnich jako parzyste, ujemnych jako nieparzyste (65536 elementów) wynik dzielenia przez M (65536/M elementów) dystrybucja geometryczna reszta z dzielenia przez M (M elementów) dystrybucja równomierna kodowanie unarne kodowanie bin. skrócone Oto przykład kodowania Golomba, niech M (baza kodu) będzie równe 10, a alfabet wejściowy składa się z liczb 8bitowych ze znakiem, liczy więc sobie 256 elementów. Alfabet wyników z dzielenia będzie liczył 26 elementów, alfabet reszt z dzielenia 10 elementów. 92 dodatnia > 184 184 / 10 = 18 184 % 10 = 4 111111111111111110 100 kodowanie unarne kodowanie binarne skrócone 62 ujemna > 125 125 / 10 = 12 125 % 10 = 5 111111111110 101 13 dodatnia > 26 26 / 10 = 2 26 % 10 = 6 10 110

mgr inż. Grzegorz Kraszewski SYSTEMY MULTIMEDIALNE wykład 4, strona 8. Kodowanie Rice'a Kod Rice'a to szczególny przypadek kodu Golomba, gdzie baza kodu M jest potęgą dwójki. Niesie to za sobą następujące korzyści: 1. Dzielenie może zostać zastąpione przez bitowe przesunięcie w prawo. 2. Operacja modulo może zostać zastąpiona przez maskę bitową (AND). 3. Ilość elementów w alfabecie reszt z dzielenia jest potęgą dwójki, koduje się je więc zwykłym kodem binarnym. Oto przykład kodowania kodem Rice'a, alfabet wiadomości to zakres liczb całkowitych od 128 do +127, baza kodu M = 16. słowo do zakodowania: 22 (dodatnie) > 44, binarnie 00011100. Operacja dzielenia: 00011100 >> 4 = 0001, kodowanie unarne daje 10 Operacja modulo: 00011100 & 00001111 = 1100, pozostaje w kodowaniu binarnym. Wynik: 10 1100 słowo do zakodowania 7 (ujemne) > 15, binarnie 00001111 Operacja dzielenia: 00001111 >> 4 = 0000, kodowanie unarne daje 0 Operacja modulo: 00001111 & 00001111 = 1111, pozostaje w kodowaniu binarnym. Wynik: 0 1111

mgr inż. Grzegorz Kraszewski SYSTEMY MULTIMEDIALNE wykład 4, strona 9. Zastosowania omówionych kodów Kody arytmetyczne Rzadko stosowane z dwóch przyczyn: po pierwsze spore wymagania pamięciowe i mocy obliczeniowej (to ograniczenie odchodzi już w przeszłość), duża ilość zastrzeżeń patentowych (to niestety nie). Często stosowane zamiast kodowania Huffmana jako ostatni stopień kompresji stratnej w nowszych kodekach (MPEG4, AAC+). Kody Golomba i Rice'a Stosowane praktycznie tylko w wersji Rice'a, bezstratne kompresory audio: FLAC, ALAC (Apple), próby stosowania do bezstratnej kompresji obrazów.