• No results found

výstup z algoritmu upravujícího obrázek pro aplikaci řetězového kódu

Na takto předpřipravený obrázek již lze úspěšně aplikovat algoritmus získání řetězového kódu a následně i spektrálních příznaků. To je realizováno celé v jednom skriptu jehož vstupem je kromě binárního obrázku i počet spektrálních příznaků. Skript umožňuje také výpočet příznaku poměru rozměrů objektu a příznaku nekompaktnosti. Z programu není umožněno měnit počet spektrálních příznaků ani volit použití dalších dvou příznaků.

Implicitní nastavení je deset příznaků spektrálních.

Tento skript je použit samozřejmě jak pro trénování tak pro testování. Při trénování je uživatel vyzván k zadání názvu jednotlivých tříd, do kterých jsou získané vektory příznaků rozřazovány. Kromě zařazení objektu, respektive vektoru příznaků, do třídy je možno objekt také úplně vyřadit. Po dokončení trénování je trénovací množina uložena ve formě souboru

*.mat.

Trénovací množiny je použito při testování. Nejdříve uživatel vybere soubor obsahující trénovací množinu, který je načten. Jsou zobrazeny základní informace jako názvy tříd a počty prvků v jednotlivých třídách. Dalším krokem je opět získání vektorů spektrálních příznaků, které představují testovací množinu. Pro vstup je opět nutný obrázek obsahující pouze hranové objekty, které lze získat aplikací zmíněného algoritmu pro předzpracování.

Uživatel může zvolit rozpoznávání všech objektů nebo pouze objektů, které nejsou ještě zařazeny do žádné ze tří tříd a náleží tedy do třídy čtvrté, jejíž barva je bílá.

Posledním krokem je již výpočet pravděpodobnosti. To je realizováno skriptem do něhož vstupují trénovací a testovací vektory a jehož výstupem jsou hodnoty pravděpodobnosti příslušností prvků do dané množiny. Praktickým výstupem je ale zařazení objektu do některé ze tříd podle pravděpodobnosti a obarvení objektu barvou odpovídající dané třídě.

7.5. Grafický editor

Aby bylo možno provádět celé zpracování řezů v navrženém programu bylo nutno program doplnit o grafický editor. Ten obsahuje některé funkce běžně známé z jiných editorů.

Mezi tyto funkce patří kreslení bodů, úseček a lomených čar. Dalšími funkcemi je mazání bodů, výběru, objektu a zvolené barvy. Kromě mazání je možno u objektu i změnit barvu.

Doplňkovou funkcí, která ale vybočuje oproti jiným editačním funkcím je možnost cyklicky procházet objekt po objektu. Vybraný objekt se automaticky přiblíží pomocí lupy a poté je možno provést jeho editaci. Je možno kromě dokreslení nebo umazání volbou barvy změnit jeho zařazení v rámci třídy nebo ho smazat. Objekty se procházejí postupně na základě funkce regionprops. Tato funkce je součástí Image Processing Toolboxu a je použita k získání informací o poloze daného objektu v obrázku. Objekty jsou postupně řazeny podle své polohy. Primárně je brána horizontální poloha ve směru zleva doprava, sekundárně je použita vertikální poloha ve směru seshora dolů.

Editor je doplněn o možnost vrácení jedné akce pomocí záloh editovaných obrázků.

7.6. Optimalizace a časová náročnost algoritmů

Všechny naprogramované algoritmy realizující jednotlivé funkce byly psány se snahou dosáhnout co největší optimalizace. Programovací jazyk MATLAB, který byl k tomuto účelu použit, je optimalizován na maticové výpočty, proto byla snaha nepoužívat cykly, které jsou poměrně časově náročné. V případě delších cyklů, pokud je to možné, je snížení výpočetní náročnosti dosaženo nahrazením maticovými výpočty při použití rozsahu indexů. V případě kratších cyklů byl v několika případech cyklus nahrazen příslušným počtem po sobě jdoucích příkazů vzájemně se lišících indexy. V mnoha případech ale bylo nutno cyklu použít.

Čas vykonávání jednotlivých algoritmů se také odvíjel od použité verze MATLABu.

Například u algoritmu optimalizované Houghovy transformace byly časy pro stejné výchozí podmínky, tedy pro stejná vstupující data a stejný hardware a operační systém, velmi rozdílné. Pro MATLAB verze 6.5 se čas vykonávání rovnal 102.9s a u verze 7.01 bylo naměřeno času 28.1s. Ke zjištění výpočetních časů bylo použito funkcí tic a toc. Rozdíl časů v závislosti na verzi MATLABu je zřetelný a v tomto případě je u nové verze dosaženo více než trojnásobné snížení výpočetního času. To je způsobeno použitím nového výpočetního jádra. Cílem této práce ale není porovnat výkonnost jednotlivých verzí MATLABu. Byla pouze snaha dosáhnout co nejmenších časů i v případě náročných algoritmů, aby byl program z uživatelského hlediska přijatelný.

8. Závěr

Problematika rozpoznávání vláken v řezech a zpracování řezů je velmi rozsáhlá.

Možných přístupů k řešení je celá řada. Tato diplomová práce pokrývá pouze některé z nich.

Cílem nebylo pouze navrhnout algoritmy pro zpracování řezů, ale také ověřit vhodnost zvolených přístupů.

Použití hranových operátorů nebo jejich kombinace je sice vhodnější než použití prostého prahování histogramu, ale obsahuje problém, kterým je vnitřní i vnější hrana vláken.

V případě Cannyho hranového detektoru jsme se přesvědčily, že hrany jsou sice detekovány nejlépe, ale také nastává největší problém s dvojnásobnými hranami. Použitím dalších operací v kombinaci s editorem lze získat binární obrázek, který je tvořen hranami jednotlivých vláken. Plně automatickým zpracováním dosáhneme dobrých výsledků pouze u velmi kvalitních obrázků. Kvalita dodaných obrázků byla ve většině případů nízká.

Algoritmus založený na Houghově transformaci hledající kružnice, kterými aproximuje průřezy vláken, poskytoval uspokojivé výsledky. Ikdyž je Houghova transformace z principu celkem robustním nástrojem, menší kvalita vstupních obrázku se přesto projevila na výsledcích o něco více než bylo očekáváno.

Rozpoznávání typů vláken na základě spektrálních příznaků a následné rozřazování do tříd fungovalo velmi dobře s úspěšností pohybující se kolem 70 - 75%. Nevýhoda je ale ta, že vstupní obrázek musí obsahovat pouze uzavřené hranové objekty čehož není normálně nikdy dosaženo. Algoritmus navržený za účelem předzpracování obrázků pro výpočet řetězového kódu byl ve většině případů úspěšný, ale i přesto bylo někdy potřeba obrázek předzpracovat i pomocí editoru.

Tato práce kromě ověření vhodnosti zvolených postupů zjišťuje i možnosti v této problematice. Do budoucna je počítáno s pokročováním automatizace zpracovávaní řezů a možným využitím některých algoritmů.

Použitá literatura

[1] Hlaváč V., Sedláček M. Zpracování signálů a obrazů. 2. vyd., skriptum ČVUT, Praha 2002, ISBN 80-01-02114-9

[2] Massey University – Institute of Information & Mathematical Science – Computer Science. [online] [cit. 22. listopadu 2004].

Dostupné na www: <http://cs-alb-pc3.massey.ac.nz/notes/59318/l11.html>

[3] Bubeník F., Pultar M., Pultarová I. Matematické vzorce a metody. vydavatelství ČVUT, Praha 1994, ISBN 80-01-01643-9

[4] Matela L. Rozpoznávání druhů stromů podle tvarů jejich listů. [online] K7 – vědecko populární časopis Fakulty mechatroniky TU v Liberci, 02/2004 [cit. 1. září 2005].

Dostupné na www: <http://k7.vslib.cz/files/k7_04_2.pdf>. ISSN 1214-7370

[5] Dušek F. MATLAB a SIMULINK úvod do používání. skriptum Univerzita Pardubice, 2002, ISBN 80-7194-475-0

[6] Sedláček M., Šmíd R MATLAB v měření. skriptum ČVUT, Praha 2004, ISBN 80-01-02851-8

[7] The Mathworks - Image Processing – Demos and Webinars. [online]. 2005 [cit. 10. září 2005].

Dostupné na www:

<http://www.mathworks.com/applications/imageprocessing/index.html>

[8] Morphology-based Operations. [online]. 2005 [cit. 2. září 2005].

Dostupné na www:

<http://www.ph.tn.tudelft.nl/Courses/FIP/noframes/fip-Morpholo.html#Heading99>

[9] Contour Representations - Chain code. [online]. 2005 [cit. 2. září 2005].

Dostupné na www:

<http://www.ph.tn.tudelft.nl/Courses/FIP/noframes/fip-Contour.html#Heading26>

[10] Bock Rudolf K. Hough Transform. [online]. 2005 [cit. 10.prosince 2004].

Dostupné na www:

<http://ikpe1101.ikp.kfa-juelich.de/briefbook_data_analysis/node122.html>

[11] Fisher R., Perkins S., Walker A. and Wolfart E. Image processing learning resources.

[online]. 2005 [cit 5.září 2005]

Dostupné na www:

<http://homepages.inf.ed.ac.uk/rbf/HIPR2/hipr_top.htm>

Přílohy

Příloha 1: Popis a ovládání programu

Všechny dostupné funkce analýzy obrazu a metody rozpoznávání jsou vloženy do programu s grafickým uživatelským rozhraním vytvořeným v Guide (již zmíněná součást MATLABu).

Program obsahuje jeden hlavní formulář. V horní liště formuláře se nachází nabídka.

V levé částí se nachází panel nástrojů. Většinu místa zabírá náhled obrázků, ke kterému náleží pod ním se nacházející panel záložek, který je popsán dále. V pravé dolní části je umístěn panel barev. Tento panel obsahuje čtyři přepínače sdružené do skupiny (tudíž je možno, aby byl stisknut pouze jeden z nich). Jejich funkce je volba aktuální barvy, která se používá k editaci obrázků. Každý přepínač je vybarven odpovídající barvou, kterou volí. Kromě přepínačů je na tomto panelu umístěno i tlačítko změny nastavení barev. Toto tlačítko otvírá formulář barev, který umožní jejich nastavení. Formulář obsahuje ke každé barvě náhled a hodnoty barevných složek v barevném prostoru RGB (Red Green Blue). Nastavení barvy je možno přímým vložením hodnot jednotlivých barevných složek nebo použitím dialogu. Na formuláři se nacházejí čtyři tlačítka, která umožňují aktualizovat náhledy po editaci barevných složek, uložení aktuálního nastavení do konfiguračního souboru, načtení nastavení z konfiguračního souboru a zavření formuláře. Z konfiguračního souboru je nastavení načítáno při každém spuštění programu, provedené změny jsou tudíž zachovány i po zavření programu.

Výše zmíněný panel záložek obsahuje tři skupiny barevně odlišených záložek. Každá skupiny odpovídá jednomu nezávislému pracovnímu projektu. Je tedy možno pracovat zároveň na třech projektech. Všechny skupiny obsahují čtyři záložky. První záložka aktivuje náhled na vstupní barevný nebo šedotónový obrázek, který uživatel otevře pomocí nabídky.

Pomocí druhé záložky je k dispozici náhled na výstupní obrázek z jednotlivých operací. Tento obrázek je v principu binární, ale objekty mohou být odlišeny k čemuž je použito barevné nastavení. Toto řešení bylo nazváno jako „vícebarevný binární“ obrázek a je popsáno v kapitole 7.2. Z tohoto důvodu není tento obrázek vždy binární. Pokud nejsou objekty zařazeny do skupin, obrázek je skutečně binární a barva objektů je bílá. Pokud jsou v obrázku objekty rozřazeny do více skupin, objekty každé skupiny jsou obarveny příslušnou barvou.

Potom je obrázek již barevný se složkami R, G a B, ale při úkonech je obrázek rozložen na více binárních obrázků, se kterými je pracováno individuálně a po dokončení operace je opět vytvořen jeden obrázek. Poslední čtvrtá záložka slouží pro zálohu obrázku. Toho se dá později využít například pro součet mezivýsledků do výsledného obrázku. K tomu slouží tři níže popsané operace.

Panel nástrojů nacházející se v levé části formuláře osahuje především tlačítka jednotlivých operací sdružených do skupin, které je možno provádět s obrázky. Na panel jsou ještě doplněna dvě tlačítka lupy, a to pro zvětšení a pro vrácení náhledu do původní velikosti.

Pomocí tlačítka pro zvětšení se volí obdélníkový výběr, který chceme zobrazit do celé zobrazovací plochy. Funkce tlačítka pro vrácení do původní velikost zobrazí opět obrázek celý v maximálním zobrazovacím rozlišení, ve kterém se vejde na zobrazovací plochu. Další tlačítko je tlačítko editace obrázku, které umožňuje kreslit a mazat jednotlivé objekty. Funkce editace je popsána v kapitole 7.5. Všechny ostatní operace jsou sdruženy do skupin. První skupina obsahuje operace s barevnými nebo šedotónovými obrázky a zahrnuje operaci prahování a hranové operátory. Další skupina tří operací umožňuje zálohovat, sčítat nebo přepisovat obrázky získané pomocí jednotlivých operací. To je výhodné v případě, že potřebujeme porovnat dva postupy zpracování, nebo sloučit dílčí výsledky nebo jenom odložit získaný obrázek, abychom se k němu mohli vrátit. Tyto tří operace jsou prováděny s obrázky, které jsou umístěny na druhých a čtvrtých záložkách ve skupině.

Další a současně největší skupinou operací jsou operace prováděné na binárních obrázcích. Těmito operacemi je binární negativ, eroze, dilatace, otevření, uzavření, skeletonizace, operace majority, odstranění šumu, odstranění objektů podle jejich velikosti, vyplnění objektů s uzavřenou hranicí a operace, kterou je možno získat hranice jednotlivých objektů obrázku. Jak jednotlivé operace fungují je popsáno v kapitolách 7.4.2 - 7.4.4.

Poslední skupina zahrnuje algoritmus vyhledávání objektů, v našem případě kružnic, pomocí Houghovy transformace. Houghova transformace a i samotný algoritmus jsou pojednány v kapitolách 4 a 7.4.5. Dalším algoritmem v této skupině je algoritmus, který slouží k rozpoznání objektů pomocí příznaků získaných především z hranic jednotlivých objektů. Tento algoritmus narozdíl od Houghovy transformace obsahuje dvě tlačítka. První z nich umožňuje trénování, druhé z nich testování. Tento postup i realizovaný algoritmus jsou popsány v kapitolách 5 a 7.4.6.

Většina operací má vlastní panel, kde je možno danou operaci nastavit. Operace záloha, sečtení a přepsání obrázku, negativ, odstranění šumu, vyplnění objektu, získání hranice objektů a rozložení obrázku podle barevného nastavení neobsahují žádné nastavení a proto jsou vykonány okamžitě.

Pro operaci prahování je možno zvolit hodnotu prahu nebo ponechat automatické nastavení. Další panel nabízí Sobelův operátor, operátor Prewittové a LoG operátor. Všechny tři oparátory umožňují nastavit hodnotu prahu nebo ponechat nastavení automatické. U Sobelova hranového operátorů a operátoru Prewittové lze nastavit, zda chceme hledat hrany všechny nebo omezit hledání na vertikální, respektive horizontální hrany. LoG operátor ještě zahrnuje možnost nastavení parametru sigma, který říká v jak velkém okolí operátor pracuje (pokud je okolí velikosti n x n tak platí, že n=ceil(sigma*3)*2+1, kde „ceil“ označuje zaokrouhlování nahoru). V případě Cannyho hranového je vedle automatického nastavení možno použít uživatelské nastavení, které umožňuje zvolit hodnoty dvou prahů popřípadě i hodnotu sigma.

Pro operace eroze, dilatace, ztenčování hran (skeletonizace) a operaci majority je možno nastavit jediný parametr, a to počet opakování průběhu algoritmu.

U algoritmu hledajícím kružnice pomocí Houghovy transformace je možné nastavit procentuální práh, koeficient náhodnosti, minimální a maximální poloměr nebo zvolit případné použití filtrace akumulátoru. Význam těchto parametrů je vysvětlen v kapitole 7.4.5.

Po vykonání algoritmu je umožněno uložení výsledků do souboru.

Po otevření panelu pro trénování, respektive testování, a následném spuštění operace je uživatel dotázán, zda chce provést předzpracování vstupních obrázků. Předzpracování je umožněno i pomocí tlačítka umístěného na obou panelech. Trénování i testování probíhá v několika krocích.

Prvním krokem trénování je zadání názvů tříd objektů pokud vytváříme novou trénovací množinu. Pokud chceme rozšířit stávající množinu, nezadáváme již názvy tříd, ale načteme databázi s trénovací množinou, kterou jenom rozšíříme. Dalším krokem je aplikace algoritmu, kterým získáme vektory spektrálních příznaků jednotlivých vektorů. Posledním krokem je již rozřazování objektů do tříd. Na obrázku se postupně zobrazují jednotlivé objekty, které pomocí tří tlačítek tříd a čtvrtého tlačítka, které objekt vyřadí, můžeme vložit do příslušné třídy.

Prvním krokem testování je načtení databáze obsahující trénovací množinu. Po jejím načtení jsou zobrazeny základní informace ve formě názvů tříd a počtu prvků ve třídách. Poté je umožněno provést algoritmus, kterým získáme vektory příznaků. Do testování (rozpoznávání objektů) můžeme zařadit všechny objekty nebo pouze ty objekty, které ještě nejsou zařazeny v žádné ze tří tříd, ale příslušejí do implicitní třídy, které odpovídá bílá barva.

Na základě vypočtených pravděpodobností jsou rozpoznávané objekty obarveny barvou příslušející množině, do které byly zařazeny.

Editace obrázků grafickým editorem

V horní části panelu nástrojů se nachází tlačítko, které otevře panel pro editaci obrázků.

Editaci je možno provádět při náhledu do binárního obrázku (druhá záložka skupiny) nebo do vstupního obrázku, do kterého je binární obrázek vykreslen (třetí záložka skupiny).

V případě dokreslování hranic je nutné mít ve vstupním obrázku předlohu a poté uživatel může hranice přesně obkreslit.

Na panelu editace je v horní části umístěno tlačítko zpět, které panel zavře. pod ním jsou tlačítka lupy, která slouží pro zobrazení detailu, aby bylo možné editovat s větší přesností.

Dále je na panelu umístěn náhled pro vybranou barvu, kterou je prováděno kreslení, respektive kterou jsou objekty přebarvovány. Barva se volí pomocí přepínačů v panelu barev, který je umístěn v pravé dolní části hlavního formuláře. Pod náhledem je umístěn přepínač, který informuje, zda je či není program v editačním. Tímto přepínač také slouží k vypnutí editačního módu.

Ještě níže se nacházejí přepínače jednotlivých editačních funkcí. Editačními funkcemi je kreslení bodů, úseček a lomených čar, mazání bodů, výběru objektů a barvy. Další funkcí je změna barvy objektů, respektive zařazení objektu do jiné třídy charakterizované příslušnou barvou. Editační funkce se aktivuje příslušným přepínačem a vypíná přepínačem, který je společný pro všechny funkce nebo levým tlačítkem myši. Zjednodušeně řečeno je tedy buď zvolen editační mód a zablokováno přepínání záložek a volba barvy nebo jsou tyto volby zpřístupněny a editace je vypnuta. První ze zmíněných funkcí, tedy kreslení bodů, je realizování pomocí volby bodu kurzorem a levého tlačítka myši. Kreslení úseček se provádí výběrem dvou krajních bodů, po jejichž volbě je úsečka bezprostředně vykreslena. Lomené čáry jsou konstruovány volbou zlomových bodů levým tlačítkem myši. Naproti tomu prostřední tlačítko zajistí přerušení čáry a je možno kreslit další. Funkce mazání bodů je inverzní ke kreslení bodů. Pomocí mazání výběru je vymazán obdélníkový výběr určený uživatelem. Mazání objektů slouží k vymazání kurzorem vybraného objektu. Mazání barvy vymaže všechny objekty, které jsou stejné barvy jako je barva zvolená. Třída objektů odpovídající dané barvě je tedy potom prázdná.

Funkce změna barvy objektu provede fakticky přeřazení objektu do třídy reprezentované vybranou barvou.

Zvláštní funkcí je funkce cyklického procházení objektů v obrázku. Tato funkce prakticky pomocí dvou tlačítek umožňuje procházení mezi jednotlivými objekty a jejich snadnější editaci. Funkce je blíže popsána v kapitole 7.5.

Pro možnost návratu poslední provedené akce je určeno tlačítko umístěné dole ve stejném panelu.