2013-11-10 12 views
5

Ich bin ein EE-Student und arbeite an einem Projekt, bei dem ich Straßen (hauptsächlich die Kurven) ausfindig machen muss. Die Voraussetzung ist, dass der Roboter angesichts der GPS-Koordinaten und Richtungen der Kurven in der Lage sein sollte, sich zu einem bestimmten Punkt zu bewegen. Das Problem ist, dass die GPS-Koordinaten sehr ungenau sind und die Straßen nicht immer gerade sind. Also muss ich die Seiten der Straße erkennen und entsprechend mit meinem Roboter navigieren.Computer Vision, Straßen erkennen, wo anfangen?

Ich denke, Montage von zwei Kameras auf beiden Seiten des Roboters. Das würde normalerweise dazu dienen, den Roboter in der Mitte der Straße zu halten, und wenn der Roboter 5 Meter von der Kurve entfernt ist, würde eine der Kameras ihn durch die Kurve führen.

Ich werde an Raspberry Pi arbeiten, aber zu Testzwecken habe ich Simplecv und Opencv auf meinem Laptop mit Ubuntu installiert. Ich habe absolut keine Erfahrung mit Computer Vision. Ich habe keine Ahnung, wo ich anfangen soll. Könnte jemand bitte mich durch den Algorithmus führen, um die oben genannte Aufgabe zu erfüllen? Sollte ich mit simplecv oder opencv arbeiten? Python oder C++? Persönlich mag ich die Simplecv auf Python, aber ich habe keine Ahnung, ob es in der Lage ist, die Aufgabe zu erfüllen.

Jede Hilfe wäre willkommen. Bring mich auf den richtigen Weg!

I will be demoing the project on campus, here the pictures of the campus's roads.

Edit: Ideale Bedingungen, kein Verkehr, keine Hindernisse. Konstante Straßenbreite.

+0

Versuchen Sie, auf Kantenerkennung für scharfe Kurven oder HoughLine zu transformieren, zeichnen Sie die Linien der Seiten der Straßen aus. Nur von der Spitze meines Kopfes ... Aber würde nicht t normale Sensoren wie IR, Ultraschall, etc. sind ausreichend anstelle von Computer Vision? Nicht ein Roboter-Experte hier, also nur fragen – rockinfresh

+0

@ Rockinfresh IR-Sensoren haben eine begrenzte Reichweite (nur ein paar cm). Ich versuchte Ultraschall, aber das Pflaster ist zu niedrig, Ultraschall erkennt entweder die Straße oder gar nichts. –

Antwort

3

Ein Vorschlag, der meiner Meinung nach funktionieren wird, also versuchen Sie es. Die 4 Bilder, die ich verwenden werde, beziehen sich auf "OpenCV 2 Computer Vision Application Programming Cookbook" von Robert Laganiere. Dies war eines der Bücher, mit denen ich die Bildverarbeitung studierte, und es gab ein ähnliches Beispiel auf der Straße mit HoughLine.

Ich habe früher HoughLine benutzt, aber nicht auf Straßen. So geben u bessere Idee, hier ist es =>

Das Originalbild wird als gesehen:

enter image description here

Jetzt können u Canny auf das Bild anwenden, und es wird wie folgt aussehen:

enter image description here

oder u kann Sobel verwenden ...

enter image description here

Nach dem, u HoughLine gelten:

enter image description here

Sie werden sich um die Parameter neu einstellen müssen.

So, hier ist mein Vorschlag =>

eine Frontkamera Stoßen, etwas niedrig genug, um die Spuren zu erkennen, bis zu einigen Metern, können Sie ROI verwenden zu (Region of Interest) auf dem konzentrieren untere Hälfte des Videos, wo die Spuren am wahrscheinlichsten sind. Dies dient dazu, Geräusche zu eliminieren, bei denen andere Objekte parallel zur Straße erkannt werden.

Sie lassen den Roboter in der Mitte der beiden erkannten Straßenlinien bleiben. Und eine andere Verwendung der ROI ist, dass eine Seite der Linie verschwindet, bedeutet, dass sie sich schräg bewegt.Sie können den Roboter so einstellen, dass er direkt auf der Spur ist.

Wenn es eine Biegung gibt, können Sie festlegen, dass, wenn die Linien (möglicherweise durch den canny Operator) nicht mehr vertikal sind, eine Drehung durchgeführt wird, bis die Linien wieder vertikal sind.

Natürlich müssen Sie zwei verschiedene Funktionen schreiben, um zu überprüfen, ob Sie eine Rechtskurve oder eine Linkskurve basierend auf dem Winkel der Linien machen.

So würde ich das Problem angehen. Meine Methode sollte ziemlich gute Ergebnisse haben. Das einzige Problem, dem Sie möglicherweise gegenüberstehen, ist die Anpassung der Parameter von Houghlines und Canny.

(PS Bei der Betrachtung Ihrer Bilder bemerke ich, dass die Seite der Straßenbegrenzung hin und wieder Lücken hat. Daher würde ich HoughLineP anstelle von HoughLine empfehlen, wo Sie die maximale Lücke zwischen jeder Linie angeben können, um sie als Linie zu betrachten. wenn ich mich richtig erinnere, wenn das immer noch nicht funktioniert, müssen Sie möglicherweise einige Vorverarbeitung für die Frames des Videos tun.)

Hoffe, dass Sie meine Methode nützlich finden. Viel Glück. Wenn es noch etwas Hilfe bei, kommentieren Sie diese Antwort, ich versuche mein Bestes zu helfen (:

+0

Verzeihen Sie mein informelles Englisch sowieso. Irgendwie in Eile. Frieden. – rockinfresh

+0

Wäre diese Methode ohne Spuren? –

+0

Ich dachte an HoughTransform auf dem Bordstein tatsächlich durchzuführen. Es wird schwierig sein , aber es kann getan werden oder Sie können auch zwei Kameras auf der Seite verwenden, die Sie in der Frage i vorgeschlagen haben anstatt jede Seite der Straße (eine für jede Seite) auch über Hough Transformation zu erkennen. Anschließend können Sie Winkel der Kamera über die Randsteine ​​auf der oberen Hälfte der aufgenommenen Bilder und stellen Sie den ROI auf der unteren Hälfte porträtieren. Wenn Sie darüber nachdenken, wenn zum Beispiel eine Kurve auf der Straße nach rechts ist, zeigt der linksseitig erfasste Rahmen die HoughLine, die in den ROI (untere Hälfte) kommt, wenn der Bordstein näher kommt. – rockinfresh

3

Da Sie fragen, "wo ich anfangen soll", schlage ich vor, Sie beginnen zu lesen über das Problem von Straße ./Spurerkennung Vielleicht können Sie das Problem für einige Literatur in Ihrem Campus-Bibliothek überprüfen

zum Beispiel das Buch DAVIES, E. Roy -Computer und Machine Vision:... Theorie, Algorithmen, Praktische Elsevier/Academic Presse, 2012, hat "KAPITEL 23 In-Vehicle Vision Systems", die die grundlegende Herangehensweise an das Problem der "Ortung der Fahrbahn" und "Ort der Straßenmarkierungen" beschreibt. Das Buch von Davies hat auch eine kommentierte und aktualisierte bibliographische Sektion.

Für einige detailliertere Hintergrund Sie eine „Umfrage“ Artikel wie das folgende überprüfen können, die unterschiedliche Ansätze vergleicht das Problem zu lösen:

MCCALL, Joel C.; TRIVEDI, Mohan M. Video-based lane estimation and tracking for driver assistance: survey, system, and evaluation. Intelligent Transportation Systems, IEEE Transactions on, 2006, 7.1: 20-37.

1

Wie versprochen, hier ist eine andere Methode.

Um ein klares Bild von dem, was über diese Methode ist, schauen Sie sich dieses Video: http://www.youtube.com/watch?v=TMKd9ov_rmE

Die Methode Farbsegmentierung ist eigentlich Expectation-Maximierungs (EM) Algorithmus. Und Gabor filtert nach Fluchtpunkt. Irgendwie nah an der Idee, die ich mir vorstelle, aber etwas anders.

Sie können die Methode im Video oder/und mir ausprobieren.

Was ich tatsächlich tun würde, ist immer noch ein Fluchtpunkt und die ROI ändert sich entsprechend dem y-Achsenpunkt des Fluchtpunktes. Während die Seiten der ROI fest sind, so dass die Straße (graue Farbe ist immer innerhalb der ROI).

Danach müssen Sie Bereich, wo einmal, wenn der Farbraum der grauen Farbe in der ROI ist weniger als 90% (u berechnen Sie die Zahl selbst. Dies ist nur ein grobes Maß) der ROI (was bedeutet ist eine Wende). Es gibt mehrere Methoden um zu sagen, welcher Zug es ist, ich lasse dich diesen Teil selbst herausfinden: p. Sicher kannst du daran denken, wenn du diese Methode verwendest.

Meine einzige Sorge ist der Zebrastreifen oder eher Fußgänger in den Beispielbildern in weiß, die Sie gezeigt haben, aber diese können ziemlich leicht entfernt werden. (Hinweis. Histogramm und wenn die Farbe der Werte die im weißen Bereich sind ....oder du kannst den Bereich benutzen. wenn Blob weniger als diese Menge an Pixeln ...)

ich nicht sicher, wie rechnerisch teuer dieses Programm allerdings sein wird.

Aber wenn Sie sich diese Methode, um zu versuchen, den Schwerpunkt auf HSV oder LAB-Farbraum statt RGB. Jetzt haben Sie mehr Methoden zum Experimentieren. Sie können versuchen, auch an Ihre eigenen Methoden zu denken. Herumspielen. Bildverarbeitung, Computer Vision macht wirklich Spaß (: