1 Základní funkce pro zpracování obrazových dat 1.1 Teoretický rozbor 1.1.1 Úvod do zpracování obrazu v MATLABu MATLAB je primárně určen pro zpracování a analýzu numerických dat. Pro analýzu obrazových dat je využíván Image Processing Toolbox. Tento balík nástrojů představuje velmi výkonný a efektivní nástroj pro zpracování obrazových signálů. Na základě mohutného výpočetního potenciálu MATLABu jsou zde vybudovány nadstavby pro návrhy filtrů, rekonstrukci a analýzu obrazů, dále nástavby pro manipulaci s barvami, geometrií a strukturou obrazů včetně 2 D transformací. Díky své výpočetní mohutnosti, otevřenosti a strukturou aplikačních knihoven je MATLAB optimálním nástrojem v tak mnoha oborovém prostředí jako je digitální zpracování obrazu. 1.1.2 Čtení a zápis obrazových dat Mezi základní operace při zpracování obrazových dat patří načtení a zápis obrazových dat. K těmto úkonům jsou využívány funkce imread() a imwrite(). Funkce imread() načte šedotónový nebo barevný obrázek v podporovaném formátu a uloží jej do definované proměnné v MATLABu. Je velmi důležité si uvědomit, že je rozdíl, zda načítáme barevný nebo šedotónový obraz. V případě šedotónového obrazu je obrazový signál reprezentován 2D maticí, naopak v případě barevného obrazu dostáváme 3D matici. Zde nastávají první problémy, protože mnoho funkcí v MATLABu je primárně určeno pro použití u 2D matic. Tento problém se dá naštěstí eliminovat, protože MATLAB obsahuje funkce pro konverzi mezi šedotónovými a barevnými obrazy. Syntaxe funkce imread() je velmi jednoduchá, stačí se odkázat na název souboru, ve kterém jsou uložena obrazová data. Syntaxe funkce imread() I=imread('nazev souboru') Pro zobrazení již uložených obrazových dat lze využít například funkci imshow(). Na následujícím příkladu je ukázáno velmi jednoduché zobrazení obrazových dat v MATLABU. Jako vstupní data je použít soubor, který již MATLAB obsahuje. imdata = imread('ngc6543a.jpg'); imshow(imdata) V případě načtení barevného obrazu, jak již bylo zmíněno, dostaneme trojrozměrnou matici, která je definována následující syntaxí: I(r,c,ch) kde:
r je index řádku, c je index sloupce, ch je index chrominačního kanálu (R(ch=1), G(ch=2), B(ch=3)). Tuto 3D matici je možné rozložit na jednotlivé chrominační složky, které mají tvar 2D matic: R=I(:,:,1) G=I(:,:,2) B=I(:,:,3) Jednotlivé vytvořené 2D matice lze dále libovolně zpracovávat. Nevýhodou je, že jednotlivé složky obrazu jsou uloženy ve formátu uint8, takže jsou podrobitelné pouze celočíselným matematickým operacím, což představuje jistá omezení. Abychom se vyhnuli těmto omezením, je možné převést obrazová data do formátu s plovoucí čárkou (formát double). R_double=(R) G_double=double(G) B_double=double(B) Jelikož již pracujeme s formátem double, můžeme na data aplikovat libovolné matematické operace. Po provedení všech úprav, které jsme zamýšleli, je nezbytná zpětná konverze jednotlivých kanálů do formátu uint8 a následné složení do 3D matice. I_output(:,:,1)=uint8(R_double) I_output(:,:,2)=uint8(G_double) I_output(:,:,3)=uint8(B_double) Jak z dosavadního popisu analýzy obrazu vyplývá, neobejdeme se bez znalosti alespoň elementárních maticových úprav. Zde je dobře ukázáno, jak je pro práci v MATLABu důležitá a nezbytná znalost problematiky 3D matic. Vedle uvedené funkce imread() MATLAB také disponuje funkcí imwrite(). Tato funkce slouží k uložení upraveného obrázku do souboru s definovanou příponou. Například pokud máme uloženou proměnnou s názvem I_output a chceme z této proměnné vytvořit zpětně obrazový soubor, provedeme: imwrite(i_output. vystupni_obraz, Quality,100) V případě zápisu do souboru můžeme použít různé přípony. U každé přípony je možné použít různých parametrů. V předchozím příkladu jsme zvolili použití přípony jpeg. Zde je možno např. použít parametr Quality. Tento parametr určuje velikost komprese obrazu.
Obr.1 Rozklad 3D matice na chrominační složky 1.2 Pracovní postup 1.2.1 Postup k bodu č. 1 Načtěte obrazová data retina.jpg. S obrazovými daty proveďte následující operace: Zobrazte obrazové data. Vytvořte matici tří grafických oken. Do každého grafického okna zobrazte jednu chrominační složku vstupního obrazového signálu. Převeďte obraz ve formátu RGB na monochromatický formát, za použití vestavěné funkce v MATLABu. Převeďte obraz ve formátu RGB na monochromatický formát, bez použití vestavěné funkce v MATLABu (využijte transformační vztah 0.21 R + 0.71 G + 0.07 B). Oba převody vykreslete do matice grafických oken. Uveďte příklad využití rozkladu chrominačních složek v oblasti zpracování medicínských obrazových dat. Vyhodnoťte maximální chybu mezi jednotlivými převody.
1.2.2 Postup k bodu č. 2 Načtěte obrazová data retina.jpg. S obrazovými daty proveďte následující operace: Zobrazte obrazová data. Určete dimenzi obrazových dat. Určete rozlišení obrazových dat. Pro každou chrominační složku vypočtěte medián, dolní a horní kvartil a intervkvartilové rozpětí. Pro jednotlivé chrominační složky zobrazte histogram. Vypočtěte modus pro jednotlivé chrominační složky. Popište, jakou informaci nám dává histogram obrazového signálu. 1.2.3 Postup k bodu č. 3 V MATLABu vygenerujte harmonickou funkci o definované frekvenci f a fázovém posunu φ. Postupně zvolte alespoň tři různé hodnoty f a φ. Poté proveďte následující operace: Vykreslete jednotlivé harmonické křivky (alespoň tři) do jednoho grafu. Vyhodnoťte, jaký mají vliv parametry harmonické funkce na její průběh. Vysvětlete, jak lze transformovat harmonickou funkci do obrazové domény. Vytvořte algoritmus pro transformaci harmonické funkce v obrazové doméně. Zhodnoťte a vysvětlete, jak lze interpretovat obrazové frekvence. 1.2.4 Postup k bodu č. 4 Načtěte obrazová data mri.png. S obrazovými daty proveďte následující operace: Popište design algoritmu pro binarizaci vstupního obrazu. Implementujte algoritmus pro binarizaci alespoň pro 4 signifikantně odlišné úrovně prahování. Vygenerujte grafické výstupy pro jednotlivé prahovací úrovně. 1.2.5 Postup k bodu č. 5 Popište, co znamená zkratka RoI a vysvětlete využitelnost této operace v oblasti zpracování obrazu. Aplikujte RoI pro libovolný obrazový signál. Pro zvolené RoI vypočítejte poměr plochy originálního obrazu ku RoI.
1.3 Výsledky