Bewegungserkennung
-
Hi Leute,
ich wollte ein keines Programm schreiben welches eine Bewegung bzw. eine Veränderung von 2 Bilder erkennt. Sowas was auch bei den Webcamüberwachungssoftwares eingebaut ist.
Ich hab schon ziemlich viel gegooglet. Evtl. hat ja jemand von euch Erfahrung wie man sowas im bcb umsetzen könnte. Danke!!Gruß
kmb
-
hab mal sowas mit winapi gebastelt
du musst er die bilder capturen dann vergleichen .
wo liegt dein problem capturen / vergleichen /etc.?
-
Naja,
eher beim Vergleichen. Mir ist nicht ganz klar wie ich da am besten vorgehen sollte. Man muss ja solche sachen wie z.B. Helligkeitsunterschiede und so auch auswerten und ich weiss nicht wie man am besten eine Bewegung erkennen kann.
Reicht es schon wenn man bei bestimmten Farbunterschieden dann Alarm schlägt oder wie hast du das ausgewertet? Ich meine allein schon durch die Konvertierung eines jpegs ergeben sich ja schon Veränderungen.Ich dachte bevor ich das Rad wieder neu erfinde frag ich mal nach ob es schon fertige Algorh. dafür gibt welche sich durchgesetzt haben.
gruss
kmb
-
nun zunächst hab ich bitmaps verwendet.
am anfang hab ich einfach pixel für pixel verglichen und ab einen Prozentsatz an Unterschied alarm geschlagen.
dadurch ergab sich das problem dass auch alarm geschlagen wurde wenn sich das bild bei trivialen Änderungen(keinen bewegungen sondern helligkeitsveränderungen) veränderte.
Eine neue idee musste her.
Inspiriert durch den Film Resident Evil ( wo die Kamera durch Rechtecke das bild unterteilt und die bewegungen in realtime gelb untermalt) hab ich das prinzip mal kopiert.
Hab das bild in 16x16 pixelflächen unterteilt und dort nach auffälligen veränderungen gescannt.
bin beim scannen wie beim ganzen bild vorgegangen. Alle Pixel addiert und den mittelwert gebildet (also durch 256(16x16)).
Die veränderung mit dem bild davor verglichen und dementsprechend gehandelt.Meine Implementationen sind später viel komplexer geworden.
-
Habe auch an sowas rumprobiert und hatte den gleichen Ansatz wie hah, da hat sich nur leider ein Problem ergeben.
Gehn wir mal davon aus die Grundfläche wäre Grau (127). Dann wäre ein Bild wo die Fläche mit Grau gefüllt ist genau das gleiche wie ein Bild wo die Fläche halb weis , halb schwarz gefüllt ist und das ist ja eigentlich ein wesentlicher Unterschied.
-
jo doas problem hatte ich auch.
Da ich mit meinem programm objektbewegungen erkennen wollte , hab ich später noch viel komplexere sachen geschrieben.
so hab ich z.B nen kantenerkennungs algo über dab bild gehauen und nach mustern verglichen.
dies wieder in ner 16x16 matrix.
Das ergebnis war ganz ok.
-
Erstmal Danke für eure Hilfe.
Ist eigentlich wirklich schon ein komplexes Thema. Was ich mich bloss Frage, warum gibt es tausende von kleinen Webcam-Programme die solche Funktionen anbieten. Die werden doch nicht alle das Rad neu erfunden haben. Gibt es keine entsprechende dll oder Sonstiges die einem das Problem abnehmen könnten?
gruss
kmb
-
Intel hatte irgendwo eine Graphische Library zur Verfügung gestellt. Weiss aber nicht mehr wie die heisst. Frag da nochmals im Spiele/Grafikforum nach. Die haben das mit der Grafik etwas besser im Griff (o;
-
OK,
danke! ich werd die mal Fragen. Danke für euere Hilfe.
gruss
kmb