Computer Vision, die Erkennung von Straßen, wo Sie anfangen sollen?
Ich bin ein EE undergrad, ich arbeite an einem Projekt, das erfordert, dass Sie mich zu erkennen, Straßen (in Erster Linie in den Kurven). Die Voraussetzung ist, dass aufgrund der GPS-Koordinaten und Richtungen der Drehungen der Roboter sollte in der Lage sein zu navigieren, den Weg zu einem bestimmten Punkt. Das problem ist, dass die GPS-Koordinaten sind sehr ungenau, die Straßen sind nicht immer gerade. Ich muss also zu erkennen, die Seiten der Straße, und navigieren Sie mein Roboter entsprechend.
Ich bin am überlegen Befestigung von zwei Kameras auf beiden Seiten des Roboters. Die normalerweise verwendet werden, um den Roboter in der Mitte der Straße und wenn Roboter ist innerhalb von 5 Metern von der Wende, von der Kamera führen würde, es durch den turn.
Ich werde auf das raspberry pi, aber zu Testzwecken habe ich installiert simplecv und opencv auf meinem laptop läuft Ubuntu. Ich habe absolut keine Vorherige Erfahrung mit computer vision. Ich habe keine Ahnung, wo zu beginnen. Könnte jemand bitte leite mich durch den Algorithmus zur Erreichung der oben genannten Aufgabe? Sollte ich die Arbeit mit simplecv oder opencv? Python oder C++? Ich persönlich mag die simplecv auf python, aber ich habe keine Ahnung, ob es in der Lage ist, die Erreichung der Aufgabe.
Jede Hilfe würde geschätzt werden. Hat mich auf den richtigen Weg!
Ich werde demonstrieren, dass das Projekt auf dem campus, hier die Bilder von der campus-Straßen.
Edit: Ideale Bedingungen, Kein Verkehr, Keine Hindernisse. Konstante Breite der Straße.
- Lesen Sie auf Kantenerkennung für scharfe Kurven oder HoughLine verwandeln, zeichnen sich die Linien an den Seiten der Straßen. Nur von der Spitze von meinem Kopf... Aber wäre es nicht normal, sensoren wie Infrarot, Ultraschall, etc. ausreichend sein, anstelle der "computer vision"? Nicht ein Roboter-Experte hier, also einfach Fragen
- IR-sensoren haben eine begrenzte Reichweite (nur ein paar cms). Ich versuchte Ultraschall aber der Bürgersteig ist zu niedrig, Ultraschall entweder erkennt der Straße oder gar nichts.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Einen Vorschlag, dass ich denken, arbeiten, so give it a shot. Die 4 Bilder die ich verwenden werde, sind in der Referenz von "OpenCV 2 Computer Vision Application Programming Cookbook" von Robert Laganiere. Dies war eines der Bücher, die ich für das Studium der Bildverarbeitung, und es war ein ähnliches Beispiel auf der Straße mit HoughLine.
Ich verwendet HoughLine vor, aber nicht auf den Straßen. So geben u bessere Idee hat, hier ist es=>
Das original-Bild gesehen:
Nun u anwenden können, Canny, um das Bild, und es wird so Aussehen:
ODER-u verwenden können, Sobel zu...
Nachdem die u gelten HoughLine:
Müssen Sie die Parameter selbst.
So, hier ist mein Vorschlag=>
Setzen Sie eine Kamera auf der Vorderseite, etwas niedrig genug, um in der Lage sein, zu erkennen, die Gassen, um ein paar Meter, können Sie den ROI zu(Region of Interest), um den Fokus auf die untere Hälfte des Videos, wo die Gassen sind die meisten wahrscheinlich zu sein. Dies ist, um Geräusch zu beseitigen, in denen andere Objekte, die parallel zu der Straße erkannt wird, wie gut.
Machen Sie die Roboter bleiben im Zentrum sowohl der erkannten Straße Linien. Und eine weitere Nutzung des ROI ist, dass die eine Seite von der Linie, die verschwindet,bedeutet, dass es in Bewegung ist ein Stück geneigt. Können Sie die Roboter zurück auf dem richtigen Weg.
Wenn es einen turn, können Sie angeben, dass wenn die Linien(vielleicht durch canny-operator), ist nicht mehr senkrecht, machen eine umdrehung, bis die Linien senkrecht sind, wieder.
Natürlich, Sie haben, um zu schreiben zwei verschiedene Funktionen, um zu überprüfen, ob Sie rechts abbiegen oder Links abbiegen, basierend auf den Winkel der Linien.
Dies ist, wie ich das problem angehen. Meine Methode sollte ganz ordentliche Ergebnisse. Das einzige problem können Sie Gesicht ist die Anpassung der Parameter der Houghlines und Canny.
(P. S. In der Anzeige Ihrer Bilder, ich merke, die Seite der Straße, die Bordsteinkante Lücken haben, einmal in eine Weile. Also würde ich empfehlen, HoughLineP statt HoughLine wo können Sie die maximale Lücke zwischen jeder Zeile zu betrachten als eine Zeile, wenn ich mich richtig erinnere. Wenn das immer noch nicht funktioniert, müssen Sie möglicherweise einige pre-processing auf die frames des Videos.)
Hoffe, Sie finden meine Methode nützlich. Viel Glück. Wenn es etwas gibt, was Sie brauchen, helfen mit, Kommentar auf diese Antwort, ich versuche mein bestes, um zu helfen(:
Da Sie sich Fragen "wo anfangen", schlage ich vor, Sie starten aus der Lektüre über das problem der road/lane detection. Vielleicht können Sie in Ihrem campus-Bibliothek für Literatur über das problem.
Zum Beispiel das Buch DAVIES, E. Roy. Computer und Machine Vision: Theory, Algorithms, Praktische. Elsevier/Academic Press, 2012, hat "KAPITEL 23-Fahrzeug-Vision-Systeme" und beschreibt die grundlegende Herangehensweise an das problem der "Ortung der Fahrbahn" und "Lage von Fahrbahnmarkierungen". Das Buch von Davies hat auch eine kommentierte und aktualisierte bibliographische Abschnitt.
Für weitere detaillierte hintergrund-Sie können prüfen, eine "Umfrage" Artikel wie der folgende, der vergleicht verschiedene Ansätze, um das problem zu lösen:
MCCALL, Joel C.; TRIVEDI, Mohan M. Video-basierte lane estimation and tracking für Fahrerassistenzsysteme: Umfrage -, system -, und-Auswertung. Intelligent Transportation Systems, IEEE Transactions on, 2006, 7.1: 20-37.
Wie versprochen, hier ist eine weitere Methode.
Haben ein klares Bild von dem, was diese Methode ist, sehen Sie dieses video: http://www.youtube.com/watch?v=TMKd9ov_rmE
Farbe Segmentierung Methode ist eigentlich mit Expectation-Maximization (EM) Algorithmus. - Und Gabor-Filter für vanishing point. Art von Nähe zu der Idee, die ich im Sinn haben, aber etwas anders.
Können Sie versuchen, die Methode in dem video gezeigt oder/und mir.
Was würde ich tatsächlich tun, ist immer noch ein Fluchtpunkt, und die ROI entsprechend ändern, um die y-Achse Punkt, der Fluchtpunkt. Während die Seiten des ROI fixiert ist, so dass die Straße(die graue Farbe ist immer innerhalb der ROI).
Danach verwenden Sie die Gegend, wo einst, wenn der Farbraum, die graue Farbe in der ROI weniger als 90%(u berechnen Sie die Anzahl selber. Dies ist nur eine grobe Messung) der ROI(d.h. es ist eine Drehung). Es gibt mehrere Methoden, um zu sagen, welche ist es, ich lasse Sie herausfinden, diesen Teil selbst :p. Sie können sich sicher denken, wenn Sie diese Methode verwenden.
Meine einzige Sorge ist der Zebrastreifen ist, oder eher Fußgänger in die Beispiel-Bilder in weiß, die Sie gezeigt haben, aber diese kann entfernt werden, ganz einfach. (hint. Histogramm und wenn die Farbe der Werte in den weißen Bereich.... oder Sie können Bereich. wenn blob ist weniger als diese Menge an Pixel... )
Ich nicht sicher, wie rechenintensiv das Programm wird obwohl.
Aber wenn Sie gehen, um zu versuchen, diese Methode, den Fokus auf HSV-oder LAB-Farbraum statt RGB. Jetzt haben Sie mehrere Methoden zu Experimentieren aus. Sie können versuchen, denken Sie an Ihre eigenen Methoden zu. Spielen, um. Bildverarbeitung, computer-vision ist wirklich lustig (: