Unterschied zwischen Vordergrund-Hintergrund-Segmentierungsmethoden in OpenCV

8

OpenCV Version 2.4.5 bietet mehrere verschiedene Implementierungen, mit denen sich bewegte Objekte verfolgen lassen, die statistische Methoden zur Schätzung des Hintergrunds verwenden. OpenCV hat BackgroundSubtractorMOG , BackgroundSubtractorMOG2 Klassen implementiert auf der CPU. Darüber hinaus gibt es GPU-Implementierungen von BackgroundSubtractorMOG und BackgroundSubtractorMOG2 , nämlich gpu::MOG_GPU bzw. gpu::MOG2_GPU . Es gibt auch zwei andere Algorithmen gpu::GMG_GPU und gpu::FGDStatModel .

In meiner Anwendung möchte ich bewegte Objekte segmentieren, sobald sie die Szene betreten. Ich möchte gerne falsche Positive wie Schatten vermeiden. Diese 4 Algorithmen scheinen sich auf das gleiche Ziel zu konzentrieren - sie trennen den Hintergrund vom Vordergrund, indem sie ein Modell des Hintergrunds über die Zeit erstellen. Ich war am Wandern, wenn jemand, der Erfahrung mit diesen Implementierungen hatte, mir helfen kann, zu entscheiden, welche (GPU) Implementierung zu verwenden ist. Wie unterscheiden sich diese Algorithmen - MOG, MOG2, GMG und FGDStatModel - voneinander? Was sind die Vorteile des einen oder anderen Algorithmus? Wie vergleichen sich diese Implementierungen in Bezug auf Geschwindigkeit, Fähigkeit, ihre Parameter zu konfigurieren, Genauigkeit, Schattenerkennung (falsch positiv) usw.?

    
Alexey 22.04.2013, 21:47
quelle

1 Antwort

5

Ich bin auf einen Demo-Quellcode bgfg_segm.cpp in {opencv_folder}\samples\gpu gestoßen. Die Demo zeigt die Verwendung und zeigt die Ausgabe für die folgenden Hintergrund-Vordergrund-Segmentierungsklassen an

%Vor%

Genau das benötigte ich, um die Algorithmen zu vergleichen. Offensichtlich muss man Parameter für die Algorithmen einstellen, um den einen Algorithmus (zusammen mit einer Reihe von Parametern) zu finden, der zu einer gegebenen Anwendung passt.

Geschwindigkeitsvergleich:

%Vor%     
Alexey 25.04.2013, 16:15
quelle