FAV-ZCU/KIV UPG/04. Základní bitmapová grafika.md

252 lines
9.4 KiB
Markdown
Raw Normal View History

2023-05-24 20:33:41 +02:00
# 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