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.
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.