Unzuverlässige Ergebnisse mit cv2.HoughCircles

8

Ich habe ein Video mit 5 Öltröpfchen und ich versuche cv2.HoughCircles zu benutzen, um sie zu finden.

Das ist mein Code:

%Vor%

Ich würde sagen, dass der canny edge detector sehr gut aussieht, während die Ergebnisse der hough-Transformation sehr instabil sind, jeder Frame liefert andere Ergebnisse.

Beispiel:

Ich habe mit den Parametern gespielt und ehrlich gesagt weiß ich nicht, wie man stabilere Ergebnisse erzielt.

    
Dr Sokoban 30.01.2013, 17:23
quelle

1 Antwort

11

Anfangs würde ich zwar keine Überlappung in Ihren Öltröpfchen finden, aber es gibt. Also, Hough könnte zwar durch eine gute Methode hier eingesetzt werden, aber ich habe bessere Erfahrungen gemacht, als ich RANSAC damit kombinierte. Ich würde vorschlagen, das zu erkunden, aber hier werde ich etwas anderes bieten.

Erstens konnte ich die Hintergrundsubtraktion nicht durchführen, da ich dieses "foreground1.jpg" Bild nicht hatte (so können die Ergebnisse leicht verbessert werden). Es war mir auch egal, Kreise zu zeichnen, aber Sie können das tun, ich zeichne einfach die Grenze der Objekte, die ich als Kreis betrachte.

Nehmen wir zuerst an, dass es keine Überschneidungen gibt. Dann finden Sie die Kanten in Ihrem Bild (einfach), binarisieren die Reaktion des Kantendetektors durch Otsu, füllen Löcher und messen schließlich die Kreisförmigkeit. Wenn es Überlappungen gibt, können wir die Watershed-Transformation in Kombination mit der Abstandstransformation verwenden, um die Tröpfchen zu trennen. Das Problem ist dann, dass Sie nicht wirklich kreisförmige Objekte bekommen werden, und mir war das egal, aber Sie können sich darauf einstellen.

Im folgenden Code musste ich auch scipy für die Beschriftung von verbundenen Komponenten verwenden (wichtig für den Aufbau des Markers für den Watershed), da OpenCV dafür fehlt. Der Code ist nicht gerade kurz, sollte aber einfach zu verstehen sein. Wenn Sie den vollständigen aktuellen Code verwenden, ist die Kreisformprüfung nicht erforderlich, da nach der Segmentierung durch Watershed nur die Objekte verbleiben, die Sie suchen. Schließlich gibt es eine einfache Verfolgung basierend auf der groben Entfernung zum Mittelpunkt des Objekts.

%Vor%

Dies funktioniert für dein gesamtes Video und hier sind zwei Beispiele:

    
mmgp 30.01.2013, 22:46
quelle

Tags und Links