Ein guter Ansatz zum Erkennen von Linien in einem Bild?

Ich geschrieben habe einige code, verwendet die OpenCV-Bibliotheken, zu erkennen, weiße Linien gemalt, auf gras. Ich brauche die Meinung von jemand anderem auf dem Ansatz, den ich benutzt (wie ich bin sicher, es gibt einen viel besseren Weg, als von mir). Auch die Ergebnisse, die ich bekommen hab sind nicht so gut wie ich erwartet, weil leichte Abweichungen vom Bild erfordern Feintuning der Parameter (und ich müssen für den Betrieb auf festen Parameter).

Mein Ansatz bisher:

  1. Greifen Bild von der webcam (und wiederum in Graustufen offensichtlich)
  2. Führen Sie es durch einen threshold-filter (mit THRESH_TO_ZERO-Modus, wo es null heraus alle Pixel, die UNTERHALB des Schwellenwerts).
  3. verwischen das Bild
  4. führen Sie es durch eine erosion-filter
  5. führen Sie es durch einen Canny-edge-Detektor
  6. schließlich, nehmen Sie das Bild und suchen Sie die Zeilen mit Probabilistic Hough-Transformation HoughLinesP

Sollte ich ändern, um die Reihenfolge der Filter?

P. S. ich bin nicht allzu besorgt über die Verarbeitung macht; ich bin mit den HoughLinesP auf der GPU B-)

Auch, hier ist ein Beispiel Bild:
Ein guter Ansatz zum Erkennen von Linien in einem Bild?

Den Ergebnissen, die ich bekommen hab:
mit canny
Ein guter Ansatz zum Erkennen von Linien in einem Bild?
OHNE canny (etwas tweaked Parameter)
Ein guter Ansatz zum Erkennen von Linien in einem Bild?

Jede Hilfe oder Anleitung wäre sehr hilfreich! Ich habe nur keine Ahnung, was zu tun ist, um es zu verbessern!

UPDATE
Nach einer wirklich schnellen skeleton-Implementierung (mit TONNEN von Weichzeichner) wie pro die gewählte Antwort bekam ich dies:
Ein guter Ansatz zum Erkennen von Linien in einem Bild?

Kommentar zu dem Problem - Öffnen
Es gibt einen Grund, warum Sie ausgeführt werden, die Unschärfe-nach der Binarisierung? es scheint mir logisch zu invertieren diese zwei Schritte Kommentarautor: Nicola Pezzotti
Hi, eine kurze Suche hat mir das folgende vision.caltech.edu/malaa/publications/aly08realtime.pdf Die entsprechenden opencv und matlab-code ist auch verfügbar... code.google.com/p/caltech-lane-detection Kommentarautor: G453
@NicolaPezzotti ich weiß nicht, warum ich es auch so gemacht hat. Ich hatte ursprünglich nicht verwischen, und dann habe ich es. Ich werde versuchen, die Umkehrung der Reihenfolge und erhalten zurück zu Ihnen. Trotzdem danke! Kommentarautor: Cashew
@G453 das sieht sehr vielversprechend aus! Danke für den link! Ich werde es Lesen und sehen, was ich tun kann... Kommentarautor: Cashew
@Cashew im Allgemeinen ist eine gute Praxis, die Anwendung eines low-pass-filter vor der Anwendung von einer Schwelle, um zu entfernen hochfrequente Störungen (in diesem Fall können wir betrachten gras textur wie ein Rauschen). Kommentarautor: Nicola Pezzotti

InformationsquelleAutor der Frage Cashew | 2013-05-21

Schreibe einen Kommentar