1 Jasové transformace 1.1 Teoretický rozbor 1.1.1 Princip jasové transformace Jasové transformace představují transformační funkce, které mění vždy určitou hodnotu vstupní jasové funkce na výstupní. Transformace jasové stupnice lze vyjádřit následujícím matematickým zápisem: q=t(p). kde: T - transformační funkce, p - původní stupnice jasu, q - nová stupnice jasu. Obr. 1 Transformace jasové stupnice Z praktického hlediska jsou jasové transformace důležité zejména pro úpravy obrazu. Tyto úpravy umožňují pozorovateli snazší interpretaci objektu, který je v popředí jejich zájmu. Příkladem využití transformace jasové stupnice může být např. málo kontrastní rentgenový snímek. V některých případech mohou dokonce jasové transformace uškodit, protože mohou vest ke ztrátě informace, kdyby transformace jasové stupnice nebyla invertovatelná (nejednalo by se o prosté zobrazení). Jasové transformace se provádí zpravidla v rámci předzpracování obrazu: Jasové korekce nerovnoměrného osvětlení Korekce kontrastu (histogram)
Jasové transformace lze dělit podle velikosti okolí vyšetřovaného bodu: Globální Lokální Bodové U globální jasové transformace je nová hodnota pixelu vždy vypočítána z hodnot celého obrazu. U lokální transformace je nová hodnota pixelu vypočítána z hodnot lokálního okolí pixelu. U bodové transformace se nová hodnota pixelu vypočítá jen z hodnoty téhož pixelu. Obr. 2 Princip jasové transformace 1.1.2 Jasové transformace v MATLABu MATLAB využívá k transformaci jasové stupnice funkci imadjust(). Syntaxe funkce imadjust: J = imadjust(i) I Je proměnná, ve které jsou uložena obrazová data. J = imadjust(i,[low_in; high_in],[low_out; high_out]) low_in; high_in, low_out; high_out vymezují intervaly intenzity vstupního a výstupního obrazu. Tyto parametry nabývají hodnot 0:1 Na následujících příkladech je demonstrováno použití funkce imadjust() pro transformaci jasové stupnice. clc;clearall obr1=imread('color_image.jpg'); zesvetleni= imadjust(obr1,[0 0.7],[0.3 1]); figure(1)
imshow(obr1) title('puvodniobrazek') imshow(zesvetleni) title('zesvetlenyobrazek') figure(2) ztmaveni=imadjust(obr1,[0.3 1],[0 0.7]) imshow(obr1) title('puvodniobrazek') imshow(ztmaveni) title('ztmaveny obrazek') Obr. 3 Zesvětlení vstupního obrazu Obr. 4 Ztmavení vstupního obrazu 1.1.3 Histogram a jeho ekvalizace Histogram reprezentuje zastoupení jednotlivých intenzit v digitálním obraze. Každý histogram je vyjádřen vektorem, jehož složky jednotlivých intenzit jsou úměrně zastoupeny v digitálním obraze. Ekvalizace histogramu představuje matematický algoritmus, který mění rozložení jednotlivých intenzit v obraze tak, aby se jednotlivé intenzity vyskytovaly v širokém rozmezí a pokud možno se stejnou četností. Ekvalizace histogramu umožňuje v obraze s celkově vysokým kontrastem zvýraznit špatně rozpoznatelné detaily s nízkým kontrastem. Pokud po aplikaci ekvalizace nejsou v histogramu zastoupeny některé intensity uprostřed spektra intenzit a výstupní obraz tyto intensity vyžaduje, potom je výhodné použít filtr typu dolní propust.
Obr. 5 Histogram obrazu před ekvalizací který nevyužívá všechny hodnoty intenzit Obr. 6 Histogram obrazu po ekvalizaci Výsledná hodnota intenzity obrazového bodu po ekvalizaci I je vypočítána z původní intenzity obrazového bodu I, a to na základě matematického vyjádření: ii 1 I ' H ( i) XY. ii0 kde: H (i) představuje i tou složku vektoru histogramu (počet bodů v obraze se stejnou intenzitou), X, Y jsou rozměry obrazu, I 0 je nejnižší intenzita původního obrazu.
MATLAB má pro histogram a jeho ekvalizaci předdefinované funkce imhist() a histeq(). Na následujícím příkladu je demonstrováno použití ekvalizace histogramu v MATLABu. I = imread('pout.tif'); ekv=histeq(i); figure(1) imhist(i) imhist(ekv) figure(2) imshow(i) imshow(ekv) Obr. 7 Histogram a jeho ekvalizace
1.2 Pracovní postup 1.2.1 Postup k bodu č.1 Popište teoretický koncept binarizace obrazu. Implementujte algoritmus binarizace alespoň pro tři prahy jasové funkce vyjádřené v procentech. Algoritmus porovnejte s funkcí im2bw(). Vyhodnoťte průměrnou chybu algoritmů. Vysvětlete a ukažte histogram binarizovaného obrazu vůči originálnímu histogramu. Na praktickém příkladu vysvětlete využití binarizace. 1.2.2 Postup k bodu č.2 Numericky určete předpisy následujících lineárních transformačních funkcí: Pro negativ. Pro změnu jasové stupnice, která je dána následujícím předpisem: I in = [10 100] I out = [40 200] Pro oba případy uveďte strmost transformační funkce. 1.2.3 Postup k bodu č.3 Načtěte obrazová data mri.png. S načtenými daty proveďte následující operace pomocí vestavěné funkce imadjust(): Zesvětlení obrazu. Ztmavení obrazu. Vytvořte negativ vstupního obrazu. Všechny výstupy uveďte do protokolu. 1.2.4 Postup k bodu č.4 Pro obrazová data z předešlého příkladu proveďte následující matematické operace bez použití funkce imadjust(). Implementujte lineární transformační funkci I out (I in ) = ai in, alespoň pro 3 hodnoty a. I out - je výstupní hodnota jasu I in - je vstupní hodnota jasu Vykreslete transformované obrazy a průběhy transformačních křivek v MATLABu. Vyhodnoťte vliv směrnice transformační přímky na výsledný efekt zobrazení.
1.2.5 Postup k bodu č.5 Bez použití vestavěné funkce vygenerujte negativ obrazu mri.png. Porovnejte negativ s funkcí imadjust(). Výstupy uveďte do protokolu. 1.2.6 Postup k bodu č. 6 Načtěte obrazová data mri.png a proveďte následující operace: Vykreslete histogram vstupního obrazu. Proveďte a vykreslete ekvalizaci histogramu vstupního obrazu. Popište vliv ekvalizace histogramu na výsledný obrazový efekt. 1.2.7 Postup k bodu č. 7 Načtěte obrazová data mri.png a otestujte nelineární transformaci jasové stupnice: Vykreslete průběh logaritmické transformace pro alespoň tři hodnoty konstanty c (g = c log (1 + f)), zároveň vykreslete průběh transformační funkce. 1.3 Výsledky