Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Multimedia (https://www.delphipraxis.net/16-multimedia/)
-   -   Delphi Webcam Bild auswerten (Veränderungen erkennen) (https://www.delphipraxis.net/110534-webcam-bild-auswerten-veraenderungen-erkennen.html)

mohikaner13 19. Mär 2008 15:35


Webcam Bild auswerten (Veränderungen erkennen)
 
Hallo,

ich habe inzwischen ein Programm geschrieben, mit dem ich meine Webcam (Robocam) steuern (PAN und TILT) und die Bilder (JPG) alle xx mSek auslesen und abspeichern kann.

Jetzt würde ich gerne im Normalbetrieb alle z.B. x Sekunden (15) ein Bild speichern und im Fall einer Bewegung alle y Sekunden (0,5) ein Bild speichern.

Das capturen und speichern der Bilder klappt prima.

Jetzt meine Frage:
mit welchem Ansatz erkenne ich am besten Bewegung (=Veränderung?) in dem Bild?

Meine Idee: ich vergleiche das letzte mit dem vorletzten Bild.

Mein Problem: wie mache ich das am besten - ich möchte ungern einzelne Pixel vergleiche, da diese sich durch die interne Helligkeitsregelung der Kamera auch schon bei leichten Veränderungen (Wolken) oft stark in der Helligkeit unterschieden (oder durch das Rauschen des Aufnahmechip). Ich hätte aber gerne so etwas wie eine (im optimalsten Fall einstellbare) "Ansprechschwelle", ab der ein Unterschied erkannt wird.

Ich stelle mir da so was vor wie ein unscharfer (evtl Durchschnittsswert) des Bildinhalts. Evtl. in mehreren Bereichen des Bildes. Diesen könnte ich für beide Vergleichsbilder berechnen und dann vergleichen.
Ich habe auch schon daran gedacht, einfach die Dateigröße zu vergleichen, da das Bild ja je nach Bildinhalt unterschiedlich stark komprimiert wird.

Hat jemand Erfahrungen damit und kann mir hier meine Ansätze bestätigen oder verwerfen?

Auch Einzelheiten zur Bildanalyse würden mich interessieren (auslesen des Inhalts mit Scanline oder einzelnen Pixeln?)

Die Bilder liegen sowohl als Datei (JPG) vor als auch in einem TIMAGE.

Gruß, Jörg

Meflin 19. Mär 2008 15:41

Re: Webcam Bild auswerten (Veränderungen erkennen)
 
http://www.codeproject.com/KB/audio-...Detection.aspx

Ein grandioses Beispiel zur Motion Detection. Die Sourcen sind zwar C#, aber immerhin ist das ganze Open Source ;)


Medium 19. Mär 2008 15:54

Re: Webcam Bild auswerten (Veränderungen erkennen)
 
Wenn die Helligkeit stark schwankt, böte sich eine Fourieranalyse des Bildes an. Der Vorteil dabei ist, dass sich die Fourier-Koeffizienten bei einer gesamten Helligkeitsänderung kaum ändern, sondern lediglich der DC Anteil. Damit wäre dieser Fall unterschieden.
Zudem äussert sich Rauschen in Änderungen im höher frequenten Bereich, so dass wenn du nur untere Bereiche vergleichst Rauschen (je nach Art des Rauschens) weitgehend unbeachtet bleibt. (Allerdings auch Bewegungen sehr kleiner, scharfer Objekte.)

Damit hättest du dann sogar 2 Werte zum Finetunen: Frequenz, bis zu der verglichen wird (sogar horiz/vert unabhängig bei einer 2D DFT), und einen Schwellwert ab dem Differenzen in den Frequenzen als Unterschied gelten.

Edit: Schlechtschreibung...

Flips 19. Mär 2008 15:59

Re: Webcam Bild auswerten (Veränderungen erkennen)
 
Hi.

ich hab mich schon intensiv damit beschäftigt, aktuell bin ich dabei ein neuronales Netz zu implementieren welches die Pixel gewichtet, was auch das flimmern perfekt kompensiert, sofern man es richtig programmiert^^
Siehe Forums-Thread.

Ein paar Anregungen:
Rechne die Bilder in Schwarz-weiß um (keine Graustufen, nur schwarz und weiß).
Nach dem Prinzip:
Ist der Pixel heller als RGB(120,120,120) -> weiß, anders schwarz.
Diesen Schwellwert (120) kann man dann variieren, wie es halt am besten passt.
Das Vergleichsbild änderst du auch in SW. Wenn dann ein Pixel mal von RGB(111,80,95) auf RGB(112,75,130) wechselt, ist das dem Programm relativ egal^^

Das Bild mit dem vorherigen zu vergleichen ist nicht sehr gut, denn dann könnte ich mich ganz langsam reinschleichen ;-)
Also lieber per Timer alle X Minuten ein neues Vergleichsbild machen -> Wolken, Sonnenuntergang etc.... wirken sich ein wenig schwächer aus.

Oder halt ein neuronales Netz, welches flimmernde Pixel erkennt und als unwichtig einstuft (grob gesagt).

Nur mal 3 Anregungen :-)

marabu 19. Mär 2008 15:59

Re: Webcam Bild auswerten (Veränderungen erkennen)
 
Hallo Jörg,

ich erinnere mich an diesen Thread: Objektverfolgung

Wenn du eine unbewegliche Kamera verwendest, dann musst du gar nicht die Differenz von Folgebildern betrachten, sondern kannst immer mit einem Referenzbild arbeiten.

Freundliche Grüße

Medium 19. Mär 2008 16:23

Re: Webcam Bild auswerten (Veränderungen erkennen)
 
Ich halte ja Objekterkennung und -verfolgung für um ganze Größenordnungen zu viel für den gefragten Fall. Sicherlich ein interessantes Gebiet, aber um ein ausreichendes Maß für Bildänderung zu erhalten gibt es doch eine ganze Reihe weiiiit einfacherer, und auch funktionierender Verfahren.

Welches nun das geeigneteste für den TE ist, hängt im Wesentlichen von den Bildern ab, die er da hat. Für die zwei oben genannten Rahmenbedingungen würde ich halt eine FA vorschlagen.

mohikaner13 19. Mär 2008 16:59

Re: Webcam Bild auswerten (Veränderungen erkennen)
 
Wow - das sind ja Informationen für ne ganze Woche - und das in weniger als einer Stunde.

MEDIUM hat ganz recht - Bewegungserkennung reicht mir, Objektverfolgung geht mir (für den Anfang) doch etwas weit.

Die Überlegungen von FLIPS bezgl. nicht ständig das letzte Bild als Vergleich zu nehmen gefallen mir gut. Ich werde tatsächlich mal ausprobieren, ob es auch reicht alle paar Minuten ein Referenzbild aufzunehmen. Wenn ich die Kamera bewege, dann führt das auf jeden Fall zu der Aufnahme eine Videos (sofern ich das dann nicht über die Software ausblende, ich weis ja wann die Kamera bewegt wurde und kann direkt danach ein neues Referenzbild aufnehmen - da bin ich aber noch nicht so sicher)

Das Thema FA (von MEDIUM eingebracht) hört sich vielversprechend an - da muss ich mich jetzt mal einlesen und einarbeiten. Vor allem wie ich da zu einem vergleichbaren Wert komme.

Die Idee das Bild in S/W umzurechnen (von FLIPS) (und dann bestimmte Pixel zu vergleichen) werde ich auch mal probieren - das ist zumindest im Moment für mich einfacher nachzuvollziehen.

Die genannten Threads (von MEFLIN, FLIPS und MARABU werde ich mir trotzdem mal ansehen)

Danke an alle für die Hilfe, ich glaube da komme ich weiter,
sobald ich was raus habe, melde ich mich noch mal mit dem Ergebnis

Gruß, Jörg H.

Edit: Software mit Kamera vertauscht :roll:


Alle Zeitangaben in WEZ +1. Es ist jetzt 20:51 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz