Extrahieren Sie Linien aus der Canny-Kantenerkennung

7

In openCV möchte ich nach der Anwendung der canny edge detection das Ergebnis weiter bearbeiten (zeige nur horizontale Linien, entferne kurze Linien, etc ..). Aber das Ergebnis von canny ist nur ein anderes Bild. Ich möchte eine Reihe von Linien, die die erkannten Kanten beschreiben

Ich kenne die berühmte Hough-Linien-Transformation , aber die Das Ergebnis ist nicht immer gut, deshalb möchte ich das Ergebnis manuell bearbeiten. Eingabe:

Ausgabe nur canny:

Ausgabe canny dann Hough Linie transform

Dies ist das Hough-Linien-Transformationsergebnis (rote Linien) zum Erkennen von Kanten von Treppen. Die vierte Zeile von unten wird nicht korrekt erkannt, obwohl die schärfere Kante eine Kante erkannt hat.

Irgendeine Idee, wie man Kanten aus einem schlechten Bild extrahiert?

    
Moataz Elmasry 05.06.2012, 07:58
quelle

2 Antworten

14

Ein paar Dinge, die Sie versuchen können, Ihre Ergebnisse zu verbessern:

Wenden Sie eine Region von Interesse an

Ihr Bild scheint einige eingrenzende Fenstereffekte zu haben. Ich entfernte sie mit einer Region von Interesse, die zu einem Bild führte, das so aussieht (ich habe es so lange optimiert, bis es richtig aussah, aber wenn du irgendeine Art von Kerneloperator verwendest, bestimmt die Fenstergröße wahrscheinlich diese ROI):

Verwenden Sie die Standard-Hough-Transformation

Es scheint auch, dass Sie die probabilistische Hough-Transformation verwenden. Sie erhalten also nur Liniensegmente statt einer interpolierten Linie. Ziehen Sie die Standardtransformation in Betracht, um die vollständige theoretische Linie (Rho, Theta) zu erhalten. Dadurch habe ich ein Bild wie folgt erhalten:

Hier ist ein Code-Ausschnitt, den ich verwendet habe, um die Zeilen (von der Python-Schnittstelle) zu generieren:

%Vor%

Filterzeilen basierend auf Winkel

Sie können wahrscheinlich schlechte Linien herausfiltern, indem Sie die am häufigsten vorkommenden Linienwinkel verwenden und Ausreißer wegwerfen. Dies sollte es auf die sichtbarsten Schritte eingrenzen.

Hoffe das hilft!

    
mevatron 05.06.2012, 18:00
quelle
7

Ich empfehle die LSWMS-Methode (Line-Segment-Erkennung mit Weighted Mean-Shift). Die Ergebnisse sind besser als HT und PPHT.

Siehe Ссылка und Ссылка

    
hamed 25.06.2012 05:38
quelle

Tags und Links