Ein Kurvenmuster an die Kanten eines Bildes anpassen

8

Ich habe ein Zielbild, nach dem entlang seiner Kanten nach einer Kurve gesucht werden soll, und ein Schablonenbild, das die Kurve enthält. Was ich erreichen muss, ist die beste Übereinstimmung der Kurve im Vorlagenbild innerhalb des Zielbildes zu finden und basierend auf der Punktzahl herauszufinden, ob es eine Übereinstimmung gibt oder nicht. Dazu gehört auch die Drehung und Größenanpassung der Kurve. Das Zielbild kann die Ausgabe eines Canny Edge-Detektors sein, wenn dies die Dinge erleichtert.

Ich erwäge, OpenCV zu verwenden (indem ich Python oder Processing / Java benutze oder wenn diese begrenzten Zugriff auf die erforderlichen Funktionen haben, dann mit C), um die Dinge praktisch und effizient zu machen, aber nicht herausfinden, ob ich irgendwelche Funktionen verwenden kann (oder eine Kombination davon) in OpenCV, die für diese Aufgabe verwendet werden können. Ich habe die OpenCV-Dokumentation gelesen und dachte zunächst, dass Contours diese Aufgabe übernehmen könnte, aber alle Beispiele zeigen geschlossene Formen, im Gegensatz zu meinem Fall, in dem ich eine offene Kurve mit einem Teil einer Kante vergleichen muss.

Gibt es also eine Möglichkeit, dies entweder mit OpenCV oder mit irgendeinem bekannten Code oder Algorithmus zu tun, den Sie vorschlagen?

Hier sind einige Bilder, um das Problem zu veranschaulichen:

    
ali 30.07.2012, 21:15
quelle

1 Antwort

2

Mein erster Gedanke war Generalisierte Hough-Transformation . Allerdings kenne ich dafür keine gute Implementierung.

Ich würde versuchen SIFT oder SURF zuerst auf dem canny Kantenbild. Es wird normalerweise verwendet, um 2D-Bereiche, nicht 1D Konturen zu finden, aber wenn Sie die minimale Bounding-Box um Ihre Kontur und verwenden Sie diese als das Suchmuster, sollte es funktionieren.

OpenCV hat eine Implementierung dafür: Features2D + Homography, um ein bekanntes Objekt zu finden

Ein Problem kann ein gutes Kantenbild sein, diese schwarzen Formen auf der Rückseite könnten ablenken.

Siehe auch diese Stackoverflow-Antwort: Bildverarbeitung: Algorithmusverbesserung für die Erkennung von Coca-Cola-Dosen

    
HugoRune 31.07.2012 19:17
quelle