Ich möchte mein Telefon als CCTV-System verwenden, um einen Raum in meinem Haus zu steuern und einen Alarm anzuzeigen, wenn sich etwas bewegt.
Im Moment ist es mir gelungen, jede Minute ein Bild aufzunehmen und es über ein PHP-Skript auf meinen Server hochzuladen. Jetzt möchte ich das aktuelle Bild und das Bild vor 1 Minute vergleichen und feststellen, ob jemand den Raum betreten hat. Im Grunde müsste ich also die Unterschiede der Pixel auf dem Bild vergleichen (aber auch berücksichtigen, dass eine Wolke möglicherweise nur Hallo sagt und die Helligkeit innerhalb einer Minute ändert).
Hat jemand eine Ahnung, wie man das erreicht oder ein Dokument zum Lesen?
Antworten:
Mir scheint, Sie suchen nach einer Hintergrund-Subtraktionstechnik. Bei verrauschten Bildern und wechselnden Lichtverhältnissen kann dies nicht trivial sein. Der derzeitige Stand der Technik hierfür ist die niedrigrangige Matrixdarstellung, für die jedoch nicht zwei, sondern viele (~ Dutzend) Bilder erforderlich sind. Es folgen einige Hochleistungsmathematiken: Jedes Bild, das als Vektor von Pixeln betrachtet wird, Vektoren, die in eine Matrix kombiniert werden, und diese Matrix werden in eine Matrix mit niedrigem Rang und einen Rest zerlegt. Niedrigrangige Matrixspalten sind Hintergründe und der Rest bewegt Objekte. Es gibt einige Open-Source-Implementierungen, jedoch nur für die Faktorisierung selbst, nicht für die vollständige Image-Pipeline-IIRC
Hier ist ein Artikel und ein Code zur Matrixfaktorisierung http://www.ece.rice.edu/~aew2/sparcs.html
Hier ist eine Übersicht vom CS-Blog und ein Link zu anderem Code:
https://sites.google.com/site/igorcarron2/matrixfactorizations
http://nuit-blanche.blogspot.com/search/label/MF
Übersicht über einige andere Techniken: http://www.vis.uni-stuttgart.de/uploads/tx_vispublications/Brutzer2011-2.pdf
quelle
Denken Sie daran: Es gibt Schatten (nicht nur Helligkeit).
Ich mag die Idee von James Webster nicht wirklich, da sie im Grunde genommen die Auflösung in jeder Dimension verkleinert und die verkleinerten Bilder vergleicht (auch Schwellenwerte mag ich nicht - sie sind zu willkürlich, man muss sie testen und optimieren bis Sie einen guten Wert erhalten und am nächsten Tag diese Werte aufgrund des unterschiedlichen Wetters oder anderer Umwelteinflüsse veraltet sein könnten)
Aber um fair zu sein, ich habe auch keine wirklich gute Lösung. Meine erste Idee war, jedes Bild mit einem Referenzbild des leeren Raums zu vergleichen und eine Kantenerkennung für das Diff-Bild durchzuführen. Dies würde aber auch Schatten erkennen. Aber ich denke, Sie können nicht zwischen Schatten und anderen Objekten unterscheiden ... zumindest weiß ich nicht wie. Aber vielleicht kannst du das Ergebnis nach der Kantenerkennung zwischen 2 Bildern vergleichen, da sich die Schatten meist langsam bewegen (es wird immer noch Probleme geben, wenn sich Autos vorbeibewegen oder wenn sich eine Wolke vorbeibewegt).
quelle
Die "Matrixfaktorisierung" hilft Ihnen NICHT bei Ihrer Arbeit! In dem von @ mirror2image genannten Artikel geht es um die Hintergrundsubtraktion, jedoch NICHT um die "Matrixfaktorisierung".
Das Erkennen von sich bewegenden Objekten (sei es Menschen oder Fahrzeuge) mithilfe von Laufvideos ist ein aktives Forschungsgebiet.
Grundsätzlich schätzt das System einen typischen statischen Hintergrund, indem es mehrere Bilder abtastet und die Energiedifferenz zwischen dem eingehenden Bild und dem Hintergrund misst. Wenn die Energie signifikant ist, wird das Pixel als Vordergrund klassifiziert. Ein solcher Satz von Vordergrund sagt Ihnen, ob es einen Eintrag des Objekts im System gibt.
Der beste Verweis auf Ihr Forschungspapier (und auch relativ einfach, wenn Sie es wirklich implementieren möchten) wäre - W4-System finden Sie hier und sehen Sie Picardi-Papier hier als eine detailliertere Übersicht für andere Techniken im System.
Es gibt viele Herausforderungen, die mit dem Problem verbunden sind:
Das Vorhandensein von Lärm führt zu erheblichen Mehrdeutigkeiten. Der Ansatz besteht darin, eine effiziente zeitliche Filterung anzuwenden und die Varianz des Rauschens zu berücksichtigen, um es immun gegen Schwellenwerte zu machen.
Das Vorhandensein von Schatten erzeugt die Mehrdeutigkeit, weder Vordergrund noch Hintergrund zu sein. Es gibt Papiere, die die Unterscheidung zwischen Farbe und Intensität modellieren, um Schatten und echten Vordergrund zu unterscheiden.
Der Hintergrund kann komplex sein wie das Winken von Bäumen oder Meer usw.
Der Hintergrund kann eine langsame oder plötzliche Änderung der Beleuchtung aufweisen, wobei der zuvor "erlernte" Hintergrund dann an den neuen angepasst wird.
Eines der bekanntesten Beispiele ist der Wall-Flower-Algorithmus. Er zeigt, wie sich verschiedene Szenarien am besten kombinieren lassen, um eine robuste Erkennung sich bewegender Objekte zu erzielen.
quelle
Ich kenne keine genaue Lösung, aber Sie sollten eine Art Hash des Bildes machen; Ein kleinerer Datensatz, der aus dem Bild extrahiert wurde und der besser als das gesamte Bild ist.
Ich denke, Farbhistogramm ist eine gute Wahl dafür.
Wenn Sie Ihr Bild in Bereiche aufteilen und separate Histogramme für diese Bereiche erstellen, können Sie die Position / den Pfad des Eindringlings bestimmen.
quelle
Es kann hilfreich sein, die Differenz zweimal zu messen, dh die Differenz der Unterschiede. Wenn also die doppelte Ableitung der Pixel in einigen Regionen größer als ein Schwellenwert ist, können Sie dies als Betreten des Raums bezeichnen. Eine Helligkeitsänderung führt zu einem annähernd konstanten Gradienten im gesamten Bild, eine hessische oder doppelte Ableitung liefert jedoch einen guten Hinweis auf Bewegungen oder größere Änderungen im Raum.
quelle