Haftungsausschluss : Ich habe diese Frage auf StackOverFlow gepostet, aber festgestellt, dass sie hier besser geeignet ist.
Ich bin ein bisschen neu in der Bildverarbeitung, daher möchte ich Sie fragen, ob Sie die optimale Lösung für mein Problem finden, nicht um Hilfe für Code. Ich konnte mir noch keine gute Idee vorstellen und wollte Sie um Rat fragen.
Ich arbeite an einem Projekt mit OpenCV, bei dem die Fahrzeuge aus einer Videodatei oder einer Live-Kamera gezählt werden. Andere Leute, die an einem solchen Projekt arbeiten, verfolgen im Allgemeinen die sich bewegenden Objekte und zählen sie dann. Stattdessen wollte ich mit einem anderen Blickwinkel arbeiten. Bitten Sie den Benutzer, im Videofenster einen ROI (Region of Interest) festzulegen und nur für diesen Bereich zu arbeiten (aus bestimmten Gründen, z. B. um nicht den gesamten Frame und eine gewisse Leistungssteigerung zu behandeln), wie unten dargestellt. (Der Benutzer kann mehr als einen ROI festlegen, und der Benutzer wird aufgefordert, die Höhe des ROI nach Proportionssinn etwa zweimal so hoch wie bei einem normalen Auto einzustellen.)
Ich habe bisher einige grundlegende Fortschritte gemacht, wie Hintergrundaktualisierung, morphologische Filter, Schwellenwertbildung und das Erhalten des sich bewegenden Objekts als Binärbild, wie unten dargestellt.
Nachdem ich sie ausgeführt hatte, versuchte ich, die weißen Pixel des endgültigen Vordergrundrahmens mit Schwellenwert zu zählen und zu schätzen, ob es sich um ein Auto handelte oder nicht, indem ich die Gesamtzahl der weißen Pixel überprüfte (ich legte eine Untergrenze durch eine statische Berechnung fest, indem ich die Höhe des ROI kannte). . Zur Veranschaulichung habe ich eine Beispielgrafik gezeichnet:
Wie Sie sehen können, war es einfach, die weißen Pixel zu berechnen und zu überprüfen, ob sie zu der Zeit eine Kurve zeichnen, und festzustellen, ob es sich um ein Auto oder etwas Ähnliches handelt.
Problem
Ich war ziemlich erfolgreich, bis zwei Autos gleichzeitig meinen ROI durchliefen. Mein Algorithmus hat sie fälschlicherweise als ein Auto gezählt. Ich habe verschiedene Ansätze für dieses Problem ausprobiert und ähnliche wie lange Fahrzeuge, aber ich habe keine zufriedenstellende Lösung gefunden.
Frage
Ist es möglich, diese Aufgabe durch diesen Ansatz der Pixelwertzählung zu bewältigen? Wenn nicht, was schlagen Sie vor?