SLEZSKÁ UNIVERZITA V OPAVĚ FILOZOFICKO-PŘÍRODOVĚDECKÁ FAKULTA ÚSTAV INFORMATIKY DIPLOMOVÁ PRÁCE Zpracování rušených barevných obrazů ve vhodných soustavách a transformacích Vypracoval: Bc. Luděk Beran Vedoucí práce: Mgr. Luděk Cienciala Opava 2005
Prohlášení Prohlašuji, že jsem diplomovou práci vypracoval samostatně a že jsem uvedl všechny použité zdroje a literaturu. V Opavě dne 26. dubna 2005
Poděkování Děkuji především svým rodičům, bratrovi a celé rodině za podporu při mém studiu. Své přítelkyni děkuji za důvěru. Děkuji také panu Mgr. Luďku Ciencialovi, který trpělivě vedl moji diplomovou práci. Všem kamarádům děkuji za pomoc.
Obsah ÚVOD... 1 1 SVĚTLO... 2 1.1 ZDROJE SVĚTLA... 3 2 BARVA... 4 2.1 VNÍMÁNÍ BARVY... 4 2.2 GRASSMANNOVY ZÁKONY... 5 2.3 JAS, TÓN BARVY A SYTOST... 6 2.4 TĚLESO BAREV... 8 3 BAREVNÉ PROSTORY... 10 3.1 PROSTOR RGB... 10 3.1.1 Definice prostoru... 10 3.1.2 Projekce do jednotkové roviny... 11 3.2 BAREVNÝ PROSTOR HSI (HSV)... 12 3.2.1 Převod z RGB do HSI... 13 3.2.2 Převod z HSI do RGB... 14 3.3 BAREVNÝ PROSTOR XYZ... 15 3.3.1 Odvození souřadnic XYZ... 15 3.3.2 Převod z RGB do XYZ... 17 3.3.3 Převod z XYZ do RGB... 17 3.4 BAREVNÝ PROSTOR YXY... 17 3.4.1 Převod z XYZ do Yxy... 19 3.4.2 Převod z Yxy do XYZ... 19 3.5 BAREVNÝ PROSTOR YUV... 19 3.6 BAREVNÝ PROSTOR YU`V`... 19 3.7 BAREVNÝ PROSTOR L*A*B*... 20 3.7.1 Definice prostoru... 20 3.7.2 Převod z XYZ do L*a*b*... 21 3.7.3 Převod z L*a*b* do XYZ... 22 3.8 BAREVNÝ PROSTOR L*U*V*... 22 3.8.1 Převod z Yu'v' do L*u*v*... 22 3.9 BAREVNÝ PROSTOR L*C*H... 22 3.9.1 Převod z L*a*b* do L*C*h... 23 3.9.2 Převod z L*C*h do L*a*b*... 23 4 RUŠENÍ BAREVNÝCH OBRAZŮ... 25 4.1 DĚLENÍ ŠUMŮ... 25 4.1.1 Chtěné šumy... 25 4.1.2 Šumy vzniklé nechtěně... 26 4.2 JAK SE VYPOŘÁDAT SE ŠUMY... 27
4.3 KONVOLUCE... 28 4.4 ODSTRANĚNÍ ŠUMU... 30 4.4.1 Filtry v prostorové oblasti... 31 4.4.2 Filtry ve frekvenční oblasti... 31 4.5 OSTŘENÍ OBRAZU... 32 4.5.1 Ostření obrazu v prostorové oblasti... 33 4.5.2 Ostření obrazu ve frekvenční oblasti... 34 5 ISOLINIE... 35 5.1 ISOFOTY... 35 5.2 ISOCOLORY... 36 5.3 ISOVOLUMY... 37 6 IMPLEMENTACE PROGRAMU... 39 6.1 ZOBRAZENÍ... 39 6.2 TRANSFORMACE A ŠUMY... 39 6.2.1 Transformace a vybrané barevné prostory... 40 6.2.2 Šum ve zvoleném prostoru... 43 6.3 ODSTRANĚNÍ ŠUMU... 46 6.4 VYZNAČENÍ ISOLINIÍ... 48 7 UŽIVATELSKÁ PŘÍRUČKA... 51 7.1 INSTALACE, SPUŠTĚNÍ... 51 7.2 OVLÁDÁNÍ... 52 7.2.1 File... 52 7.2.2 Window... 53 7.2.3 Noise in... 53 7.2.4 Filtering... 54 7.2.5 Isolinies... 55 7.2.6 Help... 56 7.3 RYCHLÉ VOLBY... 56 7.4 ZOBRAZENÍ SOUBORŮ A VÝSLEDKŮ... 57 7.5 STAVOVÝ ŘÁDEK... 57 8 VÝSLEDKY... 58 8.1 TRANSFORMACE MEZI PROSTORY... 58 8.2 GENEROVÁNÍ ŠUMU... 58 8.3 FILTRACE ŠUMU... 60 8.4 VYZNAČENÍ ISOLINIÍ... 60 ZÁVĚR... 63 LITERATURA... 64 PŘÍLOHA... 65
Úvod Cílem diplomové práce je popsat běžné šumové vlivy pro barevné obrazy, porovnat vliv rušení na obrazy popsané v různých barevných soustavách, navrhnout algoritmus pro vyznačení čar se stejným jasem nebo barevným tónem a čar se stejným obsahem dané barvy a v neposlední řadě vytvořit simulátor pro šum v barevných obrazech ve zkoumaných barevných soustavách. Nejdříve popíšeme různé barevné soustavy, jejich použití a převody mezi nimi. Navážeme popisem šumových vlivů, jejich tvorbou a odstraněním. Dále se zmíníme o tzv. isočárách, což jsou čáry v obraze (graf, mapa), které spojují místa stejných hodnot dané veličiny. V našem případě půjde o jas, barevný tón a sytost. Jinak je lze nazývat též isolinie nebo isokřivky. Práci zakončíme navrhnutím a uvedením vhodného algoritmu pro vyznačení isolinií. Ten také použijeme v praxi jako součást programu, který bude simulovat šum ve vybraných barevných prostorech a umožní zpracování rušeného obrazu vybranými metodami. Pracovat budeme převážně s digitalizovaným obrazem, tedy s obrazem, který je převeden z reálného spojitého obrazu do obrazu diskrétního. Postup, kterým takový obraz získáme, se nazývá digitalizace obrazových signálů, či ještě přesněji vzorkování. Celý proces spočívá v tom, že vstupní obraz deterministicky popsaný spojitou obrazovou funkcí f ( x, y) vzorkujeme, tedy násobíme vzorkovací funkcí s ( x, y), čímž dostaneme výsledný vzorkovaný obraz f s ( x, y) v diskrétních hodnotách. Za vzorkovací funkci s ( x, y) se obecně bere nekonečné pole Diracových impulzů definované předpisem kde x a k= l= ( x k x y l y) s ( x, y) = δ,, y jsou vzdálenosti jednotlivých impulzů, které nám určují, s jakou frekvencí bude obraz vzorkován. 1 Nebudeme se zabývat vlastnostmi Diracova impulzu, ani přesným postupem vzorkování. Spíše se zaměříme na další podstatnější oblast týkající se obrazů a tou je světlo. 1 Sojka, E.: Digitální zpracování a analýza obrazů. Str. 34-35. -1-
1 Světlo Světlo je sice fyzikální veličina, ale jeho vnímání je psychofyziologický proces. Protože se snažíme zohlednit lidské vnímání, ustupujeme od pojetí světla jako fyzikální veličiny a definujeme ho jako vlastnost zářivé energie, kterou si pozorovatel uvědomuje zrakovým vjemem, vznikajícím podrážděním sítnice. V technice je světlo považováno za zrakem vyhodnocenou zářivou energii ve viditelné oblasti. Z fyzikálního hlediska je viditelné světlo elektromagnetické záření o frekvencích 385 až 790 THz, to znamená s vlnovou délkou 700 až 380 nm. Elektromagnetické záření má široký rozsah, od radiových vln využívaných pro vysílání rádia a televize, přes radarové a infračervené záření, viditelné světlo, až po ultrafialové, Roentgenovo, gama a kosmické záření. 2 rádio TV teplo infračervené záření ultrafialové záření X paprsky gamma paprsky dlouhá vlnová délka viditelné záření krátká vlnová délka 700 nm 400 nm Obr. 1 Vlnové délky světla Vlnové délky světla: Červená: mezi 700 a 630 nm; Oranžová: mezi 630 a 590 nm; Žlutá: mezi 590 a 560 nm; Zelená: mezi 560 a 480 nm; Modrá: mezi 480 a 360 nm. 2 Komzák, J.: Zpracování rušených obrazů ve vhodných soustavách a transformacích. Čl. 2.1. -2-
1.1 Zdroje světla Základním požadavkem na definici světelného zdroje je jeho dobrá shoda, co do intenzity záření při jednotlivých vlnových délkách, se zdrojem, který reálně pro hodnocení barev používáme. Nejběžnější v přírodě je samozřejmě Slunce, z umělých zdrojů žárovka a zářivka. K charakterizaci světelného zdroje se využívá Planckova zákona pro záření absolutně černého tělesa s vyjádřením teploty chromatičnosti. Teplotou chromatičnosti rozumíme teplotu absolutně černého tělesa, při níž má zdroj stejný spektrální průběh jako Planckův zářič (např. u žárovky). Pokud spektrální průběh není shodný s tímto zářičem, ale je plynulý a příliš se neodchyluje, mluvíme o ekvivalentní teplotě chromatičnosti (používá se u denních světel). V případě, že spektrální průběh vykazuje náhlé změny, mluvíme o tzv. náhradní teplotě chromatičnosti (u zářivek). Mezinárodní komise pro osvětlení (jinak také CIE Commission Internationale d Eclairage) za dobu své existence popsala několik standardních zdrojů světla. Nebudeme se jimi podrobně zabývat, ale zapamatujme si ty nejdůležitější. Zdroj A je žárovka s teplotou chromatičnosti 2856 K, zdroj D65 je denní světlo s ekvivalentní teplotou chromatičnosti 6504 K a zdroj F11, což je zářivka Philips TL 84, má teplotu chromatičnosti 4000 K. 3 3 Koudelka, M.: Měření barevnosti ve stavební praxi. Str. 3. -3-
2 Barva Jelikož budeme pracovat s barevnými obrazy, je nezbytně nutné, abychom uvedli některé základní informace týkající se barvy. Co je barva? Vnímaná barva je výsledkem vzájemného působení mezi světlem, předmětem a pozorovatelem. Světlo je modifikováno sledovaným předmětem a toto modifikované světlo potom vnímá pozorovatel. Všechny tři subjekty působící v tomto procesu musíme znát. Potřebujeme znát, co je světlo, jak je možné ho kvantifikovat, jaké základní zákony platí při míchání barev, jak předměty světlo odrážejí a propouštějí a jak barvu světla vnímáme. 4 Z této citace je patrné, že definovat přesně barvu je velmi obtížné. Nicméně existuje několik možných definic. Kupříkladu definice Optical Society of America, která zní: "Barva záleží ve vlastnostech světla jiných, než v prostorové a časové nehomogennosti", což můžeme chápat tak, že všechny vlastnosti světla, kromě časových a prostorových, jsou ve své podstatě barvou. Jiná definice říká, že barva v podstatě závisí na spektrálním složení světla, které se dostává do oka v uvažovaném čase a z určitého směru. 5 Docházíme tedy k závěru, že vnímaná barva má psychofyzikální charakter, je závislá na podráždění a vjemu. Zatímco podráždění je fyzikální podstaty a zahrnuje zářivou energii na každé vlnové délce, vjem je čistě psychologické podstaty a liší se u různých jedinců a v různých podmínkách a čase. 2.1 Vnímání barvy Zaměřme se nyní na skutečnost, že lidským senzorem pro vnímání barvy je oko. Důležitou vlastností oka je to, že lze vyvolat dojem jedné barvy smícháním tří jiných. Na základě této skutečnosti funguje dnes většina přístrojů, které využívají ke zobrazení různých barev jen tři základní. Kupříkladu na barevné obrazovce vidíme výslednou barvu jako kombinaci červené, zelené a modré. Lidské oko vnímá různým způsobem intenzitu jednotlivých barevných složek, takže celkový jas je třeba vyjádřit jako 4 Komzák, J.: Zpracování rušených obrazů ve vhodných soustavách a transformacích. Čl. 2. 5 Komzák, J.: Zpracování rušených obrazů ve vhodných soustavách a transformacích. Čl. 2.5. -4-
(2.1) I = 0,299R + 0,587G + 0, 114B, 6 kde R je hodnota červené (Red), G je hodnota zelené (Green), B je hodnota modré (Blue) a I je výsledný jas (Intensity). Výše uvedený vztah vychází z tzv. kolorimetrické rovnice, která vyjadřuje skládání barvy pomocí tří základních a má tvar (2.2) C = R R) + G ( G) + B ( ). 1 1( 1 1 B Veličiny v závorkách označují jednotkové hodnoty základních barevných složek a koeficienty R 1, G 1, B 1 značí číselné hodnoty, potřebné ke složení požadované barvy. Při jiných základních složkách (R ), (G ) a (B ) však budou jiné i tyto koeficienty. Mezinárodní komise pro osvětlování použila v normalizaci tři spektrální barvy 700 nm, 546.1 nm a 435.8 nm. 7 2.2 Grassmannovy zákony Německý profesor H. Grassmann dospěl k řadě principů a zákonů o barvách. Oko může rozeznávat pouze tři druhy rozdílů nebo změn. Tyto změny dnes nazýváme jas, dominantní vlnová délka a sytost. Ve směsi dvou světel se bude barva směsi postupně měnit, je-li jedna složka stále měněna a druhá stálá. Dále podle Grassmanna platí, že zdroje světla stejné barvy mají ve směsi stejný účinek a to bez ohledu na jejich spektrální složení. Z tohoto zákona se odvozuje adiční zákon, který platí také pro odečítání, násobení a dělení. Pokud máme dvě barvy (2.3) C 1 = R1( R) + G1( G) + B1( B) a C 2 = R2( R) + G2( G) + B2( B), pak pro směs těchto barev podle adičního zákona platí: (2.4) C 1+ C2 = ( R1 + R2)( R) + ( G1 + G2)( G) + ( B1 + B2)( B). 6 Žára, J.; Beneš, B.; Felkel, P.: Moderní počítačová grafika. Str. 3. 7 Komzák, J.: Zpracování rušených obrazů ve vhodných soustavách a transformacích. Čl. 2.6. -5-
Celkový jas je aritmetickým součtem jasů složek. Tento zákon není platný ve všech případech, proto by se měly brát jeho výsledky jen přibližně. 8 2.3 Jas, tón barvy a sytost Kromě tří trojbarevných jednotek popsaných v kapitole 1.4 můžeme používat i jiné definice barvy. Každou barvu, jakou si jen dokážeme představit, popisují tři veličiny, které vymezují barevný prostor: Odstín (Hue) je tím co si představujeme pod pojmem barva: červeň, modř, zeleň, žluť atd. CIE potom odstín definuje jako vlastnost vizuálního vnímání, podle kterého se plocha jeví být podobná jedné z barev červené, žluté, zelené a modré, nebo kombinaci dvou z nich. Odstín je určen vlnovou délkou světla, které nám dopadá na detektor nebo oko. Jas (Lightnes nebo Brightnes) nám charakterizuje "světlost" nebo "tmavost" vnímané barvy. Snižování jasu znamená přidávání černé, popřípadě šedé. Komisí CIE je jas definován jako třetí odmocnina svítivosti. Jas přísluší amplitudě (výšce) vlny vnímaného světla. Sytost (Saturation, někdy také překládáno jako Brilance), nám udává, jak je vnímaná barva kalná nebo čistá, tzn. je-li spíše blíže k šedé (kalná) nebo ke svému odstínu (brilantní). Snižování sytosti znamená přidávání bílé. Pro úplnost opět definice podle CIE, která vystihuje sytost jako barevnost oblasti rozdělené v poměru k jejímu jasu. Sytost je potom určena strmostí vlny světla, které vnímáme. 9 Z těchto tří veličin vychází barevné modely HSV (HSI) Hue, Saturation, Value (Intenzity) a HLS Hue, Lightness, Saturation. Protože tyto modely neuvažují vnímání lidského oka a pro problémy při aritmetickém míchání barev, definici bílého bodu aj. jsou tyto systémy pro správu barev nevhodné. Ale o tom se dozvíme více ve stati 3.2 o barevných prostorech. Jen pro hrubou představu, pro zobrazení modelu 8 Komzák, J.: Zpracování rušených obrazů ve vhodných soustavách a transformacích. Čl. 2.8. 9 Hrbáček, L.: Barva v předtiskové přípravě 2. Čl. 1. -6-
HSV se používá šestiboký jehlan (Obr. 2). Jeho vrchol leží v počátku soustavy souřadnic HSV. Souřadnice S a V nabývají hodnot od 0 do 1, souřadnice H reprezentuje úhel nabývající hodnoty z intervalu od 0º do 360º. Vrchol jehlanu představuje barvu černou, jas roste směrem k podstavě (hodnota 1). Střed podstavy představuje barvu bílou. Sytost roste podle vzdálenosti od osy jehlanu. Dominantní barvy (se sytostí 1) leží na plášti. Čisté barvy (červená, žlutá, zelená, tyrkysová, modrá, purpury) jsou na obvodu podstavy. Model HLS (Obr. 3) je obdobou modelu HSV. Jen místo jehlanu je zobrazen dvojicí kuželů. Barevný tón je stejně jako v předchozím případě vyjádřen úhlem, světlost se opět mění od černé (0) po bílou (1) a sytost je vyjádřena intervalem od 0 do 1 podle vzdálenosti od osy L. Nejjasnější čisté barvy tedy leží na obvodu podstav kuželů a mají souřadnice S = 1 a L = 0,5. 10 Obr. 2 Geometrická reprezentace modelu HSV 10 Žára, J.; Beneš, B.; Felkel, P.: Moderní počítačová grafika. Str. 6. -7-
Obr. 3 Geometrická reprezentace modelu HLS 2.4 Těleso barev Protože míšení barev má lineární povahu, je možné určovat barevné vektory. Směsi barev jsou potom určeny součtem těchto vektorů. Pro práci s barvami můžeme použít algebry, která byla vypracována pro studium vektorů v trojrozměrném prostoru. Libovolnou barvu dostaneme jako součet bázových vektorů (2.5) C = R1( R) + G1( G) + B1( B). Jelikož je možné v podstatě všechny barvy získat mícháním tří základních barev, můžeme považovat barvu za spojitou veličinu. Při reprezentaci ve trojrozměrném prostoru je barva určena buď jako kombinace tří úseček (podobně jako v rovnici) nebo jako dvě úsečky a úhel v polární trojrozměrné soustavě. U prvního případu jsou složkami tři základní barvy, zatímco u druhého se jedná o jas, sytost a dominantní vlnovou délku. 11 11 Komzák, J.: Zpracování rušených obrazů ve vhodných soustavách a transformacích. Čl. 2.10. -8-
Obr. 4 Model tělesa barev s jednotkovou rovinou určenou jednotkovými vektory, představujícími základní spektrální barvy 12 Většinou se volí těleso tak, aby osy svíraly pravé úhly, což však není bezpodmínečně nutné. Zcela postačí, když budou úhly mezi osami stejné. Za osy bereme jednotkové vektory (R), (G) a (B). Tyto vektory jsou voleny tak, aby pro kolorimetrické vyrovnání srovnávacího bílého světla bylo potřeba stejných velikostí každého vektoru pro každou úroveň jasu. Potom je vektor nepestré barvy stejně vzdálen od každého vektoru základní barvy. Pro každou rovinu, která je kolmá k vektoru šedé barvy, tvoří její průsečíky a nebo, podle potřeby, vytváří svými prodlouženými jednotkovými vektory rovnostranný trojúhelník. Rovina spojující koncové body jednotkových vektorů se nazývá jednotková rovina. 13 12 Komzák, J.: Zpracování rušených obrazů ve vhodných soustavách a transformacích. Čl. 2.10. 13 Komzák, J.: Zpracování rušených obrazů ve vhodných soustavách a transformacích. Čl. 2.10. -9-
3 Barevné prostory Lidské oko je schopné rozlišit cca 17 000 odstínů chromatických barev a asi dalších 300 odstínů šedi. Barevné modely jsou jedním ze způsobů, jak zorganizovat barvy a jak vymezit prostor obsahující odstíny, které je schopen člověk vnímat, které jsme schopni tisknout nebo které jsme schopni zobrazit na monitoru počítače. Obecně lze barevné modely rozčlenit do čtyř skupin: 1. modely založené na fyziologii oka RGB model, CMYK model; 2. kolorimetrické barevné modely, založené na fyzikálním měření spektrální odrazivosti chromatický diagram CIE; 3. komplementární modely, založené na percepčních experimentech, užívající dvojice komplementárních barev; 4. modely psychologické a psychofyzikální HSV, HSI, HLS. 14 V následujících podkapitolách si popišme alespoň ty nejznámější z barevných prostorů a hlavní převody mezi nimi. Některé z nich později použijeme při implementaci programu. 3.1 Prostor RGB Prvním způsobem záznamu a zobrazení barev je použití asi nejznámějšího prostoru RGB (Red, Green, Blue). Základní vlastností RGB modelu je součtové, neboli takzvané aditivní skládání barev. To v praxi znamená, že čím více barev složíme (sečteme), tím světlejší je výsledek. 15 3.1.1 Definice prostoru Barevný rozsah můžeme v modelu RGB zobrazit prostorově jako jednotkovou krychli umístěnou v osách označených postupně R, G a B (Obr. 5). Počátek souřadnic odpovídá 14 Mgr. Friedmannová, L.: Transformace tématických mapových děl z analogové formy do formy digitální. Čl. 1.2. 15 Žára, J.; Beneš, B.; Felkel, P.: Moderní počítačová grafika. Str. 4. -10-
černé barvě, zatímco vrchol o souřadnicích [ 1,1,1 ] odpovídá bílé. Vrcholy krychle, které leží na osách, představují základní barvy a zbývající vrcholy reprezentují doplňkové barvy ke každé ze základních barev. Odstíny šedi odpovídají bodům na diagonále krychle spojující černý a bílý bod. 16 Obr. 5 Prostor RGB 17 3.1.2 Projekce do jednotkové roviny Po promítnutí souřadnic do jednotkové roviny a normalizaci dostáváme pro nové souřadnice následující vztahy: R (3.1) r = R + G + B, G g = R + G + B, B b = R + G + B. Pro nové souřadnice v jednotkové rovině platí, že jejich součet je roven jedné. Proto je možné používat souřadnice pouze dvě. Třetí souřadnicí potřebnou pro jednoznačné určení barvy je jas určující rovinu, ve které se budeme pohybovat (Obr. 6). 18 16 Žára, J.; Beneš, B.; Felkel, P.: Moderní počítačová grafika. Str. 4. 17 Komzák, J.: Zpracování rušených obrazů ve vhodných soustavách a transformacích. Čl. 3.1. 18 Komzák, J.: Zpracování rušených obrazů ve vhodných soustavách a transformacích. Čl. 3.1. -11-
Obr. 6 Zobrazení Maxwellova trojúhelníku v prostoru RGB Na Obr. 7 je znázorněn samotný Maxwellův trojúhelník v jednotkové rovině. (B) 1 b r g (R) (G) Obr. 7 Průmět do jednotkové roviny 3.2 Barevný prostor HSI (HSV) Prostor HSI (Hue tón, Saturation sytost, Intensity jas), jinak také HSV (Hue tón, Saturation sytost, Value jasová hodnota) vyjadřuje tón barvy, sytost barvy a hodnotu jasu. Barevný tón označuje převládající spektrální barvu, sytost určuje příměs jiných barev a jas je dán množstvím bílého (bezbarvého) světla. Těleso barev tohoto prostoru je zobrazeno na Obr. 8. Model je popsán již v kapitole 2.3. -12-
Obr. 8 Prostor HSI 19 3.2.1 Převod z RGB do HSI Převody jsou již popsány v jiných publikacích, proto se spokojíme s citováním z existujících zdrojů. Kupříkladu tento zápis převodu RGB do HSI podle Boumphreye: 20 (3.2) I ( R + G + B) = 3 1 3 (3.3) S = 1 a, R + G + B kde a je minimum z R, G, B, (3.4), ( ) ( ) ( ) ( )( ) 1 0, 5 R G + R B H = cos, 2 R G + R B G B když S = 0, pak H není definováno, 19 Komzák, J.: Zpracování rušených obrazů ve vhodných soustavách a transformacích. Čl. 2.9. 20 Boumphrey, F.: Color Space Conversions. -13-
B G když >, pak H = 360 H, kde H je úhel ve stupních, který normalizujeme I I na 0,1 pomocí H = H. 360 Výpočet barevného tónu vyjádřil i Komzák 21 algoritmem: pro R = G = B není H definováno jinak max = max(r, G, B) min = min (R, G, B) R1 = (max - R) / (max - min) G1 = (max - G) / (max - min) B1 = (max - B) / (max - min) pro R = max and G == min je H = 300 + 60 * B1 pro R = max and G <> min je H = 60-60 * G1 pro G = max and B == min je H = 30 + 60 * R1 pro G = max and B <> min je H = 180-60 * B1 pro B = max and R == min je H = 180 + 60 * G1 pro B = max and R <> min je H = 300-60 * R1 3.2.2 Převod z HSI do RGB Převod z HSI do RGB je také popsán Boumphreyem 22 následujícím způsobem: 21 Komzák, J.: Zpracování rušených obrazů ve vhodných soustavách a transformacích. čl. 3.1. 22 Boumphrey, F.: Color Space Conversions. -14-
Nejdříve převedeme H na stupně pomocí H = 360 * H a následuje If 0 < H <= 120 then B = 1/3(1-S) R = 1/3(1+(S cos H) / ( cos(60 - H)) G = 1 - (B+R) If 120 < H <= 240 then H = H - 120 R = 1/3(1-S) G = 1/3(1+(S cos H) / ( cos(60 - H)) B = 1 - (R+G) If 240 < H <= 360 then H = H - 240 G = 1/3(1-S) B = 1/3(1+(S cos H) / ( cos(60 - H)) R = 1 - (G+B) 3.3 Barevný prostor XYZ Barevný prostor XYZ je prostorem, který vytvořila CIE (Commission Internationale d Eclairage Mezinárodní komise pro osvětlení). 3.3.1 Odvození souřadnic XYZ V roce 1931 CIE definovala tzv. standardního pozorovatele (CIE Standard Observer), který vzešel z měření citlivosti lidského oka velkého vzorku respondentů s normálním barevným vnímáním. Každý respondent má za úkol nastavit pomocí červené, modré a zelené lampy stejný odstín, jako je na testovací lampě, a to vůči bílé podložce. Výsledkem jsou takzvané color matching function (citlivosti lidského oka) x, y a z, které vznikly lineární transformací složek r, g, a b. Tyto funkce jsou definovány jak pro 2, tak pro maximální 10 pozorovací úhel. Z nich můžeme pak vypočítat trichromatické složky X, Y, Z. Vynásobíme intenzitu světla remisním faktorem a citlivostí lidského oka a to přes celé spektrum. Např.: ( ) (3.5) = k E( λ) R( λ) x( λ) ( λ) X, -15-
stejně potom počítáme Y a Z. U všech světel definovaných CIE platí, že hodnota y = 100 a x, z se jí přizpůsobují. Pomocí těchto složek můžeme definovat jakoukoliv barvu. Hlavní vlastností barevných prostorů je jejich nezávislost na zařízení, které s barvou pracuje. 23 Při návrhu barevného prostoru XYZ byly dodrženy tyto podmínky: 1. Osy jsou zvoleny tak, aby ležely vně oblasti skutečných barev, 2. přímka (X) (Y) je tečnou k čáře spektrálních barev na 780 nm, takže pro značnou část červeného konce spektra je hodnota (Z) nulová nebo zanedbatelná, 3. jas základních barev (X) a (Z) je nulový, pak barva (Y) vyjadřuje přímo jas, 4. měřítka os jsou volena tak, že směs jedné jednotky každé základní barvy vyrovná isoenergetické světlo. 24 Obr. 9 Virtuální barevný prostor XYZ 23 Hrbáček, L.: Barva v předtiskové přípravě 2. Čl. 2. 24 Komzák, J.: Zpracování rušených obrazů ve vhodných soustavách a transformacích. Čl. 3.2. -16-
Obr. 10 Vyjádření barvy monochromatického světla v souřadnicích XYZ 25 3.3.2 Převod z RGB do XYZ Pro převod ze soustavy spektrálních barev RGB do soustavy neskutečných základních barev XYZ platí tyto vztahy: 26 X = 0.430574*R + 0.341550*G + 0.178325*B Y = 0.222015*R + 0.706655*G + 0.071330*B Z = 0.020183*R + 0.129553*G + 0.939180*B 3.3.3 Převod z XYZ do RGB Pro zpětný převod z XYZ do soustavy RGB se používají tyto vztahy: 27 R = 3.063218937*X - 1.393326323*Y - 0.475800751*Z G = -0.969245011*X + 1.875967806*Y + 0.041555221*Z B = 0.067871601*X - 0.228833399*Y + 1.06925135*Z 3.4 Barevný prostor Yxy Prostor XYZ lze podobně jako RGB promítnout do jednotkové roviny a normalizovat, čímž dostaneme nové souřadnice x, y a z: 25 Skala, V.: Barvy a fotorealismus I. 26 Komzák, J.: Zpracování rušených obrazů ve vhodných soustavách a transformacích. Čl. 3.3. 27 Komzák, J.: Zpracování rušených obrazů ve vhodných soustavách a transformacích. Čl. 3.3. -17-
X (3.6) x = X + Y + Z, Y y = X + Y + Z, Z z = X + Y + Z Potom platí, že součet všech tří souřadnic je roven jedné a stačí nám tedy uvádět pouze dvě z nich. Pro tento účel se používají souřadnice x a y. (3.7) ( x + y + z = 1 ) ( z = 1 x y) Souřadnice x a y plně určují dominantní vlnovou délku i sytost barvy. K tomu, aby byla barva jednoznačně určena, je potřeba uvádět jas pomocí souřadnice Y. Diagram barev x, y dostaneme promítnutím jednotkové roviny do roviny XY. Pokud pracujeme se souřadnicemi x, y a přidáme jasovou informaci, hovoříme o barevném prostoru Yxy. V souvislosti s tímto zobrazením se ještě zmíníme o tzv. gamutu, což je trojúhelník vymezující barevnou oblast v Yxy, kterou jsou schopny zobrazit dnešní běžné obrazovky. Samozřejmě platí, že čím lepší obrazovka, tím větší je gamut. Barvy mimo gamut zobrazit neumíme, proto se zobrazení celého "oblouku" dělá méně sytými či jinak zkreslenými barvami. (Obr. 11 je tedy třeba brát jako orientační.) Obr. 11 Znázornění barevného prostoru Yxy a gamutu 28 28 Skala, V.: Barvy a fotorealismus I. -18-
3.4.1 Převod z XYZ do Yxy Vztahy pro převod vychází z vlastnosti prostoru, coby průmětu prostoru XYZ do jednotkové roviny: x = X / (X + Y + Z) y = Y / (X + Y + Z) z = Z / (X + Y + Z) 3.4.2 Převod z Yxy do XYZ Zpětný převod z Yxy do XYZ je následující: X = x * Y/y Y = Y Z = z * Y/y 3.5 Barevný prostor YUV Jde o lineární transformaci prostoru Yxy. CIE se pokusila upravit barevný prostor tak, aby lépe vyhovoval citlivosti lidského oka. Hodnota Y je nezměněna a má stejné vlastnosti jako v prostorech XYZ nebo Yxy. Hodnoty u a v jsou vyjádřeny vzorci 29 u = 2x / (6y - x + 1,5) v = 3y / (6y - x + 1,5) Touto transformací nebylo dosaženo uspokojivého výsledku. 3.6 Barevný prostor Yu`v` Dalším pokusem CIE bylo vytvoření modifikace prostoru Yuv, čímž vznikl prostor Yu`v`, který je, obdobně jako předchozí, transformací prostoru Yxy se shodnou hodnotou Y, přičemž další hodnoty jsou vyjádřeny jako 30 29 Boumphrey, F.: Color Space Conversions. Čl. 4.2. 30 Boumphrey, F.: Color Space Conversions. Čl. 4.3. -19-
u' = u = 2x / (6y - x + 1,5) v' = 1,5v = 4,5y / (6y - x + 1,5) Ani tímto barevným prostorem se ale nepodařilo dostatečně přiblížit vlastnostem oka. Systémy XYZ, Yxy a z nich odvozené YUV a Yu`v` jsou výpočetně jednoduché. Mají ale nevýhodu, která může někdy vadit. Na některé barevné změny (kupříkladu na spojnici mezi modrou a žlutou) reaguje lidské oko lépe než na jiné změny. Při znalosti souřadnic dvou bodů A, B v těchto systémech tedy neumíme říci, zda je barevný posun velký nebo malý. Proto se zavádějí tzv. perceptuálně rovnoměrné barevné systémy, kde eukleidovská vzdálenost dvou bodů odpovídá vnímané rozdílnosti příslušných barev. Typickými zástupci těchto systémů jsou CIELAB (L*a*b*), CIELUV (L*u*v*) a CIELCh (L*C*h ). 31 3.7 Barevný prostor L*a*b* Barevný prostor L*a*b* (také nazývaný CIELAB, či pouze Lab) byl definován CIE v roce 1976. V současnosti je nejpoužívanější nezávislý barevný prostor. K jeho vzniku vedla snaha CIE vytvořit reprodukovatelný barevný prostor, který by sloužil jako standard při výrobě barviv. 3.7.1 Definice prostoru Prostor L*a*b* vychází z prostoru XYZ. Je založen na lidském vnímání barev tří barevných receptorů (červená, zelená a modrá) v lidském oku. Jako výsledek jsou tři sady signálů předávaných ke zpracování lidskému mozku pomocí hodnot: L je hodnota jasu a má rozsah od 0 (Černá) do 100 (Bílá) a je měřítko pro červenou (kladné hodnoty a), nebo zelenou (záporné hodnoty a) b je měřítko pro žlutou (kladné hodnoty b), nebo modrou (záporné hodnoty b) Jeho výhodou je, že se jedná o prostor lineární, tedy vzdálenost dvou bodů odpovídá jejich barevné odchylce E. 31 Skala, V.: Barvy a fotorealismus I. -20-
bílá +L +b žlutá -a zelená +a červená -b modrá -L černá Obr. 12 Těleso barev prostoru L*a*b* 3.7.2 Převod z XYZ do L*a*b* Pro převod z prostoru XYZ do L*a*b* platí následující vztahy: pro Y/Yn > 0.008856 L = 116 * [(Y/Yn)^1/3] - 16 a = 500 * [(X/Xn)^1/3 - (Y/Yn)^1/3] b = 200 * [(Y/Yn)^1/3 - (Z/Zn)^1/3] pro Y/Yn 0.008856 L = 903,3 * (Y/Yn) a = 3893,5 * (X/Xn - Y/Yn) b = 1557,4 * (Y/Yn - Z/Zn) Hodnoty Xn, Yn a Zn jsou hodnoty pro referenční bílý bod použitého osvětlení nebo pozorovatele. Případ Y/Yn 0,008856 charakterizuje nelinearitu oka při nízkém jasu a je možno ho při snímání kamerou, která obvykle nemá takovou citlivost na nízké 32, 33 úrovně jasu, zanedbat. 32 Komzák, J.: Zpracování rušených obrazů ve vhodných soustavách a transformacích. Čl. 3.5. 33 Boumphrey, F.: Color Space Conversions. Čl. 4.5. -21-
3.7.3 Převod z L*a*b* do XYZ Podle předchozích vztahů pro převod z XYZ do L*a*b* je již poměrně snadné odvodit rovnice pro zpětný převod. Vezměme si případ, kdy pracujeme s obrazem zobrazovaným na monitoru. Nebereme tedy v potaz vlastnosti lidského oka a vypustíme zlomový bod Y/Yn 0,008856. pom = [(L + 16)/116] X = [(a/500 + pom)^3] * Xn Y = [(pom)^3] * Yn Z = [(pom b/200)^3] * Zn {vyjádření zlomku [(Y/Yn)^3]} 3.8 Barevný prostor L*u*v* Barevný prostor L*u*v* (také nazývaný CIELUV, nebo jen Luv) je ve své podstatě totožný s barevným prostorem L*a*b*, přičemž u* odpovídá a* a v* odpovídá b*. 3.8.1 Převod z Yu'v' do L*u*v* Hodnoty souřadnic můžeme odvodit ze souřadnic prostoru Yu'v' podle následujících vztahů: L = 116 * [(Y/Yn)^1/3] 16 pro Y/Yn > 0.008856 L = 903.3 * (Y/Yn) pro Y/Yn 0.008856 u = (13 * L) * (u' - u'n) v = (13 * L) * (v' - v'n) Hodnoty u'n a v'n jsou souřadnice pro referenční bílý bod použitého osvětlení nebo 34, 35 pozorovatele. 3.9 Barevný prostor L*C*h Tento barevný prostor je označován jako CIELCH, nebo také LCh. Systém je stejný jako CIELAB, pouze místo pravoúhlých souřadnic pro určení bodu v barevném prostoru používá cylindrické souřadnice, tzn. barevný bod je určen úsečkou a úhlem. 34 Komzák, J.: Zpracování rušených obrazů ve vhodných soustavách a transformacích. Čl. 3.6. 35 Boumphrey, F.: Color Space Conversions. Čl. 4.4. -22-
Hodnota L* odpovídá opět jasu v rozsahu od 0 (černá) do 100 (bílá), C* je Chroma (sytost) vyjádřena vzdáleností od neutrální osy a h je úhel barevného odstínu (od 0 do 360 stupňů). Hodnota + a * = 0, + b * = 90, a * = 180 a b * = 270. 3.9.1 Převod z L*a*b* do L*C*h Vztah mezi L*a*b* a L*C*h je dán rovnicemi: L = L C = [(a) 2 + (b) 2 ] 1/2 h = arctan(±b/±a), resp. h = arctan(±a/±b) Stupnice L*C*h je výhodnější oproti polárním barevným prostorům, protože nabízí jednodušší návaznost na dřívější systémy, které jsou založeny na fyzických vzorcích jako je např. Munsellův. 3.9.2 Převod z L*C*h do L*a*b* L = L a = C/[(tan(h)) 2 + 1] 1/2 pro h 90 nebo h 270 a = (-C)/[(tan(h)) 2 + 1] 1/2 pro 90 < h < 270 b = [(C) 2 - (a) 2 ] 1/2 pro h 180 b = -[(C) 2 - (a) 2 ] 1/2 pro h > 180 V praxi se můžeme setkat i s jinými barevnými prostory, než jsou výše uvedené. Takovým je například i Hunter Lab, používaný zejména v USA. Barvu je možno specifikovat určením poměru standardních (nebo tajných) barviv, které mohou být míchány k vytvoření potřebné barvy. Tento systému používá kupříkladu Pantone. Ačkoliv je rozšířený, je chráněn vlastnickými právy a převod do CIE není pro veřejnost dostupný. 36 36 Hrbáček, L.: Barva v předtiskové přípravě 2. -23-
Obr. 13 Barevný prostor LCh 37 37 Hrbáček, L.: Barva v předtiskové přípravě 2. -24-
4 Rušení barevných obrazů Rušením obrazu rozumíme průchod obrazu nějakým systémem a následné zkreslení obrazu. Tím vznikají tzv. šumy. 4.1 Dělení šumů Šumy můžeme rozdělit do dvou základních skupin. Chtěné a nechtěné šumy. 4.1.1 Chtěné šumy Chtěné šumy jsou takové šumy, které jsou vytvářeny záměrně, za nějakým účelem. Nejčastějším důvodem je tvorba textur na povrchu těles. Tento způsob využívá tzv. Procedurální texturování. Základem procedurálních textur je tzv. šumová funkce. Ta byla poprvé popsána Perlinem v roce 1985. Tehdy stanovil základní požadavky, které by měla šumová funkce splňovat. 1. Funkce musí být statisticky invariantní vzhledem k otáčení. 2. Funkce musí být statisticky invariantní vzhledem k posunutí. 3. Fourierův obraz funkce musí mít ostré frekvenční spektrum. Mezi základní šumové funkce patří Perlinova funkce. Ta spočívá v naplnění trojrozměrné matice [i, j, k] náhodnými čísly, která splňují výše uvedená kritéria kladená na šumovou funkci. Při tvorbě této matice je nejdůležitějším kritériem vzájemná nezávislost náhodných čísel. Pro praktické aplikace obyčejně stačí tuto matici naplnit pseudonáhodnými čísly, které například v jazyce C poskytuje funkce rand(), v jazyce Pascal je to podobná funkce random(). Z takto definované matice obdržíme hodnotu funkce v libovolném bodě interpolací předpočítaných hodnot. Podle způsobu funkce potom hovoříme o lineární šumové funkci, bikubické či B-spline šumové funkci. 38 38 Žára, J.; Beneš, B.; Felkel, P.: Moderní počítačová grafika. Str. 301-302. -25-
Další často užívanou metodou je Skvrnový šum, který je vlastně analogií Perlinovy funkce. Podstatou této metody je získání šumu z n kopií jediné funkce (skvrny), která je náhodně posunutá a změřítkovaná. Označme tuto funkci f (P). Šumovou funkci v bodě P budeme označovat s (P) a získáme ji takto: (4.1) s( P) = w n i= 1 f ( P i P i ) V tomto vztahu je w i koeficientem změny měřítka a P i je posunutí i-té kopie funkce f (P). Šumová funkce s (P) je tedy jednoznačně určena skvrnovou funkcí f (P) a n dvojicemi [ P i, w i ]. Ve srovnání s Perlinovou funkcí je tedy tato metoda daleko méně náročná na paměť. 39 vstup: bod zadaný souřadnicemi x, y, z výstup: barva 1. Inicializuj generátor náhodných čísel hodnotou q = 257x. y. z mod 47. 2. Nastav s na nulu. 3. pro i = 1 do n (n je počet vzorků funkce f). a. w = rand(); b. xp = rand(), yp = rand(), zp = rand(); c. s = s + wf(x - xp, y - yp, z - zp). 4. barva = s/n Algoritmus pro výpočet skvrnového šumu 40 4.1.2 Šumy vzniklé nechtěně Šum jakožto nežádoucí změnu obrazu můžeme rozčlenit podle různých kriterií do skupin A. podle vzniku: a) při snímání obrazu vzniká díky optickým jevům (např. alias); 39 Žára, J.; Beneš, B.; Felkel, P.: Moderní počítačová grafika. Str. 302-303. 40 Žára, J.; Beneš, B.; Felkel, P.: Moderní počítačová grafika. Str. 303. -26-
b) kvantovací šum vzniká jako odchylky mezi přesnými hodnotami vzorků a (nejbližšími) hodnotami, vyjádřitelnými čísly z dané množiny; díky současnému rozvoji výpočetní techniky je možno použít vyjádření vzorků s tak vysokou přesností, aby kvantovací šum byl zanedbatelný; c) při přenosu; d) při zpracování vzniká například při zaokrouhlování; B. podle závislosti na obrazu: a) závislý charakteristika šumu závisí na obraze; b) nezávislý šum na obraze nezávisí; C. podle rozložení pravděpodobnosti: a) bílý šum šum, jehož pravděpodobnost výskytu je stejná pro všechny frekvence; b) impulsní šum šum, který má vysokou energii a krátké trvání; c) Gaussův šum má pravděpodobnost výskytu dánu Gaussovým rozdělením, tedy vztahem (4.2) 2 ( x µ ) 2 2 1 σ f ( x) = e, σ 2π 2 kde µ je střední hodnota tohoto rozložení a σ je rozptyl. 41 4.2 Jak se vypořádat se šumy Později se budeme zabývat zpracováním rušených barevných obrazů. Ačkoliv to není přímým cílem naší práce, je vhodné uvést zde alespoň teoreticky způsoby, jak se vypořádat s rušenými obrazy. Způsob odstranění šumu závisí na způsobu získání obrazu a na charakteristice šumu. Pokud máme k dispozici více exemplářů téhož obrazu, a není-li jejich zdroj zatížen systematickou chybou, je nejsnazším odstraněním šumu výpočet obrazu, ve kterém bude každý pixel průměrem nebo mediánem z pixelů ležících na stejných souřadnicích 41 Komzák, J.: Zpracování rušených obrazů ve vhodných soustavách a transformacích. Čl. 5.4. -27-
ve všech obrazech předlohy. To je dobré si uvědomit například při přenosu fotografie do počítače pomocí skeneru. Je užitečné udělat více kopií a do výsledného obrazu dát obraz, jehož pixely jsou získány jako medián či průměr ze všech vzorků. Ačkoliv nemusí být vždy snadné obrazy sesadit tak, aby si příslušné pixely navzájem odpovídaly. Případ, kdy máme k dispozici více exemplářů předlohy, není bohužel příliš častý. Obyčejně máme k dispozici pouze jediný obraz a odstraňujeme šum na základě charakteristiky okolí každého pixelu. V lepším případě známe charakteristiku šumu. 42 Pracujeme-li se spojitým obrazem, je šum reprezentován vysokými frekvencemi ve Fourierově frekvenční oblasti. Ty mohou souviset s tzv. aliasem, který vzniká při získávání digitalizovaného obrazu, konkrétně při jeho vzorkování (viz.: Žára, J.; Beneš, B.; Felkel, P.: Moderní počítačová grafika. Computer Press Praha, 1998. str. 12-21 nebo Sojka, E.: Digitální zpracování a analýza obrazů. VŠB-TU Ostrava, 2000, str. 34-37). Alias lze odstranit, či spíše potlačit dvěma způsoby: 1. vzorkování s vyšší frekvencí, 2. stochastické vzorkování (převedení aliasu na šum). Oba způsoby jsou popsány v Žára, J.; Beneš, B.; Felkel, P.: Moderní počítačová grafika. Computer Press Praha, 1998. str. 23-27. Zaměřme se spíše na odstranění šumu, což se provádí pomocí filtrů. Abychom si však mohli popsat základní metody filtrace šumu, je nutné se nejprve seznámit s pojmem konvoluce. 4.3 Konvoluce Konvoluci značíme operátorem, tedy v běžném zápisu je konvoluce dvou funkcí I( x) h( x) a definujeme ji vztahem (4.3) I ( x) h( x) = I( α) h( x α) dα. 42 Žára, J.; Beneš, B.; Felkel, P.: Moderní počítačová grafika. Str. 128. -28-
Ovšem při práci s nespojitým obrazem se používá tzv. diskrétní konvoluce, která je diskrétní dvojrozměrnou podobou výše uvedeného integrálu (4.3) a má tvar M 1 N 1 (4.4) I ( m, n) = I( m, n) h( m, n) = I( r, s) h( ( m r),( n s) ) r= 0 s= 0 V tomto případě je I ( m, n) diskrétní obraz, se kterým pracujeme, h ( m, n) je tzv. konvoluční jádro, nebo také konvoluční maska, hodnoty M a N jsou vlastně rozměry (v pixelech) obrazu ( m, n) I, pro který platí, že m = { 0,1, K, M 1} a = { 0,1,, N 1} n K. Konvoluční jádro je funkce, kterou definujeme (obyčejně maticí) a která udává, jak se náš obraz bude pomocí konvoluce měnit. Zjednodušeně řečeno, význam konvoluce je následující. Máme vstupní obraz (funkci) I ( m, n) a nějaké konvoluční jádro ( m, n) h. Výstupní obraz I ( m, n) = I( m, n) h( m, n) získáme tak, že na každý bod funkce I ( m, n) položíme konvoluční jádro h ( m, n) a vypočítáme součet (4.4). Poté konvoluční jádro posuneme o jeden pixel vedle a výpočet opakujeme. Tento postup je základem naprosté většiny operací s diskrétním obrazem, například odstraňování šumu, detekce hran, vytlačení vzoru aj. vstup: obraz I a filtr h výstup: obraz I Pro všechny pixely [m, n] v obraze I a filtr h proveď: 1. Vynuluj čítač s 2. pro m = 0,...,M-1 a n = 0,...,N-1 proveď s := s + I[r+m, s+n].h[m, n]. 3. Intenzitu pixelu v obraze I na pozici [m, n] nastav na hodnotu s. Algoritmus výpočtu diskrétní konvoluce Konvolučnímu jádru h (x) se také říká okno (windowed function). Diskrétní konvoluci je totiž možno chápat tak, že na každý pixel položíme okno filtrovací funkce, která určí, z jak veliké oblasti se vypočítá nová hodnota tohoto pixelu. Poté se toto okno -29-
posune dál a hodnota se vypočítá pro sousední pixel. Je zřejmé, že v praktické implementaci je zapotřebí mít k dispozici dvě matice. První matice reprezentuje původní obraz a do druhé se zapisuje výsledek konvoluce. 43 Všimněme si ale, že při výpočtu konvoluce jsou požadovány i hodnoty vně obrazu I ( m, n), konkrétně při výpočtu hodnot krajních pixelů, jejichž počet závisí na velikosti konvoluční masky. Tento problém se řeší několika způsoby. 1. hodnoty krajních pixelů se ponechají původní neupravené, 2. hodnoty krajních pixelů se nastaví na zvolenou hodnotu (bílá, černá atp.) vznik rámu, 3. předpokládáme existenci okolních pixelů mimo obraz I ( m, n) se zvolenou hodnotou, 4. použijeme tzv. cyklickou konvoluci popsanou vztahem M 1 N 1 (4.5) ( m, n) = I( m, n) h( m, n) = I( r, s) h( ( m r),( n s) ) I, r= 0 s= 0 M N kde zápis I ( m, n). 44 ( p) q znamená p modulo q. Tím se zajistí periodicita signálu 4.4 Odstranění šumu Na začátku této kapitoly jsme naznačili, že můžeme pracovat se šumy ve spojité oblasti, ale také v prostorové oblasti. Vzhledem k tomu, že pracujeme především s diskrétním obrazem, je pro nás důležitější filtrace v prostorové oblasti, nicméně se v této podkapitole zmíníme i o filtrech v oblasti spojité. 43 Žára, J.; Beneš, B.; Felkel, P.: Moderní počítačová grafika. Str. 17. 44 Sojka, E.: Digitální zpracování a analýza obrazů. Str. 12. -30-
4.4.1 Filtry v prostorové oblasti Nejjednodušší filtrovací metody počítají hodnotu pixelu jako průměr z jeho okolí. Tím dochází k potlačení vysokých frekvencí (šumu) za současného rozmazání hran. Tato technika se nazývá obyčejné průměrování. Konvoluční jádro pro okolí 3 3 má tvar (4.6) 1/ 9 1/ 9 1/ 9 h = 1/ 9 1/ 9 1/ 9. 1/ 9 1/ 9 1/ 9 Snížením vah směrem od středu získáme filtr, který potlačuje Gaussův šum (4.7) 1/16 2 /16 1/16 h = 2 /16 4 /16 2 /16. 1/16 2 /16 1/16 Jinou možností je použít techniku pracující na základě lokální statistiky (order statistics) pixelu. Příkladem je filtrace mediánem. Tato technika spočívá v nahrazení pixelu f ( i, j) hodnotou pixelu, který získáme jako medián z hodnot v jeho okolí. Připomeňme, že medián z určitých čísel získáme jako hodnotu ležící uprostřed seřazené posloupnosti. Okolí bodu, které se používá, nemusí být nutně obdélníkové, výhodné je použít okolí ve tvaru kříže. Tato metoda narušuje tenké čáry a ostré rohy, ale nerozmazává ostatní hrany. 45 4.4.2 Filtry ve frekvenční oblasti Filtry pracující s obrazem získaným pomocí Fourierovy transformace vycházejí z faktu, že šum je v obraze reprezentován vysokými frekvencemi. Proto se používají obecně takové filtry, které jednoduše odřežou vysoké frekvence (dolno-propustný filtr). Je možné též použít filtry potlačující nežádoucí frekvence s určitou váhou. V obou případech dojde ve výsledku k rozmazání obrazu, obdobně jako u filtrace v prostorové oblasti. 45 Žára, J.; Beneš, B.; Felkel, P.: Moderní počítačová grafika. Str. 128-130. -31-
Ideální nízkofrekvenční filtr je popsán vztahem 2 2 1K (4.8) ( ) ( u + v ) H u, v = 2 2 0K ( u + v ) 2 2 kde ( v ) D > D 0 0, u + označuje amplitudu frekvence. Všimněme si, že filtr nepropouští frekvence vyšší než je hodnota D 0. 46 Další filtry jsou popsány například v Sojka, E.: Digitální zpracování a analýza obrazů. VŠB-TU Ostrava, 2000. Při odstraňovaní šumu uvedenými způsoby dochází k poškození hran, čar a rohů. Proto je nutné po zpracování šumu obraz ještě vylepšit zostřením. 4.5 Ostření obrazu Optické vylepšení obrazu ostřením využívá lokálních charakteristik okolí pixelu. Ostření obrazu využívá skutečnosti, že člověk snáze porozumí obrazu, ve kterém jsou výrazné hrany. Ostření obrazu je tedy založeno na detekci hran a označuje se také jako zvýraznění hran. Hrana (edge) je určena gradientem, tj. velikostí a směrem. Gradient je určen vektorovým operátorem nabla, který je definován jako f ( x, y) f ( x, y) (4.9) f ( x, y) =, x y a jeho velikost se spočítá podle známého vztahu (4.10) f ( x, y) f ( x, y) f ( x, y) = +. x y Označme ( i, j) 2 2 s funkci, která reprezentuje velikost gradientu obrazu f v bodě [ j] Obraz g ( i, j) získáme z obrazu f ( i, j) ostřením pomocí koeficientu c a vztahu (4.11) g( i, j) = f ( i, j) + c s( i, j). i,. 46 Žára, J.; Beneš, B.; Felkel, P.: Moderní počítačová grafika. Str. 130. -32-
Funkce s ( i, j) vrací velikost gradientu a o její patřičný násobek se zvýší intenzita pixelu v odpovídajícím bodě. V digitálním obraze je ale určení gradientu f ( i, j) nejednoznačné. 47 4.5.1 Ostření obrazu v prostorové oblasti Nejjednodušší metodou určení velikosti gradientu pixelu je použití Robertsova operátoru, který používá ke svému výpočtu čtyř nejbližších sousedů pixelu a má tvar (4.12) f ( i, j) = f ( i, j) f ( i + 1, j + 1) + f ( i, j + 1) f ( i + 1, j). Vidíme, že výpočet je určením změny jasu ve směru hlavní a vedlejší diagonály. Výpočet rozdílu intenzity ve směru kolmém na souřadné osy systému používá Laplaceův operátor pro čtyřokolí. Jeho konvoluční jádro má tvar 0 1 0 (4.13) h = 1 4 1 0 1 0 a varianta, jež používá k výpočtu velikosti gradientu hodnot z osmiokolí, má tvar 1 1 1 (4.15) h = 1 8 1. 1 1 1 Hodnota, kterou tento operátor vrací po aplikaci ve vztahu (5.1), je druhou mocninou gradientu (4.16) 2 2 f ( i, j) f ( i, j) f ( i, j) = f ( i, j) = +. i j Směrově orientovaný je Sobelův operátor, který aproximuje první derivaci. Existuje celkem v osmi variantách, které obdržíme postupnou rotací konvoluční masky kolem jejího středu 1 0 1 (4.17) h = 2 0 2. 1 0 1 2 47 Žára, J.; Beneš, B.; Felkel, P.: Moderní počítačová grafika. Str. 130-131. -33-
Poznamenejme, že operátory zvýrazňující hrany zvýrazňují všechny vysoké frekvence a jsou tedy citlivé i na šum. Méně citlivé jsou operátory pracující s větší konvoluční maskou, tedy i s větším okolím pixelu. Cenou za snížení citlivosti na šum je pochopitelně vyšší výpočetní složitost. 48 4.5.2 Ostření obrazu ve frekvenční oblasti Pracuje na opačném principu, než filtry odstraňující šumy. Obraz získaný Fourierovou transformací zostříme totiž tak, že potlačíme nízké frekvence a zdůrazníme vysoké. Pro to slouží nejlépe horno-propustný filtr. Ideální vysokofrekvenční filtr je popsán vztahem 2 2 0K (4.18) ( ) ( u + v ) H u, v = 2 2 1K ( u + v ) D > D 0 0. Samozřejmě, že existuje ještě mnoho jiných filtrů, které jsou popsány například v Sojka, E.: Digitální zpracování a analýza obrazů. VŠB-TU Ostrava, 2000. 49 48 Žára, J.; Beneš, B.; Felkel, P.: Moderní počítačová grafika. Str. 130-133. 49 Žára, J.; Beneš, B.; Felkel, P.: Moderní počítačová grafika. Str. 133. -34-
5 Isolinie Podle slovníku cizích slov je isolinie, izolinie linie (čára) na mapě nebo v grafu spojující místa stejných hodnot dané veličiny (jinak též izokřivka, izočára). V našem případě půjde o jas, barevný tón a sytost dané barvy. Toho lze využít kupříkladu při rozeznávání tvaru těles na obrazu. 5.1 Isofoty Isofoty jsou čáry, které spojují body se stejným jasem. Pro barvy se stejným jasem platí vztah (5.1) R ( R) G ( G) + B ( B) Konst. +, C C C = kde Konst. je konstanta. Množina barev se stejným jasem je určena průnikem tělesa barev a roviny rovnoběžné s jednotkovou rovinou. Uvažujme kameru s nestejnou citlivostí na základní barvy. Potom dostaneme pro barvy se stejným původním jasem rovnici (5.2) k R ( R) + k G ( G) + k B ( B) Konst. kde R, R C G C B C = k, k, k jsou citlivosti kamery na jednotlivé základní barvy. Stejnou úvahu jako G B pro kameru lze provést i pro lidské oko. 50 50 Komzák, J.: Zpracování rušených obrazů ve vhodných soustavách a transformacích. Čl. 4.2. -35-
zelená bílá černá červená rovina shodných jasů modrá Obr. 14 Isofoty (body shodných jasů) v tělese barev 5.2 Isocolory Isocolory jsou čáry, které spojují body se stejným tónem barvy. Pokud označíme tón barvy H, musí pro všechny barvy se stejným tónem platit vztah (5.3) H C = Konst. Množina barev se stejným tónem je tvořena průnikem poloroviny ohraničené přímkou nepestrých barev (černá bílá) a tělesem barev. 51 51 Komzák, J.: Zpracování rušených obrazů ve vhodných soustavách a transformacích. Čl. 4.3. -36-
zelená rovina shodných tónů bílá černá červená modrá Obr. 15 Isocolory (body shodných tónů) v tělese barev 5.3 Isovolumy Isovolumy jsou čáry se stejným obsahem dané barvy. Danou barvu můžeme vyjádřit r r v = R, G, B v = R, G, B jejím vektorem ( ). Každou barvu s vektorem ( ) dané dané dané dané můžeme vyjádřit ve tvaru r r r (5.4) vc = S vdané + vp, kde S je obsah barvy a v r p je vektor barevné příměsi. Obsah dané barvy v barvě zkoumané je dán maximální hodnotou S, pro kterou rovnice platí. C C C C -37-
Množina barev se stejným obsahem dané barvy je dána povrchem průniku tělesa barev a tělesa barev posunutého o součin obsahu a vektoru dané barvy. Pokud vektor leží v jedné ze stěn, průnik s touto stěnou do množiny nepatří. 52 zelená plocha se stejným obsahem dané barvy černá červená vektor obsahu dané barvy modrá Obr. 16 Body se stejným obsahem dané barvy v tělese barev 52 Komzák, J.: Zpracování rušených obrazů ve vhodných soustavách a transformacích. Čl. 4.4. -38-
6 Implementace programu V tuto chvíli víme již vše důležité pro to, abychom mohli vytvořit funkční program, který bude schopen zobrazit zadané obrazy, rušit je a transformovat do různých barevných soustav a vyznačovat body se stejným jasem, barevným tónem a obsahem dané barvy. Pro vytvoření takového programu jsme použili programovací jazyk Delphi. Základní funkce jsou popsány v následujících podkapitolách. 6.1 Zobrazení Základem pro práci s barevnými obrazy je jejich zobrazení v prostoru RGB, což je jediný způsob čitelný pro lidské oko, který podporuje většina dnešních monitorů a projektorů. Proto je zdrojový obraz načten na tzv. plátno (canvas), což je objekt jazyka Delphi umožňující zobrazení a práci s obrazem (pro náš příklad používáme filtr umožňující práci pouze se soubory formátu *.bmp). Původní veze programu obsahovala pouze jedno plátno pro načtení a práci s obrazem. Ukázalo se však, že s rostoucím počtem funkcí programu rostla i nepřehlednost a špatná vypovídací schopnost výsledného obrazu. Původní obraz byl přepisován, transformován, nebylo možné porovnávat zdroj a výsledek. Proto jsme se rozhodli pro takové řešení, které umožní sledovat změny při práci s obrazem. Každý obraz je načten na samostatné plátno (maximální velikost bitmapy je omezena na 800 x 600 pixelů s ohledem na časovou náročnost při zpracování větších obrazů). Tento způsob je využit při načtení zdrojového obrazu a při vytváření zašuměných obrazů a jejich převodu do různých barevných soustav. 6.2 Transformace a šumy Máme tedy zdrojový obraz (bitmapu) zobrazený na prvním plátně. Přeskočme funkce ukládání a zavírání obrazu a přejděme rovnou k vytváření šumů v různých transformacích. Tato část programu sestává ze dvou důležitých celků: 1. transformace obrazu do různých barevných prostorů a jeho zpětné zobrazení v RGB, 2. zašumění obrazu ve zvoleném barevném prostoru. -39-
6.2.1 Transformace a vybrané barevné prostory Zobrazení zdrojového obrazu probíhá v prostoru RGB, je tedy výchozím prostorem pro další transformace. Z prostorů, které jsme si popsali ve 3. kapitole jsme zvolili tři další, pro které budeme vytvářet převodové funkce. Jsou to prostory XYZ, CIELAB a CIELCH. Jednotlivé převody budeme realizovat pomocí funkcí, které vychází ze vztahů mezi vybranými prostory (viz.: 3. kapitola). Pro převod z prostoru RGB do prostoru XYZ použijeme již známé postupy, které vnoříme do cyklu pro všechny body obrazu, jak je vidět na algoritmu funkce RGBtoXYZ. procedure RGBtoXYZ(); begin for x:=0 to OriginWidth do for y:=0 to OriginHeight do begin X[x][y]:= (0.430574*R[x][y]+0.341550*G[x][y]+0.178325*B[x][y]); Y[x][y]:= (0.222015*R[x][y]+0.706655*G[x][y]+0.071330*B[x][y]); Z[x][y]:= (0.020183*R[x][y]+0.129553*G[x][y]+0.939180*B[x][y]); end; end; Zobrazená funkce je samozřejmě zjednodušená. Pro přehlednost neuvádíme její úplnou podobu. Poznamenejme, že proměnné x a y reprezentují šířku a výšku obrazu a hodnoty OriginWidth a OriginHeight označují rozměry zpracovávaného obrazu (podobně tomu bude i u ostatních funkcí). Dvourozměrné řetězce R[x][y], G[x][y] a B[x][y] vyjadřují hodnoty červené, zelené a modré v pixelu na pozici xy. Obdobně tak X[x][y], Y[x][y] a Z[x][y] jsou vypočítané souřadnice prostoru XYZ. Pro zpětný převod do souřadnic RGB používáme funkci XYZtoRGB. -40-