Canny-operatören ( Canny edge detector , Canny algorithm ) inom disciplinen datorseende är kantdetekteringsoperatören för en bild. Den utvecklades 1986 av John F. Canny och använder en flerstegsalgoritm för att upptäcka ett brett spektrum av kanter i bilder.
Canny studerade det matematiska problemet med att få ett filter som är optimalt när det gäller urval, lokalisering och minimering av flera svar på en kant. Han visade att det önskade filtret är summan av fyra exponentialer. Han visade också att detta filter kan approximeras väl av den första derivatan av Gauss. Canny introducerade konceptet Non-Maximum Suppression , vilket innebär att kantpixlar är de pixlar där det lokala maximumet för gradienten i gradientvektorns riktning nås .
Även om hans arbete gjordes i de tidiga dagarna av datorseende, är Canny kantdetektorn fortfarande en av de bästa detektorerna idag. Förutom i speciella fall är det svårt att hitta en detektor som presterar betydligt bättre än Canny-detektorn.
Cannys mål var att utveckla en optimal kantdetekteringsalgoritm som uppfyller tre kriterier:
Från dessa kriterier byggdes sedan den objektiva funktionen av kostnaden för fel, genom att minimera vilken "optimal" linjär operator för faltning med bilden hittas.
Kantdetektoralgoritmen är inte begränsad till att beräkna gradienten för den utjämnade bilden. Endast de maximala punkterna i bildgradienten finns kvar i kantkonturen, och inte de maximala punkterna som ligger nära kanten tas bort. Här används också information om gränsens riktning för att ta bort punkter exakt nära gränsen och inte bryta själva gränsen nära gradientens lokala maxima. Svaga gränser tas sedan bort med hjälp av två trösklar. Kantfragmentet behandlas som en helhet. Om gradientvärdet någonstans på det spårade fragmentet överstiger det övre tröskelvärdet, förblir detta fragment också den "tillåtna" gränsen på de platser där gradientvärdet faller under detta tröskelvärde, tills det faller under det nedre tröskelvärdet. Om det inte finns en enda punkt på hela fragmentet med ett värde som är större än den övre tröskeln, raderas den. Denna hysteres minskar antalet diskontinuiteter i utgångsgränserna. Inkluderandet av brusreducering i Canny-algoritmen ökar å ena sidan stabiliteten i resultaten, och å andra sidan ökar beräkningskostnaderna och leder till förvrängning och till och med förlust av gränsdetaljer. Så, till exempel, en sådan algoritm rundar av hörnen på föremål och förstör gränserna vid knutpunkterna.
Glättning. Oskarpa bilden för att ta bort brus. Canny-operatorn använder ett filter som kan approximeras väl till den första derivatan av Gauss. = 1,4:
Letar efter gradienter. Kanter markeras där bildens gradient får sitt maximala värde. De kan ha olika riktningar, så Cannys algoritm använder fyra filter för att upptäcka horisontella, vertikala och diagonala kanter i en suddig bild.
Gradientvektorns riktningsvinkel är avrundad och kan ha följande värden: 0, 45, 90, 135.
Undertryckande av ickemaxima. Endast lokala maxima är markerade som gränser.
Dubbel tröskelfiltrering. Potentiella gränser definieras av trösklar.
Spåra område av tvetydighet. De resulterande gränserna bestäms genom att undertrycka alla kanter som inte är associerade med de definierade (starka) gränserna.
Innan du använder detektorn är det vanligt att konvertera bilden till gråskala för att minska beräkningskostnaderna. Detta steg är typiskt för många bildbehandlingsmetoder.