Přednáška Rastrový obraz Barevný prostor a paleta Zmenšení barevného prostoru Základní rastrové formáty etody zmenšení barevného prostoru. Cíl: snížení počtu barev etody: rozptylování, půltónování, prahování, převod na odstíny šedé Důvod: omezeného počtu barev na výstupním zařízení. snížení velikosti souboru Žára, J., Beneš, B., Felkel, P. oderní počítačová grafika. Computer Press, Brno, 99. ISBN 76499. Foley, Van D. Computer Graphics. Principles and Practice. AddisonWesley,99. URRAY, James D., VANRYPER, William. Encyklopedie grafických formátů. Petr Klíma; gr. Ivo agera.. vyd. Praha : Computer Press, 997. 9 s. ISBN 7633. Počítačová grafika, PV, UPCEKID, [/] Počítačová grafika, PV, UPCEKID, [/] Přednáška Prahování Půltónování Nejjednodušší metoda, nejhorší výsledky Nedochází k zvětšení rozlišení Postup: pro celý obrázek se zvolí jedna prahová hodnota v rozsahu, i AX, kde i AX je maximální intenzita barevného rozsahu převáděného obrázku. Nejčastěji se práh volí v polovině intervalu. pro každý pixel se provede: pokud je intenzita daného pixelu i VST_PIX > práh, potom i VÝST_PIX (resp. 55) jinak i VÝST_PIX ze upravit na vyšší počet výstupních barev (odstínů). Časté použití jako základ pro další zpracování obrazu (segmentace, rozpoznávání objektů) Nahrazení vícebarevného pixelu několika pixely s omezenou barevností Na základě odstínu (barvy) původního pixelu nahradíme tento pixel na výstupu skupinou menších bodů s použitím pouze (například) dvou barev. Zvyšuje se rozlišení na úkor barevné hloubky. Použití půltónovací matice o rozměrech [n x n] Příklad: matice na převedení 6 a 4 odstínů na barvy p 3 p 4 5 5 9 3 4 7 6 3 Počítačová grafika, PV, UPCEKID, [/] Přednáška 3 Počítačová grafika, PV, UPCEKID, [/] Přednáška 4
Přednáška 5 Počítačová grafika, PV, UPCEKID, [/] Náhodné rozptylování Nedochází k zvětšení rozlišení Velmi jednoduchá metoda pro každý pixel upravovaného rastru se provede: vygenerování náhodného čísla i RAND v rozsahu, i AX ), kde i AX je maximální intenzita barevného rozsahu převáděného obrázku pokud je intenzita daného pixelu i VST_PIX > i RAND, potom i VÝST_PIX (resp. 55) jinak i VÝST_PIX ze upravit na vyšší počet výstupních barev (odstínů). Přednáška 6 Počítačová grafika, PV, UPCEKID, [/] aticové rozptylování Nezvyšuje rozlišení obrázku Použití rozptylovacích matic, definujících jednotlivé kombinace rozložení výstupních bodů. Použití odlišných rozptylovacích matic p pro tisk a d pro zobrazení na monitoru Zvětšení rozlišení rastru se zabrání použitím pouze jednoho prvku z matice pro každý vstupní pixel (např. pomocí funkce OD (modulo), aplikované na souřadnice pixelu v rastru). Přednáška 7 Počítačová grafika, PV, UPCEKID, [/] Příklad rozptylovacích matic 3 p p p p p3 p4 3 7 4 5 4 6 3 9 5 p 5 9 6 3 4 7 4 5 3 d p p p p p p Přednáška Počítačová grafika, PV, UPCEKID, [/] Rozptylování s distribucí chyby epší zohlednění vznikající chyby při převodu Chyba se přenáší na sousední dosud nezpracované pixely, dle daného schématu Existuje několik variant (schémat) pro rozpočítání chyby na okolí: FloydSteinberg, Burkes, Stucki, Výpočet chyby: chyba i PUVODNI i UPRAVENY i PUVODNI je původní jas (barva) zpracovávaného pixelu i UPRAVENY je nově vypočtený jas (barva) zpracovávaného pixelu Zpracování pixelů daným směrem Při zpracování se využívá dočasná paměť matice o velikosti odpovídající zpracovávaného obrázku nebo pouze několik řádků (dle metody), které se postupně zaměňují
Princip distribuce FloydSteinberg Další distribuční schémata Distribuční schéma 7/6 Stucki /4 4/4 x /4 /4 4/4 4/4 /4 3/6 5/6 /6 /4 /4 4/4 /4 /4,,,,,, 953 5 9 55 x x x x x x x x x x x 9 55 Chyba 9 55 64 +,,,,,, x.,,,,,, 4,,,,, Burkes /3 4/3 x /3 /3 4/3 4/3 /3 953 5 9 953 5 9 x x x 55 x x x x x x x x x x x x x 55 55 x x x x x x x x x 5 Chyba + 3 + 53,4 3,4 55 Chyba 3,4 55 +,4 + x x 53,4,9 34, 7,6 + x x x,4,9 39,4 6,5, Stevenson / 5/ / 6/ / x 6/ 3/ / 3/ / 6/ 5/ x x x Počítačová grafika, PV, UPCEKID, [/] Přednáška 9 Počítačová grafika, PV, UPCEKID, [/] Přednáška Barevné systémy Barevný prostor RGB Černá [55,55,55] Červená [,55,55] Žlutá [,,55] Šedá [7,7,7] Sv. šedá [63,63,63] Černá [,,] Červená [55,,] Žlutá [55,55,] Šedá [7,7,7] Sv. šedá [9,9,9] Počítačová grafika, PV, UPCEKID, [/] Přednáška Počítačová grafika, PV, UPCEKID, [/] Přednáška
Barevná paleta Původní obrázek: 3 x 5 pixelů Barevná hloubka: 3B (True Color) Počet použitých barev: 356 Velikost: kb Vhodně upravený obrázek Barevná hloubka: B Počet použitých barev: 56 Velikost: 74 kb Nevhodně upravený obrázek Barevná hloubka: B Počet použitých barev: 3 Velikost: 74 kb Barevná paleta 33 Rozdělení barevného prostoru RGB v jednotlivých osách (kanálech) Red 3 bity ( úrovní) Green 3 bity ( úrovní) Blue bity (4 úrovně) Výpočet pro všechny kombinace jednotlivých úrovní na osách RGB Obsahuje rovnoměrně všechny barvy (což může být výhoda i nevýhoda) Klady: jednoduchá tvorba Zápory: horší reprodukce některých obrázků, obsahujících pouze odstíny několika barev Počítačová grafika, PV, UPCEKID, [/] Přednáška 3 Počítačová grafika, PV, UPCEKID, [/] Přednáška 4 Tvorba palety 33 Hraniční hodnoty varianty Rozdělení RGBos na pravidelné úseky Vytváření 56 kombinací pro Index..55 Pro přístup do polí složek RGB se využívají příslušné bity indexu: R: 7. 5. bit G: 4.. bit B:. a. bit Red, Green: Δ 55 / 7 36,4 (varianta Δ 55 / 3) 64 9 55, 36 37, 73 74, 9, 46 47, 3,9, 55, 9, 55 56, 9 9, 7, 64 65,, 37 37, 55, 3 3, 63 64, 95 96, 7, 59 6, 9 9, 3 4, 55 Blue: Δ 55 / 3 5 (varianta Δ 55 / 4 64) 64 9 55, 5 6, 7 7, 55, 4 43, 7, 3 4, 55 Počítačová grafika, PV, UPCEKID, [/] Přednáška 5, 63 64, 7, 9 9, 55 Počítačová grafika, PV, UPCEKID, [/] Přednáška 6
Barevný prostor a paleta 33 Hledání nejbližší barvy Určí se prahové hodnoty (stejně jako u tvorby palety) pro jednotlivé barevné kanály: R, G: (,36,73,9,46,,9,55) B: 4 (,5,7, 55) Určí se prahová hodnota pro každý kanál, která je větší nebo rovna hodnotě R, G, B v určované barvě nebo nejblíže hodnotě R, G, B v určované barvě Z indexů prahových hodnot se určí index barvy v paletě (..55) následujícím způsobem: (ind_ph_red << 5) + (ind_ph_green << ) + ind_ph_blue Počítačová grafika, PV, UPCEKID, [/] Přednáška 7 Počítačová grafika, PV, UPCEKID, [/] Přednáška Paleta 6*6*6 Optimalizovaná (adaptivní) paleta 6 hodnot pro každý RGB kanál 6 barev Stejné rozlišení pro jednotlivé složky Horší využití 56 pozic Prostor pro některé systémové barvy a šedé odstíny Snaha o maximální přizpůsobení se barvám použitým v rastru Dává lepší výsledky Někdy se do ní zahrnují i základní barvy Pro každý obrázek vlastní paleta Složitá tvorba vytvoření histogramu a jeho převedení do prostoru RGB krychle hledání určitého počtu (56) oblastí, pokrývající co nejvíce použitých barev různá kritéria pro tvorbu oblastí (podobná velikost, co nejmenší ohraničený prostor) Počítačová grafika, PV, UPCEKID, [/] Přednáška 9 Počítačová grafika, PV, UPCEKID, [/] Přednáška
Vytváření adaptivní palety shora dolů Vytvoření minimální oblasti obsahující všechny použité barvy Opakované zvolení oblasti, která má nejdelší některou z hran a její rozdělení v tomto směru na dvě oblasti, ořezání volného prostoru u nově vytvořených oblastí dokud počet oblastí nedosáhne požadovaného počtu barev v paletě Zvolení jedné zástupné barvy do palety pro každou oblast (těžiště, nejfrekventovanější barva, vážený průměr barev,...) Vytváření adaptivní palety zdola nahoru Shluková metoda Počítačová grafika, PV, UPCEKID, [/] Přednáška Počítačová grafika, PV, UPCEKID, [/] Přednáška Ztrátová a neztrátová komprese Ztrátová a neztrátová komprese () Většina grafických formátů podporuje některý způsob komprese obrazových dat. Většina z nich je neztrátová, to znamená, že pokud se skupina dat zakóduje a zpětně dekóduje, dostaneme přesně původní data. Žádná data nebudou ztracena, nebo pozměněna. Ztrátové komprese naopak některá data odstraní, aby se dosáhlo lepšího kompresního poměru. Příklady použití komprese jednotlivými grafickými formáty: DCT JPG, JPEG DWT JPEG ZW PNG, GIF, TIFF CCITT TIFF RE BP, PCX, TIFF Pixelové zhušťování uložení informace o více pixelech do jednoho B, za předpokladu rastru např. 4 b na pixel. Proudové kódování RE pracuje a na principu opakovaných řetězců znaků. Je většinou neztrátová (existuje i ztrátová varianta), rychlá, ale málo výkonná. Příklad: AAAAAAA66666XXXXXXt 7A566Xt Nebo efektivnější modifikace 6A465Xt ZW komprese nejrozšířenější metoda, neztrátová, využívá se ve většině kompresních programů, rychlý, výkonný, založený na slovníkové kompresi. Počítačová grafika, PV, UPCEKID, [/] Přednáška 3 Počítačová grafika, PV, UPCEKID, [/] Přednáška 4
Ztrátová a neztrátová komprese () HuffmanShannonovo kódování (CCITT) založeno na rozboru komprimovaného textu, určení četnosti jednotlivých znaků a překódování stylem: znak s nejvyšší četností nejkratší kód. Př.: Text se znaky: a (5 %), b (5 %), c ( %), d (5 %), e (44 %), x ( %); znaky budou mít kódy: a, b, c, d, e, x ; text: acbexeax, kód s proměnnou délkou znaku: JPEG komprese ztrátová komprese, založená na Diskrétní kosinové transformaci, vynikající kompresní poměr, použití pro obrázky s velkou barevnou hloubkou, možnost volby požadovaného kompresního poměru a tím i kvality obrazu. BP (icrosoft Windows Bitmap) Barevná hloubka:, 4,, 4 bitů Bez možnosti více předloh v obrázku ožnost RE komprese Bez možnosti transparentních obrázků Více verzí (v, v3) bitmap. hlavička (B, velikost souboru, ofset obraz. dat) informační hlavička (šířka, výška, počet rovin, barevná hloubka, kompresní metoda, velikost bitmapy, rozlišení, počet barev, počet důležitých barev v paletě) paleta (ne pro True Color BP) obrazová data Počítačová grafika, PV, UPCEKID, [/] Přednáška 5 Počítačová grafika, PV, UPCEKID, [/] Přednáška 6 GIF (Graphics Interchange Format) PNG (Portable Graphics nerwork) Barevná hloubka: bitů ožnost více předloh v obrázku ZW komprese s proměnnou délkou kódu (licence od 995, poslední licence vypršela.. 6) Jednorozměrné prokládání Posloupnost obrázků (animované GIFy) Průhlednost hlavička (GIF+Verze) šířka, výška, informace o barvě pozadí, poměr stran globální tabulka barev Předlohy..n Informace o předloze, lokální tabulka barev, obrazová data Portable Network Graphics, zkratka se má vyslovovat jako "ping" a má též značit "PNG's Not GIF" Od roku 996 Bezztrátová kompresní metoda epší kompresní poměr oproti GIF (5 4 %) Až 4 bitová barevná hloubka (6 b. v odstínech šedé) Částečná průhlednost (alfa průhlednost) ůže obsahovat textová data Chybí podpora animací Vhodný formát pro WEB Nezatížen poplatky Počítačová grafika, PV, UPCEKID, [/] Přednáška 7 Počítačová grafika, PV, UPCEKID, [/] Přednáška
TIFF (Tag Image File Format) Barevná hloubka: 4 bitů ožnost více předloh v obrázku Rozšířen na různých platformách Kompresní algoritmy (RE, ZW, CCITT, JPEG) Podporuje ukládání v pruzích a dlaždicích Komplikovaný formát, více možností uspořádání Hlavička TIFF souboru (verze a odkaz na první IFD) IFD..n (Image File Directory) info o jedné předloze, odkaz na data této předlohy, která mohou být členěna do více částí, odkaz na další IFD Předloha..n JPEG (Joint Photographic Experts Group) JFIF, JPG Rastrový formát Barevná hloubka: pouze 4 bitů (6.7 miliónů barev) Ztrátová komprese (JPEG) Volitelná úroveň ztrátovosti (vždy ztrátová komprese) Vhodný na uchovávání velkých plnobarevných fotografií (v barevné hloubce True Color) Vhodný na publikování na Internetu (z důvodu velikosti) Nevhodný na ukládání čárové grafiky (vytváří přechody mezi objekty a pozadím, které v původním obrázku nebyly) Počítačová grafika, PV, UPCEKID, [/] Přednáška 9 Počítačová grafika, PV, UPCEKID, [/] Přednáška 3 Volba vhodného formátu Originální obrázek 3 x 6 pixelů, 6.7 miliónů barev Velikost BP souboru: 5 kb (6.7 miliónů barev) Velikost BP souboru: 4 kb (56 barev) Velikost GIF souboru: 4 kb (56 barev) JPEG kompresní poměr Velikost: 6 kb JPEG kompresní poměr 95 Velikost: 3 kb JPEG kompresní poměr 5 Uloženo ve formátu GIF Uloženo ve formátu JPEG Velikost: kb Počítačová grafika, PV, UPCEKID, [/] Přednáška 3 Počítačová grafika, PV, UPCEKID, [/] Přednáška 3
JPEG JPEG příklad Nový formát (práce od r. 995, uvedení ) Kompresní algoritmus založen na vlnkové (Wavelet) transformaci (lepší a rychlejší komprese) ožnost bezztrátové komprese Ruší omezení 64 x 64 pixelů (původní JPEG) ožnost použití pro čárovou grafiku Progresivní transmise, tj. možnost zobrazení a zpracování části či náhledu komprimovaného obrázku ještě před úplným načtením jeho souboru Struktura umožňující s obrázkem ukládat nejrůznější metadata ožnost využití různých barevných módů (JPEG podporuje pouze RGB) Zdroj: www.digineff.cz/cojeto/ruzne/jpg.html Počítačová grafika, PV, UPCEKID, [/] Přednáška 33 Počítačová grafika, PV, UPCEKID, [/] Zdroj: www.digineff.cz/cojeto/ruzne/jpg.html Přednáška 34 Základní podpora rastrových obrázků (Java) Výběr a načtení obrázku Třída JFileChooser pro výběr požadovaného souboru Vytvoření Nastavení filtru void setfilefilter(filefilter filter) //"BP & JPG & GIF Images,"bmp", "jpg", "gif Zobrazení dialogu showopendialog(component parent) Porvrzení výběru návratová hodnota APPROVE_OPTION Získání souboru File getselectedfile() Třída ImageIO Načtení obrázku static BufferedImage read(file input) Image obrazek; obrazek ImageIO.read(fileChooser.getSelectedFile()); Zobrazení obrázku Třída Graphics boolean drawimage(image img, int x, int y, ) Kreslení celého obrázku na pozici [x, y] ve velikosti pixel na pixel boolean drawimage(image img, int x, int y, int width, int height, ) Kreslení celého obrázku do pravoúhlé oblasti [x, y, x+width, y+height] boolean drawimage(image img, int dx, int dy, int dx, int dy, int sx, int sy, int sx, int sy, ) Kreslení výřezu obrázku (definovaného pomocí pravoúhelníku [sx, sy, sx a sy] do pravoúhlé oblasti [dx, dy, dx, dy] Základní podpora rastrových obrázků (Java) Rozměry, přístup k pixelům, kreslení na obrázek Třída BufferedImage třída (jedna z několika možných) umožňující přístup k jednotlivým pixelům Vytvoření BufferedImage(int width, int height, int imagetype) imagetype: TYPE_INT_RGB, TYPE_INT_ARGB, TYPE_BYTE_GRAY, TYPE_BYTE_INDEXED, BufferedImage bimage new BufferedImage (,, TYPE_INT_ARGB) Přetypování z existujícího Image BufferedImage bimage (BufferedImage) image; Rozměry bitmapy (obrázku) int bimage.getwidth() int bimage.getheight() Získání a nastavení barvy pixelu int bimage.getrgb(int x, int y) void bimage.setrgb(int x, int y, int barva); Kreslení na bitmapu (obrázek) Graphics g bimage.getgraphics() g.draw g.fill Počítačová grafika, PV, UPCEKID, [/] Přednáška 35 Počítačová grafika, PV, UPCEKID, [/] Přednáška 36