# Základní bitmapová grafika ## Bitmapová grafika **Bitmapový (rastrový) obrázek** - vytvářen většinou vstupních zařízení (fotoaparát, kamera, scanner, ...) - vzniká také rasterizací vektorové grafiky - obrázek je složen z matice MxN diskrétních pixelů - interně jednorozměrné pole - pro přístup k pixelu [i, j] nutno spočítat index **Pixel** = picture element = obrazový element - nese informaci o barevné hodnotě - **přímé uložení** - většina používaných formátů - barevná hodnota uložena na fixní počet bitů (nejčastěji 24) - **nepřímé uložení** - hodnota pixelu v poli je index do tabulky barev (palety) - vhodné pro obrázky s malým počtem unikátních barev (GIF) - nejčastěji 256 nebo 4096 unikátních barev + 8/12 bitový index - mnoho bitmapových formátů či knihoven z důvodu urychlení požaduje, aby **1. pixel i-tého řádku začínal vždy na začátku bytu** - za posledním pixelem i-tého řádku tedy může být několik nevyužitých bitů ## Modelování reálného světa **Cíl modelování** - zachytit reálnýá svět vstupním zařízením - vytvořit umělý model inspirovaný reálným světem - zobrazit model (obrázek) na výstupním zařízení **Fotorealistické modelování** - snaha, aby lidské vnímání světa počítačové grafiky bylo totožné s vnímáním reálného světa **Lidské oko** - světelné zdroje emitují fotony - pokud fotony viditelného světla dopadnout na sítnici oka, dochází k vizuálnímu vjemu - sítnice (retina) - tyčinky - extrémní citlivost (už při 1 fotonu) - nejcitlivější na modrozelené světlo (cca 505 nm) - dlouhá setrvačnost - noční vidění - čípky - málá citlivost (až při stovkách fotonů) - denní vidění - krátká setrvačnost - tři typy: L, S, M (každý na jinou vlnovou délku) **Jas** - skalární veličina - ovlivněn vlnovou délkou (modrá žárovka se jeví tmavší než bílá) - oko vnímá hodnoty od tisícín po tisíce $Cd \cdot m^{-2}$ - současná zařízení (LCD, tiskárny) však produkují hodnoty jasu jen velmi omezené - **kontrast** - = poměr mezi nejsvětejší a nejtmavší hodnotou, kterou zařízení zvládne - výrobci uváděné kontrasty jsou obvykle nerealistické - v praxi jsou kontrasty úplně jinde - **důsledek**: černou a bílou na různých zařízeních vnímáme různě - jas není vnímán lineárně ($L = I^{0.4}$) - jak vnímán v kontextu okolí **Barva** - fotony různé vlnové délky vnímány jako různě barevné - výsledná barva složena mozkem podle podráždění jednotlivých typů čípků - barva vnímána v závislosti na kontextu + relativní podráždění čípků: hodnoty L, M, S + vnímaný jas B = L + M + S + vnímaná barevnost C = (L/B, M/B, S/B) - **důsledek**: lidské oko je podstatně citlivější na jas než na barvu ## Matematická reprezentace barvy **CIE xy** - standardizovaný matematický model barevného prostoru - libovolný barevný odstín popsatelný dvojicí reálných čísel x, y - směs různých vlnových délek - používá se pro definování alternativních reprezentací barvy **Ideální obrazovka** - 1 zobrazovací element může vysílat (emitovat) fotony o libovolné vlnové délce - rychlost emitování fotonů lze velmi dobře řídit (libovolný jas) - fyzikálně obtížně realizovatelné **Současné reálné obrazovky** - pixel zobrazován několika málo zobrazovacími elementy - realističnost zobrazení závisí zejména na - volbě typů zobrazovacích elementů, tj. jaké vlnové délky mají fotony, které elementy emitují (**barevný rozsah**) - schopnosti zobrazovacích elementů emitovat různě velké množství fotonů za jednotku času (**jasový rozsah**) - pro napodobení většiny reálných barev postačí červený (R), zelený (G) a modrý (G) zobrazovací element (RGB barevný prostor) - počet fotonů, který má element emitovat za jednotku času, určen relativně na intervalu 0.0 - 1.0 - **problém** - volba základních barev R, G, B se liší podle výrobce - různá zařízení mají různý zobrazovací gamut - částečným řešením je zavedení standardizovaného teoretického barevného systému RGB - dochází ke transformaci teoretických hodnot na hodnoty displeje - ne vždy musí být barva na zařízení reprodukovatelná **sRGB** - = standardizovaný barevný systém - základní barvy odpovídají "průměrným" základním barvám v zobrazovacích zařízeních - příliš omezený pro moderní zařízení **scRGB** - barevný sytém od Microsoftu a HP - definice shodná s sRGB - hodnoty r, g, b omezeny na -0.5 až 7.5 místo 0.0 až 1.0 - bohatší barvy **Tiskárny** - zcela odlišný přístup (papír je bílý, potřeba modifikovat množství odraženého světla) - barviva CMY - C (cyan, azurová) - pohltí R - M (magenta, purpurová) - pohltí G - Y (yellow, žlutá) - pohltí B - barviva nejsou čistá, smíšení nedokonalé - z těchto barviv nelze namíchat černou - vyřešeno přidáním K (černé) **CMYK** - barevný prostor o trojici/čtveřici čísel (c, m, y, k) - čistota barev podle výrobce Barva nemůže být reprezentována v počítači jedním univerzálním způsobem. - barvy je možné mezi systémy převádět - může dojít ke ztrátě v důsledku odlišnosti gamutů ### Barevné systémy **RGB** - barevný systém používaný zobrazovacími i vstupními zařzeními - nativně užíván v bitmapových obrázcích - hojně rozšířený (jako sRGB) - **problém**: specifikace barvy není intuitivní **CMY(K)** - pro tiskové účely **HSV** - hue - odstín (0 - 360 stupňů) - saturation - sytost (0 - 1) - value - jas (0 - 1) - jednodušší na zadání Grafické knihovny obvykle umožňují zadáním RGB i HSV složek. **YCbCr, YCoCg, CIE Lab** - jasová složka separována (Y, L) - barevnost ve zbývajících složkách - výhodné pro kompresní účely (využívá citlivosti oka na jas) ### Ukládání barvy - potřeba uložit v podporovaném formátu (omezená přesnost) - desetiné datové typy - přesnější - celočíselné datové typy - často používané - omezenější přesnost, ale úspornější - fixní počet bitů **8 bitů** (byte) - rozsah 0 - 255 - u RGB je to 16.7 miliónu různých barev - nejrozšířenější, pro většinu aplikací postačuje **High-Color** - RGB barva ve 2 bytech - dvě možnosti - jeden bit volný (např. pro průhledný/neprůhledný) - 5 bitů pro R a B, 6 bitů pro G - jen 32768 nebo 65536 barev **scRGB** - hodnota $x \in (-0.5, 7.5)$ uložena na 16 bitech jako $8192 \cdot x + 4096$ - 48 bitů na pixel (případně 64 při použítí 16 bitů pro průhlednost) **12, 14 nebo 16 bitů** - 4096, 16384 nebo 65536 úrovní - obvykle ukládáno na 2 byty - nejvyšší bity se nepoužijí - používá se např. ve filmovém průmyslu ### Digitalizace barvy - vstupní zařízení obsahují fotocitlivé senzory na základní barvy (nejčastěji RGB) **Diskretizace jasového rozsahu** - proces kvantizace - jasový rozsah rozdělen na m úrovní - skutečná hodnota zaokrouhlena na hodnotu nejbližší úrovně **Uniformní diskretizace** - nejjednodušší, nebere v úvahu lidské vnímání **Neuniformní diskretizace** - jasová hodnota podrobena gama korekci $L = I^{0.4}$ - ukládám L místo I (skutečná hodnota jde zjistit jako $I = L^{2.5}$) - prováděno automaticky většinou zařízení - menší chyba reprezentace obrazu ## Formáty bitmapové grafiky - typicky obsahují hlavičku následovanou daty (pixely) - hlavička - signatura formátu - rozlišení obrázku - počet barevných složek a počet bitů každé - způsob uložení dat (komprese, little/big endian) **BMP** - podporován většinou graf. knihoven - základ (nejrozšířenější část) - bezeztrátový formát - RGB barevný systém - podpora palety o 1, 16 nebo 256 barev - podpora přímé reprezentace barev - 16 bpp (HighColor), 24 bpp (TrueColor) nebo 32 bpp (TrueColor) - podpora průhlednosti v režimu 32 bpp (není standardní) - data mohou být i obrázek v PNG nebo JPEG **GIF** - podporován většinou graf. knihoven - bezeztrátový formát - data komprimována LZW slovníkovou metodou (delší sekvence nahrazeny kratšími) - RGB barevný systém s paletou 2, 4, 8, 16, 32, 64, 128 nebo 256 barev - podpora průhlednosti (binární) a animací - malá velikost, vhodné pro internet **PNG** - mnoho aplikací podporuje pouze částečně - bezeztrátový formát - data komprimovaná slovníkovou metodou - RGB(A) barevný systém - paleta o 2, 4, 16 nebo 256 barvách - přímá reprezentace o 1, 2, 4, 8 nebo 16 bitů na barevnou složku - podpora úplné průhlednosti - vhodné pro rastrovanou vektorovou grafiku - nevhodné pro zašumělá data (fotografie) **JPEG** - ztrátový formát (využití nedokonalosti lidského zraku) - degradace kvality obrazu - kompresní poměry 5:1 až 20:1 - velká komprese = viditelné artefakty - barevný systém YCbCr - přímá reprezentace barvy, TrueColor - komprese založená na diskrétní kosinové transformaci následované kvantizací a RLE + slovníkovou kompresní metodou - nepodporuje průhlednost - vhodné pro fotografie určené k archivaci - JPEG (s EXIF) obvyklým výstupem z digitálních fotoaparátorů - nevhodné pro uložení obrazu, který - bude postupně upravován - bude rozpoznáván počítačem