Canny-operaattori ( Canny edge detector , Canny - algoritmi ) tietokonenäön alalla on kuvan reunantunnistusoperaattori . Sen kehitti vuonna 1986 John F. Canny , ja se käyttää monivaiheista algoritmia useiden kuvien reunojen havaitsemiseen.
Canny tutki matemaattista ongelmaa sellaisen suodattimen saamiseksi, joka on optimaalinen yhden reunan useiden vasteiden valinnan, lokalisoinnin ja minimoimisen kannalta. Hän osoitti, että haluttu suodatin on neljän eksponentiaalin summa. Hän osoitti myös, että tämä suodin voidaan approksimoida hyvin Gaussin ensimmäisellä derivaatalla. Canny esitteli käsitteen Non-Maximum Suppression , mikä tarkoittaa, että reunapikselit ovat niitä pikseleitä, joissa gradientin paikallinen maksimi gradienttivektorin suunnassa saavutetaan .
Vaikka hänen työnsä tehtiin tietokonenäön alkuaikoina, Canny-reunailmaisin on edelleen yksi parhaista ilmaisimista nykyään. Erikoistapauksia lukuun ottamatta on vaikea löytää ilmaisinta, joka toimisi huomattavasti paremmin kuin Canny-ilmaisin.
Cannyn tavoitteena oli kehittää optimaalinen reunantunnistusalgoritmi, joka täyttää kolme kriteeriä:
Näistä kriteereistä rakennettiin sitten virhekustannusten tavoitefunktio, jota minimoimalla löydetään "optimaalinen" lineaarinen operaattori kuvan konvoluutiota varten.
Reunatunnistinalgoritmi ei rajoitu tasoitetun kuvan gradientin laskemiseen. Vain kuvan gradientin maksimipisteet jätetään reunaviivaan, eikä reunan lähellä olevia maksimipisteitä poisteta. Tässä käytetään myös tietoa rajan suunnasta, jotta pisteet voidaan poistaa täsmälleen rajan läheltä eikä itse rajaa rikota gradientin paikallisten maksimien lähellä. Heikot rajat poistetaan sitten käyttämällä kahta kynnystä. Reunafragmenttia käsitellään kokonaisuutena. Jos gradientin arvo jossain jäljitetyssä fragmentissa ylittää ylemmän kynnyksen, niin tämä fragmentti pysyy myös "sallittavana" rajana niissä paikoissa, joissa gradientin arvo putoaa tämän kynnyksen alapuolelle, kunnes se putoaa alemman kynnyksen alapuolelle. Jos koko fragmentissa ei ole yhtä pistettä, jonka arvo on suurempi kuin yläkynnys, se poistetaan. Tämä hystereesi vähentää epäjatkuvuuksien määrää lähtörajoissa. Kohinan vähentämisen sisällyttäminen Canny-algoritmiin toisaalta lisää tulosten vakautta ja toisaalta lisää laskentakustannuksia ja johtaa vääristymiin ja jopa rajayksityiskohtien häviämiseen. Joten esimerkiksi tällainen algoritmi pyöristää objektien kulmat ja tuhoaa rajat risteyspisteissä.
Tasoitus. Sumea kuva poistaaksesi kohinan. Canny-operaattori käyttää suodatinta, joka voidaan approksimoida hyvin Gaussin ensimmäiseen derivaataan. = 1,4:
Gradientteja etsitään. Reunat on merkitty kohtaan, jossa kuvan gradientti saavuttaa suurimman arvonsa. Niillä voi olla eri suunnat, joten Cannyn algoritmi käyttää neljää suodatinta tunnistaakseen sumean kuvan vaaka-, pysty- ja diagonaaliset reunat.
Gradienttivektorin suuntakulma on pyöristetty ja sillä voi olla seuraavat arvot: 0, 45, 90, 135.
Nonmaximan tukahduttaminen. Vain paikalliset maksimit on merkitty rajoksi.
Kaksinkertainen kynnyssuodatus. Potentiaalien rajat määritetään kynnyksellä.
Jäljitä epäselvyyden alue. Tuloksena olevat reunat määritetään poistamalla kaikki reunat, joita ei ole liitetty määritettyihin (vahviin) rajoihin.
Ennen ilmaisimen käyttöä on yleistä muuntaa kuva harmaasävyiseksi laskennallisten kustannusten vähentämiseksi. Tämä vaihe on tyypillinen monille kuvankäsittelymenetelmille.