Már megint mozgásérzékelő kamera kód

Megint írtam egy mozgásérzékelő kamerát. A régi JavaScript változat után (ami már nem működik és nem fogom átírni modern böngészőkre), ami a PHP-s kép összehasonlítómon alapult, most C#-ben is készítettem egyet ugyan azon az alapon.

A lényeg ebben is ugyan az: a kamera videójából mintákat vesz és összehasonlítja azokat.

Viszont ebben a változatban már fejlődött a gondolkodásom.

Ahogy régen csináltam

Régen ezt úgy találtam ki, hogy másodpercenként vettem mintát és azokat a képeket hasonlítottam össze. He a két kép különbözött egymástól egy bizonyos szinten, akkor lementettem az egyik képet. Ez a módszer csak arra volt jó, hogy nagy mozgásokat elkapjak, illetve a zajos kamera kép ellen is védett valamennyire (állítható volt mekkora különbségné mentse le a képet).

Ahogy most csináltam

Most ennél kicsit erőforrás pazarlóbb, de hatékonyabb módszert választottam. És egy másik nyelvet: C#

Most tíz egymás után következő képet vizsgálok meg úgy, hogy minden képet az előtte lévő képpel hasonlítom össze. Ez így kapott értékeket összeadom és ha az így kapott érték túllép egy bizonyos határt, akkor elmentem az elmúlt tíz képet.

Ezzel a módszerrel nagyon hatékonyan ki lehet szűrni a zajt és kisebb fény változásokat, mert ugyan lehet két kép közt emiatt érzékelhető különbség jelenik meg, de tíz kép folyamán mégse éri el az értéket, amit mozgásnak titulálok.

Persze minden változó átírható benne. Például egy sokkal zajosabb kameránál egy sokkal nagyobb értéket kell mozgásnak venni, különben tízezrével menti le a képeket.

Ez nem egy komoly projekt

Itt kicsit mentegetőzök: ezt csak úgy írtam, mert eszembe jutott, hogyan lehetne jól megcsinálni és rendelkezésemre állt egy kamera, amivel kipróbálhatom. Szóval ahogy esik úgy puffan módon írtam a kódot, átírva a PHP-s kép összehasonlító scriptemet.

Mozgás érzékelésre ennél sokkal jobb és pontosabb módszerek is vannak és még ez a módszer is sokkal jobban elkészíthető lenne. Például lehetne normalizálni a képek fényerejét, kontrasztját, hogy még pontosabb méréseket végezzen. De mivel az egésznek nem néztem utána és saját kútfőből próbáltam készíteni, egészen biztos, hogy sok olyan tényező van, amire nem is gondoltam.

Persze manapság az arc, test, testmozgás, nem, érzelem felismerő gépi tanuló programok és azok köré írt AI-k világában ez a módszer igazán fapadosnak számít. De érdekességnek jó. Amikor kicsiben gyorsan kell egy megoldás néha ennyi is elég.

A kód