Liczenie pojazdów z filmu

10

Zastrzeżenie : Wysłałem to pytanie na StackOverFlow, ale dowiedziałem się, że lepiej tu pasuje.

Jestem trochę nowy w przetwarzaniu obrazu, więc chciałbym cię zapytać o znalezienie optymalnego rozwiązania mojego problemu, a nie pomoc w kodzie. Nie mogłem wymyślić dobrego pomysłu, dlatego chciałem zapytać o radę.

Pracuję nad projektem wykorzystującym OpenCV do liczenia pojazdów z pliku wideo lub kamery na żywo. Inni ludzie pracujący nad takim projektem zwykle śledzą poruszające się obiekty, a następnie je liczą, ale zamiast tego chciałem pracować z innym punktem widzenia; prosząc użytkownika o ustawienie ROI (regionu zainteresowania) w oknie wideo i pracę tylko dla tego regionu (z niektórych powodów, jak na przykład nie zajmowanie się całą klatką i pewien wzrost wydajności), jak pokazano poniżej. (Użytkownik może ustawić więcej niż jeden ROI, a użytkownik jest proszony o ustawienie wysokości ROI około dwa razy w stosunku do normalnego samochodu na podstawie proporcji.)

obrazek 1

Dotychczas poczyniłem pewne podstawowe postępy, takie jak aktualizowanie tła, filtry morfologiczne, progowanie i uzyskiwanie ruchomego obiektu jako obrazu binarnego, jak poniżej.

zdjęcie 2

Po ich wykonaniu próbowałem policzyć białe piksele ostatniej progowej klatki pierwszego planu i oszacować, czy był to samochód, czy nie, sprawdzając całkowitą liczbę białych pikseli (ustawiłem dolną granicę na podstawie obliczeń statycznych, znając wysokość ROI) . Aby to zilustrować, narysowałem przykładową grafikę:

zdjęcie 3

Jak widać, łatwo było obliczyć białe piksele i sprawdzić, czy rysuje krzywą do czasu i określić, czy samochód, czy coś w rodzaju hałasu.

Problem

Byłem całkiem udany, dopóki dwa samochody nie przejechały jednocześnie mojego ROI. Mój algorytm nieprawidłowo policzył je jako jeden samochód. Próbowałem różnych podejść do tego problemu i podobnych do takich jak długie pojazdy, ale nie znalazłem zadowalającego rozwiązania.

Pytanie

Czy można poradzić sobie z tym zadaniem poprzez takie podejście zliczania wartości pikseli? Jeśli nie, co sugerujesz?

Horizon1710
źródło
Twój problem powoduje, że ludzie używają śledzenia. Czy też chcesz, aby samochody, które jadą razem (np. Samochód z przyczepą), były liczone jako jeden pojazd lub dwa?
Emre
Po pierwsze, dzięki za wydanie. Nie spodziewam się 100% dokładności, samochody z przyczepami można zignorować. ale jeśli to dwa osobne samochody zbliżają się bardzo blisko siebie, muszę sprawić, by program je rozróżniał, ale nie mam pojęcia.
Horizon1710

Odpowiedzi:

5

Możesz śledzić ostatnie 10-15 klatek i policzyć liczbę białych pikseli tych klatek. Możesz rozróżnić, czy jest to pojazd, czy nie, ponieważ wykres będzie wysoki dla 10-15 klatek, będziesz mógł powiedzieć, że jest to pojazd, w przeciwnym razie jest to hałas.

Aby policzyć wiele samochodów na wielu pasach obok siebie, możesz sprawdzić kolumnę pikseli pod kątem, to znaczy pionowo. Na razie musisz sprawdzać piksele w poziomie pod kątem białych pikseli.

Ruhi Akaboy
źródło
Tak, masz rację, sprawdzając linie pionowe, ale jak? Czy mogę ustalić punkt wejścia pojazdów, sprawdzając pierwszą linię ROI?
Horizon1710