Domowe efekty specjalne - podmiana tła

28.09.2011 - Filip Mróz
TrudnośćTrudność

Co dalej?

Korzystanie z naszego prostego programu wymaga trochę zabawy, zwłaszcza odpowiedniego światła i ustawienia kamery. Można go można rozwinąć i poprawić uzyskiwane wyniki. Dla wszystkich zainteresowanych, oto kilka możliwych zmian:
  • W obrazie może być dużo szumu gaussowskiego, standardową metodą walki z nim jest wspomniane wcześniej rozmycie medianą (medianBlur) albo procedura znana jako Crimmins Speckle Removal. Można je stosować tylko na obrazie wykorzystywanym do wyliczania różnicy, by uniknąć rozmycia wyjściowego obrazu. Sprawdź jaki wpływ ma wykorzystanie rozmycia medianą na maskę pierwszego planu gdy wartość graniczna jest niska.
  • Aktualna metoda liczenia zmiany jako różnicy obrazów BGR w dużym stopniu zależy od jasności. Zamiast tego można użyć HSV (konwertując oba obrazy do HSV przed policzeniem różnicy – tutaj trzeba uważać na ciemne obszary). Kolejny etap, czyli użycie cvtColor, jest nadużyciem tej metody, ponieważ nie ma powodu, by różnica w niebieskiej składowej była dużo mniej ważna niż w zielonej. Zamiast tego podziel obraz różnicy na składowe (użyj split do rozbicia kolorów), a następnie potraktuj ich sumę jako nową miarę różnicy.
  • Zamiast używać przypadkowego obrazu tła, pobierz dwa lub trzy obrazy i użyj ich średniej jako tła. Sprawdź czy ilość losowego szumu się zmniejszy.
  • Użycie erozji i rozszerzania jest w wielu przypadkach niewystarczające. Dobrym pomysłem jest podział obrazu na spójne fragmenty (connected components) i zostawienie tylko największych obiektów, przy okazji wypełniając małe dziury. Wykorzystaj OpenCV do wyznaczenia spójnych fragmentów, zostawienia największego z nich (czyli naszej postaci) i wyrysowania go jako obraz maski.
  • Zakładając, że różnice w masce pierwszego planu między kolejnymi klatkami są niewielkie, można próbować przenosić część informacji między klatkami. Pomoże to usunąć losowe błędy (ponieważ będzie różnica między kolejnymi). Dopisz zapamiętywanie wyliczonej maski i do wyznaczenia pierwszego planu wykorzystaj logiczną sumę aktualnej i poprzedniej maski. Sprawdź jak nowa wersja reaguje na szybki a jak na wolny ruch.
Na koniec zauważmy, że to, co tutaj zrobiliśmy (czyli wydzielenie z tła nowych obiektów) można łatwo zaadaptować do innych zastosowań związanych z monitoringiem, śledzeniem obiektów, oszacowaniem ruchu itp.
5
Twoja ocena: Brak Ocena: 5 (3 ocen)

Copyright © 2008-2010 Wrocławski Portal Informatyczny

design: rafalpolito.com