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?
Ein paar Dinge, die Sie versuchen können, Ihre Ergebnisse zu verbessern:
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):
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%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!
Tags und Links opencv