5

Im próbuje usunąć tło z filmu i uzyskać binarnych obrazów (lub 8-bit), gdzie wartość przedmiotu, który porusza się 1 i statyczne tło 0.Usuń tło i szum z obrazu

coś to:

enter image description here

najpierw próbowałem go z coraz różnicę absDiff()z systemem średniąaccumulateWeighted()i bieżącej ramki ale wynik nie był co ja expe cted (tylko krawędzie 1 i wewnątrz poruszającego się obiektu było 0).

więc poszedłem na createBackgroundSubtractorMOG2 i createBackgroundSubtractorMOG, ale to też nie jest dobre (ten sam problem).

Czy istnieje sposób na uzyskanie całego poruszającego się obiektu?

+0

Jestem zainteresowany poznaniem wyniku na tym. Myśl, którą możesz spróbować? Co się stanie, jeśli zastosujesz techniki śledzenia obiektów, aby uchwycić poruszający się obiekt; przycinasz roi (wykrywany obiekt) i pracujesz z tym właśnie. Zastosuj próg i zobacz, co się okazuje? myślisz, że to może pomóc? – ibininja

+0

@ibininja Użyłem maski z 'MOG2' do przycięcia roi i zadziałało! ty –

Odpowiedz

0

Metoda mieszanki Gaussiana nie rozwiąże wszystkich twoich problemów. Powszechnym problemem jest wrażliwość na warunki świetlne, np. dołączanie cienia do wyodrębnionego obiektu pierwszego planu. Jeśli scenariusz obrazu (tło) jest mniej więcej taki sam, możesz zawęzić wyniki za pomocą przetwarzania obrazu.

Jeśli tło jest podobne jak w dołączonym obrazie, spróbuj zbudować histogram kolorów w przestrzeni HSI, utwórz obraz wyodrębnionego obiektu pierwszego planu (bez maski, rzeczywistego kolorowego obrazu) i usuń piksele, których kolor jest podobny do podłogi (technika znana z metod wykrywania skóry). W ten sposób możesz usunąć cienie związane z osobą/przedmiotami.

Ponadto, jeśli przetwarzanie w czasie rzeczywistym nie ma kluczowego znaczenia w aplikacji, można użyć bardziej wyrafinowanego wykrywania tła/pierwszego planu, takiego jak SubSENSE.