Háttér
1963-ban a Stanford Kutatóintézeben Douglas Engelbart felvetette az egér gondolatát. Mára egy mindenki által használt eszköz lett, de azóta nemigazán történt előrelépés a hétköznapi használatra szánt számítógépek perifériáinak piacán. A technika fejlődésével megjelent az igény a számítógépek könnyű használhatóságára. Szükségessé vált, hogy az ember ne csak billentyűzeten tudjon kommunikálni a géppel, telefonnal. Újfajta ember-számítógép interfészek jelentek meg. Modern autókban a fedélzeti számítógépek megértik a szóbeli utasításokat, intelligens kivetítőkre lehet ujjal rajzolni. Az ilyen interfészek megkönnyíthetik a fogyatékkal élők életét is, mint például jelbeszédfelismerő rendszerek, vagy a vakokat segítő hangalapú rendszerek.
A mobil számítógépek (telefonok) esetében is komoly probléma a kezelhetőség kis méretük miatt. Ezért mára már kihagyhatatlan részének számító kamera is egy fontos beviteli perifériaként használható. Képnézegetők, játékok, webböngészők irányítását lehet megkönnyíteni a kamera képéből kinyerhető mozgásinformáció felhasználásával. Ez a technika egészen új lehetőségeket is teremtett, melynek jelentőségét növeli, hogy a mobil számítástechnikai eszközök növekvő teret foglalnak az informatikai üzletágban [1].
Meglévő hasonló rendszerek
Egy megvalósítás leírása elérhető [2], melyet megvalósítva azt összehasonlíthatjuk az általunk fejlesztett módszerrel.
A feladattal rokon alkalmazás, amikor a kamera rögzített és a felhasználó a kezét vagy az arcát mozgatja, ezzel irányítva egy programot. Ilyen alkalmazás is létezik, mely képes az arc egyes részeit külön is értelmezni [3].
OpenCV
Az OpenCV egy C++ nyelven írt open-source függvénygyűjtemény, melynek elsődleges célja a
valós idejű számítógépes látás segítése. Fejlesztését az Intel kezdeményezte, de mára
nagyon sokan járultak hozzá. Platformfüggetlen forráskódja letölthető a következő címről:
http://sourceforge.net/projects/opencvlibrary/
Optical flow
Mivel a mozgásérzékelő programunkat általános felhasználásra tervezzük, nem használhatunk ki semmilyen előzetes információt a kamera által érzékelt objektumokról. Ezért azokat a módszereket, amelyek objektum felismerésen alapszanak, nem használhatjuk. Általános esetben a képi elmozdulást az optical flow-val jellemezzük.
Az optical flow egy olyan módszer, amely vizuálisan reprezentált tárgyak elmozdulását határozza meg. Jellemzően vektorokkal írjuk le, melyek képpontokból erednek vagy képpontokba mutatnak egy képsorozatban [4].
Az optical flow számítására több módszer is létezik, röviden felsorolunk néhányat a legfontosabb jellemzőikkel együtt:
-
Phase correlation
Ez a módszer azt használja ki hogy az eredeti képen az eltolás a frekvenciatérben fáziseltolódásként jelenik meg [5]. Gyors módszer, real-time megvalósításra alkalmas, de mivel csak az eltolást és a forgatást detektálja, számunkra nem teljesen megfelelő, mivel nekünk a zoom funkcióhoz a nagyítási faktorra is szükségünk van.
-
Block matching
Ez a módszer egy egyszerű template matching algoritmus szabályosan kiválasztott képrészletekre alkalmazva [6]. A leírások alapján nem elég pontos módszer.
-
Lucas Kanade módszer
Ez a legnépszerűbb optical flow meghatározó módszer, mely viszonylag régóta ismert [7]. Érdemes csak néhány előre meghatározott feature pontokra alkalmazni [8], így real-time megvalósítása gyengébb hardware-en is lehetséges.