Ich arbeite derzeit an einem Intrusionssystem basierend auf Videoüberwachung. Um diese Aufgabe zu erledigen, mache ich eine Momentaufnahme des Hintergrunds meiner Szene (gehe davon aus, dass sie völlig sauber ist, keine Menschen oder sich bewegende Objekte). Dann vergleiche ich den Rahmen, den ich von der (statischen) Videokamera erhalte, und suche nach den Unterschieden. Ich muss in der Lage sein, irgendwelche Unterschiede zu überprüfen, nicht nur menschliche Form oder was auch immer, also kann ich nicht spezifische Merkmalsextraktion.CV - Unterschiede zwischen zwei Bildern extrahieren
Normalerweise habe ich:
ich OpenCV verwende, so dass ich zum Vergleich im Grunde tun:
cv::Mat bg_frame;
cv::Mat cam_frame;
cv::Mat motion;
cv::absdiff(bg_frame, cam_frame, motion);
cv::threshold(motion, motion, 80, 255, cv::THRESH_BINARY);
cv::erode(motion, motion, cv::getStructuringElement(cv::MORPH_RECT, cv::Size(3,3)));
Hier ist das Ergebnis:
Wie Sie sehen können, ist der Arm Streifen d (aufgrund von Farbdifferenzkonflikt denke ich) und das ist leider nicht das, was ich will.
Ich dachte über die Verwendung von cv::Canny()
hinzufügen, um die Kanten zu erkennen und füllen Sie den fehlenden Teil des Armes, aber leider (noch einmal), löst es nur das Problem in wenigen Situationen nicht die meisten von ihnen.
Gibt es einen Algorithmus oder eine Technik, die ich verwenden könnte, um einen genauen Differenzbericht zu erhalten?
PS: Entschuldigung für die Bilder. Aufgrund meines neuen Abonnements habe ich nicht genug Ansehen.
EDIT Ich benutze Graustufenbild hier, aber ich bin offen für jede Lösung.
vielleicht versucht [nicht das Rad neu zu erfinden] (http://docs.opencv.org/modules/video/ doc/motion_analysis_and_object_tracking.html # backgroundsubtractor) – berak
schau mal, was schon eingebaut ist (und ob es besser funktioniert), ja. – berak
haben Sie in Graustufen konvertiert? Wenn Sie die openCV-Klassen nicht verwenden möchten: Versuchen Sie, die Differenz jedes Kanals zu berechnen und kombinieren Sie sie, versuchen Sie es mit HSV-Bildern. Wenn Sie vorhandene Techniken verwenden möchten, versuchen Sie ViBe. Denken Sie daran, dass sogar Änderungen der Beleuchtung "irgendwelche Unterschiede, nicht nur menschliche Form oder was auch immer" sein werden, was ein Problem für die meisten Hintergrundsubtraktionsmethoden sein könnte. – Micka