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.