Ich habe einige Kantenerkennungsalgorithmen kennengelernt, darunter Algorithmen wie Sobel-, Laplace- und Canny-Methoden. Es scheint mir, dass der beliebteste Kantendetektor ein Canny-Kantendetektor ist, aber gibt es Fälle, in denen dies nicht der optimale Algorithmus ist? Wie kann ich entscheiden, welchen Algorithmus ich verwenden möchte? Vielen Dank!
algorithms
image-processing
edge-detection
PearsonArtPhoto
quelle
quelle
Antworten:
Es gibt viele Kantenerkennungsmöglichkeiten, aber die drei Beispiele, die Sie erwähnen, fallen zufällig in drei verschiedene Kategorien.
Sobel
Dies entspricht in etwa einer Ableitung erster Ordnung. Gibt Extrema an den Gradientenpositionen, 0, an denen kein Gradient vorhanden ist. In 1D ist es =[ - 101]
Es gibt andere Alternativen zu Sobel, die +/- die gleichen Eigenschaften haben. Auf der Roberts Cross- Seite auf Wikipedia finden Sie einen Vergleich einiger davon.
Laplace
Dies entspricht in etwa einer Ableitung zweiter Ordnung. Gibt 0 an den Farbverlaufspositionen und 0, wenn kein Farbverlauf vorhanden ist. Es gibt Extrema, bei denen ein (längerer) Gradient startet oder stoppt.
Die Wirkung dieser 2 auf verschiedene Arten von Kanten kann am besten visuell betrachtet werden:
Canny
Dies ist kein einfacher Operator, sondern ein mehrstufiger Ansatz, bei dem Sobel als einer der Schritte verwendet wird. Während Sobel und Laplace Ihnen ein Graustufen- / Gleitkommaergebnis liefern, das Sie selbst bestimmen müssen, hat der Canny-Algorithmus eine intelligente Schwellenwertbestimmung als einen seiner Schritte, sodass Sie nur ein binäres Ja / Nein-Ergebnis erhalten. An einer glatten Kante befindet sich wahrscheinlich nur eine Linie in der Mitte des Verlaufs.
quelle
Während Sobel und Laplacian einfach Filter sind, geht Canny in zweierlei Hinsicht noch weiter.
Erstens wird eine nicht maximale Unterdrückung durchgeführt, die das von allen möglichen Objekten und Farbverläufen in einem Bild erzeugte Rauschen beseitigt. Zweitens enthält es tatsächlich einen Schritt, mit dem Sie zwischen verschiedenen Kantenrichtungen unterscheiden und fehlende Punkte einer Linie ausfüllen können.
Mit anderen Worten, der Canny-Kantendetektor gehört zu einer völlig anderen Klasse als Sobel und Laplace. Es ist viel intelligenter, da es eine ganze Reihe von Nachbearbeitungen beinhaltet, während Sobel und Laplacian einfach Hochpassfilterausgänge sind, denen eine lineare binäre Schwellwertbildung folgt.
quelle
Die beiden wichtigsten Entscheidungen beim Erkennen von Kanten sind für mich normalerweise:
Kann ich stattdessen die Objekte segmentieren und dann einen morphologischen Operator verwenden, um die Kante des binären (segmentierten) Bildes zu finden? Bei verrauschten Daten ist dies in der Regel robuster.
Welchen kantenerhaltenden Glättungsfilter sollte ich verwenden, um das Bildrauschen zu reduzieren? Kantenfilter basieren auf der Differenzierung, die durch verrauschte Daten beeinträchtigt wird. Die einfachste Wahl ist das Medianfilter, aber anisotrope Diffusions- oder nichtlokale Mittelwertfilter bieten eine bessere Leistung, wenn mehr Parameter eingestellt werden müssen.
Für die Kantenerkennung selbst kann ich mir aus gutem Grund nicht vorstellen, Canny nicht zu verwenden.
quelle
SUSAN-Ansatz
Ein weiterer Ansatz zur Erkennung von Kanten und Ecken ist der SUSAN-Ansatz .
Bei diesem Ansatz wird anstelle von abgeleiteten Approximationen ein integraler Approximationsansatz verwendet. Dies hat den Vorteil, dass nicht nur Kanten, sondern auch "zweidimensionale Merkmale" (dh Ecken) erkannt werden können.
Ein weiterer Vorteil eines integralen Approximationsansatzes besteht darin, dass Rauschen die Ergebnisse tendenziell weniger beeinflusst.
quelle
Canny liefert ein binäres Bild und ist abhängig von extern vorgegebenen Schwellenwerten (die abhängig vom Bild / der Anwendung sind).
Filter auf Faltungsbasis ergeben ein "Kantenintensitäts" -Bild. Dies ist nützlich, wenn das Kantengewicht oder die Kantenfestigkeit wichtig sind (z. B. bei gewichteten Hough-Transformationen).
quelle