AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Multimedia Delphi Webcam Bild auswerten (Veränderungen erkennen)

Webcam Bild auswerten (Veränderungen erkennen)

Ein Thema von mohikaner13 · begonnen am 19. Mär 2008 · letzter Beitrag vom 19. Mär 2008
Antwort Antwort
mohikaner13

Registriert seit: 2. Mär 2008
Ort: Sankt Ingbert
10 Beiträge
 
Delphi 5 Standard
 
#1

Webcam Bild auswerten (Veränderungen erkennen)

  Alt 19. Mär 2008, 15:35
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
--
Jörg Hemmerling
  Mit Zitat antworten Zitat
Benutzerbild von Meflin
Meflin

Registriert seit: 21. Aug 2003
4.856 Beiträge
 
#2

Re: Webcam Bild auswerten (Veränderungen erkennen)

  Alt 19. Mär 2008, 15:41
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

  Mit Zitat antworten Zitat
Medium

Registriert seit: 23. Jan 2008
3.679 Beiträge
 
Delphi 2007 Enterprise
 
#3

Re: Webcam Bild auswerten (Veränderungen erkennen)

  Alt 19. Mär 2008, 15:54
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...
"When one person suffers from a delusion, it is called insanity. When a million people suffer from a delusion, it is called religion." (Richard Dawkins)
  Mit Zitat antworten Zitat
Flips

Registriert seit: 17. Feb 2005
Ort: Sankt Wendel
491 Beiträge
 
Delphi 7 Professional
 
#4

Re: Webcam Bild auswerten (Veränderungen erkennen)

  Alt 19. Mär 2008, 15:59
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
Philipp F.
  Mit Zitat antworten Zitat
marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#5

Re: Webcam Bild auswerten (Veränderungen erkennen)

  Alt 19. Mär 2008, 15:59
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
  Mit Zitat antworten Zitat
Medium

Registriert seit: 23. Jan 2008
3.679 Beiträge
 
Delphi 2007 Enterprise
 
#6

Re: Webcam Bild auswerten (Veränderungen erkennen)

  Alt 19. Mär 2008, 16:23
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.
"When one person suffers from a delusion, it is called insanity. When a million people suffer from a delusion, it is called religion." (Richard Dawkins)
  Mit Zitat antworten Zitat
mohikaner13

Registriert seit: 2. Mär 2008
Ort: Sankt Ingbert
10 Beiträge
 
Delphi 5 Standard
 
#7

Re: Webcam Bild auswerten (Veränderungen erkennen)

  Alt 19. Mär 2008, 16:59
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
--
Jörg Hemmerling
  Mit Zitat antworten Zitat
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 06:31 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