2010-11-22 9 views
14

Ich schreibe eine App, die Spuren in einem Fahrsimulator erkennen kann. Die Umgebung ist relativ einfach, ihre meist geraden mehrspurigen Straßen und fast keine Krümmung. Im Moment kann ich Linien mit der (klassischen) Hough-Transformation erfolgreich erkennen, aber das Problem ist, dass die HT natürlich auch Linien erkennt, die keine Bahnen sind.Spurerkennung in einer künstlichen Umgebung

Wie kann ich selektiver sein? Ich zeichne nicht horizontale Linien schon, aber immer noch einige Linien einschleichen. Idealerweise möchte ich die Spurgrenzen erkennen, dass das Fahrzeug in fährt. Das folgende ist ein typisches Bild der Umgebung

Environment

Hier ist, was ich bis jetzt mache:

    1. Da die Umgebung mehr oder weniger die gleiche ist, wo auch immer ich fahre, setze ich die Region of Interest (RoI), um den Horizont und alles darüber hinaus auszuschließen.
    2. Schwelle das Bild
    3. Canny-Kantenerkennung
    4. Tragen Sie eine Hough-Transformation
    5. Zeichnen Sie die erfasste (Ich werde mein Grund für Schwelle in ein wenig erklären) Linien mit Ausnahme derjenigen, die einen Gradienten von 0,0 oder nahezu 0,0 aufweisen

Der Grund für den Schwellenwert der Bildgebung ist wie folgt. Wenn Sie sich das oben verlinkte Umgebungsfoto ansehen, sehen Sie eine graue Linie, die parallel zur Straße verläuft. Weil es eine durchgehende Linie ist - im Gegensatz zu den Spurmarkierungen - erkennt die HT es. Ich kann es nicht aufgrund eines Gradienten ausschließen, da es den gleichen Gradienten wie die Spurmarkierungen hat. Mit dem Thresholding kann ich das entfernen und daher nur Linien erkennen, die die tatsächlichen Spurmarkierungen sind. Hier

ist das Ergebnis der obigen Operationen

Hough Transform

Ich verstehe, dass es viele Lösungen für dieses Problem, und ich habe unzählige Papiere zu diesem Thema lesen, aber sie scheinen alle Umgebungen weitaus komplizierter sein Handling als dies und/oder sind einfach weit über meinen Kopf. Vor etwas mehr als einem Monat hatte ich keinen Hintergrund in ComputerVision und das alles ist sehr neu für mich.

UPDATE 1:

Ich denke, das in besseren Bedingungen zu setzen, ich bin auf der Suche nach einem Weg, um die Spuren zu modellieren, so dass Linien, die nicht in das Modell passen nicht enthalten ist. Leider habe ich keine Ahnung, wo ich mit Modellen anfangen soll. Irgendwelche Vorschläge?

Für was es wert ist, habe ich es geschafft, die Spuren zu identifizieren, in denen das Fahrzeug fährt, und kann die zusätzlichen Linien ausschließen, die sozusagen nicht Teil der "aktiven" Spur sind. Hoffentlich wird dieses Foto

Screenshot

Es ist nicht perfekt helfen, aber es ist etwas, was ich denke. Mein oberstes Ziel, nach dem Modellieren, ist es, eine Überschrift/Position des Fahrzeugs zu generieren. Aber ich möchte zuerst eine relativ robuste Spurerkennung erhalten.Ich hoffe, es gibt eine relativ einfache Technik, die dazu beitragen kann, dies zu erreichen (etwas, das nicht auf die Systemparameter wie Brennweite des Sichtfeldes abhängt).

Antwort

3

Ein Weg zu gehen wäre, das vorherige Wissen der Szene, die Sie betrachten, zu verwenden. Sie könnten ein Modell mit einem verborgenen Zustand haben, der mehr oder weniger statische Parameter wie Kamerahöhe, Kameraneigung oder Spurbreite und dynamische Parameter wie Kamera-Gier, seitliche Verschiebung der Kamera innerhalb der Fahrspur, Straßenkrümmung usw. umfasst könnte mit einem solchen Modell im Rahmen einer Kalman filter umgehen. Ein Vorteil eines solchen Modells wäre die Fähigkeit, andere Fahrbahnmarkierungen wie Richtungspfeile, Zebras und dergleichen zu tolerieren. Viel Glück!

+0

Leider kann ich die Kamerahöhe und andere Parameter vom Fahrsimulator nicht herausfinden. Die Umgebung sieht in 95% der Fälle jedoch genau wie das Foto aus. Würde sich diese Methode immer noch lohnen? – saad

+0

Wenn Sie das Sichtfeld der Kamera kennen, können Sie die Neigung von der Fluchtpunkt-y-Koordinate aus bestimmen. Wenn Sie die Neigung (Tonhöhe) und die Spurbreite kennen, können Sie die Kamerahöhe bestimmen. – ssegvic

+0

Gibt es eine Möglichkeit, das Sichtfeld empirisch zu finden? Ohne die Brennweite zu kennen. Das Problem ist, dass die Fahrsimulation nicht von mir programmiert wurde und tatsächlich von einer anderen Firma stammt. Während ich versuchen werde, sie über solche Dinge zu befragen, glaube ich nicht, dass die Beantwortung solcher Fragen auf ihrer Prioritätenliste ganz oben stehen würde! – saad

1

Vielleicht könnten Sie versuchen, nur Linien an Kanten zu finden, die an Grau-Weiß-Übergängen und nicht an allen Kanten im gesamten Bild zu finden sind?

+0

Hier ist, was ich mir ausgedacht habe. Nicht sicher, wie elegant es ist. Ich werde eine breite (aber kurze Höhe) Region von Interesse (RoI) im Bild einrichten. Es wird etwa 3/5 der Weg nach unten sein. Wenn und nur wenn eine Linie den Boden dieses RoI schneidet, werde ich es zeichnen. Wenn Sie sich dieses Bild ansehen: http://tinyurl.com/349hscq (die Auswahl = RoI) werden Sie sehen, dass nur die Fahrspurbegrenzungen, durch die das Fahrzeug fährt, den unteren Rand der Auswahl schneiden und daher kann ich Markieren Sie sie als "Spuren" und zeichnen Sie sie entsprechend. Ich weiß, dass es nicht in allen Fällen funktionieren wird, aber ich wollte es hier ausführen. – saad

+2

klingt vernünftig. In der praktischen Computervision funktioniert alles, was funktioniert. Sparen Sie computerwissenschaftliche oder statistische Klarheit oder Genauigkeit, wenn Sie etwas haben, das etwas bewirkt. –

Verwandte Themen