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. Jan Outrata KATEDRA INFORMATIKY UNIVERZITA PALACKÉHO V OLOMOUCI. přednášky

Algoritmy komprese dat

Komprese dat (Komprimace dat)

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

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

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

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

Informační systémy ve zdravotnictví

ZÁPADOČESKÁ UNIVERZITA V PLZNI

Kompresní metody první generace

Komprese dat Obsah. Komprese videa. Radim Farana. Podklady pro výuku. Komprese videa a zvuku. Komprese MPEG. Komprese MP3.


Multimediální systémy

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

Multimediální systémy

Algoritmy komprese dat

MATEMATICKÁ STATISTIKA - XP01MST

NMAI059 Pravděpodobnost a statistika

Téma 22. Ondřej Nývlt

Pravděpodobnost a aplikovaná statistika

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

Charakterizace rozdělení

Pravděpodobnost a statistika

Jasové transformace. Karel Horák. Rozvrh přednášky:

Kompresní algoritmy grafiky. Jan Janoušek F11125

Multimediální systémy

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

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

prof. RNDr. Roman Kotecký DrSc., Dr. Rudolf Blažek, PhD Pravděpodobnost a statistika Katedra teoretické informatiky Fakulta informačních technologií

Multimediální systémy

1. Vlastnosti diskretních a číslicových metod zpracování signálů... 15

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

Dobývání znalostí. Doc. RNDr. Iveta Mrázová, CSc. Katedra teoretické informatiky Matematicko-fyzikální fakulta Univerzity Karlovy v Praze

1. Statistická analýza dat Jak vznikají informace Rozložení dat

Teorie kódování aneb jak zhustit informaci

Komprese obrazu. Úvod. Rozdělení metod komprese obrazů. Verze: 1.5, ze dne: 1. června Václav Hlaváč a Tomáš Svoboda

Matematika III. 4. října Vysoká škola báňská - Technická univerzita Ostrava. Matematika III

Definice 7.1 Nechť je dán pravděpodobnostní prostor (Ω, A, P). Zobrazení. nebo ekvivalentně

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

Pravděpodobnost a matematická statistika Doc. RNDr. Gejza Dohnal, CSc.

Úvod do teorie informace

Vzdálenost jednoznačnosti a absolutně

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

Pravděpodobnost a matematická statistika Doc. RNDr. Gejza Dohnal, CSc. dohnal@nipax.cz

STRUKTURA RASTROVÝCH DAT

TECHNICKÁ UNIVERZITA V LIBERCI

Základy teorie pravděpodobnosti

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

Komprese obrazu. Verze: 1.5, ze dne: 1. června Václav Hlaváč a Tomáš Svoboda

Obsah přednášky Jaká asi bude chyba modelu na nových datech?

13. cvičení z PSI ledna 2017

Náhodný vektor a jeho charakteristiky

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

Pravděpodobnost a statistika, Biostatistika pro kombinované studium. Jan Kracík

Počet pravděpodobnosti

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

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

7. Rozdělení pravděpodobnosti ve statistice

Zadání a řešení testu z matematiky a zpráva o výsledcích přijímacího řízení do magisterského navazujícího studia od jara 2016

Inženýrská statistika pak představuje soubor postupů a aplikací teoretických principů v oblasti inženýrské činnosti.

Kosinová transformace 36ACS

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

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

Matematika IV 10. týden Kódování

n = 2 Sdružená distribuční funkce (joint d.f.) n. vektoru F (x, y) = P (X x, Y y)

MKI Funkce f(z) má singularitu v bodě 0. a) Stanovte oblast, ve které konverguje hlavní část Laurentova rozvoje funkce f(z) v bodě 0.

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

pravděpodobnosti Pravděpodobnost je teorií statistiky a statistika je praxí teorie pravděpodobnosti.

Informatika Datové formáty

Multimediální systémy

Dynamické programování

Jiří Neubauer. Katedra ekonometrie, FVL, UO Brno kancelář 69a, tel

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

Téma 2: Pravděpodobnostní vyjádření náhodných veličin

Požadavky k písemné přijímací zkoušce z matematiky do navazujícího magisterského studia pro neučitelské obory

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

Statistika II. Jiří Neubauer

Rekonstrukce diskrétního rozdělení psti metodou maximální entropie

Počítačová grafika a vizualizace I

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

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

Všechno, co jste chtěli vědět z teorie pravděpodobnosti, z teorie informace a

Vlastnosti a modelování aditivního


správně - A, jeden celý příklad správně - B, jinak - C. Pro postup k ústní části zkoušky je potřeba dosáhnout stupně A nebo B.

Pravděpodobnost a statistika (BI-PST) Cvičení č. 4

Náhodná veličina a její charakteristiky. Před provedením pokusu jeho výsledek a tedy ani sledovanou hodnotu neznáte. Proto je proměnná, která

Charakteristiky zvuk. záznamů

Přednáška. Diskrétní náhodná proměnná. Charakteristiky DNP. Základní rozdělení DNP

1. Základy teorie přenosu informací

Chyby měření 210DPSM

X = x, y = h(x) Y = y. hodnotám x a jedné hodnotě y. Dostaneme tabulku hodnot pravděpodobnostní

III/ 2 Inovace a zkvalitnění výuky prostřednictvím ICT

Algoritmy výpočetní geometrie

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

Testování prvočíselnosti

UNIVERZITA PARDUBICE. Fakulta elektrotechniky a informatiky

Komprese obrazů. Václav Hlaváč. České vysoké učení technické v Praze

Transkript:

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

Obsah 1 Úvod Potřebné pojmy z teorie informace a kódování (entropie), taxonomie kompresních metod, modely dat, základní techniky (RLE, MTF) a kódování čísel. 2 Statistické metody Shannon-Fanovo, Huffmanovo, aritmetické a QM kódování, principy a implementace. 3 Kontextové metody Metody PPM, PAQ (context mixing) a blokové třídění (Burrows-Wheelerova transformace, BWT), principy a implementace. 4 Slovníkové metody Rodina metod LZ77 a varianta Deflate, rodina metod LZ78 a varianta LZW, principy a implementace. Jan Outrata (Univerzita Palackého v Olomouci) Komprese dat Olomouc, únor březen 2016 1 / 104

Anotace V předmětu jsou představeny základní i moderní metody bezeztrátové komprese dat a ztrátové komprese multimediálních dat. Jan Outrata (Univerzita Palackého v Olomouci) Komprese dat Olomouc, únor březen 2016 2 / 104

Literatura Sayood K.: Introduction to Data Compression, Fourth Edition. Morgan Kaufmann, 2012. ISBN 978-0124157965 Salomon D., Motta G.: Handbook of Data Compression, 5th edition. Springer, 2010. ISBN 978-1848829022 Salomon D.: Data Compression: The complete Reference, 4th edition. Springer, 2006. ISBN 978-1846286025 Hankerson D. C., Harris G. A., Johnson P. D.: Introduction to Information Theory and Data Compression, Second Edition (Applied Mathematics). Chapman and Hall/CRC, 2003. ISBN 978-1584883135 Sayood K.: Lossless compression handbook. Academic Press, 2003. ISBN 0126208611 Jan Outrata (Univerzita Palackého v Olomouci) Komprese dat Olomouc, únor březen 2016 3 / 104

Úvod Jan Outrata (Univerzita Palackého v Olomouci) Komprese dat Olomouc, únor březen 2016 4 / 104

Komprese dat = zmenšení velikosti reprezentace informačního obsahu ( informace ) dat při zachování (dané míry) obsažené informace jeden z účelů kódování dat kódování zdroje (source coding) v kontextu přenosu dat (experimentální) informatický vědní obor Dvě fáze: 1 identifikování a modelování struktury dat s vynecháním redundancí struktura např. opakování vzorů, statistická frekvence/četnost vzorů, korelace mezi vzory, vzory elementární symboly nebo skupiny symbolů, také např. daná zdrojem dat modelování zdroje a syntéza dat (zvuk) také různé modely pro různé části dat 2 kódování dat podle modelu plus případně kódování (části) modelu také predikce hodnoty dle modelu a kódování rozdílu (residua) typicky binární kód Jan Outrata (Univerzita Palackého v Olomouci) Komprese dat Olomouc, únor březen 2016 5 / 104

Komprese dat Příklad x 1, x 2,..., x 12 = 2, 2, 4, 6, 7, 7, 7, 10, 10, 11, 11, 14 Jan Outrata (Univerzita Palackého v Olomouci) Komprese dat Olomouc, únor březen 2016 6 / 104

Komprese dat Příklad x 1, x 2,..., x 12 = 2, 2, 4, 6, 7, 7, 7, 10, 10, 11, 11, 14 1 číslo od 2 do 14 ve dvojkové soustavě 4 b/číslo = 48 b Jan Outrata (Univerzita Palackého v Olomouci) Komprese dat Olomouc, únor březen 2016 6 / 104

Komprese dat Příklad x 1, x 2,..., x 12 = 2, 2, 4, 6, 7, 7, 7, 10, 10, 11, 11, 14 1 číslo od 2 do 14 ve dvojkové soustavě 4 b/číslo = 48 b 2 7 různých čísel ve dvojkové soustavě 3 b/číslo = 36 b Jan Outrata (Univerzita Palackého v Olomouci) Komprese dat Olomouc, únor březen 2016 6 / 104

Komprese dat Příklad x 1, x 2,..., x 12 = 2, 2, 4, 6, 7, 7, 7, 10, 10, 11, 11, 14 1 číslo od 2 do 14 ve dvojkové soustavě 4 b/číslo = 48 b 2 7 různých čísel ve dvojkové soustavě 3 b/číslo = 36 b 3 častější číslo kratší kód 2 2, 1 4, 1 6, 3 7, 2 10, 2 11, 1 14 0I pro 7, III pro 11, II0 pro 10, I0I pro 2, I00 pro 14, 000 pro 4 a 00I pro 6 33 b = 2.75 b/číslo Jan Outrata (Univerzita Palackého v Olomouci) Komprese dat Olomouc, únor březen 2016 6 / 104

Komprese dat Příklad x 1, x 2,..., x 12 = 2, 2, 4, 6, 7, 7, 7, 10, 10, 11, 11, 14 1 číslo od 2 do 14 ve dvojkové soustavě 4 b/číslo = 48 b 2 7 různých čísel ve dvojkové soustavě 3 b/číslo = 36 b 3 častější číslo kratší kód 2 2, 1 4, 1 6, 3 7, 2 10, 2 11, 1 14 0I pro 7, III pro 11, II0 pro 10, I0I pro 2, I00 pro 14, 000 pro 4 a 00I pro 6 33 b = 2.75 b/číslo 4 kódování opakování čísla 0 pro žádné, I0 pro jedno a II pro dvě 7 3 + 11 = 32 b = 2. 6 b/číslo Jan Outrata (Univerzita Palackého v Olomouci) Komprese dat Olomouc, únor březen 2016 6 / 104

Komprese dat Příklad x 1, x 2,..., x 12 = 2, 2, 4, 6, 7, 7, 7, 10, 10, 11, 11, 14 1 číslo od 2 do 14 ve dvojkové soustavě 4 b/číslo = 48 b 2 7 různých čísel ve dvojkové soustavě 3 b/číslo = 36 b 3 častější číslo kratší kód 2 2, 1 4, 1 6, 3 7, 2 10, 2 11, 1 14 0I pro 7, III pro 11, II0 pro 10, I0I pro 2, I00 pro 14, 000 pro 4 a 00I pro 6 33 b = 2.75 b/číslo 4 kódování opakování čísla 0 pro žádné, I0 pro jedno a II pro dvě 7 3 + 11 = 32 b = 2. 6 b/číslo 5 malé rozdíly mezi sousedními čísly predikce d 1 = x 1 = 2, d i = x i x i 1 = 0, 2, 2, 1, 0, 0, 3, 0, 1, 0, 3 4 b + 2 b/číslo 26 b = 2.1 6 b/číslo Jan Outrata (Univerzita Palackého v Olomouci) Komprese dat Olomouc, únor březen 2016 6 / 104

Komprese dat Příklad x 1, x 2,..., x 12 = 2, 2, 4, 6, 7, 7, 7, 10, 10, 11, 11, 14 1 číslo od 2 do 14 ve dvojkové soustavě 4 b/číslo = 48 b 2 7 různých čísel ve dvojkové soustavě 3 b/číslo = 36 b 3 častější číslo kratší kód 2 2, 1 4, 1 6, 3 7, 2 10, 2 11, 1 14 0I pro 7, III pro 11, II0 pro 10, I0I pro 2, I00 pro 14, 000 pro 4 a 00I pro 6 33 b = 2.75 b/číslo 4 kódování opakování čísla 0 pro žádné, I0 pro jedno a II pro dvě 7 3 + 11 = 32 b = 2. 6 b/číslo 5 malé rozdíly mezi sousedními čísly predikce d 1 = x 1 = 2, d i = x i x i 1 = 0, 2, 2, 1, 0, 0, 3, 0, 1, 0, 3 4 b + 2 b/číslo 26 b = 2.1 6 b/číslo 6 vztah mezi čísly predikce ˆx i = i + 1 d i = x i ˆx i = 0, 1, 0, 1, 1, 0, 1, 1, 0, 0, 1, 1 0 pro 0, I0 pro 1 a II pro 1 19 b = 1.58 3 b/číslo Jan Outrata (Univerzita Palackého v Olomouci) Komprese dat Olomouc, únor březen 2016 6 / 104

Komprese dat Zachování veškeré obsažené informace odstranění nadbytečného (redundantního) obsahu, který nepřidává žádnou informaci navíc jakákoliv data data... symboly libovolné (i nebinární) abecedy ušetření úložného místa a přenosové kapacity samozřejmá běžná součást složitějších kompresních metod Tolerance ztráty určité informace využití ( zneužití ) omezení reprodukční techniky a příjemce obsahu (člověka) pro vynechání nevyužitelných informací obraz, video, zvuk data... znaky textu, vzorky obrazu (body) a videa (body v čase), zvuku (úrovně v čase), aj., digitální (digitalizovaná) forma, narůstající objem např. obraz foto 10 Mpx 24 bpp 30 MB, video HDTV 1920 1080 12 bpp, 25 fps 590 Mb/s, zvuk CD 44.1 khz, 16 bps, stereo 1.3 Mb/s vývoj úložných a přenosových technologií nestačí, navíc (fyzikální) omezení umožnění tzv. multimediální revoluce komprese textu, obrazu, videa, zvuku při uložení a přenosu všudypřítomná počítače, spotřební elektronika, komunikační a distribuční sítě,... Jan Outrata (Univerzita Palackého v Olomouci) Komprese dat Olomouc, únor březen 2016 7 / 104

Komprese dat Příklady z minulosti morseovka: písmena (a číslice a interpunkce) kódována do posloupností teček a čárek, častější (e, t) kratšími pro zmenšení průměrné délky textu Braillovo písmo: do 2 3 matice teček kódována písmena (a číslice, interpunkce aj., Grade 1) a častá slova (a jejich zkratky, Grade 2) Obrázek: Morseovka a Braillovo písmo Jan Outrata (Univerzita Palackého v Olomouci) Komprese dat Olomouc, únor březen 2016 8 / 104

Komprese dat Jan Outrata (Univerzita Palackého v Olomouci) Komprese dat Olomouc, únor březen 2016 8 / 104

Kompresní techniky a metody = dva algoritmy: kompresní pro kompresi originálních dat na komprimovaná a dekompresní (rekonstrukční) pro dekompresi komprimovaných dat na dekomprimovaná (rekonstruovaná) standardy: ISO, ITU-T aj. Bezeztrátové (lossless) = dekomprimovaná data stejná jako data originální = žádná ztráta informace v datech např. pro text, programové (binární) soubory, citlivé záznamy (bankovní, zdravotní), nereprodukovatelná data (snímky v čase) aj. statistické: Huffmanovo a aritmetické kódování kontextové: PPM slovníkové: LZ* jiné: BWT, ACB, obrazové (JPEG-LS, JBIG) Jan Outrata (Univerzita Palackého v Olomouci) Komprese dat Olomouc, únor březen 2016 9 / 104

Kompresní techniky a metody Ztrátové(lossy) = při kompresi vynechání nějaké informace v originálních datech dekomprimovaná data (obecně) odlišná od originálních dat = ztráta informace z originálních dat zkreslení dat vyšší míra komprese než u bezeztrátových za cenu zkreslení dat např. pro obraz, video, zvuk (hudba, řeč) zkreslení dat vede k artefaktům při reprodukci obsahu vzorkování a kvantizace: skalární a vektorová diferenční kódování: DPCM, delta modulace transformační a podpásmové kódování: Fourierova, Z a kosinová transformace, wavelety aplikace: obraz JPEG, fraktály, video H.*, MPEG, zvuk MDCT, G.*, MPEG, LPC, CELP Jan Outrata (Univerzita Palackého v Olomouci) Komprese dat Olomouc, únor březen 2016 10 / 104

Míry kompresních algoritmů asymptotická časová a paměťová složitost algoritmů komprese a dekomprese experimentální časová a paměťová náročnost algoritmů jejich implementací na referenčních datech míry komprese kompresní poměr (compression ratio) = poměr velikosti originálních a komprimovaných dat, také jako procento velikosti komprimovaných dat z velikosti originálních dat compression rate = průměrná velikost komprimovaných dat na vzorek originálních dat, např. pixel u obrazu bitů/pixel, sekunda u videa a zvuku bitů/s na referenčních datech míry zkreslení (distortion) rozdíl mezi originálními a dekomprimovanými daty, více způsobů měření přesnosti (fidelity) a kvality obsahu, viz dále, na referenčních datech Jan Outrata (Univerzita Palackého v Olomouci) Komprese dat Olomouc, únor březen 2016 11 / 104

Modely dat Fyzický = popis zdroje dat např. měřených, popis měřidla u ztrátové komprese zvuku (řeči) popis syntezátoru a syntéza dat obecně příliš složitý nebo nemožný Pravděpodobnostní model = empiricky zjištěný statistický popis zdroje dat pro statistické a kontextové bezeztrátové kompresní metody ignorantní: výskyt každé hodnoty na výstupu zdroje dat je nezávislý na výskytu ostatních hodnot a je se stejnou pravděpodobností nejjednodušší dostupná pravděpodobnost výskytu nezávisle se vyskytujících hodnot pravděpodobnost: frekvence/četnost výskytu výsledku experimentu (hodnot na výstupu zdroje dat) n opakování experimentu, n i výskytů výsledku ω i Ω, i {1, 2,..., N} (Ω... prostor výsledků (sample space)) frekvence/četnost výskytu výsledku ω i : f(ω i ) = f i = ni n = přibližná hodnota/odhad pro pravděpodobnost výskytu výsledku ω i : n P (ω i ) = p i = lim i n n, událost (event) A Ω, výskyt události = výskyt kteréhokoliv výsledku události, f(a) 0 P (A) 0 (1), P (Ω) = 1 (2), B Ω, A B = P (A B) = P (A) + P (B) (3), i P (ω i) = 1 Jan Outrata (Univerzita Palackého v Olomouci) Komprese dat Olomouc, únor březen 2016 12 / 104

Modely dat Pravděpodobnostní model pravděpodobnost: míra víry (belief) v událost a priori pravděpodobnost P (A) události A před výskytem události (získání informace) B, a posteriori pravděpodobnost P (A B) po/za předpokladu, sdružená (joint) pravděpodobnost P (A, B) výskytu obou událostí A, B, Bayesovo pravidlo P (A B) = P (A,B) P (B), (statisticky) nezávislé události... P (A, B) = P (A)P (B), tj. při P (A B) = P (A), pro případy, kdy experiment není možné provést míra ( velikost ) události (jako množiny) jako jiné míry (1) a (3), normalizace (2) = axiomy, z nich např. P (Ā) = 1 P (A), P ( ) = 0, P (A B) = P (A) + P (B) P (A B) aj., pro nediskrétní prostor výsledků Jan Outrata (Univerzita Palackého v Olomouci) Komprese dat Olomouc, únor březen 2016 13 / 104

Modely dat Pravděpodobnostní model náhodná proměnná/veličina: měřitelné X : Ω R (R... obor reálných čísel), realizace X(ω) = x, např. P (X(ω) x) = P (X x), diskrétní a spojitá rozdělení pravděpodobnosti: distribuční funkce/kumulovaná pravděpodobnost (cumulative distribution function) F X (x) = P (X x), x 1 x 2 F X (x 1 ) F X (x 2 ), P (X = x) = F X (x) F X (x ) pro F X (x ) = P (X < x), rozdělení/distribuce/hustota pravděpodobnosti (probability distribution/density function) f X (x)... diference/derivace F X (x) pro diskrétní/spojitou X, pro diskrétní typicky f X (x) = P (X = x), např. binomické, Poissonovo, uniformní, normální (Gaussovo), aj. sdružená (joint) distribuční funkce F X1 X 2...X n (x 1, x 2,..., x n ) = P (X 1 x 1, X 2 x 2,..., X n x n ), sdružené rozložení pravděpodobnosti f X1 X 2...X n (x 1, x 2,..., x n ), marginální pro jednotlivé X i, X 1, X 2 nezávislé, jestliže F X1 X 2 (x 1, x 2 ) = F X1 (x 1 )F X2 (x 2 ) (a tedy i f X1 X 2 (x 1, x 2 ) = f X1 (x 1 )f X2 (x 2 )) Jan Outrata (Univerzita Palackého v Olomouci) Komprese dat Olomouc, únor březen 2016 14 / 104

Modely dat Pravděpodobnostní model střední hodnota (expected value) náhodné proměnné X: E[X] = i x ip (X = x i ) pro diskrétní X, E[X] = xf X(x)dx pro spojitou X, statistický průměr (mean, statistical average) µ X = E[X], rozptyl (variance) σx 2 = E[(X µ X) 2 ] = E[X 2 ] µ 2 X, standardní odchylka (standard deviation) σ X = σx 2, X 1, X 2 nekorelované, jestliže E[(X 1 µ 1 )(X 2 µ 2 )] = 0 náhodný/stochastický proces: měřitelné X : Ω F, F : R R, realizace X(ω) = x(t), < t < funkce času, ensemble X(t) = {x ω (t)}, střední hodnota ensemble, vzorek (sample) X(t 0 ) ensemble = náhodná proměnná problém nulové pravděpodobnosti/frekvence (zero probability/frequency problem): kompresní metody předpokládají u modelu všechny uvažované pravděpodobnosti/frekvence nenulové místo nulových nastavení velice malých Jan Outrata (Univerzita Palackého v Olomouci) Komprese dat Olomouc, únor březen 2016 15 / 104

Modely dat Markovův model (Andrei A. Markov) výskyt hodnoty x j na výstupu zdroje dat je závislý na výskytu (některých, ne nutně bezprostředně) předchozích hodnot x i, i < j vychází z pravděpodobnostního modelu v bezeztrátové kompresi Markovův řetěz s diskrétním časem: posloupnost hodnot x j (náhodné proměnné X j ) následuje Markovův model/proces k-tého řádu, jestliže P (x j x i1, x i2,..., x ik ) = P (x j x j 1, x j 2,...), i 1, i 2,..., i k < j (znalost některých předchozích k hodnot je stejná jako znalost všech předchozích hodnot), posloupnosti s j hodnot x i1, x i2,..., x ik = stavy modelu/procesu/řetězu, P (x j s j ) = pravděpodobnosti přechodu mezi stavy nejběžnější model 1. řádu: P (x j x i ) = P (x j x j 1, x j 2,...), i < j s j, P (s j ), P (x j s j )... stavový diagram různé modely podle formy závislosti, se zvyšujícím se k vyšší míra komprese než s nezávislými výskyty hodnot v kompresi textu Markovův model k-tého řádu = model konečného kontextu (finite context model) délky k kontext = stav modelu Jan Outrata (Univerzita Palackého v Olomouci) Komprese dat Olomouc, únor březen 2016 16 / 104

Modely dat Markovův model Příklad x 1 x 2... x 10 = aababbabaa stavy modelu 1. řádu = posloupnosti (bezprostředně) předchozích symbolů délky 1 pro všechny symboly: a, b P (a) = 6 10, P (b) = 4 10, P (a a) = 2 5, P (b a) = 3 5, P (a b) = 3 4, P (b b) = 1 4 stavy modelu 2. řádu = posloupnosti (bezprostředně) předchozích symbolů délky 2 pro všechny symboly: aa, ab, ba, bb P (aa) = 2 9, P (ab) = 3 9, P (ba) = 3 9, P (bb) = 1 9, P (a aa) 0, P (b aa) 1, P (a ab) = 2 3, P (b ab) = 1 3, P (a ba) = 1 3, P (b ba) = 2 3, P (a bb) 1, P (b bb) 0 Jan Outrata (Univerzita Palackého v Olomouci) Komprese dat Olomouc, únor březen 2016 17 / 104

Modely dat Typy statický neměnný pro různá originální data a během kódování, známý algoritmu dekomprese semi-adaptivní vytvořený pro originální data (1. průchod daty při kompresi), během kódování neměnný (2. průchod) a předaný algoritmu dekomprese (např. s komprimovanými daty) adaptivní dynamicky vytvářený/modifikovaný podle doposud zakódovaných originálních a dekomprimovaných dat Jan Outrata (Univerzita Palackého v Olomouci) Komprese dat Olomouc, únor březen 2016 18 / 104

Teorie informace Klasická Shannonova vytvoření míry informace obsažené v datech rámec pro bezeztrátové kompresní metody, vychází z pravděpodobnostního modelu dat Claude E. Shannon: A Mathematical Theory of Communication. Bell System Technical Journal 27, pp. 379 423, 623 656, 1948. míra průměrné informace (asociované s) experimentu(-em): výsledky experimentu (jevy A) data informace (self-information) (asociovaná s výskytem) jevu A: 1 i(a) = log b P (A) = log b P (A) log(1) = 0 a roste s klesající P (A) 0, pro nezávislé A, B i(ab) = i(a) + i(b) jednotka i: bit (shannon) pro b = 2, nat pro b = e, hartley pro b = 10 entropie (asociovaná s) experimentu(-em): průměr H(A i ) = i P (A i)i(a i ) = i P (A i) log P (A i ) informací nezávislých jevů A i, A i = Ω (jako náhodných proměnných), 0 log 0 := 0 Jan Outrata (Univerzita Palackého v Olomouci) Komprese dat Olomouc, únor březen 2016 19 / 104

Teorie informace Klasická Shannonova Shannon: entropie (asociovaná s) experimentu(-em) = jediné možné řešení požadavků na míru průměrné informace (asociované s) experimentu(-em) míru informace obsažené v datech požadavky, pro nezávislé jevy A i, i = 1,..., m, A i = Ω: 1 spojitá funkce H(p i ), p i = P (A i ) 2 monotónně rostoucí vzhledem k počtu m stejně pravděpodobných jevů A i (p i = 1 m ) 3 stejná při rozdělení experimentu na k podexperimentů (s disjunktními podmnožinami množiny jevů A i ), výsledek experimentu = podmnožina s jevem, výsledek podexperimentu = jev v podmnožině: H(p i ) = H(q 1, q 2,..., q k ) + q 1 H( p1 q 1, p2 q 1,..., pj 1 q 1 ) + q 2 H( pj 1 +1 q 2, pj 1 +2 q 2,..., pj 2 q 2 ) +... + q k H( pj k 1 +1 q k, pj k 1 +2 q k,..., pj k q k ), q 1 = j 1 i=1 p i, q 2 = j 2 i=j p 1+1 i,..., q k = j k =m i=j k 1 +1 p i jediné možné řešení požadavků: H(p i ) = K i p i log p i, K kladná konstanta Jan Outrata (Univerzita Palackého v Olomouci) Komprese dat Olomouc, únor březen 2016 20 / 104

Teorie informace Klasická Shannonova Shannon: experiment = zdroj Z posloupnosti X 1, X 2,..., X n symbolů z množiny {a 1, a 2,..., a m } jako náhodných proměnných X j (a i ) = i, pak entropie zdroje = průměrný počet binárních symbolů (bitů) potřebných pro zakódování každého symbolu 1 posloupnosti = H(Z) = lim n n G n, G n = m mi2 i1 =1 =1... m P (X in=1 1 = i 1, X 2 = i 2,..., X n = i n ) log P (X 1 = i 1, X 2 = i 2,..., X n = i n ) = entropie posloupnosti X 1, X 2,..., X n jestliže je výskyt každého symbolu X j (jako náhodné proměnné) nezávislý a stejně pravděpodobnostně rozložený, pak X j = X, G n = n m i=1 P (X = i) log P (X = i) a 1 H(Z) = H(X) = m i=1 P (a i ) log P (a i ) = entropie 1. řádu výskyt X 1 je závislý na výskytu X 2 podmíněná entropie (pro náhodné proměnné) X 1 v závislosti na X 2 : průměr H(Z) = H(X 1 X 2 ) = m i2 =1 P (a i 2 )H(X 1 X 2 = i 2 ) = m i2 =1 P (a i 2 ) m i1 =1 P (a i 1 a i2 ) log P (a i1 a i2 ) podmíněných entropií X 1 v závislosti na X 2 = i 2 entropie Markovova modelu se stavy S = {s j }: H(X S) Jan Outrata (Univerzita Palackého v Olomouci) Komprese dat Olomouc, únor březen 2016 21 / 104

Teorie informace Klasická Shannonova Příklad x 1, x 2,..., x 12 = 2, 2, 4, 6, 7, 7, 7, 10, 10, 11, 11, 14 {a 1, a 2,..., a 7 } = {2, 4, 6, 7, 10, 11, 14} P (a i ) = p i f(a i ) = f i : f 1 = f 5 = f 6 = 2 12, f 2 = f 3 = f 7 = 1 12, f 4 = 3 1 H(a i ) = 7. i=1 p i log 2 p i = 2.689 bitů/číslo 12 Jan Outrata (Univerzita Palackého v Olomouci) Komprese dat Olomouc, únor březen 2016 22 / 104

Teorie informace Klasická Shannonova Příklad x 1, x 2,..., x 12 = 2, 2, 4, 6, 7, 7, 7, 10, 10, 11, 11, 14 {a 1, a 2,..., a 7 } = {2, 4, 6, 7, 10, 11, 14} P (a i ) = p i f(a i ) = f i : f 1 = f 5 = f 6 = 2 12, f 2 = f 3 = f 7 = 1 12, f 4 = 3 1 H(a i ) = 7. i=1 p i log 2 p i = 2.689 bitů/číslo Sousední čísla nejsou nezávislá odstranění závislosti (korelace): d 2, d 3,..., d 12 = 0, 2, 2, 1, 0, 0, 3, 0, 1, 0, 3, {a 1, a 2, a 3, a 4 } = {0, 1, 2, 3} f 1 = 5 11, f 2 = f 3 = f 4 = 2 1 11 H(a i ) = 4. i=1 p i log 2 p i = 1.859 bitů/číslo 12 Jan Outrata (Univerzita Palackého v Olomouci) Komprese dat Olomouc, únor březen 2016 22 / 104

Teorie informace Klasická Shannonova Příklad x 1, x 2,..., x 12 = 2, 2, 4, 6, 7, 7, 7, 10, 10, 11, 11, 14 {a 1, a 2,..., a 7 } = {2, 4, 6, 7, 10, 11, 14} P (a i ) = p i f(a i ) = f i : f 1 = f 5 = f 6 = 2 12, f 2 = f 3 = f 7 = 1 12, f 4 = 3 1 H(a i ) = 7. i=1 p i log 2 p i = 2.689 bitů/číslo Sousední čísla nejsou nezávislá odstranění závislosti (korelace): d 2, d 3,..., d 12 = 0, 2, 2, 1, 0, 0, 3, 0, 1, 0, 3, {a 1, a 2, a 3, a 4 } = {0, 1, 2, 3} f 1 = 5 11, f 2 = f 3 = f 4 = 2 1 11 H(a i ) = 4. i=1 p i log 2 p i = 1.859 bitů/číslo Všechna čísla jsou mezi sebou závislá odstranění závislosti (korelace): d 1, d 2,..., d 12 = 0, 1, 0, 1, 1, 0, 1, 1, 0, 0, 1, 1, {a 1, a 2, a 3 } = {0, 1, 1} f 1 = 5 12, f 2 = 3 12, f 3 = 4 1 12 H(a i ) = 3. i=1 p i log 2 p i = 1.555 bitů/číslo 12 Jan Outrata (Univerzita Palackého v Olomouci) Komprese dat Olomouc, únor březen 2016 22 / 104

Teorie informace Klasická Shannonova Příklad x 1 x 2... x 10 = aababbabaa výskyt a a b nezávislý: P (a) = 6 10, P (b) = 4 10 H = P (a) log 2 P (a) P (b) log 2 P (b) =. 0.971 b/symbol Jan Outrata (Univerzita Palackého v Olomouci) Komprese dat Olomouc, únor březen 2016 23 / 104

Teorie informace Klasická Shannonova Příklad x 1 x 2... x 10 = aababbabaa výskyt a a b nezávislý: P (a) = 6 10, P (b) = 4 10 H = P (a) log 2 P (a) P (b) log 2 P (b) =. 0.971 b/symbol Markovův model 1. řádu: P (a) = 5 9, P (b) = 4 9, P (a a) = 2 5, P (b a) = 3 5, P (a b) = 3 4, P (b b) = 1 4 H = P (a)h(x a) + P (b)h(x b) = P (a)( P (a a) log 2 P (a a) P (b a) log 2 P (b a)) + P (b)( P (a b) log 2 P (a b) P (b b) log 2 P (b b)). = 0.9 b/symbol Jan Outrata (Univerzita Palackého v Olomouci) Komprese dat Olomouc, únor březen 2016 23 / 104

Teorie informace Klasická Shannonova Příklad x 1 x 2... x 10 = aababbabaa výskyt a a b nezávislý: P (a) = 6 10, P (b) = 4 10 H = P (a) log 2 P (a) P (b) log 2 P (b) =. 0.971 b/symbol Markovův model 1. řádu: P (a) = 5 9, P (b) = 4 9, P (a a) = 2 5, P (b a) = 3 5, P (a b) = 3 4, P (b b) = 1 4 H = P (a)h(x a) + P (b)h(x b) = P (a)( P (a a) log 2 P (a a) P (b a) log 2 P (b a)) + P (b)( P (a b) log 2 P (a b) P (b b) log 2 P (b b)). = 0.9 b/symbol Markovův model 2. řádu: P (aa) = 1 8, P (ab) = 3 8, P (ba) = 3 8, P (bb) = 1 8, P (a aa) 0, P (b aa) 1, P (a ab) = 2 3, P (b ab) = 1 3, P (a ba) = 1 3, P (b ba) = 2 3, P (a bb) 1, P (b bb) 0 H = bb x 1 x 2 =aa P (x 1x 2 )H(X x 1 x 2 ) = bb x1 x 2 =aa P (x 1x 2 )( y=a,b P (y x 1x 2 ) log 2 P (y x 1 x 2 )) =. 0.689 b/symbol Jan Outrata (Univerzita Palackého v Olomouci) Komprese dat Olomouc, únor březen 2016 23 / 104

Teorie informace Klasická Shannonova entropie (zdroje, posloupnosti symbolů) při uvažování (více) závislostí mezi výskyty symbolů je vždy menší nebo rovna entropii při nezávislém (méně závislém) výskytu symbolů entropie je závislá na uvažovaném modelu struktury dat, ale Uvažováním závislostí mezi výskyty symbolů posloupnosti dat v modelu struktury dat nesnižujeme skutečnou entropii (hypotetického) zdroje dat. Tato entropie je vlastností zdroje a je stejná pro všechna data ze zdroje. Snižujeme náš odhad této entropie uvažováním delších n-tic symbolů dat a závislostí mezi výskyty symbolů v modelu (až do n )! Jan Outrata (Univerzita Palackého v Olomouci) Komprese dat Olomouc, únor březen 2016 24 / 104

Teorie informace Algoritmická Kolmogorov/descriptive complexity / algoritmická entropie dat (Andrey N. Kolmogorov): délka nejmenšího/nejkratšího počítačového programu (včetně vstupu, v jakémkoliv programovacím jazyce), jehož jsou data výstupem způsob modelování struktury dat není znám žádný systematický způsob výpočtu nebo libovolně blízkého odhadu Minimum Description Length (MDL) princip (J. Risannen): MDL(x) = min j (D Mj + R Mj (x)), D Mj délka popisu možného modelu M j struktury dat x, R Mj (x) délka reprezentace x podle modelu M j např. M j polynomy j-tého řádu: pro vyšší j kratší R Mj (x) (přesnější model), ale delší D Mj (složitější model), a naopak kompromis Jan Outrata (Univerzita Palackého v Olomouci) Komprese dat Olomouc, únor březen 2016 25 / 104

Kódování abeceda A = {a 1, a 2,..., a n }, a i = symboly = (kód) ze zdrojové abecedy A do kódové abecedy B: injektivní C : A B +, B + = množina konečných neprázdných posloupností (= slov) symbolů z B často B = {0, I} binární kódování (kód) C(a i ) B +... kódové slovo (kód) pro symbol a i, C(A) = {C(a i ), a i A} B +... kód (pro zdrojovou abecedu A), l(a i )... délka C(a i ), pro B = {0, I} v bitech dekódování: D : C(A) A např. {0, I, 00, II}, ne {0, 0, I, II} blokový kód (kód pevné délky, fixed-length code) = všechna kódová slova (pro všechny symboly) mají stejnou délku, např. ASCII Jan Outrata (Univerzita Palackého v Olomouci) Komprese dat Olomouc, únor březen 2016 26 / 104

Kódování Jednoznačně dekódovatelný kód = každá (neprázdná) posloupnost symbolů z kódové abecedy je zřetězením nejvýše jedné posloupnosti kódových slov = C + : A + B +, C + (a i1 a i2... a ij ) = C(a i1 )C(a i2 )... C(a ij ) injektivní dekódování: D + : C + (A + ) A + např. každý blokový, {0, 0I, 0II, III}, ne {0, 0I, I0, II} test: S C(A) a opakuj S S {s B + ; ps S p S} dokud některé s C(A) nebo S zůstane stejná, při s C(A) kód C(A) není jednoznačně dekódovatelný Prefixový (prefix-free, instantaneous) kód = žádné kódové slovo není prefixem jiného kódového slova např. každý blokový, {0, I0, II0, III} jednoznačně dekódovatelný Jan Outrata (Univerzita Palackého v Olomouci) Komprese dat Olomouc, únor březen 2016 27 / 104

Kódování Věta (Kraftova) Prefixový kód s k kódovými slovy délek l 1, l 2,..., l k nad kódovou abecedou velikosti m existuje právě když k m l i 1... Kraftova nerovnost. i=1 Jan Outrata (Univerzita Palackého v Olomouci) Komprese dat Olomouc, únor březen 2016 28 / 104

Kódování Věta (Kraftova) Prefixový kód s k kódovými slovy délek l 1, l 2,..., l k nad kódovou abecedou velikosti m existuje právě když k m l i 1... Kraftova nerovnost. i=1 Věta (McMillanova) Jednoznačně dekódovatelný kód s k kódovými slovy délek l 1, l 2,..., l k nad kódovou abecedou velikosti m existuje právě když k m l i 1 (... Kraft-McMillanova nerovnost). i=1 Jan Outrata (Univerzita Palackého v Olomouci) Komprese dat Olomouc, únor březen 2016 28 / 104

Kódování Optimální kód pro pravděpodobnostní model dat (výskytu symbolů), prefixový kód průměrná délka kódu (na symbol, code rate): průměr l(c(a)) = n i=1 P (a i )l(a i ) délek l(a i ) pro všechny a i A, P (a i ) 0 = pravděpodobnost výskytu symbolu a i = s minimální l(c(a)) (v rámci třídy kódů, např. prefixové) Jan Outrata (Univerzita Palackého v Olomouci) Komprese dat Olomouc, únor březen 2016 29 / 104

Kódování Optimální kód pro pravděpodobnostní model dat (výskytu symbolů), prefixový kód průměrná délka kódu (na symbol, code rate): průměr l(c(a)) = n i=1 P (a i )l(a i ) délek l(a i ) pro všechny a i A, P (a i ) 0 = pravděpodobnost výskytu symbolu a i = s minimální l(c(a)) (v rámci třídy kódů, např. prefixové) Věta (Shannon noisless coding theorem) Pro optimální jednoznačně dekódovatelný kód C(A) ze zdrojové abecedy A do kódové abecedy B platí H(A) log b m l(c(a)) < H(A) log b m + 1 kde H(A) je entropie zdroje symbolů z A, b je stejné jako v H a m je velikost B. l(c(a)) = H(A) log b m právě když P (a i) = m l(a i) pro všechny a i A. redundance kódu: l(c(a)) H(A) H(A) log b m, také v % z log b m, l(c(a)) = H(A) log b m... absolutně optimální kód Jan Outrata (Univerzita Palackého v Olomouci) Komprese dat Olomouc, únor březen 2016 29 / 104

Kódování Optimální kód H(A) log b m = dolní limit pro průměrnou délku kódu ze zdrojové abecedy A do kódové abecedy velikosti m, horní limit = H(A) log b m + 1 změnou zdrojové abecedy na k-tice (nezávislých) symbolů z původní abecedy A (rozšíření zdrojové abecedy, source extension) se lze s l(c(a)) k H(A) log b m libovolně přiblížit (až do k ): H(A k ) log b m l(c(a k )) < H(Ak ) log b m + 1 kh(a) log b m k l(c(a)) < kh(a) log b m + 1 H(A) log b m l(c(a)) < H(A) log b m + 1 k Jan Outrata (Univerzita Palackého v Olomouci) Komprese dat Olomouc, únor březen 2016 30 / 104

Kódování Optimální kód H(A) log b m = dolní limit pro průměrnou délku kódu ze zdrojové abecedy A do kódové abecedy velikosti m, horní limit = H(A) log b m + 1 změnou zdrojové abecedy na k-tice (nezávislých) symbolů z původní abecedy A (rozšíření zdrojové abecedy, source extension) se lze s l(c(a)) k H(A) log b m libovolně přiblížit (až do k ): H(A k ) log b m l(c(a k )) < H(Ak ) log b m + 1 kh(a) log b m k l(c(a)) < kh(a) log b m + 1 H(A) log b m l(c(a)) < H(A) log b m + 1 k abeceda A k ale může mít velikost až n k (n je velikost A)! Jan Outrata (Univerzita Palackého v Olomouci) Komprese dat Olomouc, únor březen 2016 30 / 104

Kódování Optimální kód Příklad A = {a 1, a 2, a 3 } P (a i ) = 0.8, P (a 2 ) = 0.02, P (A 3 ) = 0.18 H(A) = 3 i=1 P (a i ) log 2 P (a i ) =. 0.816 bitů/symbol C(A) = { a 1, 0, a 2, II, a 3, I0 } l(c(a)) = 3i=1 P (a i )l(a i ) = 1.2 b/symbol l(c(a)) H(A) log 2 2. = 0.384 b/symbol. = 47 % Jan Outrata (Univerzita Palackého v Olomouci) Komprese dat Olomouc, únor březen 2016 31 / 104

Kódování Optimální kód Příklad A = {a 1, a 2, a 3 } P (a i ) = 0.8, P (a 2 ) = 0.02, P (A 3 ) = 0.18 H(A) = 3 i=1 P (a i ) log 2 P (a i ) =. 0.816 bitů/symbol C(A) = { a 1, 0, a 2, II, a 3, I0 } l(c(a)) = 3i=1 P (a i )l(a i ) = 1.2 b/symbol l(c(a)) H(A) log 2 2. = 0.384 b/symbol. = 47 % A 2 = {a 1 a 1, a 1 a 2, a 1 a 3, a 2 a 1, a 2 a 2, a 2 a 3, a 3 a 1, a 3 a 2, a 3 a 3 } P (a 1 a 1 ) = 0.64, P (a 1 a 2 ) = P (a 2 a 1 ) = 0.016, P (a 1 a 3 ) = P (a 3 a 1 ) = 0.144, P (a 2 a 2 ) = 0.0004, P (a 2 a 3 ) = P (a 3 a 2 ) = 0.0036, P (a 3 a 3 ) = 0.0324 C(A 2 ) = { a 1 a 1, 0, a 1 a 2, I0I0I, a 1 a 3, II, a 2 a 1, I0I000, a 2 a 2, I0I00I0I, a 2 a 3, I0I00II, a 3 a 1, I00, a 3 a 2, I0I00I00, a 3 a 3, I0II } 3,3 i=1,j=1 P (a ia j )l(a i a j ) l(c(a)) = l(c(a 2 )) 2 = 2 l(c(a)) H(A). = 0.046 b/symbol. = 5.6 %. = 1.723 2. = 0.862 b/symbol log 2 2 Jan Outrata (Univerzita Palackého v Olomouci) Komprese dat Olomouc, únor březen 2016 31 / 104

Kódování Optimální kód Věta Pro optimální prefixový kód ze zdrojové abecedy A do kódové abecedy B platí 1 Symboly z A s větší pravděpodobností výskytu mají kratší kódová slova. 2 m {2, 3,..., m}, m n (mod (m 1)) symbolů z A s nejmenší pravděpodobností výskytu, kde n 2 je velikost A a m 2 je velikost B, má stejně (maximálně) dlouhá kódová slova a ta se liší pouze v jednom symbolu. Proč m a ne m? Odpověď u Huffmanova kódování (viz dále). Jan Outrata (Univerzita Palackého v Olomouci) Komprese dat Olomouc, únor březen 2016 32 / 104

Základní techniky a kódování čísel Jan Outrata (Univerzita Palackého v Olomouci) Komprese dat Olomouc, únor březen 2016 33 / 104

Run-length encoding (RLE) = kódování posloupností stejných zdrojových symbolů (runs) kódy příznaku kódování opakování, délky posloupnosti a jednoho symbolu místo samotných symbolů podle délky kódů příznaku a délky až pro posloupnosti delší než určitý počet k symbolů, např. 3 kód příznaku může být zaměnitelný s kódem symbolu kódování s kódem délky zmenšené o k za kódy určitého počtu k symbolů aplikace: text, obraz (BMP) Diferenční kódování = kódování (malého) rozdílu symbolu/čísla od předchozího (nebo predikce z několika předchozích) kódy příznaku kódování rozdílu a rozdílu místo samotného symbolu/čísla, s výjimkou prvního Jan Outrata (Univerzita Palackého v Olomouci) Komprese dat Olomouc, únor březen 2016 34 / 104

Run-length encoding (RLE) Input: číslo k r 0; while načti ze vstupu symbol a do if r = 0 then x a; r 1; else if a = x then r r + 1; else if r k then zapiš na výstup r kódů symbolu x; else zapiš na výstup kódy příznaku, čísla r a symbolu x / k kódů symbolu x a kód čísla r k; x a; r 1; PRIKLAD: k = 3, vstup bbbbaaaarrrbbaaaaara, kod priznaku x, kod opakovani cislo, kod symbolu symbol, obe varianty Jan Outrata (Univerzita Palackého v Olomouci) Komprese dat Olomouc, únor březen 2016 35 / 104

Move-to-front (MTF) kódování = kódování často se opakujících symbolů malými čísly (speciálně posloupností stejných symbolů posloupností čísel 0) lokálně adaptivní = adaptace podle lokálních četností výskytu symbolů Uses: zdrojová abeceda A = {a 1,..., a n }, (volitelně) pravděpodobnosti {p 1,..., p n } výskytu a i (volitelně) setřiď a i a p i tak, že p i p j pro i < j; while načti ze vstupu symbol a A do zapiš na výstup číslo i 1, kde a i = a; if i > 1 then x a i ; a j a j 1 pro j = 2, 3,..., i; a 1 x; PRIKLAD: A = {a, b, r}, p(a) = 10 20, p(b) = 6 20, p(r) = 4 20, vstup bbbbaaaarrrbbaaaaara, se setrizenim i bez Jan Outrata (Univerzita Palackého v Olomouci) Komprese dat Olomouc, únor březen 2016 36 / 104

Kódování čísel přirozených čísel celá lze bijektivně zobrazit na přirozená (jak?) předpoklad nižší pravděpodobnosti výskytu u větších čísel binární kódy s proměnnou délkou (variable-length codes, fixed-to-variable codes) = proměnná délka kódových slov pro zdrojová slova pevné délky (symboly nebo jejich k-tice), nízká průměrná délka kódu vs. náročnější manipulace s kódem (v porovnání s blokovým kódem, s využitím bufferu) Unární kód kódování přirozených čísel = pro i 0: zřetězení i I a 0 (nebo opačně), např. IIIII0 pro 5 Další prefixový, délka i + 1, optimální při P (i) = 1 2 i start-step-stop (obecné unární) kódy, start/stop kód, Levensteinův kód, Stoutovy kódy, Yamamotovy kódy, taboo kódy, Goldbachovy kódy, aditivní kódy aj. Jan Outrata (Univerzita Palackého v Olomouci) Komprese dat Olomouc, únor březen 2016 37 / 104

Eliasovy kódy kódování přirozených čísel, P. Elias Alpha = α(i) pro i 0: unární kód i, s I na konci Beta = β(i) pro i 0: reprezentace i ve dvojkové soustavě (= binární reprezentace) neprefixový další pro i 1: zřetězení kódu l(β(i)) = log 2 i + 1 a β(i), prefixové pro každé i 1: i = 2 l(β(i)) 1 + k, 0 k < 2 l(β(i)) 1 Gamma = γ(i) pro i 1: zřetězení l(β(i)) 1 0 a β(i) nebo α(l(β(i)) 1) a β(k), např. 00I0I pro 5 délka 2 log 2 i + 1, optimální při P (i) = 1 2i 2 Delta = δ(i) pro i 1: zřetězení l(β(l(β(i)))) 1 0, β(l(β(i))) a β(i) bez první I nebo γ(l(β(i))) a β(k), např. 0II0I pro 5 délka 2 log 2 log 2 2i + log 2 i + 1, optimální při P (i) = 1 2i(log 2 2i) 2 Jan Outrata (Univerzita Palackého v Olomouci) Komprese dat Olomouc, únor březen 2016 38 / 104

Eliasovy kódy Omega (rekurzivní) = ω(i) pro i = 1: 0, a pro i 2: zřetězení odzadu 0 a počínaje k := i pokud k 2 rekurzivně β(k), k := l(β(k)) 1, např. I0I0I0 pro 5 dekódování: i := 1 a opakovaně jestliže je další bit I tak s dalšími i bity tvoří kód β(i) délka k j=1 ( log 2 i j + 1) + 1, log 2 i k = 1 Jan Outrata (Univerzita Palackého v Olomouci) Komprese dat Olomouc, únor březen 2016 39 / 104

Fibonacciho kódy kódování přirozených čísel, L. Pisano (Fibonacci) Fibonacciho reprezentace a 1 a 2... přirozeného čísla i 1: i = j=1 a jf j, a j {0, 1}, F j j-té Fibonacciho číslo (F 1 = 1, F 2 = 2, F j = F j 1 + F j 2 ) neobsahuje sousední 1 = pro i 1: zřetězení Fibonacciho reprezentace i (jako bitů) a I, např. 000II pro 5 končí II délka log φ 5n + 1, φ = 1 2 (1 + 5) 1.618 tzv. zlatý řez prefixové, robustnější než jiné kódy čísel další (zobecněné) založené na k-krokových (zobecněných) Fibonacciho číslech Jan Outrata (Univerzita Palackého v Olomouci) Komprese dat Olomouc, únor březen 2016 40 / 104

Golombovy kódy kódování přirozených čísel, S. W. Golomb parametr přirozené číslo j > 0 = pro i 0 zřetězení dvou kódů: 1 unární kód q = i j (= celé části i j ) 2 log 2 j -bitová binární reprezentace r = i qj (= zbytek po celočíselném dělení i j ) pro r = 0, 1,..., 2 log 2 j j 1 a log 2 j -bitová binární reprezentace r + 2 log 2 j j pro r = 2 log 2 j j,..., j 1 Příklad j = 5 log 2 5 = 2-bitové binární reprezentace r = 0, 1, 2 a log 2 5 = 3-bitové binární reprezentace r + 3 pro r = 3, 4 0 000, 1 00I, 2 0I0, 3 0II0, 4 0III, 5 I000, 6 I00I,... Jan Outrata (Univerzita Palackého v Olomouci) Komprese dat Olomouc, únor březen 2016 41 / 104

Golombovy kódy délka pro malé j z malé rychle narůstá, pro velké j z delší narůstá pomalu prefixové, pro j = 1 log 2 p (přesněji j = log 2 (1+p) log 2 p ) optimální při P (i) = p i 1 (1 p) geometrické rozdělení pravděpodobnosti, např. posloupnost (run z RLE) i 1 výskytů symbolu s vysokou pravděpodobností výskytu p ukončená jedním výskytem jiného symbolu s nízkou pravděpodobností 1 p (např. prohra a výhra) (adaptivní) Golomb RLE použití např. v bezeztrátové kompresi obrazu (JPEG-LS) Jan Outrata (Univerzita Palackého v Olomouci) Komprese dat Olomouc, únor březen 2016 42 / 104

Riceovy kódy Golomb-Riceovy kódy, R. F. Rice (Rice machine) = Golombovy kódy pro j = 2 k pro nějaké (celé nezáporné) k jednodušší kódování (a dekódování) pro i 0: zřetězení unárního kódu pro zbývajících q = i j bitů a k nejméně významných bitů binární reprezentace i délka i 1 j + k + 1, optimální při P (i) = 2 j i +k+1 použití např. v bezeztrátové kompresi audia (MPEG-4 ALS, FLAC) Jan Outrata (Univerzita Palackého v Olomouci) Komprese dat Olomouc, únor březen 2016 43 / 104

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

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 zdrojové symboly s větší pravděpodobností výskytu tvoří delší zdrojová slova 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 45 / 104

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 46 / 104

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 j i=a p i = k p k a b i=j+1 p i = l p l, k, l {a,..., b}, ( k) ( l) = Jan Outrata (Univerzita Palackého v Olomouci) Komprese dat Olomouc, únor březen 2016 47 / 104

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 48 / 104

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 48 / 104

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 49 / 104

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 50 / 104

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 51 / 104

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, 1973, Gallager, 1978, Knuth, 1985, Vitter, 1987 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 52 / 104

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) 1; n(x) 0; 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 najdi v(y) takové, že i(v(y)) i(v(z)), v(z) V H (A), n(y) = n(z) = n(x); if v(y) v(x) then E H (V H (A)) (E H (V H (A)) \ { u, v(x), t, v(y) }) { t, v(x), u, v(y) }; 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 53 / 104

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 54 / 104

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 55 / 104

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 56 / 104

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 s neměnný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 57 / 104

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 58 / 104

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 59 / 104

Aritmetické kódování c 0; // while... // přeškálování [l, u): 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; PRIKLAD Jan Outrata (Univerzita Palackého v Olomouci) Komprese dat Olomouc, únor březen 2016 60 / 104

Aritmetické kódování p načti ze vstupu log min 2 4 bitů binární reprezentace čísla x [0, 1), p min nejnižší pravděpodobnost zdrojových symbolů; // while... // přeškálování [l, u): 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 2 log 2 p min 4 ; PRIKLAD Jan Outrata (Univerzita Palackého v Olomouci) Komprese dat Olomouc, únor březen 2016 61 / 104

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 62 / 104