Komprese dat. Jan Outrata KATEDRA INFORMATIKY UNIVERZITA PALACKÉHO V OLOMOUCI. přednášky

Podobné dokumenty
Komprese dat. Jan Outrata KATEDRA INFORMATIKY UNIVERZITA PALACKÉHO V OLOMOUCI. přednášky

Komprese dat. Jan Outrata KATEDRA INFORMATIKY UNIVERZITA PALACKÉHO V OLOMOUCI. přednášky

Komprese dat (Komprimace dat)

Algoritmy komprese dat

Komprese dat. Jan Outrata KATEDRA INFORMATIKY UNIVERZITA PALACKÉHO V OLOMOUCI. přednášky

KOMPRESE OBRAZŮ. Václav Hlaváč. Fakulta elektrotechnická ČVUT v Praze katedra kybernetiky, Centrum strojového vnímání. hlavac@fel.cvut.

KOMPRESE OBRAZŮ. Václav Hlaváč, Jan Kybic. Fakulta elektrotechnická ČVUT v Praze katedra kybernetiky, Centrum strojového vnímání.

Kompresní techniky. David Bařina. 15. února David Bařina Kompresní techniky 15. února / 37

Teorie informace: řešené příklady 2014 Tomáš Kroupa

Informatika Kódování. Obsah. Kód. Radim Farana Podklady předmětu Informatika pro akademický rok 2007/2008

Teorie informace II: obtížnější řešené příklady 2014 Tomáš Kroupa

Dynamické datové struktury III.

Algoritmy komprese dat

Binární vyhledávací stromy pokročilé partie

Dynamické programování

Testování prvočíselnosti

Úvod do teorie informace

Jak v Javě primitivní datové typy a jejich reprezentace. BD6B36PJV 002 Fakulta elektrotechnická České vysoké učení technické

ZÁPADOČESKÁ UNIVERZITA V PLZNI

Aplikovaná informatika. Podklady předmětu Aplikovaná informatika pro akademický rok 2006/2007 Radim Farana. Obsah. Obsah předmětu

Základní datové struktury III: Stromy, haldy

Kódy pro odstranění redundance, pro zabezpečení proti chybám. Demonstrační cvičení 5 INP

Stromy, haldy, prioritní fronty

Informační systémy ve zdravotnictví

- znakové konstanty v apostrofech, např. a, +, (znak mezera) - proměnná zabírá 1 byte, obsahuje kód příslušného znaku

B3B33ALP - Algoritmy a programování - Zkouška z předmětu B3B33ALP. Marek Boháč bohacm11

B3B33ALP - Algoritmy a programování - Zkouška z předmětu B3B33ALP. Marek Boháč bohacm11

DIPLOMOVÁ PRÁCE. Petr Uzel Entropické kodéry

KOMPRESE DAT ARNOŠT VEČERKA KATEDRA INFORMATIKY PŘÍRODOVĚDECKÁ FAKULTA UNIVERZITA PALACKÉHO

Technická kybernetika. Obsah. Principy zobrazení, sběru a uchování dat. Měřicí řetězec. Principy zobrazení, sběru a uchování dat

Vyhledávání v textu. doc. Mgr. Jiří Dvorský, Ph.D. Katedra informatiky Fakulta elektrotechniky a informatiky VŠB TU Ostrava

TGH07 - Chytré stromové datové struktury

Reprezentace aritmetického výrazu - binární strom reprezentující aritmetický výraz

Select sort: krok 1: krok 2: krok 3: atd. celkem porovnání. výběr nejmenšího klíče z n prvků vyžaduje 1 porovnání

1. Převeďte dané číslo do dvojkové, osmičkové a šestnáctkové soustavy: a) b)

Vyhledávání. doc. Mgr. Jiří Dvorský, Ph.D. Katedra informatiky Fakulta elektrotechniky a informatiky VŠB TU Ostrava. Prezentace ke dni 21.

Informace v počítači. Výpočetní technika I. Ing. Pavel Haluza ústav informatiky PEF MENDELU v Brně haluza@mendelu.cz

AUTOMATY A GRAMATIKY. Pavel Surynek. Kontextové uzávěrové vlastnosti Turingův stroj Rekurzivně spočetné jazyky Kódování, enumerace

Data v počítači. Informační data. Logické hodnoty. Znakové hodnoty

Osnova přednášky. Informace v počítači. Interpretace dat. Údaje, data. Úvod do teorie informace. Výpočetní technika I. Ochrana dat

Vzdálenost jednoznačnosti a absolutně

Automaty a gramatiky(bi-aag) Formální překlady. 5. Překladové konečné automaty. h(ε) = ε, h(xa) = h(x)h(a), x, x T, a T.

Prioritní fronta, halda

Poslední nenulová číslice faktoriálu

Kompresní metody první generace

Vyhledávání. doc. Mgr. Jiří Dvorský, Ph.D. Katedra informatiky Fakulta elektrotechniky a informatiky VŠB TU Ostrava. Prezentace ke dni 12.

Aplikovaná informatika. Podklady předmětu Aplikovaná informatika pro akademický rok 2013/2014 Radim Farana. Obsah. Kybernetika

Množinu všech slov nad abecedou Σ značíme Σ * Množinu všech neprázdných slov Σ + Jazyk nad abecedou Σ je libovolná množina slov nad Σ

Algoritmizace Dynamické programování. Jiří Vyskočil, Marko Genyg-Berezovskyj 2010

Paralelní grafové algoritmy

Časová a prostorová složitost algoritmů

Algoritmus Minimax. Tomáš Kühr. Projektový seminář 1

TGH07 - Chytré stromové datové struktury

V kompletním grafu nenastává problém. Každý uzel je soused se zbytkem vrcholů a může s nimi kdykoliv komunikovat.

TGH09 - Barvení grafů

Racionální čísla, operátory, výrazy, knihovní funkce

Teorie kódování aneb jak zhustit informaci

Poslední aktualizace: 14. října 2011

Úvod do programovacích jazyků (Java)

Vzdálenost uzlů v neorientovaném grafu

Teorie informace a kódování (KMI/TIK) Reed-Mullerovy kódy

Hammingovy kódy. dekódování H.kódů. konstrukce. šifrování. Fanova rovina charakteristický vektor. princip generující a prověrková matice

Třídění a vyhledávání Searching and sorting

Algoritmy výpočetní geometrie

Reprezentace dat. INP 2008 FIT VUT v Brně

Algoritmy a datové struktury

NPRG030 Programování I, 2018/19 1 / :03:07

Dijkstrův algoritmus

BI-PA1 Programování a algoritmizace 1, ZS Katedra teoretické informatiky

IB108 Sada 1, Příklad 1 Vypracovali: Tomáš Krajča (255676), Martin Milata (256615)

Základní principy zobrazení čísla Celá čísla s pevnou řádovou čárkou Zobrazení reálných čísel Aritmetika s binárními čísly

Bakalářská matematika I

IB111 Úvod do programování skrze Python

Základy teorie pravděpodobnosti

AUTOMATY A GRAMATIKY

1 Báze a dimenze vektorového prostoru 1

STRUKTURA RASTROVÝCH DAT

Algoritmy I. Číselné soustavy přečíst!!! ALGI 2018/19

4 Stromy a les. Definice a základní vlastnosti stromů. Kostry grafů a jejich počet.

3. Třídy P a NP. Model výpočtu: Turingův stroj Rozhodovací problémy: třídy P a NP Optimalizační problémy: třídy PO a NPO MI-PAA

Pokročilé haldy. prof. Ing. Pavel Tvrdík CSc. Fakulta informačních technologií České vysoké učení technické v Praze c Pavel Tvrdík, 2010

4EK311 Operační výzkum. 5. Teorie grafů

Pracovní listy - programování (algoritmy v jazyce Visual Basic) Algoritmus

LabView jako programovací jazyk II

Informatika Datové formáty

Teorie informace Obsah. Kybernetika. Radim Farana Podklady pro výuku

Rekurzivní algoritmy

Předmluva k aktuálnímu vydání Úvod k prvnímu vydání z roku Typografické a syntaktické konvence... 20

III. Úplná pravděpodobnost. Nezávislé pokusy se dvěma výsledky. Úplná pravděpodobnost Nezávislé pokusy se dvěma výsledky Náhodná veličina

součet cvičení celkem. známka. Úloha č.: max. bodů: skut. bodů:

Projekt z předmětu Kryptografie a počítačová bezpečnost

UNIVERZITA PARDUBICE. Fakulta elektrotechniky a informatiky

Stromy. Příklady. Rekurzivní datové struktury. Základní pojmy

kryptosystémy obecně další zajímavé substituční šifry klíčové hospodářství kryptografická pravidla Hillova šifra Vernamova šifra Knižní šifra

Zadání druhého zápočtového projektu Základy algoritmizace, 2005

Vyhodnocování dotazů slajdy k přednášce NDBI001. Jaroslav Pokorný MFF UK, Praha

Racionální čísla, operátory, výrazy, knihovní funkce

25. DIGITÁLNÍ TELEVIZNÍ SIGNÁL A KABELOVÁ TELEVIZE

Samoopravné kódy. Katedra matematiky a Institut teoretické informatiky Západočeská univerzita

Faculty of Nuclear Sciences and Physical Engineering Czech Technical University in Prague

Transkript:

Komprese dat Jan Outrata KATEDRA INFORMATIKY UNIVERZITA PALACKÉHO V OLOMOUCI přednášky

Statistické metody Jan Outrata (Univerzita Palackého v Olomouci) Komprese dat Olomouc, únor březen 2016 1 / 23

Tunstallův kód = zdrojová slova proměnné délky kódována na kódová slova pevné délky k log m n kódových symbolů = blokový kód, variable-to-fixed code (n je velikost zdrojové abecedy, m je velikost kódové abecedy) chyby v kódových slovech se při dekódování nešíří robustnost požadavky: 1 každou (neprázdnou) posloupnost zdrojových symbolů musí být možné vyjádřit jako (případně prefix) zřetězení právě jedné posloupnosti zdrojových slov kódovaných na kódové slovo jednoznačná kódovatelnost 2 průměrná délka zdrojových slov kódovaných na kódové slovo je maximální = optimální kód delší zdrojová slova mají větší pravděpodobnost výskytu 3 je použito maximum kódových slov, ideálně všech m k optimalita prefixový pro zdrojová slova kódovaná na kódové slovo, jednoznačná kódovatelnost k průměrná délka kódu:, t počet zdrojových slov w t i=1 P (w i délky l(w i ) s i)l(w i ) pravděpodobností výskytu P (w i ) pouze statický a semi-adaptivní model Jan Outrata (Univerzita Palackého v Olomouci) Komprese dat Olomouc, únor březen 2016 2 / 23

Tunstallův kód B. P. Tunstall Input : číslo k Uses : zdrojová abeceda A, n = A, pravděpodobnosti P (A + ) výskytu slova z A, velikost m kódové abecedy Output: C(U) T A; i 0; while n + (i + 1)(n 1) m k do x w T, P (w) P (w ), w T ; T (T \ {x}) {xy y A}; i i + 1; C(T ) {kódová slova délky k} libovolně; PRIKLAD: k = 4, A = {a, b, r, u, o}, p(a) = 7 20, p(b) = 5 20, p(r) = 5 20, p(u) = 2 p(o) = 1 20, m = 2, vstup barbaraabarboraubaru, redundance 20, Jan Outrata (Univerzita Palackého v Olomouci) Komprese dat Olomouc, únor březen 2016 3 / 23

Shannon-Fanovo kódování C. E. Shannon, R. M. Fano první pokus o optimální binární prefixový kód využití distribuční funkce/kumulované pravděpodobnosti (cumulative distribution function) zdroje Input : čísla a, b Uses : zdrojová abeceda A = {a 1,..., a n}, n 2, pravděpodobnosti {p 1,..., p n}, p i p j pro i < j, výskytu a i Output : kód C(A) if a + 1 = b then C(a a) 0; C(a b ) I; j najdi j takové, že i=a p b i i=j+1 p i je minimální; C(A) zavolej se rekurzivně s a, j a s j + 1, b; C(a i ) 0C(a i ) pro i = a,..., j; C(a i ) IC(a i ) pro i = j + 1,..., b; Run with: 1, n PRIKLAD: A = {a, b, r, u, o}, p(a) = 7 20, p(b) = 5 20, p(r) = 5 20, p(u) = 2 20, p(o) = 1 20, vstup barbaraabarboraubaru, redundance optimální při k p k = j i=a p i b i=j+1 p i = l p l, k, l {a,..., b}, {k} {l} =, minimální Jan Outrata (Univerzita Palackého v Olomouci) Komprese dat Olomouc, únor březen 2016 4 / 23

Huffmanovo kódování David A. Huffman: A method for the construction of minimum-redundancy codes. Proceedings of the I.R.E., pp. 1098 1102, 1952. optimální prefixové, vyplývá z vlastností optimálního prefixového kódu (viz Věta dříve) a následujícího Lemma Jan Outrata (Univerzita Palackého v Olomouci) Komprese dat Olomouc, únor březen 2016 5 / 23

Huffmanovo kódování David A. Huffman: A method for the construction of minimum-redundancy codes. Proceedings of the I.R.E., pp. 1098 1102, 1952. optimální prefixové, vyplývá z vlastností optimálního prefixového kódu (viz Věta dříve) a následujícího Lemma Lemma Nechť C : A B +, kde A = {a 1,..., a n }, n m 2, a i = a i A, i < n, pravděpodobnosti výskytu symbolů a i jsou p i = p i, i < n, p n = n j=n m +1 p j, A = {a 1,..., a n }, n = n + m 1, s pravděpodobnostmi výskytu p i symbolů a i, kde p n m +1,..., p n jsou nejmenší, m {2, 3,..., m}, m n (mod (m 1)), B = {b 1,..., b m }, je optimální prefixový kód ze zdrojové abecedy A do kódové abecedy B. Pak kód C : A B +, C(a i ) = C (a i ), i < n, C(a n m +j) = C (a n )b j, j m, ze zdrojové abecedy A do kódové abecedy B je také optimální. Jan Outrata (Univerzita Palackého v Olomouci) Komprese dat Olomouc, únor březen 2016 5 / 23

Huffmanovo kódování Statický a semi-adaptivní model Input : abeceda A = {a 1,..., a n }, pravděpodobnosti {p 1,..., p n } výskytu a i Uses : zdrojová abeceda A = {a 1,..., a n }, pravděpodobnosti {p 1,..., p n } výskytu a i, kódová abeceda B = {b 1,..., b m } Output : kód C(A ) setřiď a i a p i tak, že p i p j pro i < j; if n m then C(a i ) b i pro i = 1,..., n ; else if n = n then m (n 2) mod (m 1) + 2; else m = m C(A ) zavolej se rekurzivně s A \ {a n m +2,..., a n }, {p 1,..., p n m, n i=n m +1 p i }; C(a n m +i ) C(a n m +1 )b i pro i = 1,..., m ; Run with: A = {a 1,..., a n }, {p 1,..., p n } PRIKLAD: A = {a, b, r, u, o}, p(a) = 7 20, p(b) = 5 20, p(r) = 5 20, p(u) = 2 20, p(o) = 1 20, m = 2, vstup barbaraabarboraubaru, m = 3, vstup??, redundance Jan Outrata (Univerzita Palackého v Olomouci) Komprese dat Olomouc, únor březen 2016 6 / 23

Huffmanovo kódování Proč m a ne m? Protože při tomto počtu nejdelších kódových slov bude u všech kratších kódových slov a prefixů využito všech m symbolů kódové abecedy a kód má být optimální prefixový. Huffmanův strom T H (A) = V H (A), E H (V H (A)) = reprezentace Huffmanova kódu C(A) formou m-árního stromu: listové uzly v l (a i ) V H (A) pro symboly a i A, i = 1,..., n vnitřní uzly v(a n ) V H(A) pro všechny a n (ve všech rekurzivních voláních) + kořenový uzel v r V H (A) hrany v(a n ), v(a n m +i ) b i E H (V H (A)) a v r, v(a i ) b i E H (V H (A)) označené b i B z uzlu pro a n následujícího rekurzivního volání do uzlů pro a n m +i, i = 1,..., m při n > m a z kořenového uzlu do uzlů pro a i, i = 1,..., n při n m C(a) = zřetězení b B označujících hrany na cestě stromem z v r do v l (a) PRIKLAD Jan Outrata (Univerzita Palackého v Olomouci) Komprese dat Olomouc, únor březen 2016 7 / 23

Huffmanovo kódování minimální rozdíly v délkách kódových slov (pro jejich minimální bufferování při pevné rychlosti přenosu/ukládání): třídění a i a p i tak, že původní a n bude po zatřídění a i, i < j pro všechna j, pro která p j = p i m = 2 a p i > n j=i+2 p j, p i p j pro i < j (speciálně p i = 2 i, i = 1,..., n 1 a p n = 2 (n 1) ) unární číselný kód i 1 pro a i, i = 1,..., n 1 a n I pro a n m = 2 a p 1 < p n 1 + p n, p i p j pro i < j (speciálně p i = 1 n ) blokový kód délky k = log 2 n pro a 1,..., a 2 k a délky k + 1 pro a 2 k +1,..., a n PRIKLADY Jan Outrata (Univerzita Palackého v Olomouci) Komprese dat Olomouc, únor březen 2016 8 / 23

Huffmanovo kódování Adaptivní model binární kód triviálně: znovuvytváření kódu pro každý další symbol na vstupu výpočetně náročné Faller, Gallager, Knuth, Vitter vlastnost Huffmanova stromu (tzv. sibling property): p n... p n m +1 p n... p n m +1 následujícího rekurzivního volání musí stále platit v následujících algoritmech zajištěno pomocí (aktuálního) počtu n(x) výskytů symbolu x a čísla i(v(x)), v(x) V H (A) speciální (escape) symbol e značící neexistující/první výskyt symbolu T H (A) {v l (e)},, C(e) prázdný řetězec; n(e) 0; i(v l (e)) 1; while načti ze vstupu symbol a A do if v l (a) V H (A) then zapiš na výstup C(e) a kód a; else zapiš na výstup C(a); zavolej následující algoritmus; Jan Outrata (Univerzita Palackého v Olomouci) Komprese dat Olomouc, únor březen 2016 9 / 23

Huffmanovo kódování Adaptivní model binární kód if v l (a) V H (A) then V H (A) V H (A) {v l (a), v(x)}; n(a) n(x) 1; i(v(x)) i(v l (e)); i(v l (a)) i(v(x)) + 1; i(v l (e)) i(v l (a)) + 1; E H (V H (A)) (E H (V H (A)) \ { u, v l (e) b }) { v(x), v l (e) I, v(x), v l (a) 0, u, v(x) b }; else v(x) v l (a); while v(x) v r do if v(x), v l (e) E H (V H (A)) then najdi v(y) takové, že i(v(y)) < i(v(z)), v(z) V H (A), n(y) = n(z); if v(y) v(x) v(y), v(x) E H (V H (A)) then v v(x); v(x) v(y); v(y) v; i i(v(x)); i(v(x)) i(v(y)); i(v(y)) i; n(x) n(x) + 1; v(x) u, u, v(x) E H (V H (A)); n(x) n(x) + 1; PRIKLAD Jan Outrata (Univerzita Palackého v Olomouci) Komprese dat Olomouc, únor březen 2016 10 / 23

Huffmanovo kódování Adaptivní model binární kód T H (A) {v l (e)}, ; n(e) 0; i(v l (e)) 1; while není konec vstupu do v v r ; while v v l (a) do načti ze vstupu symbol b B; v u, v, u b E H (V H (A)); if a = e then načti ze vstupu kód symbolu a A; dekóduj kód a a zapiš na výstup a; else zapiš na výstup symbol a A; zavolej předchozí algoritmus; PRIKLAD Jan Outrata (Univerzita Palackého v Olomouci) Komprese dat Olomouc, únor březen 2016 11 / 23

Huffmanovo kódování Aplikace často v návaznosti na jiné metody, např. na diferenční kódování (obraz, zvuk) Jan Outrata (Univerzita Palackého v Olomouci) Komprese dat Olomouc, únor březen 2016 12 / 23

Aritmetické kódování průměrná délka optimálního prefixového kódu, např. Huffmanova, je minimálně rovna entropii zdroje a nejvýše o 1 větší než entropie (Shannon noisless coding theorem, viz Věta dříve) platí těsnější, nejvýše o nejvyšší pravděpodobnost p max 0.5 zdrojových symbolů nebo o p max + 0.086, p max < 0.5 změna zdrojové abecedy na k-tice (nezávislých) symbolů z původní abecedy A pro přiblížení se entropii ale zvyšuje velikost abecedy, a tím i Huffmanova stromu, na A k, např. pro p 1 = 0.95, p 2 = 0.03, p 3 = 0.02 je entropie přibližně 0.335 b/symbol, průměrná délka Huffmanova kódu 1.05 b/symbol, kódu pro 9 dvojic symbolů přibližně 0.611 b/symbol a kódu pro??tic symbolů přibližně? b/symbol! výhodnější kódovat zdrojová slova než samostatné symboly ale nevytvářet kód pro všechna slova dané délky, např. Huffmanův! kód pouze pro zdrojová slova na vstupu vhodné pro malé zdrojové abecedy, např. binární, s velkými rozdíly v pravděpodobnostech symbolů = kódování zdrojových slov do čísel z podintervalů [0, 1) kódovaných do binárního kódu Jan Outrata (Univerzita Palackého v Olomouci) Komprese dat Olomouc, únor březen 2016 13 / 23

Aritmetické kódování Pasco, Rissanen, 1976, Rissanen, Langdon, 1979 využití distribuční funkce/kumulované pravděpodobnosti (cumulative distribution function) F X (i) = i k=1 P (X = k), P (X = k) = P (a k ) = p k zdroje (nezávisle se stejným pravděpodobnostním rozložením se vyskytujících) symbolů z abecedy A = {a 1, a 2,..., a n } jako náhodných proměnných X(a i ) = i, F X (0) = 0 l p 0; u p 1; while načti ze vstupu symbol a i A do l l p + (u p l p )F X (i 1); u l p + (u p l p )F X (i); l p l; u p u; // přeškálování [l, u) zapiš na výstup C = binární reprezentace jakéhokoliv čísla z [l, u) s minimem bitů; PRIKLAD Jan Outrata (Univerzita Palackého v Olomouci) Komprese dat Olomouc, únor březen 2016 14 / 23

Aritmetické kódování C(A + ) je prefixový binární kód ze zdrojových slov nad abecedou A, průměrná délka pro slova délky k je H(A k ) l(c(a k )) < H(A k ) + 1 průměrná délka na symbol z A je H(A) l < H(A) + 1 k pro dekódování je nutné znát délku L kódovaného zdrojového slova uložit spolu s komprimovanými daty nebo speciální zdrojový symbol značící konec vstupu l p 0; u p 1; j 0; načti ze vstupu binární reprezentaci čísla x [0, 1); while j < L do najdi i {1,..., n} takové, že F X(i 1) x lp u p l p < F X(i); zapiš na výstup symbol a i A; j j + 1; if j < L then l l p + (u p l p)f X(i 1); u l p + (u p l p)f X(i); l p l; u p u; // přeškálování [l, u) PRIKLAD Jan Outrata (Univerzita Palackého v Olomouci) Komprese dat Olomouc, únor březen 2016 15 / 23

Aritmetické kódování u kódování i dekódování žádoucí průběžný výstup během čtení vstupu, ne až po načtení celého vstupu kód čísla z [l, u) průběžně [l, u) se s délkou zdrojového slova zmenšuje, ale uložení necelých čísel je v praxi s omezenou přesností omezení délky slova nebo přeškálování [l, u): 1 u < 0.5: x 2x, x {l, u} 2 l 0.5: x 2(x 0.5), x {l, u} 3 l 0.25 u < 0.75: x 2(x 0.25), x {l, u} c-krát c-krát c-krát c-krát {}}{{}}{{}}{{}}{ případy 3... 31 = 12... 2 a 3... 32 = 21... 1 Jan Outrata (Univerzita Palackého v Olomouci) Komprese dat Olomouc, únor březen 2016 16 / 23

Aritmetické kódování c 0; // while... while u < 0.5 l 0.5 (l 0.25 u < 0.75) do if l 0.25 u < 0.75 then // případ 3 c c + 1; d 0.25; else if u < 0.5 then // případ 1 b 0; d 0; else // případ 2 b I; d 0.5; zapiš na výstup b; while c > 0 do zapiš na výstup inverzi b; c c 1; l 2(l d); u 2(u d); zapiš na výstup C = I; Jan PRIKLAD Outrata (Univerzita Palackého v Olomouci) Komprese dat Olomouc, únor březen 2016 17 / 23

Aritmetické kódování načti ze vstupu log 2 p min bitů binární reprezentace čísla x [0, 1), p min nejnižší pravděpodobnost zdrojových symbolů; // while... while u < 0.5 l 0.5 (l 0.25 u < 0.75) do if l 0.25 u < 0.75 then d 0.25; else if u < 0.5 then d 0; else d 0.5; l 2(l d); u 2(u d); načti ze vstupu další bit b anebo b 0; x 2(x d) + b 1 2 log 2 p min ; PRIKLAD Jan Outrata (Univerzita Palackého v Olomouci) Komprese dat Olomouc, únor březen 2016 18 / 23

Aritmetické kódování Celočíselná implementace zobrazení [0, 1) na [0, M 1) (0.25 M 4, 0.5 M 2, 0.75 3M 4 ), M 4 1 p min, M typicky 2 8, 2 16, 2 32 nebo 2 64 podle datového typu pro čísla z [0, M 1) odhad F X (i) s frekvencemi/četnostmi f(a k ) = n(a k) výskytu symbolu a A j=1 n(a k A j) místo pravděpodobností P (a k ) l l p + (u p l p + 1)F X (i 1), u l p + (u p l p + 1)F X (i) 1, u 2(u d) + 1, x 2(x d) + b kvůli celočíselné aritmetice načti ze vstupu log 2 M bitů binární reprezentace čísla x [0, M 1) x l p+1 u p l p+1, při M = 2 k pro nějaké k 2: u < M 2 nejvýznamnější bit l i u je 0 l M 2 nejvýznamnější bit l i u je I l M 4 u < 3M 4 druhý nejvýznamnější bit l je I a u je 0 2x a 2(x M 2 ) bitový posun x doleva o 1 bit, 2(x M 4 ) navíc inverze (nového) nejvýznamnějšího bitu PRIKLAD Jan Outrata (Univerzita Palackého v Olomouci) Komprese dat Olomouc, únor březen 2016 19 / 23

Aritmetické kódování Adaptivní model průběžný odhad F X (i) s frekvencemi/četnostmi f(a k ) = n(a k) A výskytu symbolu j=1 n(a j) a k A místo pravděpodobností P (a k ) inicializace na známý odhad nebo počet n(a) = 1 výskytu každého symbolu a A inkrementace n(a) po (de)kódování symbolu a uložení p min spolu s komprimovanými daty, u celočíselné implementace nesmí p min klesnout pod 4 1 M v praxi n(a j) n(a j) 2 pro n(a j ) > 1 při A j=1 n(a j) = M 4 Aplikace ve standardech komprese multimediálních dat (obraz, video, zvuk) Jan Outrata (Univerzita Palackého v Olomouci) Komprese dat Olomouc, únor březen 2016 20 / 23

Aritmetické kódování QM kódování = modifikované adaptivní binární aritmetické kódování (Q kódování, skew kódování), tj. pro binární zdrojovou abecedu s adaptivním modelem A = u l místo u: l l p + A p F X (i 1) a A A p p i místo 2 symbolů A, a 1 = 0 a a 2 = I, a 1 = více (MPS) a a 2 = méně (LPS) pravděpodobný symbol s průběžně odhadovanými frekvencemi/četnostmi 1 q a q výskytu l l p a A A p (1 q) pro MPS l l p + A p (1 q) a A A p q pro LPS x l p A p < 1 q pro MPS a 1 q pro LPS potlačení násobení (i pro nebinární zdrojové abecedy) udržování hodnoty A v [0.75, 1.5) a zanedbání násobení A p l l p a A A p q pro MPS l l p + A p q a A q pro LPS x l p < 1 q pro MPS a 1 q pro LPS přeškálování l, A: A < 0.75: A 2A, l 2l pro l < 0.5 a l 2(l 0.5) pro l 0.5 Jan Outrata (Univerzita Palackého v Olomouci) Komprese dat Olomouc, únor březen 2016 21 / 23

Aritmetické kódování QM kódování while A < 0.75 do if l < 0.5 then b 0; d 0; else b I; d 0.5; zapiš na výstup b; l 2(l d); A 2A; zapiš na výstup C = I; načti ze vstupu log 2 q bitů binární reprezentace čísla x [0, 1); // while... while A < 0.75 do if l < 0.5 then d 0; else d 0.5; l 2(l d); A 2A; načti ze vstupu další bit b anebo b 0; 1 x 2(x d) + b ; 2 log 2 q Jan PRIKLAD Outrata (Univerzita Palackého v Olomouci) Komprese dat Olomouc, únor březen 2016 22 / 23

Aritmetické kódování QM kódování inicializace q = 0.5 a aktualizace q podle tabulky hodnot při přeškálování, ne po (de)kódování každého symbolu při častějším výskytu LPS než MPS, q > A q, prohození symbolů včetně aktuálních hodnot l a A, při přeškálování celočíselná implementace: zobrazení [0, 1.5) na [0, M 1) (0.25 M 6, 0.5 M 3, 0.75 M 2, 1 2M 3 ), M 4 1 3 q, i pro hodnoty q použití ve standardu JPEG (JBIG) komprese obrazu Jan Outrata (Univerzita Palackého v Olomouci) Komprese dat Olomouc, únor březen 2016 23 / 23