0

Ich muss ein Programm schreiben, das eine Kamera verwendet, um die Anwesenheit eines Fahrzeugs in einer bestimmten Region auf der Straße vor der Stopplinie auf der Kreuzung zu erkennen (genau wie eine Induktionsschleife). Die Ergebnisse werden basierend auf der Sichtbarkeit eines Fahrzeugs in dieser Region wahr oder falsch sein. Die Kamera kann senkrecht zur Straße oder oberhalb der Straße installiert werden. Momentan brauche ich einen Algorithmus.Robuster Algorithmus zum Erkennen von Fahrzeugen vor der Haltelinie

Das folgende Bild ist eine Beispielimplementierung, um Fahrzeuge in der Kreuzung zu erkennen:

enter image description here

Nach einiger Studie in diesem Bereich ich diese Technik realisiert wird Untergrundsubtraktion, der Programm Modellhintergrund und wenn ein Fahrzeug ist in das Gebiet gekommen, es wird erkannt. Aber die Definition sagt, dass es sich bewegende Fahrzeuge erkennt, also was, wenn Autos auf dem Sensor 50% -60% der Zeit anhalten (wenn Signallichter rot werden)? Werden sie Hintergrund werden? Werden sie immer wieder entdeckt?

Ich habe einige Algorithmen im BS-Bereich gesehen, wie Gauß'sche Mischung, aber bezweifle, dass sie in der realen Situation wegen des obigen Problems funktionieren.

Derzeit programmiere ich eine Methode wie Mittelung mit OpenCV unter Linux. Programm berechnet den Durchschnitt der Pixel in diesem Rechteck und speichert diesen Wert in einem Puffer, berechnet den Modus und vergleicht ihn mit dem aktuellen Bild. Aber es gibt Probleme wie die Lichter der Fahrzeuge in der Nacht, die Fahrzeuge im Schatten und das Anhalten der Autos auf meinem Sensor wegen des roten Signals.

+0

Sie benötigen Problem mehr definieren viel klar. Was ist dein Beitrag? Von welchem ​​Rechteck sprichst du? Was bedeutet Ausgabe von wahr/falsch? Versuchen Sie, auf die Anwesenheit von Verkehrsampeln in anderen Farben zu schließen? Versuchen Sie, einen Funktionsprototyp zu schreiben, der Eingaben und Ausgaben deklariert. Geben Sie auch ein Diagramm an. – ShitalShah

+0

Frage bearbeitet. Ich habe ein Foto hinzugefügt, das meine Absicht deutlich zeigt. Wie zu sehen ist, wird die erkannte Region mit weißen Rändern dargestellt. – SAMPro

Antwort

0

Ich möchte eine bessere Erkennung von Fahrzeugen empfehlen, als den Vordergrund vom Hintergrund zu trennen. Es gibt viele Lichter Bedingungen Probleme und es ist alte Mode. In opencv können Sie zum Beispiel haarkaskade oder LBP für die schnelle und einfache Erkennung von Fahrzeugen verwenden. In opencv 3.1 sind 2 zum Lernen des Detektors nützlich. Der Detektor ist einfach zu verwenden.

Gleiche wie In this tutorial

Es gibt auch einige Quellen auf Internet, wo Sie bereits vortrainierter Kaskade für Autoerkennung herunterladen.

Code in der Erkennung Opencv ist einfach und leicht zu verstehen Sie können die Beispiele in meinem Blog finden. Ich habe auch einen Auto-Datensatz mit 2000 positiven Autos. Diese Samples listen Sie einfach in bash in die Liste der Positiva-Samples auf und verwenden Sie das Utility, um Sample und Traincascade zu erstellen. LBP-Kaskaden sind bei vergleichbarer Performance etwas schneller.

Ich habe Kaskade unter Windows auch unter Linux gelernt. Die Diference ist über das Programm laufen. Auch das Training (vec.vec bg.dat Daten müssen in create samples Dienstprogramm erstellt werden .. Wenn Sie Datensatz haben, bereiten Sie das Training dauert 20 Minuten. Problem ist, wo Daten zu finden. Ich habe Datensatz in meinem Blog. Versuchen Sie auch verstehen das Skript Meine -w 32 h 64 Parameter sind für Menschen Erkennung Dor Auto ist besser, so etwas wie -w 32 h 32.

./opencv_traincascade und Parameter

opencv_traincascade.exe -Daten v5.. - vec vec.vec -bg bg.dat -numPos 540 -numNeg 700 -numStages 11 numThreads 4 -stageType 32 -featureType LBP -w -h 64 BOOST -minHitRate 0,999995 -maxFalseAlarmRate 0,2 -maxdepth 10 -maxWeakCount 120 -Mode ALL

Ich sammle auch Som Der Datensatz zum Trainieren des Detektors. Sie können den Datensatz auch herunterladen von Dataset

Car dataset

Verwandte Themen