252 lines
No EOL
9.4 KiB
Markdown
252 lines
No EOL
9.4 KiB
Markdown
# 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 |