5

Załóżmy, że robisz wideo (z kamerą w stabilnej pozycji), a ptak leci przez kamerę. Powinno być możliwe wykonanie segmentacji obrazu i automatyczne usunięcie tego ptaka z wideo.Jakie są standardowe techniki usuwania segmentacji (np. Ludzi lub ptaków) z wideo?

Jakie są te style algorytmów nazywane i jak są one zwykle wykonywane?

+0

Czy próbujesz usunąć konkretną instancję (np. Jeden konkretny ptak, który można oznaczyć do usunięcia) lub wszystkie niestatyczne obiekty (np. Wszystkie poruszające się osoby) ze sceny? – Doug

+0

Chciałbym usunąć konkretne instancje. Tak więc przypuszczam, że wystarczy pojedynczo. – amssage

Odpowiedz

3

Istnieje technika o nazwie Simple Image Object Extraction (SIOX) - wykorzystuje technikę identyfikowania obiektów pierwszego planu i tła w obrazach nieruchomych i wideo. Edytor open source GIMP ma implementację i istnieje more information about it here.

Z przegląd:

SIOX stoi Simple Interactive Object Extraction i jest rozwiązaniem dla wydobywania przedpole ze zdjęć z bardzo mało interakcji z użytkownikiem. SIOX jest szybki, odporny na szumy i dlatego może być również wykorzystywany do segmentacji filmów. Pozwala to uniknąć wielu wad metod segmentacji opartych na wykresach, ale działa równie dobrze na różnych testach porównawczych. SIOX jest otwarty i darmowy (licencja Apache), a autorzy celowo nie opatentowali żadnej części tej technologii. W rezultacie w ciągu ostatnich lat został on zintegrowany z kilkoma programami do obróbki obrazów w otwartym kodzie źródłowym. SIOX jest podstawowym algorytmem narzędzia do ekstrakcji pierwszego planu w programie do manipulacji obrazem GNU (GIMP) i jest częścią narzędzia śledzącego w Inkscape. SIOX pochodzi z E-Chalk, gdzie instruktor stojący przed tablicą elektroniczną jest podzielony na segmenty. Warianty SIOX są wykorzystywane do wizji robotów i do poprawy trójwymiarowej kamerze czasowej kamery.

Oto link do Java Reference Implementation of SIOX.

Oto link do PDF with details o tym, jak działa wariacja algorytmu.

Powinieneś być w stanie dostosować go do interpolacji między klatkami, aby usunąć konkretny obiekt pierwszego planu z każdej klatki filmu, używając danych czasowych z otaczających klatek.

2

Jeśli kamera jest nieruchoma i nie ma zbyt dużego ruchu w scenie, sugerowałbym metodę opartą na odejmowaniu tła.

Krok 1: Oblicz tło dla każdej klatki filmu wideo. Są do tego skomplikowane algorytmy, ale bardzo proste i skuteczne byłoby obliczenie mediany wartości każdego piksela na obrazie w 3-sekundowym oknie czasowym. Dłuższe, jeśli przedmiot porusza się powoli. Nawiasem mówiąc, jeśli po prostu wykonasz tego rodzaju filtrowanie, usunie on większość ruchomych obiektów z filmu, jeśli kamera jest nieruchoma, stąd moje wcześniejsze pytanie o wszystkie obiekty w stosunku do jednego obiektu.

Krok 2: Zaznacz obszary, które chcesz usunąć w każdej ramce za pomocą narzędzia pędzla, i zastąp je pikselami w tle. Nie zawracaj sobie głowy drobnym pędzlem lub lasso, ponieważ zaznaczone piksele nie będące obiektami zostaną zastąpione ich filtrowaną wersją. Prawdopodobnie można użyć tych samych znaków pędzla dla kilku klatek, ponieważ granica nie jest tak ważna. Jeśli obiekt jest jedyną rzeczą poruszającą się w scenie, możesz po prostu oznaczyć całą ramkę i zastąpić ją tłem.

W każdym razie, aby odpowiedzieć na bardziej ogólne pytanie, temat, który chcesz zbadać, nazywa się inpainting w przypadku zdjęć i wideo.Istnieje sporo literatury na ten temat, to, co opisałem, było po prostu super prostą metodą, którą można zaimplementować w ciągu godziny z opencv.

Powiązane problemy