Detekcia hrán
Detekcia hrán (angl. edge detection) je dôležitou oblasťou spracovania obrazu. Hrany sú miesta, kde sa prudko mení hodnota jasu. Typicky sa vyskytujú ako hranica medzi dvoma odlišnými regiónmi. Hrany sú jedny z dôležitých čŕt, ktoré môžu byť z obrázku extrahované. Detekcia hrán má preto časté použitie v úlohách počítačového videnia.[1]
Hrana
Hrana v obrázku je oblasť, kde sa rapídne mení jeho intenzita. Hrany môžeme rozdeliť na skokové (step) a impulzné (line). Pri skokovej hrane sa intenzita prudko mení z jednej hodnoty na inú. Pri impulznej hrane sa hodnota taktiež rapídne zmení, ale po istej vzdialenosti sa opäť vráti do počiatočnej hodnoty. Skokové a impulzné hrany sa však v reálnom svete vyskytujú veľmi zriedka. Na fotkách sú bežnejšie nábežné (ramp) a strechové (roof) hrany, pri ktorých zmeny jasu nie sú okamžité ale nastávajú postupne.[1]
Kroky detekcie
- Vyhladenie obrázku – ide o redukciu šumu, ktorý nevhodne ovplyvňuje výsledok detekcie.
- Zvýraznenie – tento krok zahŕňa extrahovanie všetkých bodov, ktoré sú možnými kandidátmi na hrany (oblasti s výraznou zmenou intenzity).
- Detekcia hrán – prahovaním alebo obdobnou technikou sa z kandidátskych bodov vyberú len tie, ktoré predstavujú hrany.[2]
Delenie metód
- Metódy založené na prvej derivácii jasovej funkcie – tieto metódy po výpočte prvej derivácie signálu vyhľadávajú extrém a predpokladajú že práve v ňom sa nachádza hrana. Príkladom sú Sobelov, Robertsov, Prewittov, Kirschov a Robinsonov operátor.
- Metódy založené na druhej derivácii – tieto metódy po výpočte druhej derivácie signálu hľadajú prechod nulou a predpokladajú hranu na tomto mieste. Príkladom týchto metód sú Laplacián a LOG.
- Metódy založené na parametrizácii hrán – detegujú hrany s vopred známym tvarom. Príkladom môže byť Houghova transformácia.[3]
Metódy založené na prvej derivácii
Metódy založené na prvej derivácii hľadajú hrany na miestach s vysokou hodnotou derivácie jasovej funkcie. Výpočet prvej derivácie (gradientu) aproximuje táto skupina metód pomocou konvolúcie určitým jadrom. Gradient je vektorom parciálnych derivácii a pre 2D signál ho definujeme ako[4]:
Gradient sa v polárnych súradniciach vyjadruje svojou veľkosťou a smerom[4]:
Hranu je potom možné určiť hodnotou tohto gradientu, čo je smerom a veľkosťou.
Smer s hodnotou 0 indikuje vertikálnu hranu, ktorá je tmavšia na ľavej strane. Hodnota 180 indikuje vertikálnu hranu s opačným smerom a hodnoty 90 a 270 ° indikujú zase hrany horizontálne.
Sobelov operátor
, , atď.
V praxi sa používajú aj väčšie konvolučné jadrá. Pri zvýšení jeho veľkosti sa totiž hranový detektor stáva viac odolný voči šumu. Výhodou to taktiež býva u nízko kontrastných obrázkoch, kde sú hrany ťažko detegovateľné.[5]
Príklad Sobelovho jadra 5x5:
, atď.
Príklad výpočtu[6]
Konvolúciou zo vstupného obrázku a Sobelových jadier vypočítame a . Z nich je následné možné dopočítať smer a veľkosť G. (Na rozšírenie obrázku sú použité krajné hodnoty.)
Následne je potrebné ešte dopočítať . Keďže v sú samé nuly G bude vyzerať rovnako ako . Čím väčšie čísla budú v G tým je väčšia šanca že patria hrane.
Ako sa počíta konvolúcia:
(-1*0)+(-2*0)+(-1*0)+(0*0)+(0*0)+(0*0)+(1*10)+(2*10)+(1*10) = 40
Pri konvolúcii sa najprv preklopí jadro v x-ovom aj y-ovom smere. Následne sa odpovedajúce dvojice z pôvodného obrázku a jadra vynásobia a sčítajú.
Prewittov operátor
, atď.
Kirschov operátor
, atď.
Robinsonov operátor
, atď.
Robertsonov operátor
,
Metódy založené na druhej derivácii
Metódy založené na druhej derivácii hľadajú priechod s nulou. Využíva sa tu to, že nájdenie priechodu s nulou je jednoduchšie ako hľadanie extrémov. Nevýhodou druhej derivácie je väčšia citlivosť na šum.
Laplaceov operátor
Laplaceov operátor (skrátene Laplacián) je invariantný voči rotácii (izotropný) a nedetekuje orientáciu.Je taktiež viac citlivý na šum. Laplacián môže byť implementovaný použitím jadra:[7]
Laplacian-of-Gaussian (LOG)
Z dôvodu vysokej citlivosti druhej derivácie na šum, je vhodné výpočet kombinovať s vyhladením. V praxi zaviedol Laplacián Gaussianu, ktorý kombinuje Laplacián a Gaussove rozostrenie:[3]
Keďže druhá derivácia a konvolúcia sú lineárne operácie, preto je možné zmeniť postup výpočtu na:
Derivácia Gaussovského filtru môže byť predpočítaná dopredu keďže je nezávislá na vstupnom obrázku. Príklad LOG jadra 5x5:
Cannyho detektor
Navrhol ho John Canny v roku 1986. Navrhol ho tak aby spĺňal 3 základné kritériá:[3]
- kritérium detekcie – musia byť detegované všetky dôležité hrany a nesmú byť detegované miesta, kde sa hrana nenachádza
- lokalizačné kritérium – vzdialenosť medzi detegovanou hranou a skutočnou musí byť čo najmenšia
- kritérium jednej odozvy – operátor deteguje len jednu odozvu na každú hranu
Cannyho detektor je realizovaný v niekoľkých krokoch:[1]
- Vyhladenie obrázku Gaussovým filtrom
- Výpočet gradientu aproximáciou prvej derivácie.
- NonMaxima Supression – v gradientnom obraze sú potlačené hodnoty, ktoré nie sú lokálne maximá.
- Eliminácia nevýznamných hrán – používa sa globálne prahovanie alebo prahovanie s hysteréziou (hysteresis thresholding).
Referencie
- JAIN, RAMESH, 1949-. Machine vision. New York : McGraw-Hill, 1995. Dostupné online. ISBN 0-07-032018-7.
- CHINU, CHHABRA. Overview and Comparative Analysis of Edge Detection Techniques in Digital Image Processing [online]. International Journal of Information & Computation Technology, [cit. 2020-11-03]. Dostupné online.
- SONKA, MILAN.. Image processing, analysis, and machine vision. Toronto : Thompson Learning, 2008. (3rd ed.) Dostupné online. ISBN 0-495-08252-X.
- HLAVÁČ, Václav. Hledání hran a hranových bodů [online]. České vysoké učení technické v Praze, [cit. 2020-11-05]. Dostupné online.
- MUNNELLY, Gary. Edge Detection [online]. [Cit. 2020-11-05]. Dostupné online.
- Edge Detection [online]. The University of Auckland, [cit. 2020-11-05]. Dostupné online.
- Edge detection [online]. [Cit. 2020-11-05]. Dostupné online.