Detekce hran

postup v digitálním zpracování obrazu

Detekce hran je postup v digitálním zpracování obrazu, sloužící k nalezení oblastí pixelů, ve kterých se podstatně mění jas.

Co je to hrana

editovat

Hrana v objektu se nemusí krýt s hranicí mezi objekty ve scéně, hrany mohou vznikat a zanikat v závislosti na úhlu pohledu. Hrany tedy můžeme najít na hranici objektů nebo rozhraní světla a stínu — skoková hrana, nebo v místech trojrozměrných hran objektů — trojúhelníková hrana. Čáry v obrazu pak generují dvě hrany, jednu na každé své straně. Typická hrana na rozdíl od teoretické bývá ovšem zašuměná.

Detekce hrany

editovat

Pokud hranu definujeme jako velkou změnu jasové funkce, bude v místě hrany velká hodnota derivace jasové funkce. Maximální hodnota derivace bude ve směru kolmo na hranu. Kvůli jednoduššímu výpočtu se ale hrany detekují jen ve dvou, resp. ve čtyřech směrech. Velká skupina metod na detekci hran aproximuje tuto derivaci pomocí konvoluce s vhodným jádrem. Nejjednodušší taková jsou (-1 1) a (-1, 1)T, případně (-1, 0, 1) a (-1, 0, 1)T.

Operátory

editovat

Další používaná konvoluční jádra jsou:

  • Robertsův operátor   a  .
  • Prewittové operátor 3x3 je definován takto

 .

Je platný pro detekci v ose y. Detekce v ose x je dána transponovanou maticí (totéž platí i pro následující operátory). Prewittové operátor 5x5 je definován takto

 

Platí, že čím je matice větší, tím je výpočet odolnější vůči šumu.

  • Sobelův operátor   a opět i pro jiné směry. Dává větší váhu středu, čímž by mělo docházet k lepší lokalizaci hran.
  • Robinsonův operátor  .
  • Kirschův operátor  .

V současnosti asi nejlepší hranový detektor je Cannyho, který na aproximaci první derivace z obrazu aplikuje prahování s hysterezí.

Metody založené na druhé derivaci

editovat

Hrany můžeme hledat i pomocí průchodů druhé derivace nulou (tzv. zero-crossings). Pozor, to není to samé jako hledání nulových bodů, ty se v digitálním obraze vůbec nemusí objevit. Tyto metody pracují většinou s Laplaciánem  , což ve dvou rozměrech znamená  .

  • Marrův filtr (Marr-Hildrethův)   Vzhledem k tomu, že druhá derivace je ještě citlivější na šum než první je třeba kombinovat její výpočet s nějakým vyhlazením. To musí být dostatečné, aby odstranilo šum, ale zároveň nesmí porušit hrany. Marrův filtr je proto složením Laplaciánu a Gaussiánu.

Směr a síla hrany

editovat

Z výsledků detekce hran v horizontálním a vertikálním směru Gx a Gy lze spočítat sílu hrany jako   a směr jako  .

Prahování

editovat

Posledním krokem v detekci hran je prahování: je třeba rozhodnout, jak silná odezva už znamená hranu. Dobré nastavení prahu rozhoduje o kvalitě detektoru; příliš nízká hodnota označí za hrany i šum, příliš vysoká zas zahodí i některé podstatné hrany. Jako řešení tohoto problému a protože často není možné určit jeden práh pro celý obrázek, používá se tzv. prahování s hysterezí. Pro prahování s hysterezí 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ž odezva hranového detektoru je větší než nízký práh. Díky tomu se omezí šum a hrany zůstanou souvislé.

Externí odkazy

editovat
  •   Obrázky, zvuky či videa k tématu detekce hran na Wikimedia Commons