Operátor Canny ( Canny edge detector , Canny algorithm ) v oboru počítačového vidění je operátorem detekce okrajů obrazu. Byl vyvinut v roce 1986 Johnem F. Cannym a používá vícestupňový algoritmus k detekci široké škály hran v obrazech.
Canny studoval matematický problém získání filtru , který je optimální z hlediska výběru, lokalizace a minimalizace více odezev jedné hrany. Ukázal, že požadovaný filtr je součtem čtyř exponenciál. Ukázal také, že tento filtr lze dobře aproximovat první derivací Gaussova. Canny představil koncept Non-Maximum Suppression , což znamená, že hraniční pixely jsou ty pixely, kde je dosaženo lokální maximum gradientu ve směru gradientového vektoru .
Přestože jeho práce byla prováděna v počátcích počítačového vidění, detektor hran Canny je dodnes jedním z nejlepších detektorů. Kromě speciálních případů je obtížné najít detektor, který by fungoval podstatně lépe než detektor Canny.
Cannyho cílem bylo vyvinout optimální algoritmus detekce hran, který splňuje tři kritéria:
Z těchto kritérií pak byla sestavena objektivní funkce nákladů na chyby, jejichž minimalizací se najde „optimální“ lineární operátor pro konvoluci s obrazem.
Algoritmus detektoru hran není omezen na výpočet gradientu vyhlazeného obrazu. V obrysu ohraničení jsou ponechány pouze maximální body přechodu obrazu, nikoli maximální body ležící v blízkosti okraje. Zde je také použita informace o směru hranice, aby se odstranily body přesně v blízkosti hranice a nedošlo k porušení samotné hranice v blízkosti lokálních maxim gradientu. Slabé hranice jsou pak odstraněny pomocí dvou prahových hodnot. Fragment hranice je zpracován jako celek. Pokud hodnota gradientu někde na sledovaném fragmentu překročí horní práh, pak tento fragment také zůstane „přípustnou“ hranicí v těch místech, kde hodnota gradientu klesne pod tento práh, dokud neklesne pod spodní práh. Pokud na celém fragmentu není jediný bod s hodnotou vyšší než horní práh, pak se odstraní. Tato hystereze snižuje počet nespojitostí ve výstupních hranicích. Zahrnutí redukce šumu do Cannyho algoritmu na jedné straně zvyšuje stabilitu výsledků a na druhé straně zvyšuje výpočetní náklady a vede ke zkreslení a dokonce ztrátě hraničních detailů. Takže například takový algoritmus zaobluje rohy objektů a ničí hranice ve spojovacích bodech.
Vyhlazování. Rozmazáním obrazu odstraníte šum. Operátor Canny používá filtr, který lze dobře aproximovat první derivaci Gaussianu. = 1,4:
Hledáte přechody. Hranice jsou vyznačeny tam, kde gradient obrazu nabývá maximální hodnoty. Mohou mít různé směry, takže Cannyho algoritmus používá čtyři filtry k detekci vodorovných, svislých a diagonálních hran v rozmazaném obrázku.
Směrový úhel vektoru přechodu je zaokrouhlený a může nabývat následujících hodnot: 0, 45, 90, 135.
Potlačení nemaxima. Jako hranice jsou označena pouze lokální maxima.
Dvojité prahové filtrování. Potenciální hranice jsou definovány prahovými hodnotami.
Vysledovat oblast nejednoznačnosti. Výsledné hranice jsou určeny potlačením všech hran, které nejsou spojeny s definovanými (silnými) hranicemi.
Před použitím detektoru je běžné převést obraz do stupňů šedi, aby se snížily výpočetní náklady. Tato fáze je typická pro mnoho metod zpracování obrazu.