Detekcia pohybu
Ide o hlavnú a najdôležitejšiu časť celého programu. V tomto module sa vyhodnocuje pohyb, odfiltruje sa šum (hmyz), prípadne vtáky, sleduje sa pohyb modelu a zasiela sa informácia o preseknutí bázovej čiary.
Dva po sebe idúce snímky (frames) sa odpočítajú pomocou funkcie cv::absdiff aby sa získal rozdiel (detekovanie pohybu = zmena snímkov dvoch po sebe idúcich snímkov):
predošlá snímka:
aktuálna snímka:
rozdiel:
Vzdialenosť medzi jednotlivými snímkami je tým väčšia, čím je nižšie FPS, ale pri vysokom FPS, by sa rozdiel nemusel zachytiť. Tu chcem znova poukázať nato, že kamera musí byť pevne ukotvená, aby sa nepohla ani v najsilnejšom vetre. Inak by sa v rozdieli snímok nezobrazil len model, ale aj pohorie v pozadí, mraky, čo by skomplikovalo prácu trackeru, prípadne by vyvolalo udalosť prieniku s bázou.
Takto získaný rozdiel snímok sa musí zvýrazniť, nato je použitá funkcia cv::dilate:
Následne sa cez funkciu cv::findContours sa nájdu jednotlivé kontúry. Keďže model F3F na kamere nemá trup, jednoducho tá tyčka je kamerou nezachytiteľná, kontúry krídel je potrebné spojiť a tak vytvoriť finálnu kontúru, ktorá opisuje celý model (resp. dva modely, aktuálny a predošlý snímok)
V tejto fázy už mám rectagle(obdĺžnik), ktorého súradnice môžem testovať s čiarou bázy a vyhodnotiť prenik modelu s bázou. Malé objekty, momentálne o veľkosti menej ako 15pix, sú považované za šum a ignorujú sa. Veľkosť šumu záleží od rozmeru zdrojového obrázka. Ja používam rozmer 1280x300pix a 15pix som určil nejako-tak experimentálne.
pozn.: Rozdiel medzi dvomi po sebe idúcimi snímkami je približne 50cm (odhadom podľa šírky krídla). Pokiaľ sa na 1000m dosiahne letový čas 40s, tak model preletí 100m za 4s a 25m za 1s. Ak je FPS 50, tak rozdiel medzi snímkami je 50cm(pri FPS 80 je to 30cm). Otázka je, či je to veľa. Áno, je pravdou, že kým systém vyhodnotí preťatie bázovej čiary, model už môže byť už za čiarou (max 50cm svojej dĺžky) a signál by mal byť vyslaný skôr. Treba si ale uvedomiť, že toto je systém, ktorý by mal nahradiť bázových rozhodcou, kde latencia človeka sediaceho 4h na báze a sledujúceho model, isto nie je kratšia ako týchto 50cm. Na druhej strane treba mať aj systém, ktorý je odolný voči šumu, treba nájsť kompromis FPS vs okolie. Pri FPS 50 idú jednotlivé snímky po sebe každých 0,02s, takže maximálny čas opozdenia je spomínaných 0,02s, čo ale s reakciou pilota absolútne zanedbateľné.
Nasleduje trackovanie, t.j. sledovanie modelu.