(Gast)
n/a Beiträge
|
AW: Videoanalyse (ähnlich wie Lichtschranke)
23. Dez 2015, 00:57
Laßt mich mal versuche, das Problem technisch zu analysieren: - In einem begrenzten Bereich des Videobildes soll die Dynamik von Bildänderungen festgehalten werden: Die Geschwindigkeit, mit der ein bewegter bewegter Gegenstand sich von A nach B bewegt, soll gemessen werden.
- Die reale Strecke ist bekannt, so daß man errechnen kann, wie viele Pixel beispielsweise 10 cm oder 1 m entsprechen.
- Die zu beobachtende Szene ist ausreichend gut ausgeleuchtet (was immer das genau bedeutet).
- Die Software, die die Einzelbilder analysiert, vergleicht immer das aktuelle Bild mit dem vorangegangenen.
- Zur Vereinfachung der Vergleiche werden die Bitmaps in 256 Graustufen umgewandelt.
- Da nicht das komplette Bitmap, sondern lediglich ein bestimmter Bereich beobachtet werden soll, wird der benötigte Bildausschnitt herauskopiert.
- Der eigentliche Vergleich läuft via Scanline und CompareMem, wobei die Anzahl der Fehler (= abweichenden Pixelfarben) einstellbar sein sollte und erst ab einer bestimmten Anzahl von Fehlern der Vergleich true zurückliefern sollte (Function IsMoving : Boolean; ).
- Um nun sowas wie eine Geschwindigkeit bestimmen zu können, wird der Bildbereich nach dem erstn Feststellen einer Farbänderung in Bewegungsrichtung reduziert: Kommt die Bewegung z.B. von rechts, wird der zu beobachtende Ausschnitt rechts um eine festgelegte Anzahl an Pixeln beschnitten.
- Die Ergebnisse werden in einem Array of SpeedMess (Zeitpunkt: TDateTime; Speed : Integer;) gespeichert; am Ende wird daraus die Geschwindigkeit berechnet und in Speed abgelegt. Beim ersten Eintrag enthält SpeedMess.Speed den Wert 0.
- Da die Geschwindigkeit sich von Meßpunkt zu Meßpunkt ändern kann, wird jede Geschwindigkeit separat berechnet und am Ende der Durchschnittwert ermittelt.
- Man könnte den Meß-Algorithmus so entwickeln, daß er Geschwindigkeiten mit allen denkbaren Vektoren zu messen erlaubt, also von rechts nach links ebenso wie von links nach rechts, von oben nach unten oder diagonal, falls das benötigt wird. So könnte man am Ende auch die Richtung ausgeben, in die sich das Objekt bewegt hat.
|
|
Zitat
|