2013-04-22 9 views
8

OpenCV wersja 2.4.5 oferuje kilka różnych implementacji, które mogą być używane do śledzenia ruchomych obiektów, które używają metod statystycznych do szacowania tła. OpenCV ma klasy BackgroundSubtractorMOG, BackgroundSubtractorMOG2 zaimplementowane na procesorze. Ponadto ma implementacje GPU BackgroundSubtractorMOG i BackgroundSubtractorMOG2, a mianowicie gpu::MOG_GPU i gpu::MOG2_GPU odpowiednio. Istnieją również dwa inne algorytmy: gpu::GMG_GPU i .Różnice między metodami segmentowania tła pierwszego w OpenCV

W mojej aplikacji chcę posegmentować ruchome obiekty, gdy tylko wejdą na scenę. Chciałbym uniknąć fałszywych alarmów, takich jak cienie. Te 4 algorytmy wydają się skupiać na tym samym celu - oddzielają tło od pierwszego planu, tworząc model tła w czasie. Błąkałem się, gdy ktoś, kto miał doświadczenie z tymi implementacjami, może mi pomóc zdecydować, która implementacja (GPU) się zastosuje. Jak te algorytmy - MOG, MOG2, GMG i FGDStatModel - różnią się od siebie? Jakie są zalety korzystania z jednego lub drugiego algorytmu? W jaki sposób te implementacje porównują pod względem szybkości, możliwości konfigurowania swoich parametrów, dokładności, wykrywania cienia (fałszywie pozytywne), itp.?

Odpowiedz

5

Natknąłem się na kod źródłowy demo bgfg_segm.cpp znajdujący się w {opencv_folder}\samples\gpu. Wersja demonstracyjna pokazuje użycie i wyświetla dane wyjściowe dla następujących klas segmentacji pierwszego planu:

FGDStatModel 
MOG_GPU 
MOG2_GPU 
VIBE_GPU <- listed under `non-free functionality` in OpenCV documentation 
GMG_GPU 

Dokładnie to jest potrzebne do porównania algorytmów. Oczywiście, trzeba dostroić parametry dla algorytmów, aby znaleźć jeden algorytm (wraz z zestawem parametrów), który pasuje do danej aplikacji.

porównanie Speed:

FGDStatModel ~60 frames per second (fps) <-slowest 
MOG_GPU  ~650 fps 
MOG2_GPU  ~650 fps 
VIBE_GPU  ~1000 fps <- fastest 
GMG_GPU  ~190 fps 
+0

i co wszystkie parametry strojenia? – nkint

+0

@nkint Prawda, dokładność zależy od aplikacji i parametrów wybranych dla danego algorytmu. Nie zrobiłem obszernych badań. – Alexey

+0

i którego parametru używałeś? dokładnie dostroić ręcznie? – nkint