DIPLOMOVÁ PRÁCE. Jan Ondruš Bezztrátová komprese JPEG grafiky

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

Download "DIPLOMOVÁ PRÁCE. Jan Ondruš Bezztrátová komprese JPEG grafiky"

Transkript

1 Univerzita Karlova v Praze Matematicko-fyzikální fakulta DIPLOMOVÁ PRÁCE Jan Ondruš Bezztrátová komprese JPEG grafiky Katedra softwarového inženýrství Vedoucí diplomové práce: Mgr. Jan Lánský Studijní program: Informatika, obor Teoretická informatika 2009

2 Prohlašuji, že jsem svou diplomovou práci napsal 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 Jak funguje JPEG komprese Historie, všeobecný popis Průběh komprese a dekomprese DCT a inverzní DCT transformace Kvantizace a dekvantizace VLI a Huffmanovo kódování v JPEG JFIF formát souborů Možnosti dodatečné bezztrátové komprese Aritmetické kódování Kódování po bitech (bit-plane coding) Další metody a možnosti Predikce DCT koeficientů Transformace a přeuspořádání dat Možnosti inter a intra predikce Vylepšená predikce - základní verze Vylepšená predikce - rychlá verze Renormalizace a delta komprese Experimentální výsledky Původní PAQ8 JPEG model Context mixing (CM) algoritmus Implementace v PAQ Modelování a predikce v JPEG souboru Vylepšený model Základní verze Možnosti zlepšení a pokročilá verze Implementace Experimentální výsledky Shrnutí a závěr 38 3

4 Název práce: Bezztrátová komprese JPEG grafiky Autor: Jan Ondruš Katedra (ústav): Katedra softwarového inženýrství Vedoucí diplomové práce: Mgr. Jan Lánský vedoucího: Abstrakt: JPEG je široce rozšířená metoda komprese grafiky určená především pro ukládání fotografií. Skládá se ze ztrátové a bezztrátové části. Poslední fází je statické Huffmanovo kódování, které lze nahradit pokročilejšími adaptivními technikami ve spojení s aritmetickým kódováním. V této práci je představena metoda použitá pro kompresi souborů JPEG (soubory formátu JFIF) uložených v sekvenčním (baseline) režimu. Obecným postupem je v tomto případě částečná dekomprese, při které invertujeme pouze poslední bezztrátové fáze kompresního algoritmu. Tím převedeme komprimovaný soubor dat na pole kvantovaných DCT koeficientů. Zde je navržen algoritmus pro predikci těchto DCT koeficientů. Ten funguje tak, že vrací jako výsledek pro každý z 64 koeficientů vhodnou lineární kombinaci už zakódovaných koeficientů z aktuálního bloku a okolních bloků. Také se seznámíme s tím, jak je možné využít této predikce k vylepšení výkonu komprese JPEG souboru pomocí Context Mixing algoritmu v programu PAQ8 od Matta Mahoneyho. Dále je uvedena konkrétní implementace a otestován její výkon ve srovnání s existujícími metodami nebo algoritmy na kompresi JPEG grafiky. Klíčová slova: komprese dat, komprese obrazu, JPEG komprese Title: Lossless compression of JPEG images Author: Jan Ondruš Department: Department of Software Engineering Supervisor: Mgr. Jan Lánský Supervisor s address: Jan.Lansky@mff.cuni.cz Abstract: JPEG is a commonly used method of compression for photographic images. It consists of lossy and lossless part. Static Huffman coding is a last step. We can replace this step using advanced techniques and arithmetic coding. In this work we introduce method used for additional compression JPEG files (files in JFIF format) saved in baseline mode. Partial decompression is a general way we can use in this case. We invert only last lossless steps of JPEG compression algorithm. Compressed file is transformed into array of quantized DCT coefficients. We designed algorithm for prediction of the DCT coefficients. It returns particular linear combination of previous coded coefficients in current and neighbouring blocks for each from 64 coefficients in block matrix. We show how this prediction can improve efficiency of compression of JPEG files using Context Mixing algorithm implemented in PAQ8 by Matt Mahoney. Specific implementation is described and its compression ratio is compared with existing methods and applications for further lossless JPEG images compression. Keywords: data compression, image compression, JPEG further lossless compression 4

5 Kapitola 1 Jak funguje JPEG komprese 1.1 Historie, všeobecný popis Existuje mnoho standardů a formátů pro ukládání digitální grafiky. Tím nejrozšířenějším je bezesporu JFIF formát souborů (soubory s koncovkou jpg), který používá JPEG komprese. Tento formát byl navržen skupinou Joint Photographic Experts Group v roce Schválen jako standard ISO byl v roce Tento formát se používá pro ukládání přirozených obrázků. To jsou obrázky, které zobrazují reálný svět a vznikají většinou jako fotografie z digitálního fotoaparátu nebo jiným způsobem digitalizace obrazu. Za svůj úspěch vděčí JPEG komprese především dvěma vlastnostem. Za prvé umožňuje dosáhnout velkých kompresních poměrů za cenu minimální ztráty vizuální kvality. Na druhé straně má nízkou výpočtovou náročnost, která umožnila jeho rozšíření v minulosti. Později se objevily nové formáty jako je JPEG2000 a další založené na podobných principech snažící se zlepšit poměr kvality a míry komprese. Ten se však nelišil a neliší dostatečně na to, aby se vyplatilo měnit formát uložení obrázků. Navíc s sebou přináší dodatečnou výpočtovou složitost algoritmu komprese a dekomprese. Proto se nikdy významně nerozšířili a ukládání fotografií pomocí JPEG komprese zůstává de facto standardem. Ve všech digitálních fotoaparátech se tato komprese používá jako základní formát. Parametry, které si při ukládání obrázků pomocí JPEG komprese lze zvolit jsou mód komprese, kvalita a způsob uložení barev. Nejpoužívanějším módem komprese je sekvenční neboli základní. Dalším je progresivní mód. Při tomto způsobu se obrázek ukládá tak, že je ho možno rekonstruovat celý už z počátečního úseku souboru, ale se sníženou kvalitou. S prodlužováním už načteného úseku se kvalita postupně zvyšuje. Tento mód má pomoci uživatelům s pomalým připojením k internetu, aby viděli obrázek brzy, zatímco těm s rychlým připojením ho umožní stáhnout ve vysoké kvalitě. Další možností JPEG standardu je bezztrátová komprese (JPEG Lossless, JPEG-LS). V režimu bezztrátové kom- 5

6 prese se obrázek ukládá bez jakékoliv ztráty kvality za cenu většího objemu dat. Tento mód není příliš používaný, protože v tomto případě se většinou preferuje uložení obrázku bez jakékoli komprese nebo v jiném formátu. Nastavení kvality a barev se projeví v kvalitě a velikosti souboru. Zde si uživatel zvolí, jak velkou ztrátu kvality si přeje. Při volbě příliš nízké kvality vznikají na obrázku chyby, které jsou typické pro JPEG kompresi. Tyto chyby se nazývají artefakty. Na obrázku se objeví malé čtverečky. To je dáno způsobem, jak komprese funguje - obrázek je rozdělen na bloky velikosti 8x8 obrazových bodů, které jsou dále zpracovávány nezávisle. Při příliš nízké kvalitě je pak snadné tyto bloky rozlišit. Protože lidské oko je méně citlivé na barevné odstíny než na rozdíly v jasu, lze si v nastavení ukládání barev také zvolit, že barvy budou ukládány v nižší kvalitě než jas obrázku. 1.2 Průběh komprese a dekomprese Komprese probíhá tak, jak je naznačeno na obrázku 1.1, ve čtyřech fázích. Prvním krokem je převod z barevného prostoru RGB do YCbCr. Získané tři složky interpretujeme jako tři nezávislé černobílé obrázky, které jsou dále zpracovávány z velké části odděleně. Tento krok umožňuje odstranit část redundance obsažené v obrázku. Konkrétně je snížena korelace mezi různými složkami. V dalším zpracování má význam odlišovat jasovou složku (Y) a barevné složky (Cb a Cr). Jasová složka má totiž obvykle větší rozptyl a nese jiný druh informace, který je pro lidské oko důležitější. Obrázek 1.1: 4 základní fáze průběhu komprese JPEG Druhým krokem je diskrétní kosinová transformace (dále jen DCT). Před jejím provedením je obrázek rozdělen na bloky velikosti 8x8 pixelů. Pro každý blok v každé z barevných složek je provedena transformace, která převede 64 původních hodnot, které označují hodnoty jasu resp. barevné odchylky, na jiných 64 hodnot - DCT koeficientů. Použije se následující vzorec: y u,v = α(u) α(v) α(k) = 7 7 m=0 n=0 1 8 pro k = pro k > 0 [ ( π x m,n cos m + 1 ) ] [ ( π u cos n + 1 ) ] v Báze této 2D transformace je naznačena na obrázku 1.2. Platí, že koeficienty 6

7 "vlevo nahoře" obsahují informaci o nižších frekvencích v obrázku a jsou důležitější pro vizuální vjem. Naopak koeficienty "vpravo dole" nejsou tak důležité a není je nutno ukládat tak přesně. Právě přesnost uložení koeficientů je určující pro kvalitu uložení obrázku. Obrázek 1.2: báze 2D DCT 8x8 Ve třetím kroku se provádí kvantizace těchto koeficientů a to následujícím způsobem. Původní hodnota je vydělena určitou konstantou. Tato konstanta závisí na poloze koeficientu v bloku a pro nižší koeficienty je nižší (v obvyklém případě). Dále se liší v závislosti na barevné složce obrázku (menší ztráta pro jasovou složku než pro barevné složky). Hodnoty těchto konstant jsou uloženy v kvantizační tabulce v ukládaném souboru a mohou se tedy pro každý obrázek lišit. Nakonec je třeba zakódovat všechny tyto kvantované koeficienty do výsledného souboru. K tomu se v JPEG kompresi používá RLE, Variable Length Integer (VLI) kódování a Huffmanovo kódování. RLE umožňuje efektivněji uložit posloupnosti nulových koeficientů. Pomocí VLI jsou převedeny hodnoty na dvojice (Kat, Bity). Kat určuje kategorii danou jako číslo rozsahu, ve kterém se číslo nacházelo. Bity pak obsahují dodatečnou informaci o pozici, kde se v daném rozsahu číslo nachází. V tabulce 1.2 je popsána tato transformace přesně. Pomocí statického Huffmanova kódování jsou pak kódována čísla Kat. Druhá složka (Bity) je kódována přímo, je přímo zapsána do výstupního souboru hned za Huffmanův kód symbolu odpovídajícímu kategorii Kat. Počet bitů, který se použije na její zakódování, je určen jednoznačně hodnotou Kat. Použije se vždy jedna Huffmanova tabulka pro jednu z barevných složek. Dekomprese probíhá inverzně ke kompresi. Všechny fáze kromě kvantizace je možné invertovat bezztrátově. V prvním kroku se dekóduje Huffmanovo kó- 7

8 dování a načte se příslušný počet bitů. Dvojice se převede na hodnotu kvantovaného koeficientu. Tu je třeba vynásobit odpovídající konstantou, abychom dostali přibližnou hodnotu původního koeficientu. Protože při kvantizaci došlo ke ztrátě informace, je při dekvantizaci získána jiná hodnota než ta původní. Dále se na celý blok koeficientů 8x8 provede Inverzní diskrétní kosinová transformace (IDCT), která je přesně inverzí k DCT. Tím dostaneme blok hodnot pixelů v jedné z barevných složek. Poskládáním barevných složek a převodem do RGB dostaneme zpět blok pixelů velikosti 8x8 resp. celý původní obrázek. 1.3 DCT a inverzní DCT transformace Báze kosinové transformace je složena z kosinových funkcí. Pro jednorozměrný případ je to naznačeno na obrázku 1.3. Nechť je délka intervalu, na kterém jsou hodnoty definovány, n. První funkce je konstanta a hodnota prvního koeficientu tedy určuje posun funkčních hodnot. Další funkce jsou kosinové funkce s periodami 2n, n, n/2, n/4, atd. V diskrétním případě potom pracujeme s určitým počtem vzorků. Přitom celkový počet potřebných koeficientů pro opětovnou bezztrátovou rekonstrukci originálu je roven počtu vzorků z původních dat. Dvourozměrný případ je možné chápat jako provedení transformace postupně nejprve v jednom z rozměrů a potom v tom druhém. Výsledek nezávisí na pořadí, které zvolíme. Báze této transformace analogicky odpovídá jednorozměrnému případu, jak je naznačeno na obrázku 1.2. V případě DCT transformace bloku velikosti 8x8 tedy dostáváme 64 koeficientů, které si můžeme označit souřadnicemi (u, v) pro u, v = Přitom koeficient (0, 0) je označován jako stejnosměrná složka, protože určuje průměrnou hodnotu v původním bloku. Ostatní koeficienty chápeme jako číslo určující kolik informace s danou frekvencí se v obrázku v daném směru (horizontálním nebo vertikálním) vyskytuje. Z faktu, že běžné obrázky se spojitým rozložením hodnot obsahují málo vysokofrekvenční informace plyne, že vyšší koeficienty (tj. pro vyšší u, v) budou nabývat menších hodnot. V případě JPEG komprese se před provedením DCT převádí hodnoty pixelů z intervalu [0, 2 p 1] na interval [ 2 p 1, 2 p 1 1], kde p = 8. Bloky velikosti 8x8 se pak transformují pomocí 2D diskrétní kosinové transformace. Inverzní diskrétní kosinová transformace provádí inverzi. Matici koeficientů 8x8 převádí zpět na původní hodnoty pixelů (v dané barevné složce). V případě, že máme k dispozici přesně matici vypočtených koeficientů, dokáže spočítat původní hodnoty přesně. Tato fáze komprese je tedy bezztrátová. My ovšem v dalším postupu komprese neukládáme hodnoty přesně, ale pouze přibližně. Při dekompresi tedy rekonstruujeme jiné hodnoty. Ty přesně odpovídají matici koeficientů, kterou máme k dispozici. 8

9 Obrázek 1.3: kosinové funkce báze jednorozměrné DCT DCT : IDCT : y k = α(k) N 1 n=0 x n cos [ ( ) ] π N n k 1 α(k) = 8 pro k = pro k > 0 y k = 1 2 { 2 2 x 0 + N 1 n=1 x n cos [ π N ( ) ] } k n 1.4 Kvantizace a dekvantizace Kvantování koeficientů se provádí prostým vydělením příslušných koeficientů určitou hodnotou. Tato hodnota by měla vystihovat to, jak přesně chceme informaci uložit. Proto se tyto hodnoty liší pro různě koeficienty a pro různé barevné složky obrázku. Máme několik kvantovacích tabulek s 64 hodnotami. Nejčastěji se používají dvě - jedna tabulka pro barevné složky a jedna pro jasovou složku obrázku. Hodnoty v kvantovacích tabulkách určují, v jaké kvalitě bude obrázek uložen. Čím větší číslo je v tabulce uvedeno, tím méně přesně bude ten daný koeficient zaznamenán. Vstupem procesu kvantizace jsou tedy bloky koeficientů. Jednotlivé položky se vydělí odpovídajícími hodnotami v kvantizační tabulce. Jako výstup dostáváme blok kvantovaných koeficientů. Získaný blok je možno v dalším postupu uložit pomocí méně bitů a dosáhneme tím ve výsledku určitého kompresního poměru (v závislosti na zvolené kvalitě). Protože hodnoty koeficientů s vyššími indexy (tj. odpovídajících vyšším frekvencím) jsou obvykle malé, po vydělení dostáváme jako výsledek velmi často nulu. To způsobuje, že blok poté obsahuje menší hodnoty a na vyšších pozicích samé nuly a je možné ho efektivněji zakódovat. 9

10 Tabulka 1.1: příklad kvantizační tabulky jasové složky běžného obrázku JPEG zíkaného z digitálního fotoaparátu Inverzním postupem ke kvantizaci je dekvantizace. Ta se provádí vynásobením hodnotami z kvantizační tabulky. Zde dochází ke ztrátě informace. Tímto postupem totiž nedostáváme původní koeficienty. S klesající nastavenou kvalitou a tedy s rostoucími hodnotami v kvantizační tabulce se logicky snižuje přesnost uložení koeficientů a tím také po inverzní DCT také přesnost rekonstrukce původního obrázku. 1.5 VLI a Huffmanovo kódování v JPEG Posledním krokem JPEG komprese je bezztrátové zakódování kvantovaných koeficientů DCT báze všech jednotlivých bloků. Hodnoty v rámci jedné matice 8x8 jsou nejprve uspořádány do speciálního pořadí nazývaného zig-zag posloupnost. V této posloupnosti se na prvních pozicích objevují políčka s největším rozptylem a nakonec ty s nejmenším (viz obrázek 1.4). To znamená, že na začátku jsou největší absolutní hodnoty a na konci posloupnost nul. Obrázek 1.4: zig-zag posloupnost 10

11 První číslo v této posloupnosti je koeficient na pozici [0, 0]. Tento má jiné statistické vlastnosti než ostatní - střední hodnotu nemá rovnou nule. Proto se pro tento koeficient používá navíc delta kódování. Před kódováním se od něj odečte hodnota tohoto koeficientu z předchozího bloku v rámci jeho barevné složky (jde o blok vlevo, protože obrázek se prochází po řádcích). Ke kódování nulových hodnot je použito RLE kódování. Posloupnost několika nul se nahradí jejich počtem - získáme číslo R. Pro závěrečnou posloupnost nul, která zakončuje zig-zag posloupnost, se použije speciální kód EOB (end-of-block). Ke kódování nenulových hodnot se použije následující postup. Pro hodnoty v určitém rozsahu se určí jeho číslo (S). Rozsahy jsou ve tvaru prstencových okolí nuly, která se pro S o jednotku větší zvětší právě dvakrát (viz tabulka 1.2). Kategorie Obsažené hodnoty ; 1 2-3; -2; 2; 3 3 [-7, -4]; [4, 7] 4 [-15, -8]; [8, 15] 5 [-31, -16]; [16, 31] 6 [-63, -32]; [32, 63] 7 [-127, -64]; [64, 127] 8 [-255, -128]; [128, 255] 9 [-511, -256]; [256, 511] 10 [-1023, -512]; [512, 1023] 11 [-2047, -1024]; [1024, 2047] Tabulka 1.2: VLI transformace Při průchodu zig-zag posloupností se vytvářejí dvojice nazývané RS-kódy, což jsou dvojice (R, S). R udává počet nulových hodnot od předchozí nenulové (včetně případu, že je počet nulový). S označuje rozsah, ve kterém tato nenulová hodnota leží. Tyto RS-kódy nebo kód označující konec bloku (EOB) jsou kódovány pomocí statického Huffmanova kódování. K Huffmanovu kódování se používají Huffmanovy tabulky, které se mohou lišit pro každou z barevnou složek obrázku. Za každým RS-kódem následují bity označující pozici upřesnění hodnoty v rámci rozsahu určené jeho složkou S. Tyto bity už nejsou dále entropicky kódovány. 1.6 JFIF formát souborů Celý proces ukládání prochází celý obrázek rozložený na jednotlivé bloky 8x8 pixelů. Pořadí v jakém jsou analyzovány, komprimovány a nakonec uloženy je následující. Prochází se nejprve po řádcích a poté po sloupcích ve směru zleva doprava a shora dolů. V rámci jedné pozice bloku se dále prochází po barevných složkách obrázku. Tím dostáváme určené pořadí bloků. Po DCT-transformaci 11

12 a kvantování hodnot pixelů pak koeficienty v rámci bloku procházíme v zig-zag pořadí. Nakonec je prováděno Huffmanovo kódování (viz předchozí oddíl). Tímto procesem dostáváme proud bitů, ke kterému je ještě přiložena hlavička obsahující informace o rozměrech obrázku, metodě komprese, kvantovací tabulky, Huffmanovy tabulky nebo další případné informace. Navíc mohou být do obrázku vloženy speciální kódy - to jsou restart-kódy (RST) a end-of-image (EOI) kód. EOI označuje konec obrázku. RST kódy určují, že od určitého místa se obrázek kóduje nezávisle na předchozích datech (umožňuje restartovat dekompresi). Další kódy jsou obsaženy v hlavičce souboru (například označení kvantovací tabulky, Huffmanovy tabulky, aplikačních dat, intervalu RST kódů nebo začátku obrázku). Tyto kódy jsou dvoubytové. První byte má vždy hodnotu 255 (samé jedničkové bity). Druhý byte určuje, o který kód jde. Všechny byte s hodnotou 255, které neoznačují speciální kód, je proto třeba odlišit. Za tyto hodnoty je vždy vložen ještě jeden byte s hodnotou 255. V předchozím popisu JPEG komprese byla popsán základní (sekvenční) mód komprese, který je zdaleka nejpoužívanější. Tímto se budeme i v dalších kapitolách nadále zabývat. Jiným také ještě používaným je progresivní mód. Při tomto způsobu se kódují nejprve koeficienty nejmenších frekvencí pro celý obrázek. Dále se prochází obrázek vždy znovu a kódují se koeficienty vždy s vyššími frekvencemi. 12

13 Kapitola 2 Možnosti dodatečné bezztrátové komprese 2.1 Aritmetické kódování Jednou z možností, jak provést dodatečnou kompresi obrázku uloženého v JFIF souboru, je nahradit Huffmanovo kódování v poslední fázi komprese aritmetickým kódováním. Huffmanovo kódování přiřazuje jednotlivým symbolům různě dlouhé řetězce bitů. Protože počet bitů je nutně celé kladné číslo, je nemožné kódovat symboly pomocí neceločíselného počtu bitů. Podle teorie informace je optimální počet bitů pro kódování symbolu, který se v datech vyskytuje s pravděpodobností p, roven log 2 (p) bitů. Tohoto počtu umožňuje dosáhnout aritmetické kódování. To oproti Huffmanovu kódování odstraňuje právě neefektivitu vzniklou nemožností přiřadit symbolům neceločíselné délky kódů. Máme úlohu komprese dat, které už byly zkomprimovány pomocí JPEG algoritmu. Pro využití možnosti aplikovat lepší kódování je třeba invertovat poslední fázi (Huffmanovo kódování) v posloupnosti operací komprese. To znamená totéž jako provést první krok při dekompresi. Na získaná data je pak možno aplikovat aritmetické kódování, abychom získali výsledná data. My se snažíme o to, aby výsledkem byl soubor co nejmenší velikosti. Tento postup je bezztrátový. Opačným postupem dostaneme zpět původní obrázek v JFIF formátu. Rekonstrukce dosáhneme dekódováním aritmetického kódování a opětovným provedením Huffmanova kódování. Přitom je samozřejmě třeba zachovat uloženou hlavičku původního souboru. Tam jsou obsaženy potřebné informace pro rekonstrukci Huffmanova kódování a také proudu dat včetně speciálních kódů. Přečtením Huffmanových tabulek získáme znalost o použitých kódech a také tam najdeme informaci o intervalech RST kódů, pokud byly použity. Schéma celého postupu je naznačeno na obrázku 2.1. Tento jednoduchý postup naznačuje, jaký je základní přístup v oblasti dodatečné komprese JPEGu. Výsledná komprese se v tomto případě pohybuje řádově pouze na několika jednotkách procent. V dalších kapitolách budou stručně před- 13

14 Obrázek 2.1: schéma nahrazení Huffmanova kódování aritmetickým kódováním staveny jiné existující metody dosahující o něco lepších výsledků. Nakonec se seznámíme s novým přístupem využívající Context Mixing (CM) algoritmus, který dokáže kombinovat postupy z různých metod. Ve výsledku se pomocí něj dá dosáhnout v průměru komprese až procent. 2.2 Kódování po bitech (bit-plane coding) Další z možností je využít pokročilejší přístup nazývaný bit-plane coding - kódování bitových ploch. Základem je v první řadě rozdělení dat (tj. v našem případě kvantovaných koeficientů) po jednotlivých bitech. Dochází tak de facto ke vzniku několika jednobitových obrazů - bitových ploch. Pokud například všechny hodnoty mají v určitých vyšších bitech samé nuly - dostáváme v odpovídající bitové ploše jednobarevný obraz složený ze samých nul, který je možné dále snadno zkomprimovat. Jak navrhli N. Ponomarenko a další v [6] je k využití v případě kódování kvantovaných koeficientů efektivní použít vhodnou klasifikaci bitů na základě jejich okolí. Úlohu, kterou řešíme, je možné přeformulovat takto. Máme pole kvantovaných koeficientů, které je třeba bezztrátově uložit. Toto pole je 5-ti rozměrné. Jeho rozměry jsou číslo barevné složky nabývající nejčastěji hodnot z intervalu [0, 2], dvě souřadnice koeficientu v rámci DCT bloku z intervalu [0, 7] a dvě souřadnice DCT bloku v obrázku z intervalu [0, šířka / 8] resp. [0, výška / 8]. Pro pohled po jednotlivých bitech přidáme ještě jeden rozměr (číslo daného bitu v rámci hodnoty) a na celá data se budeme dívat jako na šestirozměrné pole 14

15 bitů. Protože koeficienty jsou 12-ti bitová čísla, nabývá tento rozměr hodnot 0 až 11. Obrázek 2.2: rozhodovací strom a rozdělení do tříd Nyní procházíme po jednotlivých bitech v nějakém daném pořadí a klasifikujeme pevným způsobem podle jejich okolí do několika skupin. Autoři v [6] dospěli k podmínkám, které dobře charakterizují jednotlivé bity. Nechť [c, u, v, x, y, b] je vektor určující polohu bitu v bitovém poli pro barevnou složku c, pozici v bloku (u, v), pozici bloku v obrázku (x, y) a pozici bitu b. X[c, u, v, x, y, b] označme hodnotu bitu na dané pozici (kódovanou jako 0 nebo 1). X pro pozice, které jsme ještě neprošli a neuložili, položíme rovnou 0 včetně aktuální pozice [c, u, v, x, y, b]: 15

16 C1 C2 C6 b : ( b < b ) & ( X [ c, u, v, x, y, b] = 1 ) b : ( b < b 1 ) & ( X [ c, u, v, x, y, b] = 1 ) b, i, j : ( b < b ) & ( 1 i, j 1) & ( X [ c, u + i, v + j, x, y, b] = 1 ) C7 i, j : ( 1 i, j 1) & (X [c, u + i, v + j, x, y, b] = 1) C8 b, i, j : ( b ) ( [ ) b & ( 2 i, j 2) & X c, u + i, v + j, x, y, b] = 1 C9 b, i, j : ( b ) ( [ ) b & ( 3 i, j 3) & X c, u + i, v + j, x, y, b] = 1 C10 b, i, j : ( b ) ( [ ) b & ( 1 i, j 1) & X c, u, v, x + i, y + j, b] = 1 C11 b, i, j : ( b ) ( [ ) < b 1 & ( 1 i, j 1) & X c, u + i, v + j, x, y, b] = 1 C13!i!j : ( 1 i, j 1) & (X [c, u + i, v + j, x, y, b] = 1) C14 (b = 10) Pořadí kódování se provádí v tomto pořadí rozměrů b c y x v u. Začíná se nejvýznamnějšími bity, poté se jde po řádcích v obrázku a v rámci bloku se prochází také po řádcích. Rozdělení do bitů do tříd pomocí těchto podmínek je provedeno pomocí rozhodovacího stromu (viz obrázek 2.2). Podle určené třídy se provádí výběr modelu, kterým se dané bity budou kódovat. Dalšími kritérii jsou také informace o tom, zda se jedná o stejnosměrný koeficient nebo zda je koeficient na prvním řádku v bloku. Při změně pozice bitu b, tedy při přechodu z jedné bitové plochy do nižší, se všechny modely reinicializují. V původní verzi se nekódují bity z modelu PM15. Tyto bity mají ve svém okolí samé nuly. To není pro použití pro bezztrátovou kompresi JPEGu možné. Znaménka se nekódují a uloží se zvlášť. Tuto metodu autoři totiž použili pro návrh alternativního algoritmu ztrátové komprese obrázků. Při použití pro kompresi JPEG obrázků je třeba tuto metodu modifikovat. Podařilo se mi dosáhnout úspory místa v průměru 10 až 20 procent. 2.3 Další metody a možnosti Z jiným přístupem přišel M. Stirner v [9]. Autoři zde popisují kompresní algoritmus použitý v jejich programu PackJPG pro kompresi JPG grafiky. Základním přístupem autorů je oddělit získané koeficienty podle jejich významu (tj. pozice v DCT bloku) a dále je kódovat vzájemně nezávisle. V prvním kroku jejich algoritmu se ke každému DCT bloku určí EOB pozice. To je pozice posledního nenulového koeficientu v zig-zag pořadí. Podle hodnoty této pozice se bloky rozdělí do několika kategorií. Optimální počet kategorií se liší pro různé konkrétní vstupní obrázky. Dále se obrázek logicky rozdělí na 64 podobrázků. Ty odpovídají složkám v doméně DCT transformace. Na každý z nich je nadále aplikována specializovaná metoda kódování. Protože stejnosměrné koeficienty (0, 0) tvoří zmenšenou verzi původního originálu, hodí se použít v tomto případě techniky pro kompresi černobílých obrázků. Konkrétně jde o Paeth predictor, který je přesně popsán například ve specifikaci PNG formátu (viz [11]). Oproti lineární predikci se dosahuje o něco lepších výsledků. 16

17 Pokračuje se kódováním koeficientů v rámci získaných 64 složek. Pořadí, ve kterém se procházejí, je různé v závislosti na čísle koeficientu. Pro prvky pod diagonálou se prochází horizontálně po řádcích, pro prvky nad diagonálou se prochází vertikálně po sloupcích a pro prvky na diagonále se prochází speciálním způsobem podobným zig-zag pořadí (ale dvě po sobě ukládané hodnoty vždy leží vedle sebe na řádku nebo ve sloupci). Klíčem k efektivitě tohoto způsobu je efektivní zakódování všech těchto informací. Je třeba uložit hlavičku JPEG, EOB list (seznam kategorií pro jednotlivé bloky), znaménka koeficientů a absolutní hodnoty koeficientů. Hlavička JPEG se komprimuje běžným 1-order kodérem. Na EOB list se používá dvoudimenzionální 1-order kódování. To znamená, že kontextem jsou hodnoty v EOB listu o jedno vlevo a o jedno nahoře. Znaménka koeficientů se nedají komprimovat mnoho pod 1 bit. Jsou kódovány ve stejném pořadí jako koeficienty samotné pomocí 1-order kodéru. Naproti tomu před uložením absolutních hodnot je rozsah jejich hodnot nejprve rozdělen na kategorie podobně jako ve vlastním kódování JPEG. Ale rozsahy jednotlivých kategorií nejsou pevné a mění se v závislosti na JPEG kvalitě. Jsou vybrány na základě analýzy mnoha JPEG souborů uložených ve 100% kvalitě a pomocí pevného výpočtu na základě kvality jsou pro komprimovaný obrázek jednoznačně dopočítány. Ve výsledku se autorům podařilo dosáhnout v průměru asi 15% komprese. 17

18 Kapitola 3 Predikce DCT koeficientů 3.1 Transformace a přeuspořádání dat Jedním z důležitých faktorů, které mohou ovlivnit výkonnost metod komprese, je způsob uspořádání vícerozměrných dat. Protože většina přístupů nedokáže pracovat přímo s více dimenzemi, je třeba data linearizovat tedy převést vícerozměrná data na jednorozměrná. To znamená, že jednotlivé dimenze procházíme v nějakém určeném pořadí a tím získáme jednolitý proud dat. Naše úloha bezztrátové komprese JPEG souboru lze převést jednoduše na úlohu komprese právě pětirozměrného pole kvantovaných koeficientů. Pro hlubší analýzu můžeme zkoumat právě vliv způsobu linearizace těchto dat na výslednou kompresi. Jako druhý krok položíme nějaký známý algoritmus komprese dat. Jednotlivé rozměry pole označme písmeny C - barevná složka, U - horizontální pozice koeficientu, V - vertikální pozice koeficientu, X - horizontální pozice bloku a Y - vertikální pozice bloku. Dále dvojici (U, V) můžeme nahradit jedinou souřadnicí Z udávající pozici v bloku v zig-zag pořadí. Pro transformaci dat je použit přímočarý algoritmus, který v určeném pořadí uloží nekomprimované koeficienty. Každý z koeficientů je uložen ve dvou bytech. Někdy může být výhodné uložit vyšší a nižší byte odděleně - tyto výsledky jsou označeny číslicí 2. Na takovýto soubor dat se použije jeden ze všeobecně použitelných komprimačních algoritmů. Konkrétně byly použity tyto programy BZIP2 (algoritmus BWT), PPMd v.j (algoritmus PPM), CCM (algoritmus CM), ZIP (algoritmus LZ77). Výsledky testování pro jeden obrázek jsou vidět v tabulce 3.1. Jako nejlepší se ukazují pořadí C Z Y X (2), V U C Y X (2) a Z C Y X (2). Kromě metody BWT dávají nejlepší výsledky. To znamená, že v tomto případě je výhodné sdružovat stejné koeficienty stejných barevných složek k sobě. Tento výsledek naznačuje, že by mohlo být účinné využít závislostí koeficientů mezi různými bloky nebo případně mezi různými barevnými složkami nějakým chytřejším způsobem. 18

19 uspořádání koeficientů LZ77 BWT PPM CM C V U Y X C Z Y X V U C Y X Z C Y X C V U Y X (2) C Z Y X (2) V U C Y X (2) Z C Y X (2) C Y X V U C Y X Z V U Y X C Y X C V U Y X C Z Y X V U C Y X Z C Z Y X C C Y X V U (2) C Y X Z (2) V U Y X C (2) Y X C V U (2) Y X C Z (2) Y X V U C (2) Y X Z C (2) Z Y X C (2) Tabulka 3.1: Výsledky vlivu přeuspořádání dat na kompresní poměr 3.2 Možnosti inter a intra predikce Takzvané predikční metody se snaží co nejlépe odhadnout pravděpodobnosti jednotlivých hodnot. Přesněji pro každé číslo, které chceme zakódovat, dává metoda rozdělení pravděpodobnosti. To přiřazuje každé možnosti z oboru hodnot, která může nastat, nějaké číslo p(i). Platí, že součet všech pravděpodobností p(i) je roven jedné. Takto získané rozdělení dokáže optimálně využít aritmetické kódování. To umožňuje uložit data pomocí teoreticky nejmenšího počtu bitů pro daný model. Hodnotu i tedy zakódujeme log 2 (p (i)) bity. Otázkou zůstává, jak co nejlépe určit pravděpodobnosti p(i). Dynamické metody komprese dat pracují tak, že postupně procházejí souborem a z počátečního, už zakódovaného, úseku dat postupně budují příslušný model. V našem případě nebudeme postupovat jinak. Úlohu, kterou řešíme, lze popsat takto. Ze zakódované části obrázku chceme určit co nejpřesněji rozdělení pravděpodobnosti pro následující kvantovaný DCT koeficient. Pro zjednodušení nejprve uvažujme, že podkladem algoritmu nejsou všechny už zakódované hod- 19

20 noty, ale pouze ty z právě kódovaného DCT bloku. Takovéto predikci pak říkáme intra-predikce. Pokud naopak bereme v úvahu i hodnoty z okolních bloků jedná se o inter-predikci. Snahou je kombinací obou dostat lepší model. Podívejme se zpětně na to, jakou informaci využívá původní JPEG komprese. Kromě kódování prvního koeficientu v zig-zag posloupnosti (koeficient (0,0)), kde se využije informace o jeho hodnotě v předchozím bloku stejné barevné složky, se jiná informace z jiných bloků nepoužívá. Tedy se jedná téměř výhradně o intra-predikci. Právě lepším využitím informace z okolních bloků můžeme efektivitu komprese zvýšit. V následujícím textu je uvedena jedna z možností - algoritmus, který získává odhad libovolného koeficientu jako lineární kombinaci některých předchozích koeficientů z aktuálního a okolních bloků. 3.3 Vylepšená predikce - základní verze Vycházejme z předpokladu, že významná část závislostí mezi různými DCT bloky vychází z faktu, že původní bloky 8x8 pixelů na sebe navazovaly jednou svou hranou. Tento fakt nás omezuje na testování pouze bezprostředně sousedících bloků. Otázkou je, jak takovou to vlastnost modelovat a využít pro zlepšení predikce jednotlivých koeficientů. Nyní se nacházíme v následující situaci. Máme dva sousedící komprimované bloky. Proto, abychom popsali závislosti koeficientů, provedeme jejich dekompresi do obrazové domény. Tento krok se skládá z jejich dekvantizace a následné inverzní DCT transformace. Poté můžeme popsat závislost zjednodušeně jako "první řádek spodního bloku je podobný poslednímu řádku horního bloku" resp. "první sloupec pravého bloku je podobný levého bloku". V následujícím budeme uvažovat případ použití levého bloku. Použití horního bloku se provede symetricky. Rozdíl těchto dvou vektorů budeme zanedbávat a považovat ho za nulový. Označíme-li koeficienty v levém bloku L u,v a ty v aktuálním bloku A u,v, můžeme tuto vlastnost popsat formálně pomocí rovnice: i {0,..., 7} : L 7,i = A 0,i Přímo z této úvahy dostáváme algoritmus na predikci celého DCT bloku jako celku (nikoliv jednotlivého koeficientu). Tento algoritmus by postupoval takto: 1. dekvantizace a IDCT sousedního bloku 2. kopírování posledního sloupce (řádku) přes celý blok 3. kvantizace a DCT transformace Tímto způsobem dostaneme dva bloky, protože celý postup provádíme dvakrát - jednou pro sousední blok vlevo a podruhé pro blok nahoře od aktuální pozice. Protože nemáme žádné další informace o tom, na kterém sousedním bloku závisí ten aktuální více nebo méně, provedeme kombinaci obou směrů jednoduchým průměrováním. V tomto případě stačí spočítat aritmetický průměr obou predikcí. To je také ekvivalentní průměrování v obrazové doméně. 20

21 Algorithm 3.1 základní verze (pro odhad zleva) 1. Dekvantizace a 2D-IDCT levého bloku blok A 2. Dekvantizace a 2D-IDCT už dekódovaných koeficientů aktuálního bloku (doplněných nulami) blok B 3. Spočítej rozdíl posledního sloupce A a prvního sloupce B vektor C 4. Proveď jednorozměrnou DCT na vektor C 5. Vyber i-tou složku C, kde i je číslo řádku aktuálního koeficientu 6. Kvantování získané hodnoty C[i] D 7. Vrať jako výsledek D My bychom ale chtěli predikovat jednotlivé koeficienty postupně a využít vhodně toho, že některé koeficienty už známe. Zde využijeme známé vlastnosti koeficientů - koeficienty odpovídající vyšším frekvencím bývají v absolutní hodnotě menší než ty, které odpovídají nižším. Když budeme procházet koeficienty v zig-zag pořadí budou v absolutní hodnotě větší čísla vždy na začátku posloupnosti a na konci posloupnosti budou nuly. Z toho plyne, že vyšší koeficienty ovlivňují obrazový obsah bloku méně než ty nižší. Algoritmus bude postupovat od nižších koeficientů po ty vyšší v zig-zag pořadí a v každém kroku bude mít v paměti stav bloku daný už zakódovanými koeficienty doplněný nulami. Podle předchozí úvahy se dá předpokládat určitá míra podobnosti takovéhoto částečného bloku s původním komprimovaným blokem. Tento odhad aktuálního komprimovaného bloku algoritmus dekomprimuje stejně jako sousední blok a dopočítá hodnotu právě kódovaného koeficientu. Snahou je, aby se opět shodoval první a poslední sloupec (řádek). Spočítá se rozdíl těchto vektorů, na který se provede jednorozměrná DCT transformace. Z výsledného vektoru se pak přečte na pozici dané aktuální pozicí v kódovaném bloku koeficient. Ten je pak ještě třeba kvantovat, abychom dostali skutečný odhad koeficientu (viz algoritmus 3.1) 3.4 Vylepšená predikce - rychlá verze Algoritmus z předchozí části je možné dále optimalizovat. Vezmeme-li v úvahu vzorce pro DCT transformaci a její inverzi můžeme s pomocí mezivýsledku dostat stejnou predikci mnohem rychleji. V předchozím algoritmu bylo pro každý koeficient třeba spočítat DCT a inverzní DCT celého bloku. To nebude ve vylepšené verzi třeba. Uvažme algoritmus 3.2. V něm nám stačí provádět blokovou transformaci jednou za celý blok koeficientů a pro každý koeficient stačí jen konstantní počet kroků. Nyní ukážeme, že algoritmus 3.2 počítá to samé jako algoritmus 3.1. Nejprve si označíme hodnoty pixelů a koeficienty: 21

22 Obrázek 3.1: rychlá verze a i,j hodnoty pixelů v levém bloku c i,j hodnoty DCT koeficientů v levém bloku d i,j koeficientypo provedení 1-D DCT na sloupce a i,j (definice (1)) = koeficienty po provedení 1-D IDCT na řádky c i,j (definice (2)) a i,j hodnoty pixelů v aktuálním bloku c i,j hodnoty DCT koeficientů v aktuálním bloku d i,j koeficienty po provedení 1-D DCT na sloupce a i,j (definice (1)) = koeficienty po provedení 1-D IDCT na řádky c i,j (definice (2)) Ekvivalence definic (1) a (2) d i,j resp. d i,j plyne přímo z vlastností DCT. Konkrétně z faktu, že dvourozměrnou DCT lze spočítat jako jednorozměrnou DCT provedenou na sloupce a poté na řádky. Také z faktu, že DCT a IDCT jsou navzájem inverzní funkce: IDCT (DCT ( x )) = x DCT (IDCT ( x )) = x V algoritmu 3.1 počítáme rozdíly (a 7,x a 0,x ) pro x {0,.., 7}. Poté provedeme jednorozměrnou DCT na tento vektor a vybereme v-tou složku. To je stejné, jako kdybychom provedli nejprve DCT a poté spočítali rozdíl (z vlastností DCT transformace). Tedy podle definice (1) d i,j dostáváme pro v {0,.., 7}: DCT (a 7,x a 0,x ) [v] = ( d 7,v d 0,v ) S použitím definice (2) d i,j to můžeme přepsat jako: DCT (a 7,x a 0,x ) [v] = IDCT (c x,v ) [7] IDCT ( c x,v ) [0] 22

23 Algorithm 3.2 rychlá verze (pro odhad zleva) 1. Nechť vektor w = (w 0,..., w 7 ) je parametrem algoritmu 2. Nechť c i,j jsou hodnoty dekvantovaných DCT koeficientů v levém bloku a c i,j jsou už dekódované a dekvantované koeficienty v aktuálním bloku doplňené nulami 3. Při vstupu do nového bloku spočítej hodnoty sum [j] := 7 i=0 ( c i,j w i ( 1) i) 4. Pro každý načtený koeficient c i,j aktualizuj hodnotu sum [j] takto sum [j] := sum [j] c i,j w i 5. Spočítej predikci pro příští koeficient c k,l : P := sum[l] w k 6. Kvantování získané hodnoty P P 7. Vrať jako výsledek P Hodnotu IDCT ( y ) [7] a IDCT ( y ) [0] lze spočítat jako lineární kombinaci složek vektoru y. Koeficienty odvodíme ze vzorce pro IDCT (viz strana 8): 2 IDCT ( y ) [0] = 2 2 y n=1 [ π ] y n cos 16 n. = y {+0.71; +0.98; +0.92; +0.83; +0.71; +0.56; +0.38; +0.2} 2 IDCT ( y ) [7] = 2 2 y n=1 [ ] 15π y n cos 16 n. = y {+0.71; 0.98; +0.92; 0.83; +0.71; 0.56; +0.38; 0.2} Podle kroků 3 a 4 v algoritmu 3.2 dostáváme (nekvantovanou) predikci tohoto algoritmu jako 7 ) ( c i,v w i ( 1) i c i,v w i i=0 To se rovná při použití vektoru 1 /2 v 1 výrazu IDCT (c x,v ) [7] IDCT ( c x,v ) [0] = DCT (a 7,x a 0,x ) [v] To je číslo, které je po kvantování výsledkem algoritmu 3.1. Při použití této lineární kombinace (vektor 1 /2 v 1 ) dostáváme algoritmus 3.2 ekvivalentní s algoritmem 3.1, ale můžeme použít i jinou lineární kombinaci jako parametr algoritmu 3.2, která dává lepší výsledky. K tomu dochází, protože předpoklad 23

24 rovnosti prvního a posledního sloupce je nedokonalý. Experimenty ukazují, že použití vektorů v 2 a v 3 vede na přesnější predikci. v1 = { 2 2 ; cos ( π 16 ) ; cos ( 2 π 16 v3 = { 2 ) ( ; cos 3 π { 16 2 v2 = ) ( ; cos 4 π 16 } 2 ; 1; 1; 1; 1; 1; 1; 1 ) ; cos ( 5 π 16 ) ; cos ( 6 π 16 2 ; ; ; ; ; ; ; } ) ( ; cos 7 π ) } 16 Tyto vektory odpovídají lineární kombinaci pro výpočet první (resp. nulté) složky IDCT. Osmou a poslední (resp. sedmou) složku spočítáme z vektoru, který dostaneme změnou znaménka u složek na sudých pozicích příslušného vektoru. Tady jsme předpokládali výpočet predikce koeficientu pomocí levého bloku. Pro výpočet pomocí horního bloku je výpočet a tedy i důkaz symetrický pouze s prohozením horizontálních a vertikálních dimenzí. 3.5 Renormalizace a delta komprese Po provedení algoritmu 3.2 (případně 3.1) obdržíme nějaký odhad koeficientu. Položme si otázku, jak dobrý to bude odhad oproti triviálnímu odhadu. Triviálním odhadem je střední hodnota koeficientů, která je kromě prvního stejnosměrného koeficientu nulová. Protože nižší koeficienty mají vyšší rozptyl, je odhad získaný naším algoritmem pro tyto nižší koeficienty daleko užitečnější než pro ty vyšší. Jejich hodnoty jsou totiž téměř vždy nulové, případně mají hodnotu 1 nebo -1. Pro základní použití algoritmu provedeme transformaci dat následujícím způsobem. Průchodem souborem všemi bloky a všemi koeficienty budeme pomocí algoritmu 3.2 získávat predikci (označíme ji p 1 ). Další predikcí bude nulová hodnota (p 2 = 0). Jejich lineární kombinací chceme získat výsledný odhad (p 3 ). Koeficienty této lineární kombinace se budou lišit v závislosti na poloze DCT koeficientu v bloku a barevné složce. Pak bude platit pro danou barevnou složku p 3 = p 1 K [i] + p 2 (1 K [i]) = p 1 K [i], kde i je číslo z intervalu [0, 63] určující pozici DCT koeficientu a K obsahuje 64 koeficientů lineární kombinace z intervalu [0, 1]. Výsledek p 3 použijeme k delta transformaci. Budeme ukládat vždy rozdíl skutečné hodnoty kvantovaného koeficientu a vypočítané predikce p 3. Otázkou zůstává, jak určit pro jednotlivé barevné složky hodnotyk [0] až K [63]. Chceme tyto hodnoty určit optimálně pro daný obrázek. Využijeme znalosti skutečných hodnot koeficientů c [b, i] pro blok b a pozici v bloku i. Minimalizujeme kvadratickou odchylku přes všechny bloky, pro všechny i {0,..., 63} najdeme K [i]: { } arg min (c [b, i] p 1 [b, i] K [i]) 2 K[i] Řešení získáme je pomocí lineární regrese: b 24

25 K [i] = b (p 1 [b, i] c [b, i]) b (p 1 [b, i] p 1 [b, i]) 3.6 Experimentální výsledky Po provedení transformace je třeba hodnoty nějak zakódovat. Byly otestovány tyto způsoby kódování - stejně jako při kompresi JPEG (označeno C_JPEG), kódování nekomprimovaných koeficientů přeuspořádaných v pořadí jako v souboru JPEG - pořadí Y X C Z (označeno P1) a jiném pořadí (označeno P2). Zvolené pořadí bylo C Z Y X (viz různá uspořádání na straně 18). Dále byly použity vybrané rozšířené komprimační algoritmy. Konkrétně to byly tyto programy BZIP2 (algoritmus BWT), PPMd v.j (algoritmus PPM), CCM (algoritmus CM), ZIP (algoritmus LZ77). Zajímavostí je, že při uložení pomocí JPEG dostáváme opět korektní JPEG obrázek, který můžeme vizualizovat - efekt transformace je pak vidět na obrázku 3.2. V tabulce 3.2 můžete najít výsledek komprese pro několik JPEG obrázků. Obrázek 3.2: vizuální ukázka vlivu transformace obr1 obr2 obr3 obr4 celkem zlepšení JPEG C_JPEG ,74% P1+LZ ,20% P1+BWT ,76% P1+PPM ,55% P1+CM ,89% P2+LZ ,24% P2+BWT ,97% P2+PPM ,38% P2+CM ,77% Tabulka 3.2: výsledky - velikosti souborů v bytech 25

26 Kapitola 4 Původní PAQ8 JPEG model 4.1 Context mixing (CM) algoritmus Nyní si představme Context mixing (CM) algoritmus tak, jak ho navrhl M. Mahoney v [7] (paq6). Dále ho vylepšil v posledních verzích programu (paq7, paq8) (viz [8]). Predikce se provádí kombinací velkého množství modelů speciálním adaptivním algoritmem. Modely jsou kontextové a statistické. To znamená, že funkce kontextu (několika posledních bytů) je mapována přímo nebo pomocí hašovací tabulky na stavy, které závisí na bitové historii (sekvenci 0 nebo 1 nalezených v tomto kontextu). Bitová historie se převádí pevnou nebo adaptivní funkcí na odhad pravděpodobnosti p. Postupuje se po jednotlivých bitech a významem výsledku je odhad pravděpodobnosti, že následující bit bude jednička. Tyto modely nám dávají několik pravděpodobností, které se kombinují pomocí několika modifikovaných jednoduchých neuronových sítí vybíraných podle kontextu zpracovávaného bitu. Rozdílem oproti běžným neuronovým sítím je způsob adaptace vah. Zde neminimalizujeme kvadratickou odchylku, ale váhy použité pro kombinaci pravděpodobností z jednotlivých modelů jsou adaptovány tak, aby minimalizovaly počet bitů potřebných na zakódování (tj. maximalizují kompresní poměr). Po kombinaci pravděpodobností se ještě výstup neuronové sítě transformuje pomocí série několika APM (adaptive probability map). APM je funkce jejíž vstupem je vstupní pravděpodobnost a kontext, výstupem je pak pravděpodobnost. Také APM jsou adaptivní a vedou na zlepšení kompresního poměru. Konečnou fází je aritmetické kódování. Více podrobností viz [7] nebo komentáře ve zdrojových kódech v paq8 (viz [8]). 26

27 4.2 Implementace v PAQ8 Konkrétní implementací CM algoritmu je program PAQ8 od M. Mahoneyho. Používají se zde následující typy modelů: Run Map Stationary Map Nonstationary Map Match model Pro Run Map(b, n) se predikuje podle hodnoty posledního bitu (0 nebo 1 - označena b) v bitové historii a počtu jeho bezprostředního opakování za sebou (označen n). Predikce modelu je p = (2 b 1) K 1 log (n + 1). Stationary Map predikuje podle podílu jedničkových a nulových bitů v bitové historii. Stav S se pro bit i obnovuje pomocí formule S := S + K 2 (i S), predikce je ( p = log S 1 S ). Nonstationary Map tvoří kompromis mezi oběma možnostmi. Obsahuje osmibitový stav, který reprezentuje různé predikce (dvojice udávající podíl nul a jedniček). Match Model má stav (c, b), kde c je nula, pokud nebyl kontext přítomen v minulých datech, jinak jedna a b je bit následující v tomto kontextu. Predikce je p = (2 b 1) K 3 c log (m + 1), pro m udávající délku kontextu. K 1, K 2 a K 3 jsou vhodně zvolené ad-hoc konstanty. Prvním krokem komprese je transformace dat. V tomto kroku se převádí (v případě komprese spustitelných souborů exe/dll) relativní adresy ve spustitelném kódu na absolutní (e8/e9 transformace). To výrazně zlepšuje kompresní poměr pro tento typ dat. V dalším kroku se soubor prochází po jednotlivých bitech. Před zpracováním každého bitu je nejprve provedena predikce - určení pravděpodobnosti, že je bit jednička. Následně se tento bit pomocí aritmetického kódování zakóduje. S použitím znalosti hodnoty bitu jsou poté adaptovány všechny součásti použité při predikci. Upraví se tak, aby se maximalizovala přesnost predikce a tím minimalizoval počet bitů potřebný pro uložení následných dat. Při predikci se využijí a při aktualizaci se adaptují tyto součásti: stavy jednotlivých modelů a jejich kontexty váhy použité neuronové sítě stavy APM 4.3 Modelování a predikce v JPEG souboru PAQ8 je kompresor, který má implementován model pro komprimované obrázky JPEG. Tento model pracuje přímo a jednoprůchodově, to znamená, že provádí predikci následujícího bitu přímo v komprimovaném souboru podle předchozích dat. K tomu je třeba proud bitů nejprve rozdělit na jednotlivé kódy (nadále je budeme označovat H-symboly). Následně se rozdělí na dvojice [Huffmanův kód, 27

28 dodatečné bity]. Huffmanův kód se dekóduje a převede se na příslušnou [R, S] dvojici pomocí Huffmanových tabulek. Při predikci následujícího bitu se v zásadě používají dva typy kontextu. Prvním z nich je už dekódovaná část aktuálního H-symbolu. Tady se využívá nedokonalosti Huffmanova kódování tak, jak je použito při JPEG kompresi. Různé H-symboly mají různé pravděpodobnosti výskytu v proudu bitů. Druhou součást kontextu tvoří 19 dalších informací nebo znalostí o aktuální pozici v rámci bloku či obrázku, okolních koeficientech, barevné složce a podobně. Podrobný seznam je uveden v tabulkách 4.1 a 4.2. HC dosud načtené bity z kódu pro aktuální koeficient s přidaným nejvyšším bitem ZZ, ZU, ZV pozice koeficientu v bloku COMP číslo dané barevné složky / komponenty COMP2 číslo daného bloku v rámci skupiny C_TOP, C_LEFT hodnota stejného koeficientu v bloku předchozí skupiny (vlevo) a o řádek dříve (nahoře) vyjádřená jedním bytem C_LAST hodnota předcházejícího koeficientu vyjádřená jedním bytem SSUM součet hodnot S v RS-kódech v bezprostředně předchozím bloku SSUM3 součet hodnot S v RS-kódech v předchozím bloku vzdáleným o tři pozice COLUMN pozice bloku v obrázku (číslo sloupce) RS1, RS2, RS3 RS-kódy předchozích koeficientů DC hodnota DC (0, 0) koeficientu v bloku HUFF1 hašovaná hodnota posledního Huffmanova kódu odpovídajícímu poslednímu dekódovanému koeficientu Tabulka 4.1: Popis součástí kontextů pro původní JPEG model Pro jednotlivé kontexty si model pamatuje stav odvozený od bitové historie, podle kterého určuje pravděpodobnost výskytu 0 či 1. Tímto získáme 19 pravděpodobností odvozených z různých kontextů. Ty jsou pak kombinovány pomocí neuronové sítě, která se snaží minimalizovat cenu pro uložení dat (viz předchozí podkapitoly). Výsledná pravděpodobnost je ještě opravována pomocí APM (mapuje pravděpodobnosti v závislosti na kontextu). Jako kontext pro APM mapování se vybírá posledních 10 bitů aktuálního H-symbolu. Výsledkem celého postupu je jedna pravděpodobnost, která se nadále použije jako vstup do hlavního Context Mixing algoritmu. Protože jiné modely nemohou poskytnout srovnatelně kvalitní odhad pravděpodobnosti, přiřazuje neuronová 28

29 hash(0, HC, COMP2, ZZ / 4, min(3, ZZ)) hash(1, HC, (COMP2 == 0), C_LEFT) hash(2, HC, (COMP2 == 0), C_TOP) hash(3, HC, round(log2(ssum3) * 16), COMP, ZZ) hash(4, HC, COMP, ZZ, COLUMN / 8) hash(5, HC, COMP, ZZ, COLUMN / 2) hash(6, HC, RS1, COMP2, ZZ / 16) hash(7, HC, RS1, RS2) hash(8, HC, RS1, RS2, RS3) hash(9, HC, SSUM / 16, COMP2, ZZ) hash(10, HC, COMP2, ZZ / 16, C_LAST) hash(11, HC, DC) hash(12, HC, RS1, COMP, ZZ) hash(13, HC, RS1, RS2, COMP, ZZ) hash(14, HC, COMP2, ZZ / 8, SSUM3 / 8) hash(15, HC, HUFF1) hash(16, HC, COMP, ZZ, HUFF1) hash(17, HC, ZU, COMP) hash(18, HC, ZV, COMP) Tabulka 4.2: Seznam kontextů pro původní JPEG model síť veškerou váhu právě našemu vstupu. Tento model navrhl pro svůj program paq8 M. Mahoney (viz [8]). Konkrétně tento model pochází z verze programu paq8f. Počínaje verzí paq8m obsahuje JPEG model paq8 vylepšení popsaná v následující kapitole. 29

30 Kapitola 5 Vylepšený model 5.1 Základní verze V základní verzi je provedena kombinace původního JPEG modelu s predikcí koeficientů z okolních bloků tak, jak je popsána v kapitole 3. K tomuto je potřeba počítat při průchodu souborem hodnotu predikce. Dále je nutno vhodně začlenit tyto hodnoty jako kontext nebo část kontextů pro konkrétní statistické modelování. Ve fázi počítání koeficientů je použit rychlý algoritmus (3.2). Pomocí něho získáme dvě hodnoty predikce - z bloku o jedno pole nahoře a z bloku o jedno pole vlevo. Protože v tomto případě čte kompresor původní JPEG soubor, je třeba predikovat jednotlivé kódy, které odpovídají jednotlivým hodnotám RSkódu (r, s). Získaná predikce pomocí algoritmu (3.2) nám dává smysluplný odhad jen pro případ r = 0 (tj. bez využití RLE). To znamená, že nekódujeme žádný počet nul, ale přímo velikost koeficientu. Abychom alespoň částečně umožnili odhad i pro případ nenulového r, zavedeme navíc odhad r a odhad znaménka koeficientu vzdáleného právě o r (tj. koeficient odpovídající příslušnému RS-kódu). Algoritmus pouze prochází predikce pro několik následujících koeficientů v zig-zag posloupnosti a počítá pro kolik bezprostředně následujících je odhad menší nebo přibližně stejný jako ten současný. To může fungovat, protože se zabýváme případem, kdy r je nenulové a současný odhad by měl odhadovat nulu. Výsledkem této fáze jsou pro každou pozici tři hodnoty. První a druhá odpovídají odhadům z levého (A[0]) a horního (A[2]) bloku, třetí jejich průměru (A[1]). Navíc jsou tyto hodnoty transformovány pomocí logaritmu, aby se zajistilo, že vysoké hodnoty budou dostatečně časté. K těmto třem hodnotám se ke každé přidají bity odpovídající odhadu r (vytvořený z koeficientů z odpovídajícího směru). Druhou částí základní verze je zakomponování těchto třech hodnot A[0], A[1] a A[2] mezi kontexty pro modelování bitových historií. Jednou z možností, která se při testech ukázala jako výhodná, je uvedena v tabulce (5.1). 30

31 hash(0, HC, COMP2, ZZ / 4, min(3, ZZ)) hash(1, HC, RS1, COMP, A[0]) hash(2, HC, RS1, COMP, A[1]) hash(3, HC, RS1, COMP, A[2]) hash(4, HC, COMP, ZZ, COLUMN / 8) hash(5, HC, COMP, ZZ, COLUMN / 2) hash(6, HC, RS1, COMP2, ZZ / 16) hash(7, HC, RS1, RS2) hash(8, HC, RS1, RS2, RS3) hash(9, HC, SSUM / 16, COMP2, ZZ) hash(10, HC, COMP2, ZZ / 16, C_LAST) hash(11, HC, DC) hash(12, HC, RS1, COMP, ZZ) hash(13, HC, RS1, RS2, COMP, ZZ) hash(14, HC, COMP2, ZZ / 8, SSUM3 / 8) hash(15, HC, (COMP2 == 0), C_TOP) hash(16, HC, COMP, ZZ, A[0]) hash(17, HC, COMP, ZZ, A[1]) hash(18, HC, COMP, ZZ, A[2]) Tabulka 5.1: Seznam kontextů pro vylepšený JPEG model (základní verze) 5.2 Možnosti zlepšení a pokročilá verze Pro další vylepšení účinnosti modelování JPEG souboru pomocí tohoto modelu existuje několik možností. První z nich je přidání kontextové informace o okolních DCT koeficientech v aktuálním bloku, která v původní verzi chybí. Přidáme doplňující hodnoty LCP[0]..LCP[3] do modelu. Ty budou podobně jako v případě predikce pomocí okolních bloků vyjadřovat predikci zleva a shora. LCP[0] a LCP[1] odpovídají buňkám o jednu pozici od aktuální a LCP[2] a LCP[3] o dvě pozice od aktuální. V tomto případě se vyjde přímo z konkrétního koeficientu, který se pouze dekvantuje v závislosti na jeho poloze a opět kvantuje v závislosti na aktuální poloze. Druhou možností zlepšení je přeskupení a úprava kontextů pro modelování bitové historie. V rámci této úpravy se zde začlení i hodnoty LCP z předchozího odstavce. V tabulkách 5.2 a 5.3 je uveden upravený seznam a popis položek. Počet použitých kombinovaných kontextů je zde zvýšen z 19 na 28. Třetím zlepšením je začlenění predikce pomocí okolních bloků (A[1]) do APM 31

32 MC MC := 4 * HC + 2 * (ZZ == 0) + (COMP == 0) HC dosud načtené bity z kódu pro aktuální koeficient s přidaným nejvyšším bitem ZZ, ZU, ZV pozice koeficientu v bloku COMP číslo dané barevné složky / komponenty COMP2 číslo daného bloku v rámci skupiny C_TOP, C_LEFT hodnota stejného koeficientu v bloku předchozí skupiny (vlevo) a o řádek dříve (nahoře) vyjádřená jedním bytem SSUM součet hodnot S v RS-kódech v bezprostředně předchozím bloku SSUM2 pro COMP2 = 0 SSUM pro poslední blok první komponenty / jinak celkový součet SSUM pro předcházející bloky první komponenty v rámci jedné skupiny COLUMN pozice bloku v obrázku (číslo sloupce) RS1 RS-kód předchozího koeficientu A[0]..A[6] predikce koeficientu spočítané na základě lineární kombinace koeficientů z tohoto a sousedního bloku (viz algoritmus 3.2) LCP[0]..LCP[2] upravené hodnoty sousedních koeficientů v tomto bloku (o jedno nebo dvě pole vlevo nebo nahoře) Tabulka 5.2: Popis součástí kontextů pro upravený JPEG model kontextu, který upravuje už získané pravděpodobnosti získané ze statistického modelu v předchozím kroku. Další doplňující změnou je také speciální ošetření prvního řádku a sloupce tak, aby v tomto případě, kdy nelze predikce provést, nebyly znehodnocovány statistiky pro kontextové modelování. To se provede tak, že v případě prvního řádku nahradíme hodnotu A[2] speciální hodnotou a A[1] nahradíme A[0]. Pro první sloupec analogicky nahradíme A[0] speciální hodnotou a A[1] nahradíme A[2]. 5.3 Implementace Vstupem tohoto algoritmu (5.1), který pro danou pozici v JPEG souboru aktualizuje kontexty pro CM algoritmus, jsou dva druhy dat. Prvním jsou kvantované DCT koeficienty ze současného a předcházejících sousedních bloků. Protože se koeficienty procházejí v zig-zag pořadí, známe v aktuálním bloku pouze ty, které se nacházejí před současnou pozicí. Tyto koeficienty využíváme pouze v kroku 32

33 (1). Přitom informace ze sousedních bloků se přečte pouze jedenkrát při vstupu do bloku. Dalším vstupem tohoto algoritmu je informace o pozici koeficientu, ZZ udává pozici v rámci bloku v zig-zag pořadí a COL a ROW udávají pozici bloku v obrázku (COL = číslo sloupce, ROW = číslo řádku). V kroku (1) se provádí aktualizace proměnných SU[0]..SU[7] a SV[0]..SV[7]. V nich jsou udržovány příslušné lineární kombinace dekvantovaných koeficientů. Odpovídají sumám počítaných v algoritmu 3.2. Tyto hodnoty se použijí pro konstrukci predikcí A[0]..A[6] v kroku (2). Ty odpovídají transformovaným predikcím algoritmu 3.2. Z hodnot uložených v SU[i] a SV[j] pro pozici (i, j) dostáváme predikci shora a zleva. Jejich různou vzájemnou kombinací a následnou transformací dostaneme hodnoty A[0]..A[6]. Třetí krok algoritmu dopočítává hodnoty sousedních koeficientů v bloku. Nakonec ošetříme speciálně první řádek a sloupec. Na výstupu tedy dostáváme 11 hodnot, které využijeme v Context Mixing algoritmu jako součásti kontextů (viz tabulka 5.3) 5.4 Experimentální výsledky Obrázek 5.1: Graf srovnávající úsporu místa při kompresi různými programy Pro otestování výkonnosti uvedené metody následné komprese JPEG souborů byly využity náhodně vybrané obrázky ze dvou digitálních fotoaparátů s rozlišením 2 a 3 megapixely. Vybíráno bylo pomocí pseudonáhodného generátoru z celkového počtu 8356 a 4512 Fotografií bylo celkem 40 (po dvaceti z každého fotoaparátu). Jejich celková velikost dosáhla 23,9MB. Testovanými programy byly: paq8p s původní verzí JPEG modelu (z verze programu paq8f) paq8p se základní verzí JPEG modelu paq8p s pokročilou verzí JPEG modelu (viz algoritmus 5.1) 33

Kosinová transformace 36ACS

Kosinová transformace 36ACS Kosinová transformace 36ACS 10. listopadu 2006 Martin BruXy Bruchanov bruxy@regnet.cz Uplatnění diskrétní kosinové transformace Úkolem transformačního kódování je převést hodnoty vzájemně závislých vzorků

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

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

Vektory a matice. Obsah. Aplikovaná matematika I. Carl Friedrich Gauss. Základní pojmy a operace

Vektory a matice. Obsah. Aplikovaná matematika I. Carl Friedrich Gauss. Základní pojmy a operace Vektory a matice Aplikovaná matematika I Dana Říhová Mendelu Brno Obsah 1 Vektory Základní pojmy a operace Lineární závislost a nezávislost vektorů 2 Matice Základní pojmy, druhy matic Operace s maticemi

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

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

Teorie informace a kódování (KMI/TIK) Reed-Mullerovy kódy Teorie informace a kódování (KMI/TIK) Reed-Mullerovy kódy Lukáš Havrlant Univerzita Palackého 10. ledna 2014 Primární zdroj Jiří Adámek: Foundations of Coding. Strany 137 160. Na webu ke stažení, heslo:

Více

IB112 Základy matematiky

IB112 Základy matematiky IB112 Základy matematiky Řešení soustavy lineárních rovnic, matice, vektory Jan Strejček IB112 Základy matematiky: Řešení soustavy lineárních rovnic, matice, vektory 2/53 Obsah Soustava lineárních rovnic

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

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

0.1 Úvod do lineární algebry

0.1 Úvod do lineární algebry Matematika KMI/PMATE 1 01 Úvod do lineární algebry 011 Vektory Definice 011 Vektorem aritmetického prostorur n budeme rozumět uspořádanou n-tici reálných čísel x 1, x 2,, x n Definice 012 Definice sčítání

Více

0.1 Úvod do lineární algebry

0.1 Úvod do lineární algebry Matematika KMI/PMATE 1 01 Úvod do lineární algebry 011 Lineární rovnice o 2 neznámých Definice 011 Lineární rovnice o dvou neznámých x, y je rovnice, která může být vyjádřena ve tvaru ax + by = c, kde

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

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

Determinanty. Obsah. Aplikovaná matematika I. Pierre Simon de Laplace. Definice determinantu. Laplaceův rozvoj Vlastnosti determinantu.

Determinanty. Obsah. Aplikovaná matematika I. Pierre Simon de Laplace. Definice determinantu. Laplaceův rozvoj Vlastnosti determinantu. Determinanty Aplikovaná matematika I Dana Říhová Mendelu Brno Obsah 1 Determinanty Definice determinantu Sarrusovo a křížové pravidlo Laplaceův rozvoj Vlastnosti determinantu Výpočet determinantů 2 Inverzní

Více

11MAMY LS 2017/2018. Úvod do Matlabu. 21. února Skupina 01. reseni2.m a tak dále + M souborem zadané funkce z příkladu 3 + souborem skupina.

11MAMY LS 2017/2018. Úvod do Matlabu. 21. února Skupina 01. reseni2.m a tak dále + M souborem zadané funkce z příkladu 3 + souborem skupina. 11MAMY LS 2017/2018 Cvičení č. 2: 21. 2. 2018 Úvod do Matlabu. Jan Přikryl 21. února 2018 Po skupinách, na které jste se doufám rozdělili samostatně včera, vyřešte tak, jak nejlépe svedete, níže uvedená

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

Matematika (CŽV Kadaň) aneb Úvod do lineární algebry Matice a soustavy rovnic

Matematika (CŽV Kadaň) aneb Úvod do lineární algebry Matice a soustavy rovnic Přednáška třetí (a pravděpodobně i čtvrtá) aneb Úvod do lineární algebry Matice a soustavy rovnic Lineární rovnice o 2 neznámých Lineární rovnice o 2 neznámých Lineární rovnice o dvou neznámých x, y je

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

ANTAGONISTICKE HRY 172

ANTAGONISTICKE HRY 172 5 ANTAGONISTICKÉ HRY 172 Antagonistický konflikt je rozhodovací situace, v níž vystupují dva inteligentní rozhodovatelé, kteří se po volbě svých rozhodnutí rozdělí o pevnou částku, jejíž výše nezávisí

Více

II. Úlohy na vložené cykly a podprogramy

II. Úlohy na vložené cykly a podprogramy II. Úlohy na vložené cykly a podprogramy Společné zadání pro příklady 1. - 10. začíná jednou ze dvou možností popisu vstupních dat. Je dána posloupnost (neboli řada) N reálných (resp. celočíselných) hodnot.

Více

Aplikovaná numerická matematika - ANM

Aplikovaná numerická matematika - ANM Aplikovaná numerická matematika - ANM 3 Řešení soustav lineárních rovnic iterační metody doc Ing Róbert Lórencz, CSc České vysoké učení technické v Praze Fakulta informačních technologií Katedra počítačových

Více

13 Barvy a úpravy rastrového

13 Barvy a úpravy rastrového 13 Barvy a úpravy rastrového Studijní cíl Tento blok je věnován základním metodám pro úpravu rastrového obrazu, jako je např. otočení, horizontální a vertikální překlopení. Dále budo vysvětleny různé metody

Více

1 Vektorové prostory.

1 Vektorové prostory. 1 Vektorové prostory DefiniceMnožinu V, jejíž prvky budeme označovat a, b, c, z, budeme nazývat vektorovým prostorem právě tehdy, když budou splněny následující podmínky: 1 Je dáno zobrazení V V V, které

Více

Operace s maticemi. 19. února 2018

Operace s maticemi. 19. února 2018 Operace s maticemi Přednáška druhá 19. února 2018 Obsah 1 Operace s maticemi 2 Hodnost matice (opakování) 3 Regulární matice 4 Inverzní matice 5 Determinant matice Matice Definice (Matice). Reálná matice

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

7. Funkce jedné reálné proměnné, základní pojmy

7. Funkce jedné reálné proměnné, základní pojmy , základní pojmy POJEM FUNKCE JEDNÉ PROMĚNNÉ Reálná funkce f jedné reálné proměnné je funkce (zobrazení) f: X Y, kde X, Y R. Jde o zvláštní případ obecného pojmu funkce definovaného v přednášce. Poznámka:

Více

3. ANTAGONISTICKÉ HRY

3. ANTAGONISTICKÉ HRY 3. ANTAGONISTICKÉ HRY ANTAGONISTICKÝ KONFLIKT Antagonistický konflikt je rozhodovací situace, v níž vystupují dva inteligentní rozhodovatelé, kteří se po volbě svých rozhodnutí rozdělí o pevnou částku,

Více

Maticí typu (m, n), kde m, n jsou přirozená čísla, se rozumí soubor mn veličin a jk zapsaných do m řádků a n sloupců tvaru:

Maticí typu (m, n), kde m, n jsou přirozená čísla, se rozumí soubor mn veličin a jk zapsaných do m řádků a n sloupců tvaru: 3 Maticový počet 3.1 Zavedení pojmu matice Maticí typu (m, n, kde m, n jsou přirozená čísla, se rozumí soubor mn veličin a jk zapsaných do m řádků a n sloupců tvaru: a 11 a 12... a 1k... a 1n a 21 a 22...

Více

(Cramerovo pravidlo, determinanty, inverzní matice)

(Cramerovo pravidlo, determinanty, inverzní matice) KMA/MAT1 Přednáška a cvičení, Lineární algebra 2 Řešení soustav lineárních rovnic se čtvercovou maticí soustavy (Cramerovo pravidlo, determinanty, inverzní matice) 16 a 21 října 2014 V dnešní přednášce

Více

7. Rozdělení pravděpodobnosti ve statistice

7. Rozdělení pravděpodobnosti ve statistice 7. Rozdělení pravděpodobnosti ve statistice Statistika nuda je, má však cenné údaje, neklesejte na mysli, ona nám to vyčíslí Jednou z úloh statistiky je odhad (výpočet) hodnot statistického znaku x i,

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

1 Řešení soustav lineárních rovnic

1 Řešení soustav lineárních rovnic 1 Řešení soustav lineárních rovnic 1.1 Lineární rovnice Lineární rovnicí o n neznámých x 1,x 2,..., x n s reálnými koeficienty rozumíme rovnici ve tvaru a 1 x 1 + a 2 x 2 +... + a n x n = b, (1) kde koeficienty

Více

[1] Determinant. det A = 0 pro singulární matici, det A 0 pro regulární matici

[1] Determinant. det A = 0 pro singulární matici, det A 0 pro regulární matici [1] Determinant je číslo jistým způsobem charakterizující čtvercovou matici det A = 0 pro singulární matici, det A 0 pro regulární matici používá se při řešení lineárních soustav... a v mnoha dalších aplikacích

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

1 Linearní prostory nad komplexními čísly

1 Linearní prostory nad komplexními čísly 1 Linearní prostory nad komplexními čísly V této přednášce budeme hledat kořeny polynomů, které se dále budou moci vyskytovat jako složky vektorů nebo matic Vzhledem k tomu, že kořeny polynomu (i reálného)

Více

8.3). S ohledem na jednoduchost a názornost je výhodné seznámit se s touto Základní pojmy a vztahy. Definice

8.3). S ohledem na jednoduchost a názornost je výhodné seznámit se s touto Základní pojmy a vztahy. Definice 9. Lineární diferenciální rovnice 2. řádu Cíle Diferenciální rovnice, v nichž hledaná funkce vystupuje ve druhé či vyšší derivaci, nazýváme diferenciálními rovnicemi druhého a vyššího řádu. Analogicky

Více

Lineární algebra - I. část (vektory, matice a jejich využití)

Lineární algebra - I. část (vektory, matice a jejich využití) Lineární algebra - I. část (vektory, matice a jejich využití) Michal Fusek Ústav matematiky FEKT VUT, fusekmi@feec.vutbr.cz 2. přednáška z ESMAT Michal Fusek (fusekmi@feec.vutbr.cz) 1 / 40 Obsah 1 Vektory

Více

Matice. Modifikace matic eliminační metodou. α A = α a 2,1, α a 2,2,..., α a 2,n α a m,1, α a m,2,..., α a m,n

Matice. Modifikace matic eliminační metodou. α A = α a 2,1, α a 2,2,..., α a 2,n α a m,1, α a m,2,..., α a m,n [1] Základní pojmy [2] Matice mezi sebou sčítáme a násobíme konstantou (lineární prostor) měníme je na jiné matice eliminační metodou násobíme je mezi sebou... Matice je tabulka čísel s konečným počtem

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

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

Komprese obrazu. Verze: 1.5, ze dne: 1. června Václav Hlaváč a Tomáš Svoboda Komprese obrazu Verze: 1.5, ze dne: 1. června 2006 Václav Hlaváč a Tomáš Svoboda Czech Technical University, Faculty of Electrical Engineering Center for Machine Perception, Prague, Czech Republic svoboda@cmp.felk.cvut.cz

Více

BPC2E_C09 Model komunikačního systému v Matlabu

BPC2E_C09 Model komunikačního systému v Matlabu BPCE_C9 Model komunikačního systému v Matlabu Cílem cvičení je vyzkoušet si sestavit skripty v Matlabu pro model jednoduchého komunikačního systému pro přenos obrázků. Úloha A. Sestavte model komunikačního

Více

Matice. a m1 a m2... a mn

Matice. a m1 a m2... a mn Matice Nechť (R, +, ) je okruh a nechť m, n jsou přirozená čísla Matice typu m/n nad okruhem (R, +, ) vznikne, když libovolných m n prvků z R naskládáme do obdélníkového schematu o m řádcích a n sloupcích

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

1 Projekce a projektory

1 Projekce a projektory Cvičení 3 - zadání a řešení úloh Základy numerické matematiky - NMNM20 Verze z 5. října 208 Projekce a projektory Opakování ortogonální projekce Definice (Ortogonální projekce). Uvažujme V vektorový prostor

Více

FP - SEMINÁŘ Z NUMERICKÉ MATEMATIKY. Katedra matematiky a didaktiky matematiky Technická univerzita v Liberci

FP - SEMINÁŘ Z NUMERICKÉ MATEMATIKY.   Katedra matematiky a didaktiky matematiky Technická univerzita v Liberci FP - SEMINÁŘ Z NUMERICKÉ MATEMATIKY Dana Černá http://www.fp.tul.cz/kmd/ Katedra matematiky a didaktiky matematiky Technická univerzita v Liberci OBSAH A CÍLE SEMINÁŘE: Opakování a procvičení vybraných

Více

Grafika na počítači. Bc. Veronika Tomsová

Grafika na počítači. Bc. Veronika Tomsová Grafika na počítači Bc. Veronika Tomsová Proces zpracování obrazu Proces zpracování obrazu 1. Snímání obrazu 2. Digitalizace obrazu převod spojitého signálu na matici čísel reprezentující obraz 3. Předzpracování

Více

1 0 0 u 22 u 23 l 31. l u11

1 0 0 u 22 u 23 l 31. l u11 LU dekompozice Jedná se o rozklad matice A na dvě trojúhelníkové matice L a U, A=LU. Matice L je dolní trojúhelníková s jedničkami na diagonále a matice U je horní trojúhelníková. a a2 a3 a 2 a 22 a 23

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

MATICE. a 11 a 12 a 1n a 21 a 22 a 2n A = = [a ij]

MATICE. a 11 a 12 a 1n a 21 a 22 a 2n A = = [a ij] MATICE Matice typu m/n nad tělesem T je soubor m n prvků z tělesa T uspořádaných do m řádků a n sloupců: a 11 a 12 a 1n a 21 a 22 a 2n A = = [a ij] a m1 a m2 a mn Prvek a i,j je prvek matice A na místě

Více

Matematika B101MA1, B101MA2

Matematika B101MA1, B101MA2 Matematika B101MA1, B101MA2 Zařazení předmětu: povinný předmět 1.ročníku bc studia 2 semestry Rozsah předmětu: prezenční studium 2 + 2 kombinované studium 16 + 0 / semestr Zakončení předmětu: ZS zápočet

Více

10. Soustavy lineárních rovnic, determinanty, Cramerovo pravidlo

10. Soustavy lineárních rovnic, determinanty, Cramerovo pravidlo 0. Soustavy lineárních rovnic, determinanty, Cramerovo pravidlo (PEF PaA) Petr Gurka aktualizováno 9. prosince 202 Obsah Základní pojmy. Motivace.................................2 Aritmetický vektorový

Více

transformace je posunutí plus lineární transformace má svou matici vzhledem k homogenním souřadnicím [1]

transformace je posunutí plus lineární transformace má svou matici vzhledem k homogenním souřadnicím [1] [1] Afinní transformace je posunutí plus lineární transformace má svou matici vzhledem k homogenním souřadnicím využití například v počítačové grafice Evropský sociální fond Praha & EU. Investujeme do

Více

KTE/TEVS - Rychlá Fourierova transformace. Pavel Karban. Katedra teoretické elektrotechniky Fakulta elektrotechnická Západočeská univerzita v Plzni

KTE/TEVS - Rychlá Fourierova transformace. Pavel Karban. Katedra teoretické elektrotechniky Fakulta elektrotechnická Západočeská univerzita v Plzni KTE/TEVS - Rychlá Fourierova transformace Pavel Karban Katedra teoretické elektrotechniky Fakulta elektrotechnická Západočeská univerzita v Plzni 10.11.011 Outline 1 Motivace FT Fourierova transformace

Více

V předchozí kapitole jsme podstatným způsobem rozšířili naši představu o tom, co je to číslo. Nadále jsou pro nás důležité především vlastnosti

V předchozí kapitole jsme podstatným způsobem rozšířili naši představu o tom, co je to číslo. Nadále jsou pro nás důležité především vlastnosti Kapitola 5 Vektorové prostory V předchozí kapitole jsme podstatným způsobem rozšířili naši představu o tom, co je to číslo. Nadále jsou pro nás důležité především vlastnosti operací sčítání a násobení

Více

VYBRANÉ PARTIE Z NUMERICKÉ MATEMATIKY

VYBRANÉ PARTIE Z NUMERICKÉ MATEMATIKY VYBRANÉ PARTIE Z NUMERICKÉ MATEMATIKY Jan Krejčí 31. srpna 2006 jkrejci@physics.ujep.cz http://physics.ujep.cz/~jkrejci Obsah 1 Přímé metody řešení soustav lineárních rovnic 3 1.1 Gaussova eliminace...............................

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

Uspořádanou n-tici reálných čísel nazveme aritmetický vektor (vektor), ā = (a 1, a 2,..., a n ). Čísla a 1, a 2,..., a n se nazývají složky vektoru

Uspořádanou n-tici reálných čísel nazveme aritmetický vektor (vektor), ā = (a 1, a 2,..., a n ). Čísla a 1, a 2,..., a n se nazývají složky vektoru 1 1. Lineární algebra 1.1. Lineární závislost a nezávislost vektorů. Hodnost matice Aritmetické vektory Uspořádanou n-tici reálných čísel nazveme aritmetický vektor (vektor), ā = (a 1, a 2,..., a n ).

Více

Afinita je stručný název pro afinní transformaci prostoru, tj.vzájemně jednoznačné afinní zobrazení bodového prostoru A n na sebe.

Afinita je stručný název pro afinní transformaci prostoru, tj.vzájemně jednoznačné afinní zobrazení bodového prostoru A n na sebe. 4 Afinita Afinita je stručný název pro afinní transformaci prostoru, tj.vzájemně jednoznačné afinní zobrazení bodového prostoru A n na sebe. Poznámka. Vzájemně jednoznačným zobrazením rozumíme zobrazení,

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

Soustavy lineárních rovnic a determinanty

Soustavy lineárních rovnic a determinanty Soustavy lineárních rovnic a determinanty Petr Hasil Přednáška z matematiky Podpořeno projektem Průřezová inovace studijních programů Lesnické a dřevařské fakulty MENDELU v Brně (LDF) s ohledem na discipĺıny

Více

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

Komprese obrazu. Úvod. Rozdělení metod komprese obrazů. Verze: 1.5, ze dne: 1. června Václav Hlaváč a Tomáš Svoboda Komprese obrazu Verze:., ze dne:. června 6 Václav Hlaváč a Tomáš Svoboda Czech Technical University, Faculty of Electrical Engineering Center for Machine Perception, Prague, Czech Republic svoboda@cmp.felk.cvut.cz

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

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

Stavový model a Kalmanův filtr

Stavový model a Kalmanův filtr Stavový model a Kalmanův filtr 2 prosince 23 Stav je veličina, kterou neznáme, ale chtěli bychom znát Dozvídáme se o ní zprostředkovaně prostřednictvím výstupů Příkladem může býapř nějaký zašuměný signál,

Více

Symetrické a kvadratické formy

Symetrické a kvadratické formy Symetrické a kvadratické formy Aplikace: klasifikace kvadrik(r 2 ) a kvadratických ploch(r 3 ), optimalizace(mpi) BI-LIN (Symetrické a kvadratické formy) 1 / 20 V celé přednášce uvažujeme číselné těleso

Více

Operace s maticemi

Operace s maticemi Operace s maticemi Seminář druhý 17.10. 2018 Obsah 1 Operace s maticemi 2 Hodnost matice 3 Regulární matice 4 Inverzní matice Matice Definice (Matice). Reálná matice typu m n je obdélníkové schema A =

Více

5. Náhodná veličina. 2. Házíme hrací kostkou dokud nepadne šestka. Náhodná veličina nabývá hodnot z posloupnosti {1, 2, 3,...}.

5. Náhodná veličina. 2. Házíme hrací kostkou dokud nepadne šestka. Náhodná veličina nabývá hodnot z posloupnosti {1, 2, 3,...}. 5. Náhodná veličina Poznámka: Pro popis náhodného pokusu jsme zavedli pojem jevového pole S jako množiny všech možných výsledků a pravděpodobnost náhodných jevů P jako míru výskytů jednotlivých výsledků.

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

z = a bi. z + v = (a + bi) + (c + di) = (a + c) + (b + d)i. z v = (a + bi) (c + di) = (a c) + (b d)i. z v = (a + bi) (c + di) = (ac bd) + (bc + ad)i.

z = a bi. z + v = (a + bi) + (c + di) = (a + c) + (b + d)i. z v = (a + bi) (c + di) = (a c) + (b d)i. z v = (a + bi) (c + di) = (ac bd) + (bc + ad)i. KOMLEXNÍ ČÍSLA C = {a + bi; a, b R}, kde i 2 = 1 Číslo komplexně sdružené k z = a + bi je číslo z = a bi. Operace s komplexními čísly: z = a + bi, kde a, b R v = c + di, kde c, d R Sčítání Odčítání Násobení

Více

Necht tedy máme přirozená čísla n, k pod pojmem systém lineárních rovnic rozumíme rovnice ve tvaru

Necht tedy máme přirozená čísla n, k pod pojmem systém lineárních rovnic rozumíme rovnice ve tvaru 2. Systémy lineárních rovnic V této kapitole se budeme zabývat soustavami lineárních rovnic s koeficienty z pole reálných případně komplexních čísel. Uvádíme podmínku pro existenci řešení systému lineárních

Více

ANALYTICKÁ GEOMETRIE LINEÁRNÍCH ÚTVARŮ V ROVINĚ

ANALYTICKÁ GEOMETRIE LINEÁRNÍCH ÚTVARŮ V ROVINĚ ANALYTICKÁ GEOMETRIE LINEÁRNÍCH ÚTVARŮ V ROVINĚ Parametrické vyjádření přímky v rovině Máme přímku p v rovině určenou body A, B. Sestrojíme vektor u = B A. Pro bod B tím pádem platí: B = A + u. Je zřejmé,

Více

Kolik existuje různých stromů na pevně dané n-prvkové množině vrcholů?

Kolik existuje různých stromů na pevně dané n-prvkové množině vrcholů? Kapitola 9 Matice a počet koster Graf (orientovaný i neorientovaný) lze popsat maticí, a to hned několika různými způsoby. Tématem této kapitoly jsou incidenční matice orientovaných grafů a souvislosti

Více

Vodoznačení video obsahu

Vodoznačení video obsahu Vodoznačení video obsahu Bc. Jiří Hošek Email: hosek.j@seznam.cz Ústav Telekomunikací, FEKT, VUT v Brně Tento článek je zaměřen na problematiku vodoznačení a zejména pak na techniky vkládání vodoznaku

Více

PQ-stromy a rozpoznávání intervalových grafů v lineárním čase

PQ-stromy a rozpoznávání intervalových grafů v lineárním čase -stromy a rozpoznávání intervalových grafů v lineárním čase ermutace s předepsanými intervaly Označme [n] množinu {1, 2,..., n}. Mějme permutaci π = π 1, π 2,..., π n množiny [n]. Řekneme, že množina S

Více

Soustavy. Terminologie. Dva pohledy na soustavu lin. rovnic. Definice: Necht A = (a i,j ) R m,n je matice, b R m,1 je jednosloupcová.

Soustavy. Terminologie. Dva pohledy na soustavu lin. rovnic. Definice: Necht A = (a i,j ) R m,n je matice, b R m,1 je jednosloupcová. [1] Terminologie [2] Soustavy lineárních rovnic vlastnosti množin řešení metody hledání řešení nejednoznačnost zápisu řešení Definice: Necht A = (a i,j ) R m,n je matice, b R m,1 je jednosloupcová matice.

Více

5.3. Implicitní funkce a její derivace

5.3. Implicitní funkce a její derivace Výklad Podívejme se na následující problém. Uvažujme množinu M bodů [x,y] R 2, které splňují rovnici F(x, y) = 0, M = {[x,y] D F F(x,y) = 0}, kde z = F(x,y) je nějaká funkce dvou proměnných. Je-li F(x,y)

Více

1 Determinanty a inverzní matice

1 Determinanty a inverzní matice Determinanty a inverzní matice Definice Necht A = (a ij ) je matice typu (n, n), n 2 Subdeterminantem A ij matice A příslušným pozici (i, j) nazýváme determinant matice, která vznikne z A vypuštěním i-tého

Více

Digitalizace dat metodika

Digitalizace dat metodika Digitalizace dat metodika Digitalizace Jak počítač získá jedničky a nuly, se kterými potom počítá a které je schopen si pamatovat? Pomocí různých přístrojů a zařízení (mikrofon, fotoaparát, skener, kamera,

Více

Matematika 1 MA1. 2 Determinant. 3 Adjungovaná matice. 4 Cramerovo pravidlo. 11. přednáška ( ) Matematika 1 1 / 29

Matematika 1 MA1. 2 Determinant. 3 Adjungovaná matice. 4 Cramerovo pravidlo. 11. přednáška ( ) Matematika 1 1 / 29 Matematika 1 11. přednáška MA1 1 Opakování 2 Determinant 3 Adjungovaná matice 4 Cramerovo pravidlo 5 Vlastní čísla a vlastní vektory matic 6 Zkouška; konzultace; výběrová matematika;... 11. přednáška (15.12.2010

Více

Cvičení 5 - Inverzní matice

Cvičení 5 - Inverzní matice Cvičení 5 - Inverzní matice Pojem Inverzní matice Buď A R n n. A je inverzní maticí k A, pokud platí, AA = A A = I n. Matice A, pokud existuje, je jednoznačná. A stačí nám jen jedna rovnost, aby platilo,

Více

Soustavy linea rnı ch rovnic

Soustavy linea rnı ch rovnic [1] Soustavy lineárních rovnic vlastnosti množin řešení metody hledání řešení nejednoznačnost zápisu řešení a) soustavy, 10, b) P. Olšák, FEL ČVUT, c) P. Olšák 2010, d) BI-LIN, e) L, f) 2009/2010, g)l.

Více

4EK213 LINEÁRNÍ MODELY

4EK213 LINEÁRNÍ MODELY 4EK213 LINEÁRNÍ MODELY Úterý 11:00 12:30 hod. učebna SB 324 3. přednáška SIMPLEXOVÁ METODA I. OSNOVA PŘEDNÁŠKY Standardní tvar MM Základní věta LP Princip simplexové metody Výchozí řešení SM Zlepšení řešení

Více

Kapitola 1. Signály a systémy. 1.1 Klasifikace signálů

Kapitola 1. Signály a systémy. 1.1 Klasifikace signálů Kapitola 1 Signály a systémy 1.1 Klasifikace signálů Signál představuje fyzikální vyjádření informace, obvykle ve formě okamžitých hodnot určité fyzikální veličiny, která je funkcí jedné nebo více nezávisle

Více

Základy maticového počtu Matice, determinant, definitnost

Základy maticového počtu Matice, determinant, definitnost Základy maticového počtu Matice, determinant, definitnost Petr Liška Masarykova univerzita 18.9.2014 Matice a vektory Matice Matice typu m n je pravoúhlé (nebo obdélníkové) schéma, které má m řádků a n

Více

Výběr báze. u n. a 1 u 1

Výběr báze. u n. a 1 u 1 Výběr báze Mějme vektorový prostor zadán množinou generátorů. To jest V = M, kde M = {u,..., u n }. Pokud je naším úkolem najít nějakou bázi V, nejpřímočařejším postupem je napsat si vektory jako řádky

Více

Matice přechodu. Pozorování 2. Základní úkol: Určete matici přechodu od báze M k bázi N. Každou bázi napíšeme do sloupců matice, např.

Matice přechodu. Pozorování 2. Základní úkol: Určete matici přechodu od báze M k bázi N. Každou bázi napíšeme do sloupců matice, např. Matice přechodu Základní úkol: Určete matici přechodu od báze M k bázi N. Každou bázi napíšeme do sloupců matice, např. u příkladu 7 (v ) dostaneme: Nyní bychom mohli postupovat jako u matice homomorfismu

Více

Derivace funkcí více proměnných

Derivace funkcí více proměnných Derivace funkcí více proměnných Pro studenty FP TUL Martina Šimůnková 16. května 019 1. Derivace podle vektoru jako funkce vektoru. Pro pevně zvolenou funkci f : R d R n a bod a R d budeme zkoumat zobrazení,

Více

Křivky a plochy technické praxe

Křivky a plochy technické praxe Kapitola 7 Křivky a plochy technické praxe V technické praxi se setkáváme s tím, že potřebujeme křivky a plochy, které se dají libovolně upravovat a zároveň je jejich matematické vyjádření jednoduché.

Více

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

Algoritmy I. Číselné soustavy přečíst!!! ALGI 2018/19 Algoritmy I Číselné soustavy přečíst!!! Číselné soustavy Každé číslo lze zapsat v poziční číselné soustavě ve tvaru: a n *z n +a n-1 *z n-1 +. +a 1 *z 1 +a 0 *z 0 +a -1 *z n-1 +a -2 *z -2 +.. V dekadické

Více

KAPITOLA 9 - POKROČILÁ PRÁCE S TABULKOVÝM PROCESOREM

KAPITOLA 9 - POKROČILÁ PRÁCE S TABULKOVÝM PROCESOREM KAPITOLA 9 - POKROČILÁ PRÁCE S TABULKOVÝM PROCESOREM CÍLE KAPITOLY Využívat pokročilé možnosti formátování, jako je podmíněné formátování, používat vlastní formát čísel a umět pracovat s listy. Používat

Více

SIGNÁLY A LINEÁRNÍ SYSTÉMY

SIGNÁLY A LINEÁRNÍ SYSTÉMY SIGNÁLY A LINEÁRNÍ SYSTÉMY prof. Ing. Jiří Holčík, CSc. holcik@iba.muni.cziba.muni.cz II. SIGNÁLY ZÁKLADNÍ POJMY SIGNÁL - DEFINICE SIGNÁL - DEFINICE Signál je jev fyzikální, chemické, biologické, ekonomické

Více

8 Střední hodnota a rozptyl

8 Střední hodnota a rozptyl Břetislav Fajmon, UMAT FEKT, VUT Brno Této přednášce odpovídá kapitola 10 ze skript [1]. Také je k dispozici sbírka úloh [2], kde si můžete procvičit příklady z kapitol 2, 3 a 4. K samostatnému procvičení

Více

Číselné vektory, matice, determinanty

Číselné vektory, matice, determinanty Číselné vektory, matice, determinanty Základy vyšší matematiky LDF MENDELU Podpořeno projektem Průřezová inovace studijních programů Lesnické a dřevařské fakulty MENDELU v Brně (LDF) s ohledem na discipĺıny

Více

Jana Vránová, 3. lékařská fakulta UK

Jana Vránová, 3. lékařská fakulta UK Jana Vránová, 3. lékařská fakulta UK Vznikají při zkoumání vztahů kvalitativních resp. diskrétních znaků Jedná se o analogii s korelační analýzou spojitých znaků Přitom předpokládáme, že každý prvek populace

Více

U Úvod do modelování a simulace systémů

U Úvod do modelování a simulace systémů U Úvod do modelování a simulace systémů Vyšetřování rozsáhlých soustav mnohdy nelze provádět analytickým výpočtem.často je nutné zkoumat chování zařízení v mezních situacích, do kterých se skutečné zařízení

Více

Učební texty k státní bakalářské zkoušce Matematika Základy lineárního programování. študenti MFF 15. augusta 2008

Učební texty k státní bakalářské zkoušce Matematika Základy lineárního programování. študenti MFF 15. augusta 2008 Učební texty k státní bakalářské zkoušce Matematika Základy lineárního programování študenti MFF 15. augusta 2008 1 15 Základy lineárního programování Požadavky Simplexová metoda Věty o dualitě (bez důkazu)

Více

Úvod do lineární algebry

Úvod do lineární algebry Úvod do lineární algebry 1 Aritmetické vektory Definice 11 Mějme n N a utvořme kartézský součin R n R R R Každou uspořádanou n tici x 1 x 2 x, x n budeme nazývat n rozměrným aritmetickým vektorem Prvky

Více

Testy dobré shody Máme dvě veličiny, u kterých bychom chtěli prokázat závislost, TESTY DOBRÉ SHODY (angl. goodness-of-fit tests)

Testy dobré shody Máme dvě veličiny, u kterých bychom chtěli prokázat závislost, TESTY DOBRÉ SHODY (angl. goodness-of-fit tests) Testy dobré shody Máme dvě veličiny, u kterých bychom chtěli prokázat závislost, např. hmotnost a pohlaví narozených dětí. Běžný statistický postup pro ověření závislosti dvou veličin je zamítnutí jejich

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