Cvičení 8 - Detekce hran

A) Teoretický úvod

Detekce hran patří spolu s redukcí šumu, jasovým a geometrickým transformacím k základním operacím s obrazem. Hrana je místo v obrazu, které vykazuje vysokou prostorovou frekvenci tj. skokovou změnu jasové funkce. Každý nesyntetický obraz však kromě skutečných hran obsahuje i nenulovou míru šumu, který se lokálně chová stejně jako hrana. Samotné detektory hran jsou sestaveny tak, aby byly citlivé na libovolnou skokovou změnu jasové funkce obrazu, tedy i na změny způsobené šumem. Aby se zabránilo falešné detekci hran je třeba obraz před samotnou hranovou filtrací vhodně upravit. K tomu může sloužit např. eliminace šumu Gaussovým filtrem popř. jinou i nelineární metodou (medián). Samotná filtrace Gaussovým filtrem probíhá stejně jako filtrace např. průměrováním, čili lze opět použít výpočet diskrétní konvoluce. Rozměry filtru záleží na konkrétním obrazu a lze je volit téměř neomezeně, zpravidla se však používá jedno nebo dvou pixelové okolí. Výpočet samotného filtru se provádí na základě vztahu pro dvourozměrné Gaussovo (normální) rozložení.

Po provedení operace redukce šumu je na obraz aplikován některý ze standardních hranových filtrů, jejichž konvoluční jádra jsou uvedena na následujícím obrázku. Popořadě jde o detektor Robertsův, Prewittové, Sobelův, Robinsonův, Kirschův, Laplaceův ve čtyřokolí a Laplaceův v osmiokolí. Každý z detektorů má své výhody i nevýhody, proto univerzálně vhodný detektor neexistuje. Výsledkem je signál, který obsahuje všechny hrany obrazu, dokonce i ty nejmenší. Z toho důvodu je třeba se dále zabývat pojmem kvalita hrany. V nejjednodušším případě lze výsledný signál konvoluce prahovat a získat tak binární masku indikujcí místa hran.

Tato skupina hranových detektorů aproximuje derivace obrazové funkce diferencemi vzniklými diskrétní konvolucí. Prvních pět uvedených operátorů aproximuje první derivace obrazové funkce, Laplaceův operátor pro čtyřokolí i osmiokolí aproximuje druhou derivaci. Existují ještě hranové detektory nazývané souhrnně zero-crossing, které hledají hrany v místě, kde druhá derivace obrazové funkce prochází nulou např. operátor Marr a Hildrethové. Využívají implementační skutečnosti, že je jednodušší vyhledávat průchody signálu nulou, než jeho maxima.

V některých případech je třeba se zabývat kvalitou hrany hlouběji, než prostým prahováním. Prvním přiblížením je použití mechanismu tzv. prahování s hysterezí. Tento hysterezní mechanismus využívá i známý Cannyho hranový detektor. Ten pracuje tak, že po filtraci obrazu dvourozměrným Gaussovým filtrem jsou pomocí některého ze standardních detektorů (Roberts, Prewitt, Sobel) nalezeny velikosti hran ve všech čtyřech základních směrech (horizontální, vertikální a dva diagonální). Následně je provedena operace nemaximální suprese tzn. potlačení okolí lokálních maxim a poté je už aplikováno zmíněné prahování s hysterezí. Tento mechanismus pracuje tak, že jsou libovolnou metodou určeny dva prahy - vyšší TH a nižší TL. Smysl dvou prahových hodnot je v tom, že hodnoty hran vyšší, než práh TH jsou uznány jako hrany ihned v první iteraci a hodnoty pod prahem TL jsou naopak v první zamítnuty (jednou pro vždy). Hysterezní mechanismu tedy dále řeší pouze hrany, jejichž amplituda leží v intervalu <TL;TH>. Tyto hrany jsou následně uznávány pouze v případě, že v aktuální iteraci sousedí s některým z bodů uznaným jako hrana již v předchozích iteracích. Algoritmus se provádí do stavu idempotence tj. tak dlouho, až se výsledný obraz hran nezmění ve dvou po sobě jdoucích průchodech. Pokud jsou správně nastaveny parametry detektoru TH a TL, je výsledkem velmi kvalitní obraz hran vhodný pro další zpracování.

Na uvedeném obrázku je vlevo znázorněn signál odezvy Sobelova operátoru na vstupní obraz a uprostřed a vpravo je pro srovnání výsledků různých metod zobrazen binární prahovaný signál a výsledek Cannyho hranového detektoru.

B) Úkoly

  1. V obrazu [obraz02.bmp] nalezněte funkcí imfilter hrany pomocí všech výše uvedených operátorů a výsledky přehledně zobrazte do jednoho okna.

  2. Nalezněte v obrazu hrany pomocí knihovní funkce edge s použitím metod Laplace-Gauss, Canny a Zero-cross. Jak se výsledky funkce edge liší od výsledků funkce imfilter?

  3. Napište funkci [G] = Gauss2D(SizeX,SizeY,SigmaX,SigmaY) pro generování konvoluční masky odpovídající Gaussově normálnímu rozložení. Velikost masky udávají první dva parametry funkce, směrodatné odchylky rozložení v obou uvažovaných směrech druhé dva parametry. Vrchol funkce musí být umístěn uprostřed masky.

  4. Na obrazu [obraz06.bmp] proveďte filtraci šumu pomocí funkce imfilter a vámi vygenerované Gaussovy masky. Sledujte vliv parametrů Gaussovy funkce na kvalitu filtrace z hlediska dalšího zpracování obrazu.

  5. Napište funkci [J] = ImageEdgeDetector(I,Thigh,Tlow) pro detekci hran v obrazu využívající filtraci šumu, Sobelův operátor a mechanismus hystereze uvedený v teoretickém úvodu. Správnost implementace ověřte na obrazu [obraz04.bmp] srovnáním výsledku vaší funkce s jednoduše prahovaným výsledkem detekce hran Sobelovým operátorem (použijte funkci imfilter). Prahy TL a TH volte tak, aby horní práh segmentoval pouze nejvýznamější kontury objektů a dolní práh je zřetelně doplnil o slabší hrany.

C) Dobré vědět

  • U funkce edge pozorujte vliv parametrů thresh, sigma, horizontal, vertical a both na výsledek operace hledání hran.

  • Povolené funkce: edge, imfilter

  • Nepovolené funkce: -

D) Ilustrace výsledků