Cvičení 11 - Barevné modely, formáty obrazových dat
A) Teoretický úvod
Důležitým parametrem obrazu je jeho barva (resp. barva zachycených objektů). Fyzikálně je barva vlastnost světla a je dána podílem jednotlivých vlnových délek daného světla v rámci barevného spektra. Pro zjednodušený popis barevné informace se používají různé tzv. barevné modely. Jsou to abstraktní matematické modely popisující barvy na základě podílu jednotlivých složek, kterými mohou být vybrané základní barvy nebo jiné parametry. Množina barev definovaná daným barevným modelem se nazývá barevný prostor. Kromě modelů RGB a CMYK založených na míchání barev (aditivní, resp. subtraktivní) existují i jiné modely pracující s jasem a dalšími parametry, např. HSV nebo Lab. Lidskému vnímání barev nejvíce odpovídá model HSV, který se skládá ze složky H – hue (barevný odstín) udávající polohu barevného odstínu na standardním barevném kole (360° = červená, 120° = zelená, 240° = modrá), složky S – saturation (nasycení) udávající v procentech množství šedi v poměru k odstínům barvy a složky V – value (jas) udávající relativní světlost nebo tmavost barvy. Nejlépe je barevné spektrum vyjádřené hodnotami HSV vidět na kónickém modelu.
Převod z RGB spektra do HSV lze provést podle následujícího algoritmu (níže vlevo), kde složky R', G', B' leží v intervalu <0, 1> a Cmax a Cmin je nejvyšší, resp. nejnižší hodnota z R', G', B', Δ = Cmax – Cmin. Dalším často používaným modelem je YCbCr. YCbCr je subtraktivní model podobně jako CMY. Je složen z jasové složky Y a dvou chromatických složek. Převod z RGB spektra do YCbCr lze po úpravách definovat vztahem vpravo.
Pro ukládání obrazových dat lze využít různé grafické formáty. Jedná se o standardy jak ukládat grafické informace a případná související data do jednoho souboru. Obvykle je udáván příponou souboru. Základní rozdělení grafických formátů je podle způsobu uložení grafických informací na bitmapové a vektorové. Pro snížení datového toku při ukládání nebo transportu dat se využívá speciálního postupu, tzv. komprese (komprimace) dat. Komprese je způsob „zhušťování dat“, kdy se odstraňují méně přínosné (redundantní) informace při zachování určité kvality. Podle komprese můžeme dělit grafické fomáty na nekomprimované a komprimované. U komprimovaných rozlišujeme formáty s bezztrátovou kompresí, kdy i po komprimaci si soubory zachovávají identickou informaci s předlohou (algoritmy vypouští informace, které jsou nadbytečné, ale je možné je zpětně dopočítat). Obvykle není tak účinná jako druhý typ – ztrátová komprese dat, kdy je při kompresi část grafické informace nenávratně zahozena. Používá se tam, kde je možné ztrátu některých informací tolerovat a kde nevýhoda určitého zkreslení je bohatě vyvážena velmi významným zmenšením souboru. Kompresní postupy lze dále dělit např. podle výpočetní náročnosti na symetrické a asymetrické nebo podle počtu průchodů na jednoprůchodové a víceprůchodové. Mezi nejpoužívanější kompresní metody patří např. RLE, LZW, LZ-77, Huffmanovo či aritmetické kódování, fraktálová komprese, DCT a další. Nekomprimovaným grafickým formátem je RAW (syrový). Formáty BMP a TIFF mohou být nekomprimované nebo používají bezztrátovou kompresi. Mezi další bezztrátové formáty patří např. PNG, PCX, GIF. Omezením formátu GIF je, že může obsahovat pouze 256 barev, má ale možnost průhlednosti a dokonce jednoduché animace. Nejpoužívanějším ztrátovým formátem je JPEG, u kterého je možné nastavit kvalitu (kompresní poměr) v intervalu <0, 100>.
B) Úkoly
- Podle definičního vztahu uvedeného v teoretickém úvodu převeďte barevný RGB obraz rubikovaC.bmp do modelu HSV. Implementaci ověřte srovnáním s knihovní funkcí rgb2hsv vykreslením pod sebou vlastních a knihovních jednotlivých složek přehledně do jednoho okna.
- Podobně jako v předchozím bodě převeďte barevný obraz do modelu YCbCr. Implementaci ověřte srovnáním s knihovní funkcí rgb2ycbcr vykreslením pod sebou vlastních a knihovních jednotlivých složek přehledně do jednoho okna.
- Z barevných modelů RGB, HSV, YCbCr vyberte nejvhodnější pro co nejsnazší a nejkvalitnější segmentaci (prahováním) žluté barvy na stejném obraze jako v předchozích dvou bodech. Můžete pro to použít i vestavěnou aplikaci Color Thresholder (záložka APPS).
- Původní barevný obraz uložte na disk v různých grafických formátech. Vyzkoušejte bezztrátový i ztrátový formát. Případnou ztrátu/změnu informace ověřte znovunačtením uloženého obrazu a porovnáním (odečtením) s původním. Po načtení souboru určete pomocí funkce imfinfo velikost souboru. U ztrátového formátu JPEG vyzkoušejte uložení s různým kompresním poměrem včetně uložení s bezztrátovou kompresí (parametry ‚Mode‘ a ‚Quality‘). Zobrazením určete velikost kompresního poměru, u kterého ještě nejsou změny patrné okem.
- Z několika šedotónových obrazů, například z jednotlivých složek RGB, HSV a YCbCr modelu nebo pozměněním jednoho obrazu vytvořte krátkou GIF animaci. Snímky je třeba uložit do 4-D pole, kdy 4. index udává pořadí jednotlivých snímků. Třetí dimenze je kvůli omezení GIFu na 256 barev rovna 1.
C) Dobré vědět
- Povolené funkce: imread, imwrite, rgb2hsv, rgb2ycbcr, imfinfo
- Nepovolené funkce: Nejsou.