PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Canny Algorithmus



GrinderFX
13.09.2006, 19:29
Hi!

Ich fasse jetzt mal meine logik über den canny algorithmus zusammen:

Ich habe ein bild in form einer matrix.
Nun wird das bild mit gaussian blur erstmal unscharf gemacht.
Dann wird der horizontale sowie vertikale sobel angewendet.
Gradient und richtung in grad ausrechnen.
Bei richtung in grad sind einige fragen offen.

Die formel ist ja: Richtung = arctan(Gy/Gx).
Wie kommen einige auf ergebnisse von -+180 grad?

Wenn Gx und Gy 0 sind, dann soll die richtung 0 grad sein.
Wenn Gx = 0 und Gy ungleich 0 , dann ist die richtung 90 grad.
In den anderen fällen wird arctan(Gy/Gx) gerechnet.

Da ein Pixel jedoch nur 8 Nachbarn hat, ergeben sich insgesamt lediglich 4 mögliche Kantenanstiege: 0°, 45°, 90° und 135°.
Wieso nur 4?
Außerdem kann arctan maximal 90 grad werden.

Wie ist das weitere vorgehen wenn ich die winkel haben würde?
Ich würde doch nun die gradientenmatrix pixel für pixel durchgehen und prüfen ob in der ausgerechneten richtung der nachbar größer ist und wenn ja wird der pixel auf 0 gesetzt.
Dann nur noch schwellwerte wählen.

Ich wäre dankbar, wenn jemand noch etwas genaueres dazu sagen könnte, gezielt zu den winkeln.

user529
13.09.2006, 20:29
woher soll das gute Programm den wissen in welche Richtung die Kante verläuft??(liegt da dran dass es keine gibt) bleiben nur waagrecht, senkrecht und 2*diagonal (Steigung Gefälle) der arctan kann ohne weiteres über 90°steigen, wenn du die Vorzeichen der Katheten im Koordinatensystem betrachtest(müssen parallel zur Division betrachtet werden).
(+X/+Y=rechtes oberes Viertel; X-/Y+=l o V; X-/Y-=l u V; X+/Y-r u V) X+> und Y+^
um die Kante zu identifizieren musst du wie von dir beschrieben die richtung weiter verfolgen und genauso weiter vergleichen(vergiss aber nicht die zweite Richtung, sonst bekommst du nur einen Teil der Kante)
hth clemens