Domů / Detekce hran - funkce pro měření rozměrů
Kategorie
Výrobci
Proč není vše skladem?

Řada produktů, které na těchto stránkách nabízíme, jsou tzv. na poptání. To však neznamená, že by se jednalo o nedostupné, nebo okrajové produkty. Právě naopak! Jedná se ale obvykle o drahé měřicí přístroje nebo techniku, kterou není možné držet skladem. Je však běžně dostupná na objednávku.

Tedy - nebojte se a pošlete poptávku! Jsme tu k dispozici pro vás, na druhé straně těchto stránek, připraveni vám poskytnout cenovou nabídku a zajistit dodání potřebného vybavení.

POPTAT

 

Detekce hran - funkce pro měření rozměrů

Při měření vzdáleností a rozměrů systém strojového vidění v podstatě vyhledává místa s vysokým kontrastem světlosti. Taková oblast v obraze je označena jako hrana – místo, jež se liší jasem pixelu od jasu pixelů okolních. Hrana vykazuje více či méně strmý nárůst či pokles hodnoty obrazové funkce digitálního obrazu. V místě největší strmosti změny dosahuje maxima první derivace funkce a druhá derivace funkce zde prochází nulou. Strmost změny funkce udává její gradient jako vektor, určující směr největšího růstu funkce a strmost tohoto růstu. 

detekce_hran

Průběh první a druhé derivace hrany v obrazové funkci

Softwarové prostředky se schopností detekce hran využívají několik principů. Prvním může být využití konvolučních jader aproximujících první derivaci obrazové funkce. Konvoluční jádra mohou mít řadu podob, od jednoduché matice 2x2, až po komplikované, ovšem více účinné např. Sobelův, Robinsonův či Cannyho operátor. V tomto případě jde o matice 3x3 prvky, které více či méně pomáhají zvýraznit hrany.

Použití Sobelova filtru pro detekci hran 
 

hrany_puvodni hrany_Sobel
Původní snímek Snímek po filtraci

 

Častým problémem detektorů hran je jejich měřítko — velikost konvolučního jádra by měla odpovídat velikosti detailů v obrázku. S měřítkem, a tedy velikostí konvolučního jádra, souvisí i citlivost na šum. V případě malých jader se jejich odezva na šum zvětšuje.

Poslední krok v detekci hran je vždy prahování. Pomocí něj je třeba rozhodnout, jak silná odezva už znamená hranu. Příliš nízká hodnota označí za hrany i šum, příliš vysoká zas odstraní i některé důležité hrany. Obvykle se používá tzv. prahování s hysterezí, kdy se nastaví dva prahy. Nejdřív se najdou pixely výrazných hran pomocí vysokého prahu a od těch se pokračuje v označování takových pixelů, v nichž je odezva hranového detektoru větší než nízký práh. Díky tomu se omezí šum a hrany zůstanou souvislé.

Detekce hran na základě prahování gradientů

Jednodušším a rychlejším postupem může být jednoduchá aproximace první derivace počítající diference každého pixelu od svého okolí. Na základě prahování získaných diferencí jsou pak umísťovány nalezené hrany. Nevýhodou tohoto detektoru je opakované nalézání hran na sousedních pixelech.

Morfologické detekce hran

Morfologické detekce hran pracují na zcela jiných principech, které vycházejí z morfologických transformací binárních obrazů. Není zde vyhodnocována strmost změny obrazové funkce, ale vychází se z "pouhého" prahování úrovně jasu. Pro některé případy může být ale právě takový způsob detekce obrysů objektů nejlepším řešením.

hrany_morfolog

Detekce hran pomocí morfologických funkcí

Můžeme detekovat vnitřní nebo vnější hrany prahovaných objektů. Princip je velmi jednoduchý. Nejdříve potřebujeme kvalitně prahovaný binární obraz. Algoritmus prahování nám v tomto případě rozhodne o pozici okraje objektů v gradientech jasu na jejich okrajích. Pak v závislosti na tom, chceme-li nalézt vnitřní nebo vnější obrysy objektů provedeme erozi nebo naopak dilataci obrazu. Nakonec provedeme logická operace XOR tohoto upraveného obrazu s obrazem původním a získáme tak přesně jednopixelové souvislé hranové obrysy prahovaných objektů.