Počítačová grafika Pixely Pixely, barevné palety a rozptylování barev Jana Dannhoferová (jana.dannhoferova@mendelu.cz) Ústav informatiky, PEF MZLU pixel (Picture Element) nejmenší zobrazitelná část obrazu počet bitů na pixel udává počet možných barev (počet bitů roste přímo úměrně počtu barev) nejčastější: 16,8 miliónů barev (256 3 ) 256 stupňů šedi vznik analogií 2 Barevná hloubka pixelu Barevná hloubka pixelu počet bitů, které reprezentují daný pixel, určuje počet barev, kterých může pixel nabýt: čím větší počet bitů, tím vetší možný počet barev hloubkou pixelu se většinou rozumí právě počet bitů nutných pro reprezentaci jeho barvy více bitů na jeden pixel také znamená větší paměťovou náročnost uložení grafické informace! Počet možných barev Hloubka pixelu Obvyklé označení 2 1 bit Mono Color 16 4 bity základní 256 8 bitů = 1 byte VGA 32768 15 bitů Low Color 65536 16 bitů = 2 byty High Color 16 777 216 24 bitů = 3 byty True Color 4 294967 296 32 bitů Super True Color 281 474 976 710 565 48 bitů Deep Color 3 4 Omezená barevná škála Redukce počtu barev skutečný počet barev na pixel se někdy liší od těch, které mohou být zobrazeny na výstupním zařízení (ztráta barev a kvality) zařízení s omezenou škálou zobrazitelných odstínů nutno stanovit: které barvy z nich vybereme do např. 256-ti prvkové barevné palety jak bude naloženo s barvami, na které se již nedostalo řešením může být standard tzv. indexovaných barev (hovoříme o tzv. barevných paletách) 5 Problém: Jak zobrazit obraz s více odstíny šedi na zařízeních umožňujících zobrazovat pouze omezený rozsah hodnot nebo pouze černou a bílou (tiskárny) tak, aby byl dosažen přibližně stejný vjem? polotónování techniky, které dokáží z několika barev vytvořit iluzi bohaté barevné škály u tiskáren rozptylování polotónování je jejím speciálním případem vhodné pro zobrazení obrázku 6 1
Metoda konstantního prahu pro zpracování černobílých i barevných obrázků barevné rozptylování je speciálním případem rozptylování obrazu ve stupních šedi zobrazení odstínů šedi na dvouúrovňovém zařízení Obrázek obsahující 16(=2 4 ) odstínů šedi chceme vykreslit na displeji, který zobrazuje pouze černou a bílou. 1) prahování stupně šedi černobílý obraz zobrazení bodů s intenzitou větší než hodnota prahu P (porovnáváme vstup se zadanou hranicí) stejná velikost obrazu špatné znázornění obrazového vjemu (ostře černobílý obraz) if (I[x,y]<P) then PutPixel(x,y,black) else PutPixel(x,y,white) 7 8 Metoda konstantního prahu Metoda konstantního prahu 9 10 Náhodné rozptýlení 2) náhodné rozptýlení zachování původní velikosti obrazu větším plochám dodává vzhled drsného povrchu funkce RANDOM generátor náhodných čísel <0,15> if (I[x,y]<random(15)) then PutPixel(x,y,black) else PutPixel(x,y,white) Příklad (pro 16 úrovní šedi): pro černé plochy I=0 bude vždy I=0 pro bílé plochy I=15 bude vždy I=1 pro I=10 bude přibližně 10/15 černých a zbytek bílých 11 12 2
Náhodné rozptýlení 3) maticové rozptýlení generování různých odstínů šedi podle pravidelných, předem daných vzorků složených z bílých a černých bodů rozptylovací matice velikosti nxn vysoká kvalita zachování informace dva případy: 1 bod vstupního obrazu = vzor (matice) 1 bod vstupního obrazu = 1 bod vzoru 13 14 a)dochází ke zvětšení velikosti obrazu 1 pixel je nahrazen skupinou pixelů výsledných (jeden bod obrazu je nahrazen vzorem) pro generování různých odstínů šedé barvy se používají předem dané vzory složených z bílých a černých bodů Rozptylovací matice 2x2 pro vstupní intenzitu <0,4>. Pro větší škálu vstupních intenzit je nutno použít matice vyšších řádů! a)dochází ke zvětšení velikosti obrazu 1 pixel je nahrazen skupinou pixelů výsledných (jeden bod obrazu je nahrazen vzorem) pro generování různých odstínů šedé barvy se používají předem dané vzory složených z bílých a černých bodů Rozptylovací matice 2x2 pro vstupní intenzitu <0,4>. Pro větší škálu vstupních intenzit je nutno použít matice vyšších řádů! 15 16 Rozptylovací matice Rozptylovací matice Rozptylovací matice 4x4 pro vstupní intenzitu <0,15>. M = 0 6 13 11 9 15 4 2 14 8 3 5 7 1 10 12 Poznámka: Rozptylovací matice definují tzv. magické čtverce. 17 18 3
Magické čtverce Magické čtverce Matice displeje (tzv. křížkový stínovací vzor) Matice tiskárny (tzv. puntíkový vzor) 19 20 b)nedochází ke zvětšení velikosti obrazu hodnoty v matici určují, při jaké velikosti vstupního odstínu šedi se na výstupu objeví v odpovídajícím místě 1 (bílá) prvek matice je použit jako prahová hodnota (jeden bod obrazu je nahrazen jedním bodem ze vzoru) Otázka: Který prvek matice 2x2 nebo 4x4 použít jako prahovou hodnotu? i = x mod n + 1, j = y mod n + 1 if (I[x,y]<D[i,j]) then PutPixel(x,y,black) else PutPixel(x,y,white) 21 barevné maticové rozptýlení různé matice pro různé barevné složky vzory se natáčejí, aby se potlačila opticky zřetelná pravidelnost matic například: černá: úhel 45º fialová: úhel 75º žlutá: úhel 90º modrozelená: úhel 105º 22 Floyd-Steinberg 4) distribuce chyby zachování stejné velikosti obrazu rozdíl skutečné intenzity a intenzity zobrazovaného bodu (ztráta) je distribuován na okolní pixely chyba se započítá sousedům a je tlačena vpřed (efekt vlnovek) pixely nutno zpracovávat po řádcích (nebo sloupcích), ale ne libovolně! metoda distribuce chyby pravidla pro rozdělení chyby do okolních pixelů byla vytvořena empiricky (jsou známy asi 4 různé způsoby distribuce) C in = 5 C out = 0 (zanedbanou hodnotu 5 přičtu k nejbližším okolním pixelům) C in = 11 C out = 1 (zanedbanou hodnotu 4 (=15-11) odečtu od nejbližších okolních pixelů) 23 24 4
Floyd-Steinberg Floyd-Steinberg zpracované pixely 7/16 1/16 3/16 5/16 Poznámka: Před vykreslením každého pixelu je ke vstupní hodnotě C in přičtena či odečtena chyba z okolních pixelů (paměť chyby). Je zřejmé, že chyby jsou neceločíselné! 25 26 Floyd-Steinberg Barevné palety 27 pixel nese barevnou informaci v určitém barevném modelu (nejčastěji RGB) řešením může být standard tzv. indexovaných barev (hovoříme o tzv. barevných paletách) výběr a parametry barev se většinou určují pro každý obraz zvlášť (podle jeho barevného ladění) barvy jsou uloženy v tabulce, která je součástí souboru Např. 256 barev (8 bitů na pixel, 2 8 ) 64 barev (6 bitů na pixel, 2 6 ) 28 Barevné palety Barevné palety Vycházejme ze situace, kdy vstupní barevné informace jsou vypočítávány v kvalitě 24 bitů na pixel a mají být zobrazeny na zařízení s 8 bity na pixel. Předpoklad: 8 bitů na pixel je indexem do palety, ve které je možné nastavit libovolných 256 odstínů z 16,8 miliónů možných barevných kombinací. 29 barevná paleta (colormap) jednorozměrné pole hodnot barev slouží k redukci počtu barev grafický soubor s paletou obsahuje popis palety a vlastní data (barvy jsou určeny indexem do palety) Otázka: Kdy je vhodné ukládat data jako index do palety? rozlišujeme různé typy palet: převod na odstíny šedi přednastavené (univerzální) barevné palety adaptované barevné palety 30 5
Univerzální palety paleta 3-3-2 8x8x4 odstínů barvy 8 bitů (256 barev/zástupců do palety) rovnoměrný výběr barev z krychle RGB (ale krychli nemůžeme ve 3 osách rozdělit rovnoměrně!) pro obrazy s různým barevným složením dělení na řezy: 8 odstínů (2 3 ) pro červenou 8 odstínů (2 3 ) pro zelenou 4 odstíny (2 2 ) pro modrou Univerzální palety paleta 5-6-5 32x64x32 barvy 16 bitů (High Color) (maximálně 65 536 barev) jedna barva má pouze 32 nebo 64 odstínů paleta 5-5-5 32x32x32 barvy 16 bitů (High Color) (maximálně 32 768 barev) všechny 3 barvy mají hloubku pouze 5 bitů paleta 7-12-3 zohledňuje různou citlivost oka na barevné složky (128x4096x8) 31 32 Univerzální palety Adaptivní palety nevýhody univerzálních palet: nerespektují barevnou strukturu konkrétního obrazu obsahují i takové odstíny, které se v obrazu vůbec nevyskytují (případně se vyskytují minimálně) 33 paleta optimalizovaná pro jeden konkrétní obraz odpovídá rozložení barevných odstínů v konkrétním obraze např. obrázky ve formátu GIF výpočet palety bývá časově i paměťově náročný možností, jak vybrat barvy do palety, je mnoho základní metody: shora dolů (dělení, výběr z množiny použitých barev např. podle četnosti) zdola nahoru (sdružování příbuzných barev do skupin) 34 Adaptivní palety Adaptivní palety tvorba histogramu vstupních odstínů oblasti blízkých barev vstupních odstínů nutno nalézt 256 nejvhodnějších zástupců jedna položka palety = jedna oblast v programu Adobe Photoshop Obraz / Režim / Indexované barvy Paleta: webová, rovnoměrná, systémová (Win, Mac), perceptuální, selektivní, adaptivní, jiná 35 36 6
Literatura Beneš, B., Sochor, J., Žára, J. Algoritmy počítačové grafiky. ČVUT: Praha, 1996. Beneš, B., Felkel, P., Sochor, J., Žára, J.: Moderní počítačová grafika. Computer Press: Brno, 2004. Sochor, J.: Základy počítačové grafiky. FI MU: Brno, 2001. 37 7