Wykrywanie ruchu

0

Ma ktoś może jakies materiały, kody, algorytmy na temat porównywania dwóch obrazków tak, aby wykryć ruch, zmianę wyglądu, kolorów itp?

Pierwotna koncepcja mojego programu to przelecieć po wszystkich pixelach, jeżeli rózni się kolor to mamy zmianę, a potem liczymy procent zmian w stosunku do całego obrazka. Ale przy słabych warunkach oświetleniowych, kiedy kamerka generuje duży szum, ta metoda zawodzi pokazując niepodobieństwo dwóch obrazków zrobionych tuż po sobie w średniej skali 99%. A różnica między tym, czy ktoś jest w pokoju, a czy go nie ma to różnice w obrazkach rzędu 0,002%.

Więc też ewentualnie może być coś o usuwaniu szumu z obrazka :)

0
  1. zmniejsz ilość kolorów, najlepiej do dwóch;
  2. wykrywaj kontury i to je porównuj (kontury są tam, gdzie pochodna obrazu jest duża, tzn różnica pomiędzy dwoma sąsiednimi - nie tylko w poziomie, ale i pionie - pikselami jest duża);
  3. możesz sobie "uśrednić" zawartość obrazka (tzw. blur) za klka sąsiednich pikseli; - w ten sposób wytniesz większość losowego szumu;
  4. polecam lekturę wykładów z jakiegoś przedmiotu o cyfrowym przetwarzaniu obrazów;
  5. wykrywanie ruchu na podstawie porównywanie piksel po pikselu to fatalna metoda. proponuję: zmniejszyć ilość kolorów do 2 (progowanie), skasować obszary, które mają rozmiar mniejszy niż ustalony (np.: 10pikseli) - do tego służą operacje takie jak erozja i dylacja (dylatacja), i dopiero potem porównać piksel po pikselu (albo jakąś bardziej wyrafinowaną metodą).
0

Zmniejszenie liczby kolorów (do skali 4-bitowej) dało rzeczywiście świetne rezultaty. Skala 1-bitowe okazała się za ostra - program nie potrafił rozróżnić prawidłowo dwóch obrazów, gdyż bardzo, ale to bardzo niewiele się rózniły. Zapewne gdybym zastosował własny algorytm zamiast po prostu zmiany PixelFormat uzyskałbym lepsze wyniki. Może następna wersja programu będzie miała lepszy algorytm niz obecny... plus jeszcze propozycje z rozmyciem blura, choć przy obecnej palecie barw szum praktycznie nie jest widoczny (sięga około 0,02% obrazka zamiast około 50% :))

W każdym razie thx Łukasz za pomoc.

// jak chcesz coś więcej odnośnie przetwarzania obrazów, to wal na irc albo gg - ŁF

1 użytkowników online, w tym zalogowanych: 0, gości: 1