Jan Ondruš LZPXj - vylepšení LZP algoritmu

Rozměr: px
Začít zobrazení ze stránky:

Download "Jan Ondruš LZPXj - vylepšení LZP algoritmu"

Transkript

1 Univerzita Karlova v Praze Matematicko-fyzikální fakulta BAKALÁŘSKÁ PRÁCE Jan Ondruš LZPXj - vylepšení LZP algoritmu Katedra softwarového inženýrství Vedoucí bakalářské práce: Mgr. Jan Lánský Studijní program: Informatika, obor Obecná informatika 2007

2 Prohlašuji, že jsem svou bakalářskou práci napsal(a) samostatně a výhradně s použitím citovaných pramenů. Souhlasím se zapůjčováním práce a jejím zveřejňováním. V Praze dne Jan Ondruš 2

3 Obsah 1 Úvod Komprese dat Algoritmus LZP Implementace LZP algoritmu - verze od Charlese Blooma Předchozí práce - program LZPX Vylepšení LZPXj LZPXj - úvod Vylepšení výkonu pro špatně komprimovatelná data Komprese pro 16 / 24 / 32 bitová data Filtr pro instrukční kód x Kódování v LZPXj Kódování - 2 modely Model 1 - PPM Model Výběr modelu Shrnutí a závěr Celkový postup komprese Srovnání komprese Závěr Literatura 28 3

4 Název práce: LZPXj - vylepšení LZP algoritmu Autor: Jan Ondruš Katedra (ústav): Katedra softwarového inženýrství Vedoucí bakalářské práce: Mgr. Jan Lánský vedoucího: Jan.Lansky@mff.cuni.cz Abstrakt: LZP algoritmus je jedním z algoritmů navržených pro kompresi textu. Vychází ze základní myšlenky, kterou publikovali Ziv a Lempel ve své práci A Universal Algorithm for Sequential Data Compression. Autorem vlastní metody LZP je Charles Bloom, který navrhl obecné schéma a několik vlastních implementací. Cílem práce je navázat na existující implementace LZP algoritmu. Jsou zde zapracovány vlastní myšlenky s cílem dosáhnout efektivní komprese pro různé druhy dat. Program LZPXj se zaměřuje na kompresi běžných souborů jako jsou textové, multimediální nebo spustitelné soubory. Součástí práce jsou kromě popisu vylepšeného algoritmu také otestování a srovnání s existujícími kompresními programy. Klíčová slova: komprese dat, LZP algoritmus, srovnání komprese Title: LZPXj - improvement of LZP algorithm Author: Jan Ondruš Department: Department of Software Engineering Supervisor: Mgr. Jan Lánský Supervisor s address: Jan.Lansky@mff.cuni.cz Abstract: LZP algorithm is one of algorithms designed for text compression. It is based on ideas published in paper A Universal Algorithm for Sequential Data Compression by Ziv and Lempel. The author of method LZP itself is Charles Bloom who proposed general scheme and his implementations. The aim of present work is continue progress of existing implementations of LZP algorithm and designing software for file compression. Some original ideas are proposed and included helping achieve effecient compression for various kind of data. LZPXj compressor is better for common files containing text, multimedia or executables. Part of this work is apart from description of improved algorithm also tests and comprehensions with some existing compression programs. Keywords: data compression, LZP algorithm, compression comprehension 4

5 Kapitola 1 Úvod 1.1 Komprese dat Komprese dat je proces kódování informace pomocí menšího počtu bitů (nebo jiné jednotky informace) než měla původní reprezentace. Dosahuje toho použitím různých schémat. Komunikace pomocí komprese dat funguje pouze, pokud odesílatel i příjemce znají schéma, které v jejich případě použili. V opačném případě by příjemce nebyl schopen dekódovat obsaženou informaci. Komprese je užitečná, protože pomáhá ušetřit zdroje jako je místo na úložném médiu nebo přenosovou kapacitu na síti. Na druhou stranu je nevýhodou, že je potřeba čas na kompresi a dekompresi dat a výpočetní kapacita schopná ji provést. Kompresní algoritmy můžeme rozdělit na dvě základní skupiny. Těmi jsou bezztrátová a ztrátová komprese. Bezztrátové algoritmy se snaží využít statistické redundance dat k lepší reprezentaci odesílaných dat. V tomoto případě je příjemce schopen rekonstruovat původní data naprosto přesně, tedy sekvence bitů si přesně odpovídají. Dalším druhem komprese je ztrátová komprese, při které je možná ztráta kvality přijatelná. Obvykle se používá například pro kompresi obrázků, videa nebo zvuku. Bezztrátové kompresní metody můžeme rozdělit podle typu dat, pro který jsou navrženy. Těmi jsou hlavně text, obrázky a zvuk. V principu lze obecný kompresní algoritmus použít na jakákoliv binární data. Některé algoritmy ale mohou mít problémy s výkonem komprese pro jiný druh dat než pro ten, pro který byly navrženy. Například zvuková data nelze efektivně komprimovat textovými algoritmy. Většina bezztrátových programů používá dva druhy algoritmů - první provádí statistické modelování vstupních dat a 5

6 druhý kóduje vstupní data do bitových řetězců, tak aby častější data dávala kratší výstup. Příkladem algoritmů první skupiny jsou Burrows-Wheelerova transformace (BWT), LZ77 nebo LZW. Naopak kódovacími algoritmy jsou například Huffmanovo kódování nebo aritmetické kódování. 1.2 Algoritmus LZP Metodu LZP představil v roce 1996 Charles Bloom v [1]. Řadíme ji mezi slovníkové metody komprese dat. Je odvozena z metody LZ77 komprese popsané v [6]. Hlavním rozdílem je, že při hledání opakujícího se úseku se nedíváme na celé okno, ale jen na jediné místo, na kterém je jeho výskyt nejpravděpodobnější. To umožňuje snížit náklady na místo pro uložení odkazu na nalezený podřetězec. Zlepšení kompresního poměru se dosáhne, protože zmenšení délek řetězců je dostatečně kompenzováno tím, že není třeba zapisovat přesnou polohu na výstup. Algoritmus je vhodný pro širokou škálu využití na poli datové komprese, jako je archivace distribuce nebo on-line komprese. Algoritmus lze implementovat v mnoha variantách, které mohou dosahovat jak velmi vysokých rychlostí, tak i výkonné komprese. Algoritmus LZ77 a další varianty si ve výstupním proudu dat rezervují prostor pro umístění pozice zdrojového podřetězce. Koncept LZP ho umožňuje ušetřit a využít ho efektivněji. Pro nalezení vhodného místa je ale třeba použít jinou techniku. Tou je kontextové modelování. Je dána pevná délka kontextu N (order-n kontexty). Ukazatel se vybere podle pozice posledního nalezeného výskytu kontextu. Použitím kontextů vyšších řádů můžeme dosáhnout větší úspěšnosti - častěji budou nalezeny delší úseky symbolů. Porostou ovšem také pamět ové nároky na modelování order-n kontextů. Obecné schéma kompresního procesu algoritmu: Pro každý byte vstupního zdroje dat se předcházejícím N bytům je vytvřen order-n konečný kontext. Tento kontext se použije pro vyhledání v indexové tabulce (až už je implementována jakkoli). Výsledek tohoto kroku nám dodá ukazatel někam do proudu už přečtených a zpracovaných dat P, které se nachází před aktuální pozicí. Řetězec znaků S na aktuální pozici se porovná s řetezcem na pozici P. Dostaneme délku shody L. Do indexové tabulky se vloží ukazatel na řetězec S na místo, kde byl předtím ukazatel P. Pokud je použito ověřování kontextu je hodnota kontextu přímo uložena také do indexové tabulky na stejné místo. Pokud je nalezená délka shody L nulová (nebo menší než stanovená minimální délka) je zakódována značka literál a jednotlivý 6

7 znak je pak zapsán na výstup. Pokud je délka L nenulová (aspoň velká jako minimální délka) je kódována značka match a číslo L. Protože kódujeme dva druhy entit - délky úseků a hodnoty jednotlivých bytů, je předřazena rozlišující značka, která je umožňuje při dokódování rozlišit. Jak se vyřeší následné kódování jednotlivých entit závisí už na konkrétních implementacích. 1.3 Implementace LZP algoritmu - verze od Charlese Blooma Charles Bloom navrhl čtyři implementace LZP1 - LZP4, kde LZP1 je nejrychlejší s nejhorší kompresí a LZP 4 poskytuje nejvýkonnější kompresi, ale je nejpomalejší. Verze se liší ve způsobech jakými je naprogramována indexová tabulka a jakým způsobem jsou zapisovány prvky(tj. značky, délky shodujících se řetězců a literály) na výstup. U LZP1 a LZP2 je indexová tabulka implementována hašovací tabulkou, která používá hašovací funkci: H = ((C >> 11) XOR C) & 0xFFF V tomto případě je C pevný order-3 kontext. Ta dává 12-bitovou hodnotu, která se používá jako index do pole ukazatelů do už zakódované části souboru. Pokud není hodnota ukazatele P inicializována (tedy nebyl nalezen výskyt podřetězce), je zakódován na výstup literál bez použití značky. Kolize se při hašování neřeší. Verze LZP3 používá obdobnou hašovací funkci, která je však 16 bitová a parametrem je tentokrát order-4 kontext (4 poslední byty). Navíc používá potvrzování kontextu. To znamená, že je v indexové tabulce kromě ukazatele P také uložen samotná hodnota order-4 kontextu, která umožní ověřit, zda je ukazatel platný. Při neúspěchu se nezapisuje literál, ale jsou použity ještě alternativní tabulky pro order-3 kontexty a order-2 kontexty. LZP4 používá nejnáročnější strategii - indexace se provádí pro order-5 kontexty a ve dvou fázích. Při neúspěchu nepoužívá nižší kontexty jako LZP3. Pro kódování výstupních prvků bylo použito také rozdílných technik. U LZP1 jsou literály kódovány nekomprimované v 8 bitech. Značky pro shodující se řetězce a jejich délky jsou kódovány ve zvláštních kontrolních bytech. Napevno přiřazené sekvence bitů jsou pevně přiřazeny jednotlivým značkám i hodnotám délek. LZP2 pracuje stejně až na to, že se používá sta- 7

8 tické Huffmanovo kódování pro literály. U LZP3 je kódování o něco složitější. Značky a délky shodujících se úseků jsou obě kódovány pomocí order-1 Huffmanova kódování. Kontextem je v tomto případě číslo použitého řádu pro LZP kontext (pouze tři možnosti 4, 3 nebo 2). Na tyto tři pole se jednoduše aplikuje statické Huffmanovo kódování. Značky jsou kódovány po čtveřicích. Literály také kóduje Huffmanem, konkrétně ve variantě order-1-0. Dalším rozdílem je, že v případě nalezení shodujícího se řetězce, se následně po něm vynechává značka a předpokládá se, že bude následovat literál (stejně jako u původní LZ77 metody). LZP4 pro dosažení lepší komprese obsahuje již aritmetický kodér a pokročilejší techniky kontextového modelování (context modelling). U každého kontextu má zapsány relativní počty nalezených podřetězců a literálů. Z nich se spočítá kodóvací kontext a použije se pro aritmetické kódování délek shodných podřetězců. Pro literály se kóduje nulová délka. Ty jsou dále transformovány tak, že se vypočítá rozdíl od minulé hodnoty. Pokud je délka menší než minulá hodnota, kóduje se již literál a aktuální hodnota se zmenší na jedničku. Poté se kódují hodnoty s pomocí order-1-0 modelu s tím, že jako order-1 kontext se použije kódovací kontext. Literály se zakódují pomocí order PPMC metody a použije se full exclusion. Znak predikovaný pomocí LZP (tedy ten, který následuje za posledním výskytem) se odstraní z modelu také. Literál se zapisuje automaticky hned po odkazu na minulý řetězec stejně jako u LZP Předchozí práce - program LZPX Nyní budu popisovat jednu z dalších implementací LZP algoritmu, ze které jsem vycházel při své práci a kterou jsem se snažil vylepšit hlavně po stránce míry komprese a obecné použitelnosti na různé typy dat. LZPX je kompresor s volně dostupnými zdrojovými kódy jehož autorem je Ilia Muraviev. Pokud porovnáváme tuto implementaci s původními verzemi od Charlese Blooma, je ve své poslední verzi nejpodobnější LZP3. Nicméně první z verzí LZPX jsou zaměřeny více na rychlost a podobají se spíše LZP1 nebo LZP2. Nyní se zaměřím na poslední verzi 1.5b, která tvoří předchůdce programu LZPXj. LZP algoritmus pracuje s těmito parametry: Bloky jsou délky 16 MB. Úseky se hledejí jen v rámci aktuálního bloku. Indexová tabulka pro hledání LZP kontextu délky 4 znaky je implementována pomocí hašovací tabulky s ověřováním platnosti kontextu. Hašovací tabulka má velikost 8 MB a obsahuje 220 položek po 8 bytech. Čtyři byty jsou použity jako ukazatel do aktuálního bloku a zbývající čtyři jako kontext pro ověření shody. Pokud 8

9 není nalezen kontext je použita tabulka, která obsahuje odkazy do datového bloku pro kontexty délky 2 (indexována přímo 2-bytovou hodnotou kontextu). V další fázi jsou kódovány značky, délky nalezených úseků a literály. Při kódování značek je možno použít tyto tři - úsek, literál nebo konec souboru. Program si zapamatuje poslední čtyři zakódované značky a tato čtveřice je použita jako order-1 kontext aritmetického kodéru. Tato čtveřice značek zřejmě nikdy neobsahuje značku konec souboru a proto máme 2 4 = 16 možných kontextů pro kódování značek. Po zakódování aritmetickým kodérem je kontext aktualizován pro kódování značky v příštím kroku. Pokud je nalezen úsek je třeba zakódovat jeho délku. Ta se kóduje pomocí 256 možných hodnot. Pro hodnoty větší než 254 je zakódována speciální hodnota 255 a délka se o 255 sníží. To je opakováno dokud není dosaženo hodnoty pod 255 a tato hodnota je již zakódována přímo. Dále se využije znalosti z předchozí fáze komprese o tom, zda byl index úseku nalezen v hašovací tabulce nebo ne. Každá z obou možností má vlastní rozdělení pravděpodobnosti tj. existuje dvakrát 256 čítačů (odpovídající dvěma kontextům) aritmetického kodéru přiřazené každé z obou možností. Aritmetickým kodérem je pak zakódována hodnota 0 až 255. Při kódování literálů se jako kontext se bere v úvahu předchozí znak (order-1). Každému ze 256-ti znaků je přiřazen jeden čítač v každém z 256- ti kontextů. Z modelu se navíc na začátku odebere znak, který předpověděla LZP predikce. Čítače se aktualizují přičtením konstatní hodnoty 128. Přesáhne-li celkový součet pro všechny symboly v rámci jednoho bloku čítačů pro jeden kontext určitou hodnotu, všechny čítače jsou v tomto bloku vyděleny dvěma. Tato dynamická aktualizace umožňuje přizpůsobování v případě změny charakteru dat při kompresi nehomogeního souboru. Update: freq[char] += 128 Rescale: if total > 2 16 then { Vyděl všechny freq[i] dvěma } 9

10 Kapitola 2 Vylepšení LZPXj 2.1 LZPXj - úvod Implementace LZPX je efektivní hlavně pro textová nebo jiná lineární data uspořádaná jako sekvence bytů. Ale moderní aplikace používají mnoho dalších druhů dat, které je třeba více či méně efektivně komprimovat. Například jsou to multimediální formáty jako obrázky a zvukové soubory. Dále také komprimované formáty dat at už jde o ztrátovou kompresi nebo bezztrátovou. A v neposlední řadě jsou velmi časté také spustitelné soubory. Mnoho datových souborů obsahuje mnoho z těchto i jiných druhů dat často smíchány dohromady (aplikace, hry, dokumenty). LZPXj se snaží vylepšit výkon komprese hlavně pro tyto druhy, o kterých se dá předpokládat, že budou často komprimována koncovými uživateli. Cílem je ukázat, jaký výkon může poskytnout metoda založená na LZP na širokém spektru datových souborů. V LZPXj jsem navrhl a implementoval několik vylepšení, které přinášejí zvýšení výkonu algoritmu. Za cenu zvýšení složitost celého procesu komprese a dekomprese a časových i pamět ových nároků se mi podařilo dosáhnout v průměru lepších výsledků. Tato metoda ukázala schopnost konkurovat většině současných komprimačních či archivačních programů a nástrojů. V dalších kapitolách jsou podrobněji popsány a vysvětleny jednotlivé postupy a techniky, které jsem do algoritmu v jeho implementaci LZPXj zařadil. 10

11 2.2 Vylepšení výkonu pro špatně komprimovatelná data Při komprimování souborů obsahující již nějakým způsobem zkomprimovaná data, at už jde o ztrátovou nebo bezztrátovou kompresi, dochází v LZPX implementaci k expanzi dat. Důvodem tohoto jevu je, že čítače použité při kódování nedávají dostatečně přesnou informaci o pravděpodobnostech symbolů. Tato nedokonalost vede k tomu, že místo toho, aby byla všem symbolům přiřazena stená relativní pravděpodobnost (data vypadají náhodně - hodnoty jednotlivých symbolů jsou na sobě nezávislé), je rozložena nerovnoměrně. V závislosti na míře této nerovnoměrnosti to pak vede ke ztrátám při kompresi. Nepřesné hodnoty jsou pak zasílány do aritmetického kodéru. Ten poté přiřazuje jednotlivým symbolům větší počet bitů než by bylo nutné. Tuto ztrátu je možné vyčíslit na testovacích souborech obsahující a) pseudonáhodná data vygenerovaná nějakým náhodným generátorem; b) komprimovaná data (obrázky JPG, soubory ZIP apod.). V následující tabulce 2.1 je vidět v procentech o kolik je výkon komprese horší. Pro porovnání je uvedeny původní hodnoty a hodnoty po aplikaci mnou navržené metody, která je implementována ve verzi programu LZPXj 1.0e. Tato metoda je zařazena také ve všech dalších verzích s tím, že k ní jsou přidány další způsoby vylepšení, které jsou popsány v této práci v dalších kapitolách. Soubor JPG ZIP Původní velikost ,0% ,0% Po kompresi LZPX 1.5b ,1% ,1% LZPXj 1.0e ,3% ,9% Tabulka 2.1: Porovnání komprese LZPX 1.5b a LZPXj 1.0e na souborech JPG a ZIP. První nápad, který mnoho lidí asi napadne je průběžně zjišt ovat jestli nejsou data expandována. V případě, že je to detekováno pozastavit aritmetické kódování a místo toho jen kopírovat na výstup nekomprimovaná data resp. symboly či literály z předchozí LZP kompresní fáze. To je ale také ekvivalentní tomu, když nahradíme hodnoty všech čítačů tak, aby měly stejnou hodnotu. Tato stejná hodnota přiřazená všem čítačům zajistí, že aritmetické kódování v další fázi bude používat pro svou práci rovnoměrné rozdělení pravděpodobnosti, kde každý symbol bude kódován stejným počtem bitů. V 11

12 případě, že symboly jsou jednotlivé byty souboru, bude to přesně 8 bitů. Nabízí se otázka, zda by nebylo možné a z hlediska dosažení vyšší komprese výhodnější použít nějaký mezistupeň. Pod tím si představme, že pravděpodobnosti odpovídající jednotlivým čítačům nebudou nahrazeny jedinou hodnotou, ale jejich velikosti se vyrovnají jen o něco méně. To znamená, že vypočítané rozdělení pravděpodobnosti pomocí systému čítačů se nenahradí rovnoměrným, ale provede se kombinace původního a rovnoměrného rozdělení v nějakém vhodném poměru. Aby se toho dosáhlo v programu LZPXj, je ke všem čítačům přičtena hodnota H, která má záviset na jakési odhadnuté míře náhodnosti dat. Jak je počítána hodnota H je popsáno podrobněji níže. Obecně se dá říci, že pokud se data daří komprimovat dobře, je H snižována, a naopak, pokud by byl výstup větší než původní data, je zvyšována. K výpočtu H jsem použil jednoduchou heuristiku. Principem práce je snaha zjistit P - podíl celkové frekvence všech symbolů ku frekvenci konkrétního čítače pro jediný právě kódovaný symbol. Čím je tento podíl vyšší, tím je výstup z následného kódovaní pomocí aritmetického kodéru větší. Dále máme proměnnou C, jejíž hodnota nějakým způsobem zohledňuje, jak dobře se daří data komprimovat. C je snižována pokud podíl P klesne pod dolní mez udanou konstatou K1. Naopak podku P přeroste horní mez K3 je hodnota proměnné C zvyšována. Konkrétně pokud nastává P < K1 je C vynásobeno konstantou K3, která je menší než jedna, pro P > K3 se provede přičtení konstanty K4 k proměnné C. V ostatních případech je-li P >= K1 a zároveň P <= K3 přičte se k proměnné C konstanta K5, jejíž hodnota je menší než K4. Aktualizace proměnné C: P = total / freq[char] if P < K1 then C = C * K2 if P > K3 then C = C + K4 if (P >= K1 AND P <= K3) then C = C + K5 Určení konstant K1 až K5 jsem provedl pouze přibližně (K1 = 185, K2 = 9/10, K3 = 2048, K4 = 20, K5 = 9). Experimenty ukázaly, že tyto hodnoty dobře postačují pro účely tohoto postupu. Také platí, že na jejich přesných velikostech kriticky nezáleží, protože hodnota C je dále transformována na H a tato transformace je z hlediska dosažení větší přesnosti důležitější. Kromě proměnné C je počítána také C - a to stejným způsobem jako C, jen pro každý jednoznakový kontext (tj. poslední kódovaný znak) zvlášt. Ukázalo 12

13 se, že součet C + C dobře vystihuje chování různých druhů dat. Klíčem k dosažení optimálního působení je však dostatečně přesně určit závislost proměnné H a součtu C + C. Provedl jsem proto řadu měření. Interval možných hodnot (C + C ) jsem si rozdělil na několik úseků a měřil jsem výsledek komprese pro různá H. Nakonec jsem do tabulky poznamenal ten nejlepší zjištěný výsledek. Testovací data obsahovala jak textová, binární i pseudonáhodná data. Vynesené hodnoty jsou vidět na grafu 2.1 jako vodorovné čáry. Výsledkem je zjištění, jak má proměnná H záviset na proměnné C - body grafu můžeme proložit parabolu a určit i přesné koeficienty kvadratické závislost. Je možné použít i exponencielní závislost, ta se však ukázala jako přibližně stejně vhodná, přičemž z hlediska rychlosti a jednoduchosti dopadne lépe kvadratická závislost - pro výpočet stačí jediné násobení. Určení hodnoty H: Z = ( C + C ) if Z > 1024 then Z = 1024 H = ( Z * Z / 48 * total ) >> Komprese pro 16 / 24 / 32 bitová data Mnoho souborů obsahuje struktury a data zarovnané do skupin. Významovou jednotku tam pak netvoří jediný byte, ale přímo skupiny více než jednoho bytu. To je v případě pokud jsou ukládána 16-bitová čísla nebo 32- bitová čísla poměrně častá v binárních souborech nebo také v multimediální formáty. Například 24-bitové RGB obrázky obsahují 24-bitové zarovnání záznamů. Dále nekomprimová 16-bitová audio data ve formátu WAV jsou zarovnány po 32 bitech (stereo - 2 kanály) nebo 16 bitech (mono - jediný kanál). Ve velkém počtu binárních formátech je možné takovéto struktury záznámů nalézt a spustitelné soubory nejsou výjimkou. Jeden z možných postupů jak této vlastnosti datových souborů využít pro vylepšení komprese je předzpracovat vstup pomocí filtrů. Tento způsob se snaží bud vhodně přeuspořádat data nebo v případě delta filtrů jsou místo původních záznamů kódovány rozdíly mezi aktuální a předchozí hodnotou. Tato fáze je pak plně předřazena kompresnímu algoritmu a nijak jej není třeba modifikovat. Nevýhodou je v tomoto případě nutnost složitě detekovat, kdy a jaké transformace je možné provádět. Dalším záporem může být menší obecnost tohoto postupu, protože se dá požít jen na určitou malou 13

14 Obrázek 2.1: Proložení naměřené závislosti proměnných H a C křivkou. množinu formátů (ty které se dají spolehlivě detekovat a vhodně transformovat). V LZPXj jsem zvolil jinou cestu, tou je provedení změn přímo uvnitř kompresního algoritmu. Takové změny, které vedou k vylepšení komprese těchto struktur, spočívají v tomto případě ve změně způsobu kódování literálů. V algoritmus LZP jsem nahradil jednoduché kontextové modelování, které pro kódování literálů používá jako kontext jeden poslední symbol ze zakódovaných dat. Pokud bereme jako kontext jediný symbol je lepší při zacházení s 16/24/32-bitovými záznamy použít jako kontext znak na odpovídající pozici v předešlém záznamu. Odpovídá to tomu, že se odkazujeme na druhý, třetí nebo čtvrtý znak od konce. Snahou je, aby bylo možné toto nahrazení provést bez újmy na výkonu pro běžné textové soubory, ve kterých je samozřejmě nejvhodnější volbou použití posledního symbolu. Konkrétně v metodě LZPXj je modelování použito více-násobně, konkrétně 14

15 čtyřnásobně. Pro každý znak jsou k dispozici čtyři sady čítačů, které odpovídají pravděpodobnostním rozdložením vhodným pro jednotlivé druhy dat. V každém kroku se vybírá právě jeden kontext z těchto čtyř, který se jeví jako nejvhodnější. Model se dynamicky přizpůsobuje přicházejícím datům a dokáže si vybírat správně ten nejvhodnější. Vyběr se provádí podle odhadnutého výsledku na nedávných datech. Ze čtyř možností se bere nejlepší výsledek. Ke každému z kontextů je přiřazena proměnná, která určuje jí příslušný počet bodů B. Tento počet udává relativně kvalitu tohoto kontextu - méně bodů znamená lepší možnou kompresi. Pro kompresi je vybírán ten s nejnižším bodovým kontem. Aktualizace se provádí na základě hodnoty P poměru čítače pro kódovaný symbol ku celkovému součtu čítačů v daném kontextu. Pokud je tato P = hodnota total / freq[char] větší než v některém z ostatních kontextů dostane za každý z nich bod a naopak druhá strana jeden bod ztrácí. To přesně znamená, že jsou prověřeny všechny dvojice (je jich šest). Tomu z dvojice, který má menší P je snížen bodový součet B o jedna. Tomu z dvojice, který má součet P větší je bodový součet naopak zvýšen. Dynamické přizpůsobení je zajištěno občasným vydělením všech B dvěma. Výběr a aktualizace: P1 = total1 / freq1[char] P2 = total2 / freq2[char] P3 = total3 / freq3[char] P4 = total4 / freq4[char] if (P1 > P2) then B1++, B2-- else B1--, B2++ if (P1 > P3) then B1++, B3-- else B1--, B3++ if (P1 > P4) then B1++, B4-- else B1--, B4++ if (P2 > P3) then B2++, B3-- else B2--, B3++ if (P2 > P4) then B2++, B4-- else B2--, B4++ if (P3 > P4) then B3++, B4-- else B3--, B4++ if (T++ >= 256) then T=0, B1/=2, B2/=2, B3/=2, B4/=2 Vyber kontext s nejnižší hodnotou B 2.4 Filtr pro instrukční kód x86 K dosažení lepší komprese na spustitelných souborech je třeba předřadit vlastnímu kompresnímu algoritmu minimálně filtr pro CALL a JMP in- 15

16 strukce. Ty jsou v instrukčním kódu pro běžné procesory řady x86 velice časté a znamenají instrukci skoku na určenou adresu. Adresa je uložna relativně k pozici dané insturkce. To způsobuje, že všechny skoky na jediné místo v souboru jsou kódovány každý jiným číslem a to vede k horšímu kompresnímu poměru. Toto čtyřbajtové číslo znamenající relativní adresu skoku by proto bylo výhodné nahradit absolutní adresou nebo jednoznačným záznamem určujícím jediné místo v souboru. Smyslem jednoduchého filtrování je jednoduché nahrazení relativní adresy za absolutní. Cílem je aby se stejné absolutní adresy mnohokrát opakovaly. CALL / JMP instrukce jsou v x86 kódu zapsány byty 0xe8h / 0xe9h. Hledáním těchto hodnot můžeme nalézt všechna místa, kde se má transformace uskutečnit. Nicméně najdeme také spoustu dalších výskytů, která nekódují přímo číslo instrukce, ale například se nacházejí jinde v kódu jako operandy instrukcí nebo jako jiná data napevno uložená v souboru apod. Dále o datech předem nemůžeme s jistotou vědět zda opravdu obsahují instrukční kód a tedy jestli se nejedená o jiná binární či textová data, kde by pokus o transformování bytů způsobil jistě zhoršení komprese. Proto je třeba s dostatečnou spolehlivostí detekovat, kdy jde o spustitelný kód a kdy jde v tomto kódu o instrukci a má tedy dojít k nahrazování. U relativní adresy je nutno analyzovat, do kterého místa ukazuje. Pokud jde o skutečnou CALL / JMP instrukci je cíl umístěn v naprosté většině případů poměrně blízko výskytu instrukce. Toho se využívá pro zjištění falešných výskytů bytů 0xe8h a 0xe9h. Konkrétně stačí testovat hodnotu nevyššího byte z adresy, není-li to 0 nebo 255, pak jde s největší pravděpodobností o falešný výskyt. V opačném případě si tak jistí být ale nemůžeme, protože například pro náhodná data by došlo ke zbytečné transformaci průměrně v každém z 128 případů (testována hodnota jediného bytu). Aby se tomu předešlo LZPXj používá jednoduchou heuristiku pro detekci instrukčního kódu. Transformace: if C == 0 then { nedělej nic, nebyl detekován instukční kód } else { if (char[pos] == 0xe8h OR char[pos] == 0xe9h) AND (char[pos+4] == 255 char[pos+4] == 0)) then { X = (char[pos + 1], char[pos + 2], char[pos + 3]) X = X + pos + block offset (char[pos + 1], char[pos + 2], char[pos + 3]) = X } } 16

17 Detekce sleduje opakující se znaky v instrukčním kódu. Znaky jsou rozděleny do dvou kategorií. Jednou z nich jsou znaky 0x83h a 0xe8h, které se ve spustitelném kódu vyskytují velmi pravidelně. Druhou část tvoří další vybrané často se vyskytující znaky, které už nemají při detekci tak velkou váhu. Při detekci jsou jako čítače použity dvě proměnné A0 a A1, které udávají jak často se v nedávných datech objevil znak 0x83h resp. 0xe8h. Vyšší hodnota znamená menší četnost. A0 či A1 jsou inkrementovány pouze v případě znaku, který nepadne ani do jedné z kategorií (tj. znaků, které se v EXE kódu běžně nevyskytují). Pokud součet A0 + A1 přesáhne danou konstantu 256 je čítač C snížen o jedna. Přesáhne-li hodnotu 2 14 sníží se na nulu. jinak se nastaví na Případ C = 0 znamená negativní detekci a transformace není prováděna. Detekce: switch (char[pos]) { case 0x83h: A0 = A0 * 3 / 5 case 0xe8h: A1 = A1 * 3 / 5 case 137, 139, 8, 192, 4, 133, 141: case 0, 1, 69, 80, 116, 117, 255: nedělej nic default: if A0 < 2 14 then A0++ if A1 < 2 14 then A1++ } if A0+A1 < 256 then C = 2 14 else if A0 + A1 > 2 14 then C = 0 else if C > 0 then C-- 17

18 Kapitola 3 Kódování v LZPXj 3.1 Kódování - 2 modely Poslední verze LZPXj 1.2h obsahuje dva modely pro kódovýní výstupu z LZP fáze. LZP produkuje tři druhy entit - literály, délky opakujících se řetězců a rozlišující značky. Ty je třeba efektivně zakódovat. Ke zvýšení efektivity jsem použil dva modely, z nichž každý se více hodí pro jiný druh dat. Model 1 je verze PPMC algoritmu, která je vhodná pro textová a lineární data. Model 2 naopak implementuje vylepšení popsané v kapitole Komprese pro 16 / 24 / 32 bitová data a Vylepšení výkonu pro špatně komprimovatelná data, takže je vhodná pro binární, bloková nebo předem komprimovaná data. Z tohoto důvodu jsou v činnosti oba modely a podle průběžně aktualizovaného ukazatele učinnosti je vybírán ten lepší a vhodnější model, který se v ten daný okamžik použije. 3.2 Model 1 - PPM První model je jednoduchým order PPM. PPM je algoritmus často používaný a velmi efektivní pro kompresi textů. Jedna z možných implementací je popsána také [3]. Já jsem zvolil implementaci pomocí hašovací tabulky pro všechny order-3 kontexty. Hašovací funkce H1 použije hodnotu posledních tří bytů (X) ke konstrukci indexu v hašovací tabulce. Při kolizi, tedy pokud je dané místo v hašovací tabulce obsazeno informacemi o jiném kontextu, se použije náhradní část tabulky určená pro order-2 kontexty. Jiný rozsah indexů je pro ně vyhrazen. V tomto případě je pak použito 18

19 sekundární hašovací funkce H2. Jako parametr dostává hodnotu posledních dvou bytů (Y). Hodnota mem nastavení programu, které udává množství použité paměti. Je to číslo v rozsahu 1 až 9. Hodnota získaná jednou z těchto dvou funkcí odpovídá indexu nejvyššího řádu pro následné PPM. Dalším indexem prvního řádu je přímo hodnota posledního byte (order-1 kontext) v rozsahu Pro order-0 kontext je použit index s hodnotou 0. V následném kódování se pak sestupuje zeshora dolů a použije se nejdelší kontext, ve kterém je symbol nalezen. Pokud není v některém nalezen je zakódován ESC symbol. Hašovací funkce: H 1 (X) = (( X/ X* X/523 + X ) & (2 10+mem - 1)) H 2 (Y) = (( Y*11 + Y/11 + Y ) & (2 10+mem - 1)) mem Znaky, které se kódují v tomto modelu jsou vhodně přetransformovány. Používá se abeceda s 504 znaky. Znak s číslem 0 je použit jako ESC symbol. Znaky s čísly 1 až 256 kódují literály. Znaky 257 až 503 kódují délky úseků. Není třeba kódovat značky, protože ty jsou tímto systémem zakódovány implicitně. Rozlišení literálů a řetězců je totiž už provedeno. To dohromady znamená, že v hašovací tabulce je uloženo pro každý index 504 čítačů. V tomto případě jsou jednobytové, aby se ušetřila pamět. Celkový počet indexů je 2 (11+mem), tedy celkem zabere model 2 (20+mem) bytů. 3.3 Model 2 Tento model využívá techniky popsané v předcházejících kapitolách. To znamená, že se používá komprese pro 16/24/32 bitová data. Zde se pravděpodobnosti pro aritmetické kódování zjišt ují v závislosti na jediném znaku - ten předchozí, druhý, třetí nebo čtrvtý znak od konce dosud zakódovaných dat. Rozdělení pravděpodobnosti je udržováno tak, že je každému symbolu použité 256-ti znakové abecedy přiřazen jeden čítač. Jeho velikost relativně určuje, jak je daný znak pravděpodobný. Následně se použije postup popsaný v kapitole Vylepšení výkonu pro špatně komprimovatelná data. Výsledné pravděpodobnostní rozdělení je poté upraveno přičtením hodnoty H příslušným způsobem vypočítané, tak aby se co nejvíce zlepšila komprese pro špatně kompimovatelné úseky dat. Nevýhodou tohoto modelu je, že používá pouze velmi krátké jednoznakové kontexty a proto dosahuje poměrně špatných výsledků na textových datech. Tuto situaci lépe řeší Model1 pomocí jednoduché implementace PPM algoritmu. 19

20 3.4 Výběr modelu Po celou dobu komprese jsou v činnosti oba modely zároveň. Jsou aktualizovány příslušné čítače v obou modelech. Protože pro různá data je vhodný různý model, je třeba rozhodnout, kdy je lépe použít, který z nich. K tomu, abychom dostali výslednou predikci pro následující symbol, je vybrán jeden z modelů podle heuristiky, která počítá cenu na zakódování symbolu. Určí se pro poslední už zakódovaný úsek, který z modelá je na tomto úseku výhodnější co se týče délky generovaného výstupu. Udržováno je 257 dvojic čítačů O1 a O2. Z nich 256 je používáno podle toho, jaký byl poslední zakódovaný znak (O1[0..255], O2[0..255]) a jedna dvojice je globální bez ohledu na poslední znak (O1[256], O2[256]). Při kódování i dekódování se nejprve podle hodnot O1[ch], O2[ch], O1[256] a O2[256] určí lepší z modelů. Následně se model použije pro kódování resp. dekódování aktuálního znaku. Nakonec se čítače aktualizují, tak aby se v následujících datech dosáhlo co nejlepšího výsledku. Při aktualizaci se přitom spočítá kolik bitů by zabralo kódování pomocí modelu1 a výsledek se přičte k proměnným O1[ch] a O1[256]. Aby se preferoval význam proměnné O1[ch] oproti O1[256] přičítá se k ní dvojnásobek. Stejným způsobem se aktualizují O2. Dynamická povaha rozhodování se zachovává tím, že se čítače vynásobí 3 / 4, pokud součet O1[x] + O2[x] přesáhne určitou konstantu (konkrétně 1024). Rozhodovací kritérium: if O1[ch] + O1[256] > O2[ch] + O2[256] then { použij model1 } else { použij model2 } Aktualizace čítačů: for (x = ch, x = 256) { if O1[x] + O2[x] > 1024 then { O1[x] = O1[x] * 3 / 4, O2[x] = O2[x] * 3 / 4 } } O1[ch] = O1[ch] + cost1 * 2, O2[ch] = O2[ch] + cost2 * 2 O1[256] = O1[256] + cost1, O2[256] = O2[256] + cost2 20

21 Kapitola 4 Shrnutí a závěr 4.1 Celkový postup komprese Poslední verze LZPXj 1.2h obsahuje fitr pro spustitelné soubory jako preprocesor. Dále používá LZP schéma odpovídající přibližně tomu jak je využito v LZPX. To co se nejvíce liší a také nejvíce ovlivňuje výkon komprese je způsob kódování literálů a také možnost využít více paměti pro většinu komponent využitých v algoritmu. Kódování literálů je řešeno pomocí dvou modelů. Schéma celkového průběhu komprese i dekomprese je vidět na obrázcích 4.1 a 4.2 Záverečnou fázi tvoří aritmetické kódování. Tuto fázi jsem neupravoval a zůstává tedy stejná jako v LZPX. Použité aritmetické kódování je verze popsaná Schindlerem v schindler, která se názývá range coder. Její vlastností je, že přeškálování aktivního rozsahu se provádí po celých bytech, nikoliv po jednotlivých bitech. Implementace LZP fáze algoritmu, se liší od té v LZPX poměrně málo. Hlavním rozdílem je, že umožňuje nastavení množství použité paměti pro jednotlivé komponenty kompresního procesu. Proto je možné použít větší velikost bloku nebo velikost hašovacích tabulek. Pamět ové nastavení ovlivňuje také velikost hašovací tabulky použité pro PPM model. Dalším menším rozdílem je možnost použití kromě dvou a čtyřznakových LZP kontextů také osmiznakový. Kódovací fáze se liší velmi významně - dva použité modely umožňují vylepšit kompresi pro nejrůznější datové typy. 21

22 Obrázek 4.1: Kódování v LZPXj 1.2h. 4.2 Srovnání komprese Abych otestoval, jak jednotlivé části programu ovlivňují výkon po stránce kompresního poměru, provedl jsem srovnání komprese při vypnutí některých částí kompresoru nebo některých jejich vylepšení. V tomto případě jsem použil tři testovací soubory. Prvním z nich byl spustitelný soubor WIN- WORD.EXE z kancelářského balíku Microsoft Office. Zastupuje binární soubory a také obsahuje x86 instrukční kód. Zde můžeme vidět, kolik ušetří transformace relativních adres. Druhý soubor je archiv, který obsahuje několik souborů ve formátu html. Je to několik html souborů obsahující nápovědu k programu Visual Studio. Dohromady jsou sloučeny do jednoho TAR archivu. Třetím souborem jsem jako zástupce multimediálních dat zvolil BMP soubor ve běžném 24-bitovém RGB formátu. Obsahuje fotografii z digitálního fotoaparátu zmenšenou na menší rozlišení a převedenou do formátu BMP. 22

23 Obrázek 4.2: Dekódování v LZPXj 1.2h. Výsledky jsou prezentovány v tabulce 4.1. Relativní změny, tedy kompresní ztráty v procentech, pro jednotlivé soubory jsou vidět na grafu 4.3 spolu s průměrným výsledkem. Můžeme si všimnout, že model2 a komprese pro 16/24/32 bitová data, která je v něm obsažena má velký vliv při kompresi obrázku BMP. Zlepšení se pohybuje kolem 9%. Naopak model1 s PPM je výhradně použit pro kompresi textových dat a u souboru HTML.TAR se neobjevuje žádná ztráta při vypnutí součásti model2. Soubor WINWORD.EXE, což je spustitelná aplikace, je dobře komprimován kombinací obou modelů. Přitom při použití, každého z nich samostatně přináší ztrátu (2% resp. 5,5%). Filtr pro spustitelné soubory dokázal ušetřit na EXE souboru kolem 3,5%. Zajímavé je, že komprese pro 16/24/32 bitová data zlepšuje kompresi i u TAR archivu s textovými html soubory. V průměru se všechna vylepšení ukázala jako opodstatněná. Pouze optimalizace délek řetězců se na těchto testovacích datech 23

24 Testovaný soubor / nastavení EXE TAR BMP LZPXj 1.2h (vše zapnuto) 40,40% (+0,00%) 16,77% (+0,00%) 54,75% (+0,00%) použit pouze model1 (PPM) 42,34% (+1,93%) 16,80% (+0,02%) 64,07% (+9,32%) použit pouze model2 45,84% (+5,44%) 20,86% (+4,08%) 56,13% (+1,39%) LZP fáze vypnuta 45,96% (+5,56%) 21,35% (+4,58%) 54,59% ( 0,16%) optimalizace délek řetězců vypnuta 40,43% (+0,03%) 16,81% (+0,04%) 54,75% (+0,00%) exkluze v PPM vypnuta 40,74% (+0,34%) 16,87% (+0,10%) 54,93% (+0,18%) komprese pro 16/24/32-bitová vypnuta 41,45% (+1,05%) 20,90% (+4,13%) 63,59% (+8,84%) komprese pro náhodná data vypnuta 40,80% (+0,40%) 16,78% (+0,00%) 55,29% (+0,55%) filtr pro x86 spustitelný kód vypnut 43,71% (+3,31%) 16,77% (+0,00%) 54,75% (+0,00%) Tabulka 4.1: Výsledky srovnání komprese při vypnutí některých částí kompresoru. neprojevila. Došlo k tomu, protože tato optimalizace je vhodná pro delší texty obsahující mnoho dlouhých opakujících se úseků a také její vliv na kompresi není tak velký jako například vypnutí celého jednoho modelu. Program LZPXj umožňuje pracovat v devíti režimech, které se liší množstvím použité paměti. Množství paměti je možné nastavit volbou od 1 do 9. Standardním nastavením je 6, při kterém se používá kolem 163 MB. Nejnižší možnou hodnotou je 7 MB a nejvyšší 1315 MB. Každým zvýšením o jedničku je možné množství použité pamět přibližně zdvojnásobit a naopak. Na grafu 4.4 můžeme vidět, jak se mění kompresní poměr na Calgary Corpus pro nastavení 1 až 7. Protože tata standardní testovací data mají poměrně malou velikost (kolem 3 MB), větší pamět něž 40 MB už nepomáhá k lepší kompresi. Na řádově větších datech se dá očekávat zlepšování komprese i při vyšších nastaveních. Na internetu existuje několik testů, které se zabývají testováním komprimačních nástrojů. Tou nejdůležitější je stránka Maximumcompression.com [2], která se zaměřuje hlavně na srovnání kompresního poměru. Jejím auto- 24

25 Obrázek 4.3: Relativní zhoršení komprese při vypnutí některých částí kompresoru. rem je Werner Bergmans. Obsahuje deset testů, které reprezentují soubory několika široce rozšířených formátů. Těmito formáty jsou bmp, doc, dic, dll, exe, hlp, jpg, log, pdf, txt. Celková velikost všech souborů je něco přes 50 MB. Rozsáhlejším testem je Squeeze Chart (autor Stephan Busch). Velikost testovacích dat přesahuje 3 GB. Testovací data jsou rozdělena do několika skupin. Obsahují mnoho souborů v mnoha různých formátech. Pro srovnáni jsem vybral několik známějších nástrojů. Těmi jsou WinZIP, PKZIP, WinRAR, 7-ZIP, GZIP, BZIP2. Jejich výsledky v obou testech jsou uvedeny v tabulce

26 LZPXj LZPXj LZPXj LZPX 1.5b LZP4 Soubor Velikost 162MB 22MB 7MB 25MB 2MB Bytů bpb bpb bpb bpb bpb bib ,971 1,974 1,995 2,336 1,915 book ,469 2,482 2,562 3,075 2,350 book ,091 2,101 2,157 2,580 2,011 geo ,050 4,049 4,044 5,092 4,740 news ,390 2,399 2,466 2,758 2,350 obj ,721 3,723 3,728 4,343 3,744 obj ,328 2,337 2,396 2,711 2,388 paper ,449 2,452 2,468 2,789 2,378 paper ,442 2,445 2,471 2,826 2,389 pic ,804 0,804 0,803 0,797 0,814 progc ,456 2,456 2,464 2,765 2,392 progl ,601 1,603 1,608 1,782 1,589 progp ,622 1,620 1,620 1,843 1,585 trans ,347 1,347 1,365 1,558 1,343 average ,267 2,271 2,296 2,661 2,291 Tabulka 4.2: Kompresní poměr pro LZPX 1.5b, LZPXj 1.2h a LZP4 naměřený na Calgary Corpus. 4.3 Závěr V implementaci LZP algoritmu LZPXj, jsem navrhl v zásadě 4 hlavní vylepšení oproti LZPX. Těmi jsou a) efektivnější zacházení s předem komprimovanými daty (zip, jpg), b) efektivnější komprese pro data ukládaná v 16, 24 nebo 32-bitových záznamech (wav, bmp), c) filtrování a detekce spustitelného kódu (exe), d) 2 modely - jeden vhodnější pro textová data (txt, html) a druhý pro binární data - s možností automatického výběru. Další změnou je možnost nastavení použité paměti pro kompresi. Při porovnání s ostatními metodami jsem dosáhl v průměru dobrého kompresnímu poměru. Co se týče rychlosti je o něco pomalejší něž běžně používané metody, hlavně díky tomu, že celou dobu byla primární snahou optimalizace na lepší kompresní poměr. Práce tak navázala na existující implementace hlavně ve způsobech kódování výstupu LZP algoritmu, jehož výkon je, jak se ukázalo, velmi důležitý. 26

27 Obrázek 4.4: Závislost použité paměti a celkového kompresního poměru naměřená na Calgary Corpus. Test Maximumcompression Squeeze Chart Datum a velikost Název programu Výsledek Procent Pozice Výsledek Procent Pozice LZPX 1.5b ,69% ,86% 175 LZPXj 1.2h ,54% ,15% 56 WinZIP ,14% ,74% 160 PKZIP ,98% ,40% 259 WinRAR ,83% ,27% 96 7-ZIP ,25% ,15% 39 GZIP ,13% ,90% 208 BZIP ,18% ,95% 180 Tabulka 4.3: Srovnání některých výsledků testů na internetu. 27

28 Literatura [1] C. Bloom. LZP a new data compression algorithm, Proceedings of the IEEE Data Compression Conference (DCC 96), [2] W. Bergmans. Lossless data compression software benchmarks / comparisons, [3] A. Moffat. Implementing the PPM data compression scheme, Proceedings of the IEEE Transactions on Communications, 38 (11), pp , [4] M. Schindler. Range Encoder version 1.3, [5] I. H. Witten, R. M. Neal, and J. G. Cleary. Arithmetic coding for data compression, Communications of the ACM, 30(6): , [6] J. Ziv and A. Lempel. A Universal Algorithm for Sequential Data Compression, IEEE Transactions on Information Theory 23 (3), pp ,

Algoritmy komprese dat

Algoritmy komprese dat Algoritmy komprese dat Slovníkové metody Phillip Walter Katz (1962-2000) 2.12.2015 NSWI072-10 Slovníkové metody komprese dat Idea opakující se fráze uloženy do slovníku výskyty fráze v textu ukazatel do

Více

Stručně o XML (výhody, nevýhody) Proč komprimovat XML? Metody komprese XML XMill. Optimalizace komprese XML. Závěr

Stručně o XML (výhody, nevýhody) Proč komprimovat XML? Metody komprese XML XMill. Optimalizace komprese XML. Závěr Pavel Hruška Stručně o XML (výhody, nevýhody) Proč komprimovat XML? Metody komprese XML XMill Představení, princip, výsledky Analýza XML (možná úskalí) Optimalizace komprese XML Přeskládání kontejnerů

Více

Informační systémy ve zdravotnictví

Informační systémy ve zdravotnictví Informační systémy ve zdravotnictví ZS 2008/2009 Zoltán Szabó Tel.: (+420) 312 608 207 E-mail: szabo@fbmi.cvut.cz č.dv.: 504, 5.p Dnešní přednáška Kódování, komprese 2 1 Komprese dat Cíl komprese: redukovat

Více

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 Statistické metody Jan Outrata (Univerzita Palackého v Olomouci) Komprese dat Olomouc, únor březen 2016 1 / 23 Tunstallův

Více

Komprese dat (Komprimace dat)

Komprese dat (Komprimace dat) Komprese dat (Komprimace dat) Př.: zakódovat slovo ARARAUNA K K 2 četnost absolutní relativní A 4,5 N,25 R 2,25 U,25 kód K : kód K 2 :... 6 bitů... 4 bitů prefixový kód: žádné kódové slovo není prefixem

Více

Identifikátor materiálu: ICT-1-19

Identifikátor materiálu: ICT-1-19 Identifikátor materiálu: ICT-1-19 Předmět Informační a komunikační technologie Téma materiálu Komprimace, archivace dat Autor Ing. Bohuslav Nepovím Anotace Student si procvičí / osvojí komprimaci, archivaci

Více

Základy algoritmizace. Pattern matching

Základy algoritmizace. Pattern matching Základy algoritmizace Pattern matching 1 Pattern matching Úloha nalézt v nějakém textu výskyty zadaných textových vzorků patří v počítačové praxi k nejfrekventovanějším. Algoritmy, které ji řeší se používají

Více

KOMPRIMACE. aneb Aby to zabralo méně místa

KOMPRIMACE. aneb Aby to zabralo méně místa KOMPRIMACE aneb Aby to zabralo méně místa Komprimace nebo také komprese je jednoduše řečeno sbalení či spakování dat na mnohem menší velikost. Ve skutečnosti se jedná o vypuštění nadbytečné informace takovým

Více

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 Slovníkové metody Jan Outrata (Univerzita Palackého v Olomouci) Komprese dat Olomouc, únor březen 2016 1 / 23 Slovníkové

Více

DUM: VY_32_INOVACE_594

DUM: VY_32_INOVACE_594 Datum: 24. listopadu 2013 Projekt: Využití ICT techniky především v uměleckém vzdělávání Registrační číslo: CZ.1.07/1.5.00/34.1013 Číslo DUM: VY_32_INOVACE_594 Škola: Akademie VOŠ, Gymn. a SOŠUP Světlá

Více

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

25. DIGITÁLNÍ TELEVIZNÍ SIGNÁL A KABELOVÁ TELEVIZE 25. DIGITÁLNÍ TELEVIZNÍ SIGNÁL A KABELOVÁ TELEVIZE Digitalizace obrazu a komprese dat. Uveďte bitovou rychlost nekomprimovaného číslicového TV signálu a jakou šířku vysílacího pásma by s dolním částečně

Více

ZÁPADOČESKÁ UNIVERZITA V PLZNI

ZÁPADOČESKÁ UNIVERZITA V PLZNI ZÁPADOČESKÁ UNIVERZITA V PLZNI FAKULTA PEDAGOGICKÁ KATEDRA VÝPOČETNÍ A DIDAKTICKÉ TECHNIKY KOMPONENTY PRO VÝUKOVÝ ELEKTRONICKÝ MATERIÁL - KOMPRESE V OBLASTI POČÍTAČŮ BAKALÁŘSKÁ PRÁCE Lukáš Smutný Přírodovědná

Více

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

Kompresní techniky. David Bařina. 15. února David Bařina Kompresní techniky 15. února / 37 Kompresní techniky David Bařina 15. února 2013 David Bařina Kompresní techniky 15. února 2013 1 / 37 Obsah 1 Pojmy 2 Jednoduché techniky 3 Entropická kódování 4 Slovníkové metody 5 Závěr David Bařina Kompresní

Více

VYUŽITÍ PRAVDĚPODOBNOSTNÍ METODY MONTE CARLO V SOUDNÍM INŽENÝRSTVÍ

VYUŽITÍ PRAVDĚPODOBNOSTNÍ METODY MONTE CARLO V SOUDNÍM INŽENÝRSTVÍ VYUŽITÍ PRAVDĚPODOBNOSTNÍ METODY MONTE CARLO V SOUDNÍM INŽENÝRSTVÍ Michal Kořenář 1 Abstrakt Rozvoj výpočetní techniky v poslední době umožnil také rozvoj výpočetních metod, které nejsou založeny na bázi

Více

Kompresní algoritmy grafiky. Jan Janoušek F11125

Kompresní algoritmy grafiky. Jan Janoušek F11125 Kompresní algoritmy grafiky Jan Janoušek F11125 K čemu je komprese dobrá? Pokud je třeba skladovat datově náročné soubory. Např. pro záznam obrazu, hudby a hlavně videa je třeba skladovat překvapivě mnoho

Více

Počítačová grafika SZŠ A VOŠZ MERHAUTOVA 15, BRNO

Počítačová grafika SZŠ A VOŠZ MERHAUTOVA 15, BRNO Počítačová grafika SZŠ A VOŠZ MERHAUTOVA 15, BRNO 1 Základní dělení 3D grafika 2D grafika vektorová rastrová grafika 2/29 Vektorová grafika Jednotlivé objekty jsou tvořeny křivkami Využití: tvorba diagramů,

Více

Úvod do teorie informace

Úvod do teorie informace PEF MZLU v Brně 24. září 2007 Úvod Výměna informací s okolím nám umožňuje udržovat vlastní existenci. Proces zpracování informací je trvalý, nepřetržitý, ale ovlivnitelný. Zabezpečení informací je spojeno

Více

aneb jak se to tam všechno vejde?

aneb jak se to tam všechno vejde? 768 576 KOMPRIMACE aneb jak se to tam všechno vejde? Položme si hned na začátku zdánlivě nepodstatnou otázku: Kolik místa zabere dvouhodinový film na CD nebo DVD? Uvažujme následující příklad: rozlišení

Více

[1] samoopravné kódy: terminologie, princip

[1] samoopravné kódy: terminologie, princip [1] Úvod do kódování samoopravné kódy: terminologie, princip blokové lineární kódy Hammingův kód Samoopravné kódy, k čemu to je [2] Data jsou uložena (nebo posílána do linky) kodérem podle určitého pravidla

Více

Název práce: Komprimace dat prezentace

Název práce: Komprimace dat prezentace Datum: 24. listopadu 2013 Projekt: Využití ICT techniky především v uměleckém vzdělávání Registrační číslo: CZ.1.07/1.5.00/34.1013 Číslo DUM: VY_32_INOVACE_593 Škola: Akademie VOŠ, Gymn. a SOŠUP Světlá

Více

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

III/ 2 Inovace a zkvalitnění výuky prostřednictvím ICT Metodický list k didaktickému materiálu Číslo a název šablony Číslo didaktického materiálu Druh didaktického materiálu Autor Téma sady didaktických materiálů Téma didaktického materiálu Vyučovací předmět

Více

cv3.tex. Vzorec pro úplnou pravděpodobnost

cv3.tex. Vzorec pro úplnou pravděpodobnost 3 cvičení - pravděpodobnost 2102018 18cv3tex n i=1 Vzorec pro úplnou pravděpodobnost Systém náhodných jevů nazýváme úplným, jestliže pro něj platí: B i = 1 a pro i k je B i B k = 0 Jestliže je (Ω, A, P

Více

Časová a prostorová složitost algoritmů

Časová a prostorová složitost algoritmů .. Časová a prostorová složitost algoritmů Programovací techniky doc. Ing. Jiří Rybička, Dr. ústav informatiky PEF MENDELU v Brně rybicka@mendelu.cz Hodnocení algoritmů Programovací techniky Časová a prostorová

Více

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áč, Jan Kybic. Fakulta elektrotechnická ČVUT v Praze katedra kybernetiky, Centrum strojového vnímání. 1/25 KOMPRESE OBRAZŮ Václav Hlaváč, Jan Kybic Fakulta elektrotechnická ČVUT v Praze katedra kybernetiky, Centrum strojového vnímání hlavac@fel.cvut.cz http://cmp.felk.cvut.cz/ hlavac KOMPRESE OBRAZŮ, ÚVOD

Více

Středoškolská technika Algoritmus pro bezztrátovou kompresi dat

Středoškolská technika Algoritmus pro bezztrátovou kompresi dat Středoškolská technika 2016 Setkání a prezentace prací středoškolských studentů na ČVUT Algoritmus pro bezztrátovou kompresi dat Štěpán Pešout Gymnázium, Vlašim, Tylova 271 Tylova 271, Vlašim Agloritmus

Více

POČÍTAČOVÁ GRAFIKA. Počítačová grafika 1

POČÍTAČOVÁ GRAFIKA. Počítačová grafika 1 Počítačová grafika 1 POČÍTAČOVÁ GRAFIKA Gymnázium Jiřího Wolkera v Prostějově Výukové materiály z matematiky pro nižší gymnázia Autoři projektu Student na prahu 21. století - využití ICT ve vyučování matematiky

Více

Testování prvočíselnosti

Testování prvočíselnosti Dokumentace zápočtového programu z Programování II (NPRG031) Testování prvočíselnosti David Pěgřímek http://davpe.net Úvodem V různých oborech (například v kryptografii) je potřeba zjistit, zda je číslo

Více

Náplň. v.0.03 16.02.2014. - Jednoduché příklady na práci s poli v C - Vlastnosti třídění - Způsoby (algoritmy) třídění

Náplň. v.0.03 16.02.2014. - Jednoduché příklady na práci s poli v C - Vlastnosti třídění - Způsoby (algoritmy) třídění Náplň v.0.03 16.02.2014 - Jednoduché příklady na práci s poli v C - Vlastnosti třídění - Způsoby (algoritmy) třídění Spojení dvou samostatně setříděných polí void Spoj(double apole1[], int adelka1, double

Více

STRUKTURA RASTROVÝCH DAT

STRUKTURA RASTROVÝCH DAT STRUKTURA RASTROVÝCH DAT dva typy rastrové vrstvy v GIS 1) Digitální obraz TV, počítač, mobil - obrazovka obraz z bodů mapa - mřížka s barevnými plochami 2) Rastrová data data pro analýzu a) binární -

Více

Pravděpodobnost v závislosti na proměnné x je zde modelován pomocí logistického modelu. exp x. x x x. log 1

Pravděpodobnost v závislosti na proměnné x je zde modelován pomocí logistického modelu. exp x. x x x. log 1 Logistická regrese Menu: QCExpert Regrese Logistická Modul Logistická regrese umožňuje analýzu dat, kdy odezva je binární, nebo frekvenční veličina vyjádřená hodnotami 0 nebo 1, případně poměry v intervalu

Více

Generátory náhodných čísel V. Bílý Fakulta jaderná a fyzikálně inženýrská, Břehová 7, 115 19 Praha 1 bilyvit@fjfi.cvut.cz Abstrakt Během svého experimentu jsem se zajímal a porovnával různé generátory

Více

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

Faculty of Nuclear Sciences and Physical Engineering Czech Technical University in Prague 1 / 23 Faculty of Nuclear Sciences and Physical Engineering Czech Technical University in Prague 2 / 23 biologové často potřebují najít často se opakující sekvence DNA tyto sekvence bývají relativně krátké,

Více

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

Faculty of Nuclear Sciences and Physical Engineering Czech Technical University in Prague Tomáš Faculty of Nuclear Sciences and Physical Engineering Czech Technical University in Prague Zjednodušené schéma systému z základ hardware pro mainframe tvoří: operační pamět - MAIN / REAL STORAGE jeden

Více

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

Dobývání znalostí. Doc. RNDr. Iveta Mrázová, CSc. Katedra teoretické informatiky Matematicko-fyzikální fakulta Univerzity Karlovy v Praze Dobývání znalostí Doc. RNDr. Iveta Mrázová, CSc. Katedra teoretické informatiky Matematicko-fyzikální fakulta Univerzity Karlovy v Praze Dobývání znalostí Pravděpodobnost a učení Doc. RNDr. Iveta Mrázová,

Více

Základní pojmy. Multimédia. Multimédia a interaktivita

Základní pojmy. Multimédia. Multimédia a interaktivita Základní pojmy Multimédia Jedná se o sloučení pohyblivého obrazu, přinejmenším v televizní kvalitě, s vysokou kvalitou zvuku a počítačem, jako řídícím systémem. Jako multimediální systém se označuje souhrn

Více

Komprese dat (KOD) Semestrální projekt Implementace RLE, BWT a LZW

Komprese dat (KOD) Semestrální projekt Implementace RLE, BWT a LZW Komprese dat (KOD) Semestrální projekt Implementace RLE, BWT a LZW Autor: Bc. Petr Kašpar Login: KAS265 Datum: 8. května 2009 Úvod Úkolem tohoto projektu bylo implementovat nějaký komprimační algoritmus.

Více

Princip funkce počítače

Princip funkce počítače Princip funkce počítače Princip funkce počítače prvotní úlohou počítačů bylo zrychlit provádění matematických výpočtů první počítače kopírovaly obvyklý postup manuálního provádění výpočtů pokyny pro zpracování

Více

Komprese a dotazování nad XML dokumenty

Komprese a dotazování nad XML dokumenty Komprese a dotazování nad XML dokumenty Prezentace diplomové práce Lukáš Skřivánek České vysoké učení technické v Praze Fakulta elektrotechnická Katedra počítačů květen 2007 Vedoucí práce: Ing. Miroslav

Více

KRY. Projekt č. 2. Kamil Dudka xdudka00

KRY. Projekt č. 2. Kamil Dudka xdudka00 KRY Projekt č. 2 Kamil Dudka xdudka00 1 Úvod Úkolem bylo vytvořit program, který do určeného obrázku umí schovat text a tento text z obrázku později vytáhnout. Schovaný text měl být zabezpečený pomocí

Více

INFORMAČNÍ A KOMUNIKAČNÍ TECHNOLOGIE

INFORMAČNÍ A KOMUNIKAČNÍ TECHNOLOGIE Název školy: Střední odborná škola stavební Karlovy Vary Sabinovo náměstí 16, 360 09 Karlovy Vary Autor: Ing. Hana Šmídová Název materiálu: VY_32_INOVACE_01_RAR_P1 Číslo projektu: CZ 1.07/1.5.00/34.1077

Více

Mezipaměti počítače. L2 cache. L3 cache

Mezipaměti počítače. L2 cache. L3 cache Mezipaměti počítače Cache paměť - mezipaměť Hlavní paměť procesoru je typu DRAM a je pomalá. Proto se mezi pomalou hlavní paměť a procesor vkládá menší, ale rychlá vyrovnávací (cache) paměť SRAM. Rychlost

Více

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

Komprese dat Obsah. Komprese videa. Radim Farana. Podklady pro výuku. Komprese videa a zvuku. Komprese MPEG. Komprese MP3. Komprese dat Radim Farana Podklady pro výuku Obsah Komprese videa a zvuku. Komprese MPEG. Komprese MP3. Komprese videa Velký objem přenášených dat Typický televizní signál - běžná evropská norma pracuje

Více

Komprese DNA pomocí víceproudé komprese a predikce báz. Jan Jelínek, Radek Miček

Komprese DNA pomocí víceproudé komprese a predikce báz. Jan Jelínek, Radek Miček Komprese DNA pomocí víceproudé komprese a predikce báz Jan Jelínek, Radek Miček Víceproudá komprese angl. Multistream compression (MSC) statistická metoda autoři: Kochánek, Lánský, Uzel, Žemlička lze použít

Více

12 Metody snižování barevného prostoru

12 Metody snižování barevného prostoru 12 Metody snižování barevného prostoru Studijní cíl Tento blok je věnován základním metodám pro snižování barevného rozsahu pro rastrové obrázky. Postupně zde jsou vysvětleny důvody k použití těchto algoritmů

Více

Iterační výpočty. Dokumentace k projektu č. 2 do IZP. 24. listopadu 2004

Iterační výpočty. Dokumentace k projektu č. 2 do IZP. 24. listopadu 2004 Dokumentace k projektu č. 2 do IZP Iterační výpočty 24. listopadu 2004 Autor: Kamil Dudka, xdudka00@stud.fit.vutbr.cz Fakulta Informačních Technologií Vysoké Učení Technické v Brně Obsah 1. Úvod...3 2.

Více

Katedra radioelektroniky K13137, FEL ČVUT Praha. zakódování dané informace. Tento trend postihl i oblast záznamu a přenosu širokopásmových

Katedra radioelektroniky K13137, FEL ČVUT Praha. zakódování dané informace. Tento trend postihl i oblast záznamu a přenosu širokopásmových EXPERIMENTÁLNÍ ZVUKOVÝ KODÉR F. Rund, J. Nováček Katedra radioelektroniky K13137, FEL ČVUT Praha Abstrakt Všechny dnes široce rozšířené systémy pro kompresi zvuku vycházejí ze stejných psychoakustických

Více

Integrovaná střední škola, Sokolnice 496

Integrovaná střední škola, Sokolnice 496 Integrovaná střední škola, Sokolnice 496 Název projektu: Moderní škola Registrační číslo: CZ.1.07/1.5.00/34.0467 Název klíčové aktivity: III/2 - Inovace a zkvalitnění výuky prostřednictvím ICT Kód výstupu:

Více

Komprese videa Praha 2010 Účel komprese Snížení zátěže přenosového média Zmenšení objemu dat pro uložení Metody komprese obrazu Redundance Irelevance Redundantní složka část informace, po jejíž odstranění

Více

Archivační a komprimační programy

Archivační a komprimační programy Archivační a komprimační programy Komprese Nejběžnější archivační a komprimační programy Stručný popis algoritmů bezztrátové komprese I když paměťová média mají stále větší kapacitu a neustále klesá cena

Více

Číslo a název šablony III/2 Inovace a zkvalitnění výuky prostřednictvím ICT. Popis výukového materiálu Soubory, typy souborů, komprimace

Číslo a název šablony III/2 Inovace a zkvalitnění výuky prostřednictvím ICT. Popis výukového materiálu Soubory, typy souborů, komprimace Číslo projektu školy Číslo a název šablony klíčové aktivity Číslo materiálu CZ.1.07/1.5.00/34.0963 III/2 Inovace a zkvalitnění výuky prostřednictvím ICT VY_32_INOVACE_ICT_II_S1_05 Popis výukového materiálu

Více

Architektury počítačů a procesorů

Architektury počítačů a procesorů Kapitola 3 Architektury počítačů a procesorů 3.1 Von Neumannova (a harvardská) architektura Von Neumann 1. počítač se skládá z funkčních jednotek - paměť, řadič, aritmetická jednotka, vstupní a výstupní

Více

2. úkol MI-PAA. Jan Jůna (junajan) 3.11.2013

2. úkol MI-PAA. Jan Jůna (junajan) 3.11.2013 2. úkol MI-PAA Jan Jůna (junajan) 3.11.2013 Specifikaci úlohy Problém batohu je jedním z nejjednodušších NP-těžkých problémů. V literatuře najdeme množství jeho variant, které mají obecně různé nároky

Více

Inovace výuky prostřednictvím ICT v SPŠ Zlín, CZ.1.07/1.5.00/34.0333 Vzdělávání v informačních a komunikačních technologií

Inovace výuky prostřednictvím ICT v SPŠ Zlín, CZ.1.07/1.5.00/34.0333 Vzdělávání v informačních a komunikačních technologií VY_32_INOVACE_31_18 Škola Název projektu, reg. č. Vzdělávací oblast Vzdělávací obor Tematický okruh Téma Tematická oblast Název Autor Vytvořeno, pro obor, ročník Anotace Přínos/cílové kompetence Střední

Více

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

Teorie informace: řešené příklady 2014 Tomáš Kroupa Teorie informace: řešené příklady 04 Tomáš Kroupa Kolik otázek je třeba v průměru položit, abychom se dozvěděli datum narození člověka (den v roce), pokud odpovědi jsou pouze ano/ne a tázaný odpovídá pravdivě?

Více

Pohled do nitra mikroprocesoru Josef Horálek

Pohled do nitra mikroprocesoru Josef Horálek Pohled do nitra mikroprocesoru Josef Horálek Z čeho vycházíme = Vycházíme z Von Neumannovy architektury = Celý počítač se tak skládá z pěti koncepčních bloků: = Operační paměť = Programový řadič = Aritmeticko-logická

Více

Aplikace. vliv na to, jakou mají strukturu i na to, jak pracné je je vyvinout. Bylo vypozorováno, že aplikace je možné rozdělit do skupin

Aplikace. vliv na to, jakou mají strukturu i na to, jak pracné je je vyvinout. Bylo vypozorováno, že aplikace je možné rozdělit do skupin Aplikace Aplikace se liší tím, k jakému účelu jsou tvořeny. To má vliv na to, jakou mají strukturu i na to, jak pracné je je vyvinout. Bylo vypozorováno, že aplikace je možné rozdělit do skupin s podobnou

Více

3. úloha - problém batohu metodami branch & bound, dynamické programování, heuristika s testem

3. úloha - problém batohu metodami branch & bound, dynamické programování, heuristika s testem ČVUT FEL X36PAA - Problémy a algoritmy 3. úloha - problém batohu metodami branch & bound, dynamické programování, heuristika s testem Jméno: Marek Handl Datum: 1. 1. 2009 Cvičení: Pondělí 9:00 Zadání Naprogramujte

Více

Algoritmizace a programování

Algoritmizace a programování Algoritmizace a programování Vyhledávání, vkládání, odstraňování Vyhledání hodnoty v nesetříděném poli Vyhledání hodnoty v setříděném poli Odstranění hodnoty z pole Vkládání hodnoty do pole Verze pro akademický

Více

Datové struktury 2: Rozptylovací tabulky

Datové struktury 2: Rozptylovací tabulky Datové struktury 2: Rozptylovací tabulky prof. Ing. Pavel Tvrdík CSc. Katedra počítačových systémů Fakulta informačních technologií České vysoké učení technické v Praze c Pavel Tvrdík, 2010 Efektivní algoritmy

Více

Obsah. Předmluva 13 Zpětná vazba od čtenářů 14 Zdrojové kódy ke knize 15 Errata 15

Obsah. Předmluva 13 Zpětná vazba od čtenářů 14 Zdrojové kódy ke knize 15 Errata 15 Předmluva 13 Zpětná vazba od čtenářů 14 Zdrojové kódy ke knize 15 Errata 15 KAPITOLA 1 Úvod do programo vání v jazyce C++ 17 Základní pojmy 17 Proměnné a konstanty 18 Typy příkazů 18 IDE integrované vývojové

Více

Kompresní metody první generace

Kompresní metody první generace Kompresní metody první generace 998-20 Josef Pelikán CGG MFF UK Praha pepca@cgg.mff.cuni.cz http://cgg.mff.cuni.cz/~pepca/ Stillg 20 Josef Pelikán, http://cgg.mff.cuni.cz/~pepca / 32 Základní pojmy komprese

Více

Vyhodnocení 2D rychlostního pole metodou PIV programem Matlab (zpracoval Jan Kolínský, dle programu ing. Jana Novotného)

Vyhodnocení 2D rychlostního pole metodou PIV programem Matlab (zpracoval Jan Kolínský, dle programu ing. Jana Novotného) Vyhodnocení 2D rychlostního pole metodou PIV programem Matlab (zpracoval Jan Kolínský, dle programu ing. Jana Novotného) 1 Obecný popis metody Particle Image Velocimetry, nebo-li zkráceně PIV, je měřící

Více

Kontingenční tabulky v MS Excel 2010

Kontingenční tabulky v MS Excel 2010 Kontingenční tabulky v MS Excel 2010 Autor: RNDr. Milan Myšák e-mail: milan.mysak@konero.cz Obsah 1 Vytvoření KT... 3 1.1 Data pro KT... 3 1.2 Tvorba KT... 3 2 Tvorba KT z dalších zdrojů dat... 5 2.1 Data

Více

Osnova přednášky. Formáty uložení dat. Vyjádření hodnot datového typu. Vyjádření hodnot datového typu. Datové formáty. Výpočetní technika I

Osnova přednášky. Formáty uložení dat. Vyjádření hodnot datového typu. Vyjádření hodnot datového typu. Datové formáty. Výpočetní technika I Osnova přednášky 2/36 Formáty uložení dat Ing Pavel Haluza ústav informatiky PEF MENDELU v Brně haluza@mendelucz vyjádření hodnot datového typu formátová specifikace textový a binární formát otevřený a

Více

Dokumentace zápočtového programu (PRG030) KOMPRESE TEXTU

Dokumentace zápočtového programu (PRG030) KOMPRESE TEXTU Dokumentace zápočtového programu (PRG030) KOMPRESE TEXTU Petr Koupý, INF 1/X/32 Anotace Program je primárně navržen ke komprimování textových souborů. Protože však místo textových znaků pracuje přímo s

Více

Číselné soustavy v mikroprocesorové technice Mikroprocesorová technika a embedded systémy

Číselné soustavy v mikroprocesorové technice Mikroprocesorová technika a embedded systémy Ústav radioelektroniky Vysoké učení technické v Brně Číselné soustavy v mikroprocesorové technice Mikroprocesorová technika a embedded systémy Přednáška 8 doc. Ing. Tomáš Frýza, Ph.D. listopad 2012 Obsah

Více

2.17 Archivace a komprimace dat

2.17 Archivace a komprimace dat Název školy Číslo projektu Autor Název šablony Název DUMu Tematická oblast Předmět Druh učebního materiálu Anotace Vybavení, pomůcky Ověřeno ve výuce dne, třída Střední průmyslová škola strojnická Vsetín

Více

63. ročník Matematické olympiády 2013/2014

63. ročník Matematické olympiády 2013/2014 63. ročník Matematické olympiády 2013/2014 Úlohy ústředního kola kategorie P 2. soutěžní den Na řešení úloh máte 4,5 hodiny čistého času. Při soutěži je zakázáno používat jakékoliv pomůcky kromě psacích

Více

Dynamické programování

Dynamické programování Dynamické programování prof. Ing. Pavel Tvrdík CSc. Katedra počítačových systémů Fakulta informačních technologií České vysoké učení technické v Praze c Pavel Tvrdík, 2010 Efektivní algoritmy (BI-EFA)

Více

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

Informace v počítači. Výpočetní technika I. Ing. Pavel Haluza ústav informatiky PEF MENDELU v Brně haluza@mendelu.cz .. Informace v počítači Ing. Pavel Haluza ústav informatiky PEF MENDELU v Brně haluza@mendelu.cz Osnova přednášky Úvod do teorie informace základní pojmy měření množství informace ve zprávě přenos a kódování

Více

EU-OPVK: VY_32_INOVACE_FIL12 Vojtěch Filip, 2014

EU-OPVK: VY_32_INOVACE_FIL12 Vojtěch Filip, 2014 Číslo projektu CZ.1.07/1.5.00/34.0036 Tématický celek Inovace výuky ICT na BPA Název projektu Inovace a individualizace výuky Název materiálu Komprese a archivace dat Číslo materiálu VY_32_INOVACE_FIL12

Více

Informace, kódování a redundance

Informace, kódování a redundance Informace, kódování a redundance INFORMACE = fakt nebo poznatek, který snižuje neurčitost našeho poznání (entropii) DATA (jednotné číslo ÚDAJ) = kódovaná zpráva INFORAMCE = DATA + jejich INTERPRETACE (jak

Více

DIGITÁLNÍ VIDEO. pokus o poodhalení jeho neskutečné obludnosti (bez jednosměrné jízdenky do blázince)

DIGITÁLNÍ VIDEO. pokus o poodhalení jeho neskutečné obludnosti (bez jednosměrné jízdenky do blázince) DIGITÁLNÍ VIDEO pokus o poodhalení jeho neskutečné obludnosti (bez jednosměrné jízdenky do blázince) Petr Lobaz, katedra informatiky a výpočetní techniky Fakulta aplikovaných věd, Západočeská univerzita

Více

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

Osnova přednášky. Informace v počítači. Interpretace dat. Údaje, data. Úvod do teorie informace. Výpočetní technika I. Ochrana dat Osnova přednášky 2/44 Informace v počítači Ing Pavel Haluza ústav informatiky PEF MENDELU v Brně haluza@mendelucz základní pojmy měření množství informace ve zprávě přenos a kódování dat parita kontrolní

Více

LZ77 KNIHOVNA PRO KOMPRESI A DEKOMPRESI DAT POMOCÍ ALGORITMU LZ77. Příručka uživatele a programátora

LZ77 KNIHOVNA PRO KOMPRESI A DEKOMPRESI DAT POMOCÍ ALGORITMU LZ77. Příručka uživatele a programátora KNIHOVNA PRO KOMPRESI A DEKOMPRESI DAT POMOCÍ ALGORITMU Příručka uživatele a programátora SofCon spol. s r.o. Střešovická 49 162 00 Praha 6 tel/fax: +420 220 180 454 E-mail: sofcon@sofcon.cz www: http://www.sofcon.cz

Více

1. Základy teorie přenosu informací

1. Základy teorie přenosu informací 1. Základy teorie přenosu informací Úvodem citát o pojmu informace Informace je název pro obsah toho, co se vymění s vnějším světem, když se mu přizpůsobujeme a působíme na něj svým přizpůsobováním. N.

Více

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

Kódy pro odstranění redundance, pro zabezpečení proti chybám. Demonstrační cvičení 5 INP Kódy pro odstranění redundance, pro zabezpečení proti chybám Demonstrační cvičení 5 INP Princip kódování, pojmy Tady potřebujeme informaci zabezpečit, utajit apod. zpráva 000 111 000 0 1 0... kodér dekodér

Více

EXPERIMENTÁLNÍ MECHANIKA 2 Přednáška 5 - Chyby a nejistoty měření. Jan Krystek

EXPERIMENTÁLNÍ MECHANIKA 2 Přednáška 5 - Chyby a nejistoty měření. Jan Krystek EXPERIMENTÁLNÍ MECHANIKA 2 Přednáška 5 - Chyby a nejistoty měření Jan Krystek 9. května 2019 CHYBY A NEJISTOTY MĚŘENÍ Každé měření je zatíženo určitou nepřesností způsobenou nejrůznějšími negativními vlivy,

Více

Architektura Intel Atom

Architektura Intel Atom Architektura Intel Atom Štěpán Sojka 5. prosince 2008 1 Úvod Hlavní rysem Atomu je podpora platformy x86, která umožňuje spouštět a běžně používat řadu let vyvíjené aplikace, na které jsou uživatelé zvyklí

Více

Úloha - rozpoznávání číslic

Úloha - rozpoznávání číslic Úloha - rozpoznávání číslic Vojtěch Franc, Tomáš Pajdla a Tomáš Svoboda http://cmp.felk.cvut.cz 27. listopadu 26 Abstrakt Podpůrný text pro cvičení předmětu X33KUI. Vysvětluje tři způsoby rozpoznávání

Více

ČVUT FEL X36PAA - Problémy a algoritmy. 4. úloha - Experimentální hodnocení algoritmů pro řešení problému batohu

ČVUT FEL X36PAA - Problémy a algoritmy. 4. úloha - Experimentální hodnocení algoritmů pro řešení problému batohu ČVUT FEL X36PAA - Problémy a algoritmy 4. úloha - Experimentální hodnocení algoritmů pro řešení problému batohu Jméno: Marek Handl Datum: 3. 2. 29 Cvičení: Pondělí 9: Zadání Prozkoumejte citlivost metod

Více

TECHNICKÁ UNIVERZITA V LIBERCI

TECHNICKÁ UNIVERZITA V LIBERCI TECHNICKÁ UNIVERZITA V LIBERCI Fakulta mechatroniky a mezioborových inženýrských studií Komprese měřených dat v 0.1 Liberec 2007 Viktor Bubla Obsah 1 Proč komprimace? 2 2 Filosofie základních komprimačních

Více

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

Inženýrská statistika pak představuje soubor postupů a aplikací teoretických principů v oblasti inženýrské činnosti. Přednáška č. 1 Úvod do statistiky a počtu pravděpodobnosti Statistika Statistika je věda a postup jak rozvíjet lidské znalosti použitím empirických dat. Je založena na matematické statistice, která je

Více

Neuronové časové řady (ANN-TS)

Neuronové časové řady (ANN-TS) Neuronové časové řady (ANN-TS) Menu: QCExpert Prediktivní metody Neuronové časové řady Tento modul (Artificial Neural Network Time Series ANN-TS) využívá modelovacího potenciálu neuronové sítě k predikci

Více

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

Vyhledávání. doc. Mgr. Jiří Dvorský, Ph.D. Katedra informatiky Fakulta elektrotechniky a informatiky VŠB TU Ostrava. Prezentace ke dni 21. Vyhledávání doc. Mgr. Jiří Dvorský, Ph.D. Katedra informatiky Fakulta elektrotechniky a informatiky VŠB TU Ostrava Prezentace ke dni 21. září 2018 Jiří Dvorský (VŠB TUO) Vyhledávání 242 / 433 Osnova přednášky

Více

Kvantové algoritmy a bezpečnost. Václav Potoček

Kvantové algoritmy a bezpečnost. Václav Potoček Kvantové algoritmy a bezpečnost Václav Potoček Osnova Úvod: Kvantové zpracování informace Shorův algoritmus Kvantová distribuce klíče Post-kvantové zabezpečení Úvod Kvantové zpracování informace Kvantový

Více

12. Globální metody MI-PAA

12. Globální metody MI-PAA Jan Schmidt 2011 Katedra číslicového návrhu Fakulta informačních technologií České vysoké učení technické v Praze Zimní semestr 2011/12 MI-PAA EVROPSKÝ SOCIÁLNÍ FOND PRAHA & EU: INVESTUJENE DO VAŠÍ BUDOUCNOSTI

Více

ČÍSELNÉ SOUSTAVY PŘEVODY

ČÍSELNÉ SOUSTAVY PŘEVODY ČÍSELNÉ SOUSTAVY V každodenním životě je soustava desítková (decimální, dekadická) o základu Z=10. Tato soustava používá číslice 0, 1, 2, 3, 4, 5, 6, 7, 8 a 9, není však vhodná pro počítače nebo číslicové

Více

UNIVERZITA PARDUBICE. 4.4 Aproximace křivek a vyhlazování křivek

UNIVERZITA PARDUBICE. 4.4 Aproximace křivek a vyhlazování křivek UNIVERZITA PARDUBICE Licenční Studium Archimedes Statistické zpracování dat a informatika 4.4 Aproximace křivek a vyhlazování křivek Mgr. Jana Kubátová Endokrinologický ústav V Praze, leden 2012 Obsah

Více

Konverze grafických rastrových formátů

Konverze grafických rastrových formátů ČESKÉ VYSOKÉ UČENÍ TECHNICKÉ V PRAZE FAKULTA STAVEBNÍ OBOR GEODÉZIE A KARTOGRAFIE KATEDRA MAPOVÁNÍ A KARTOGRAFIE Konverze grafických rastrových formátů semestrální práce Jakub Hořejší Ondřej Šalanda V

Více

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

Data v počítači. Informační data. Logické hodnoty. Znakové hodnoty Data v počítači Informační data (elementární datové typy) Logické hodnoty Znaky Čísla v pevné řádové čárce (celá čísla) v pohyblivé (plovoucí) řád. čárce (reálná čísla) Povelová data (instrukce programu)

Více

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

Technická kybernetika. Obsah. Principy zobrazení, sběru a uchování dat. Měřicí řetězec. Principy zobrazení, sběru a uchování dat Akademický rok 2016/2017 Připravil: Radim Farana Technická kybernetika Principy zobrazení, sběru a uchování dat 2 Obsah Principy zobrazení, sběru a uchování dat strana 3 Snímač Měřicí řetězec Měřicí obvod

Více

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

Vyhledávání v textu. doc. Mgr. Jiří Dvorský, Ph.D. Katedra informatiky Fakulta elektrotechniky a informatiky VŠB TU Ostrava Vyhledávání v textu doc. Mgr. Jiří Dvorský, Ph.D. Katedra informatiky Fakulta elektrotechniky a informatiky VŠB TU Ostrava Prezentace ke dni 9. března 209 Jiří Dvorský (VŠB TUO) Vyhledávání v textu 402

Více

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áč. Fakulta elektrotechnická ČVUT v Praze katedra kybernetiky, Centrum strojového vnímání. hlavac@fel.cvut. 1/24 KOMPRESE OBRAZŮ Václav Hlaváč Fakulta elektrotechnická ČVUT v Praze katedra kybernetiky, Centrum strojového vnímání hlavac@fel.cvut.cz http://cmp.felk.cvut.cz/ hlavac KOMPRESE OBRAZŮ, ÚVOD 2/24 Cíl:

Více

GIS Geografické informační systémy

GIS Geografické informační systémy GIS Geografické informační systémy Obsah přednášky Prostorové vektorové modely Špagetový model Topologický model Převody geometrií Vektorový model Reprezentuje reálný svět po jednotlivých složkách popisu

Více

KOMBINAČNÍ LOGICKÉ OBVODY

KOMBINAČNÍ LOGICKÉ OBVODY Projekt: Inovace oboru Mechatronik pro Zlínský kraj Registrační číslo: CZ.1.07/1.1.08/03.0009 KOMBINAČNÍ LOGICKÉ OBVODY U těchto obvodů je vstup určen jen výhradně kombinací vstupních veličin. Hodnoty

Více

GIS Geografické informační systémy

GIS Geografické informační systémy GIS Geografické informační systémy Obsah přednášky Prostorové vektorové modely Špagetový model Topologický model Převody geometrií Vektorový model Reprezentuje reálný svět po jednotlivých složkách popisu

Více

24.11.2009 Václav Jirchář, ZTGB

24.11.2009 Václav Jirchář, ZTGB 24.11.2009 Václav Jirchář, ZTGB Síťová analýza 50.let V souvislosti s potřebou urychlit vývoj a výrobu raket POLARIS v USA při závodech ve zbrojení za studené války se SSSR V roce 1958 se díky aplikaci

Více

Kódováni dat. Kódy používané pro strojové operace

Kódováni dat. Kódy používané pro strojové operace Kódováni dat Před zpracováním dat například v počítači je třeba znaky převést do tvaru, kterému počítač rozumí, tj. přiřadit jim určité kombinace bitů. Tomuto převodu se říká kódování. Kód je předpis pro

Více

Tel.: (+420)

Tel.: (+420) Internet a zdravotnická informatika ZS 2007/2008 Zoltán Szabó Tel.: (+420) 312 608 207 E-mail: szabo@fbmi.cvut.cz č.dv.: : 504, 5.p Dnešní přednáška Komunikace Standard, doporučení, norma Český normalizační

Více