2016-05-09 10 views
1

enter image description hereWie erkennt man Linien in diesem Bild mit opencv?

Ich weiß nicht, warum opencv nicht die Linien HoughLines mit herausfinden kann, das Ergebnis folgen,

enter image description here

Aber wenn ich ein anderes Bild aus dem Internet, enter image description here

voila. Irgendwelche Ideen?

+1

Ihr Eingangsbild ist sehr verschwommen. sortiere das zuerst! – user3791372

+0

1. Sie sollten Ihren Code veröffentlichen 2. Gehen Sie durch das Tutorial (der Code ist in C++, aber es gibt Python entsprechende Funktionen) http://docs.opencv.org/2.4/doc/tutorials/imgproc/imgtrans/hough_lines/ hough_lines.html – Antonio

+1

Sie wissen nicht, warum OpenCV die Zeilen nicht findet, weil Sie blind Dinge verwenden, die Sie nicht verstehen. Sie setzen Diesel in einen Benzinmotor und wundern sich, warum es nicht läuft ... tun Sie sich selbst einen Gefallen und lesen Sie ein Buch über Bildverarbeitung oder überlassen Sie Bildverarbeitungsexperten. Ich empfehle "Digital Image Processing: Eine algorithmische Einführung mit Java" von Burger & Burge. – Piglet

Antwort

2

Es scheint, dass Hough die Linien Extremitäten erkennen. Ein Gradient wird wahrscheinlich während des Prozesses berechnet.

Eine Lösung wäre:

  1. Binarisieren das Bild
  2. Compute der schwarze Bereich Skelett
  3. Skeleton Beschneiden
  4. Anwenden der Hough-Transformation.

Dadurch wird jede Zeile auf 1 Pixel Breite reduziert. Hier

[EDIT] ist ein Beispiel:

  1. The test image binarized
  2. The skeleton (einfache Verdünnung).
  3. The result (ich übersprang die Beschneidung).
+0

Ich wäre daran interessiert, ein aktuelles Beispiel dafür zu sehen! – user3791372

+0

Houghlines ist sehr empfindlich auf verschiedene Parameter. Versuchen Sie LineSegmentDetector. –

+0

Ich habe gerade hinzugefügt ein Beispiel – FiReTiTi