Project 4: Vsual moton based Human-Computer Interface Számítógépes Látás kurzus 2007/08. 3. ellenırzés pont (2007-12-11)
Számítógépes látás 2007 Project 4. 2 / 12 Tartalomjegyzék Csapattagok...3 Feladat...3 Háttér...3 Meglévı hasonló rendszerek...4 OpenCV...4 Optcal flow...4 Phase correlaton...4 Block matchng...4 Lucas Kanade módszer...4 Módszerek...5 1. módszer...5 Feature pont kválasztás...5 FP elmozdulásának meghatározása...5 Globáls transzformácó meghatározás...7 2. módszer (saját ötletek alapján)...8 A fejlesztés technka részlete...9 A program használata...9 Tesztelı környzet...9 Eredmények...10 1. ellenırzés pont...10 2. ellenırzés pont...10 3. ellenırzés pont...10 Tovább lehetıségek... 11 Mozgás predkcó... 11 Térképnézegetı... 11 Térképszoftveren lokalzácó... 11 Készülékek általános vezérlése...12 3D tervezıprogramok segítése...12 Hvatkozások...12
Számítógépes látás 2007 Project 4. 3 / 12 Csapattagok Jaksa Zsombor Németh József Ung Tamás Utas Tamás Jaksa.Zsombor@stud.u-szeged.hu Nemeth.Jozsef@stud.u-szeged.hu Ung.Tamas@stud.u-szeged.hu Utas.Tamas@stud.u-szeged.hu Feladat Human-Computer Interface (HCI) fejlesztése olcsó webkamera segítségével. A kamera mozgását a kamera által továbbított képek alapján kell megbecsüln. Az nterface vezérlése a kézben tartott kamera mozgatásával történk, így 3D mutatóként használható. Egy egyszerő képnézegetı program vezérlését s meg kell valósítan az alább módon: vízszntes mozgás az képet bal-jobb rányban mozgatja függıleges mozgás a képet fel-le mozgatja elıre-hátra mozgás a képet nagyítja és kcsnyít Háttér 1963-ban a Stanford Kutatóntézeben Douglas Engelbart felvetette az egér gondolatát. Mára egy mndenk által használt eszköz lett, de azóta nemgazán történt elırelépés a hétköznap használatra szánt számítógépek perférának pacán. A technka fejlıdésével megjelent az gény a számítógépek könnyő használhatóságára. Szükségessé vált, hogy az ember ne csak bllentyőzeten tudjon kommunkáln a géppel, telefonnal. Újfajta ember-számítógép nterfészek jelentek meg. Modern autókban a fedélzet számítógépek megértk a szóbel utasításokat, ntellgens kvetítıkre lehet ujjal rajzoln. Az lyen nterfészek megkönnyíthetk a fogyatékkal élık életét s, mnt például jelbeszédfelsmerı rendszerek, vagy a vakokat segítı hangalapú rendszerek. A mobl számítógépek (telefonok) esetében s komoly probléma a kezelhetıség ks méretük matt. Ezért mára már khagyhatatlan részének számító kamera s egy fontos bevtel perféraként használható. Képnézegetık, játékok, webböngészık rányítását lehet megkönnyíten a kamera képébıl knyerhetı mozgásnformácó felhasználásával. Ez a technka egészen új lehetıségeket s teremtett, melynek jelentıségét növel, hogy a mobl számítástechnka eszközök növekvı teret foglalnak az nformatka üzletágban [1].
Számítógépes látás 2007 Project 4. 4 / 12 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, amkor a kamera rögzített és a felhasználó a kezét vagy az arcát mozgatja, ezzel rányítva egy programot. Ilyen alkalmazás s létezk, mely képes az arc egyes részet külön s értelmezn [3]. OpenCV Az OpenCV egy C++ nyelven írt open-source függvénygyőjtemény, melynek elsıdleges célja a valós dejő 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/opencvlbrary/ Optcal flow Mvel a mozgásérzékelı programunkat általános felhasználásra tervezzük, nem használhatunk k semmlyen elızetes nformácót a kamera által érzékelt objektumokról. Ezért azokat a módszereket, amelyek objektum felsmerésen alapszanak, nem használhatjuk. Általános esetben a kép elmozdulást az optcal flow-val jellemezzük. Az optcal flow egy olyan módszer, amely vzuálsan 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 optcal flow számítására több módszer s létezk, rövden felsorolunk néhányat a legfontosabb jellemzıkkel együtt: Phase correlaton Ez a módszer azt használja k hogy az eredet képen az eltolás a frekvencatérben fázseltolódásként jelenk meg [5]. Gyors módszer, real-tme megvalósításra alkalmas, de mvel csak az eltolást és a forgatást detektálja, számunkra nem teljesen megfelelı, mvel nekünk a zoom funkcóhoz a nagyítás faktorra s szükségünk van. Block matchng Ez a módszer egy egyszerő template matchng algortmus szabályosan kvá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 optcal flow meghatározó módszer, mely vszonylag régóta smert [7]. Érdemes csak néhány elıre meghatározott feature pontokra alkalmazn [8], így real-tme megvalósítása gyengébb hardware-en s lehetséges.
Számítógépes látás 2007 Project 4. 5 / 12 Módszerek 1. módszer Elıször egy már publkált módszert mplementáltunk[2], hogy lehetıségünk legyen a saját megvalósítás ötletenket összehasonlítan. Ennek a módszernek lényege az alább ábrán látható: feature pontok keresése feature pontok követése feature pontok szurése transzformácó meghatározás mozgás utófeldolgozás Feature pont kválasztás 1. ábra: Az elsı módszer folyamatábrája. A vdeó képet 4 4 régóra bontjuk, és mndegykben meghározunk egy feature pontot (FP). Az lesz a régóhoz tartozó FP, amelyknek a környezetében maxmáls a horzontáls és vertkáls derváltak összege. Egy (x,y) pontban jelölje G(x,y) a két parcáls dervált összegét: G ( x, y) = ( I( x, y) I( x 1, y) ) 2 + ( I( x, y) I( x, y 1 )) 2 Ezzel a jelöléssel a FP kválasztás az alább krtérum alapján történk: p = max G(x, y (x,y) R (x,y) B ) ahol p az -edk FP, R az aktuáls kép régó, B az -edk FP-hez tartozó kép blokk, amely egy FP középpontú ks mérető négyzet alakú része a képnek (a m esetünkben pl. 7 7 mérető). FP elmozdulásának meghatározása Az FP-k kválasztása után a következı képkockán meg kell határoznunk azok elmozdulását. Ehhez bevezetjük az -edk FP-hez és v elmozduláshoz tartozó SSD mértéket, melyet az FP körül B blokkban számítunk az alább képlet alapján: D ( v, B ) ( ( ) ( ) 2 = Ik x, y Ik+ 1 x+ vx, y+ vy (x,y) B Azt az elmozdulást választjuk mnden ponthoz, amely egy adott keresés ablakon (W) belül a mnmáls SSD értéket adja: v W ( B ) v = mn D v, Ezt a módszert nevezk block-matchng-nek. Mőködését két teszt képpel llusztráljuk, melyeken pros keretekkel vannak jelölve az FP középpontú blokkok.
Számítógépes látás 2007 Project 4. 6 / 12 SSD SSD 2. ábra: Átlagos block-matchng SSD értékek a 16 darab FP-tól számított -20...+20 távolságban (vízszntes tengelyek) két különbözı nput képen. A felsı képen a FP-ok egyed környezettel bírnak, míg az alsó képen perodkus mntázatban helyezkednek el. Jól látható módon ennek a módszernek az a hátránya, hogy a valós elmozduláshoz képest az SSD mnmuma ettıl eltérı helyre kerül, melynek oka egyrészt a kép dszkretzácója, másrészt a képen smétlıdı ksebb mnták jelenléte. Ezért a legjobb blokk lleszkedésen kívül fgyelembe vesszük azokat a pontokat s, amelyek még bzonyos valószínőséggel takarhatják a valós FP elmozdulást. p -hez tartozó lehetséges elmozdulások halmaza legyen V : { v D( v,b ) < k G( B ) k } V = + 1 2 ahol G(B ) a B blokkon belül (x,y) pontok G(x,y) értékenek összege. k1 és k2 konstansokat kísérlet úton határozzuk meg, a m esetünkben a k 1 =0,6 és k 2 =4 értékek bzonyultak használhatónak. A szóbajövı elmozdulások llusztrálására bemutatjuk az alább négy képet, melyeken kékre színeztük azokat a pontokat, melyek lehetséges elmozdulása a zöld-pros FP-oknak. Érdemes megfgyeln hogy a sarokpontok elmozdulását nagy bztonsággal meg tudjuk határozn, az éleken elhelyezkedı pontok elmozdulása az éllel párhuzamosan bzonytalan, míg a vszonylag homogén területen az elmozdulás meghatározása mnden rányban bzonytalan, amt a nagy kterjedéső kék területek jeleznek:
Számítógépes látás 2007 Project 4. 7 / 12 3. ábra: A zöld-pros FP-k lehetséges elmozdulásat kék pontok jelölk. V halmaz eltárolása helyett, csak azok kovarancamátrxát (ks módosítással) tároljuk: 1 C = N v V 1 12 T ( v v)( v v) + I Ezt a formulát részletesen ndokolják a szerzık egy korább munkájukban[9]. Globáls transzformácó meghatározás Az elmozdulás leírására nem a hagyományos transzformácós mátrxokat használjuk (affn transzformácó esetén 2x2 mérető mátrx), hanem egy θ-val jelölt 4x1 mérető mátrxot: x p= y θ1 1 0 x y θ 2 v= v( θ, p) = = H p 0 1 y x θ 3 θ4 ( ) θ Ebben a módszerben tehát elmozdulást (θ 1 és θ 2 ), valamnt forgatást és skálázást (θ 3 és θ 4 ) határozunk meg, melyet globáls transzformácónak nevezünk az egyes képkockák között. A 16 FP elmozdulás közül elvetjük azokat amelyek nncsenek összhangban a többség által meghatározott transzformácóval, ezt nevezzük outler analyss-nek. Ehhez egy RANSAC-hoz hasonló módszert használunk, azzal a különbséggel hogy a 16 FP által alkotott mnden lehetséges pontpárhoz meghatározzuk a velük összhangban elmozduló pontok számát, valamnt fgyelembe vesszük hogy nem egy dszkrét elmozdulás érték tartozk egy ponthoz, hanem még egy kovaranca mátrx s, amely tartalmazza az elmozdulás bzonytalanságát két különbözı rányban.
Számítógépes látás 2007 Project 4. 8 / 12 A legtöbb "szavazatot" kapó pontpár transzformácós csoportjában lévı elmozdulásokból BLUE (Best Lnear Unbased Estmator) módszerrel határozzuk meg a globáls transzformácót, a szerzık által leírt módon. A mozgás utólagos símítását Kálmán flter helyett jelenleg három képkocka egyszerő átlagolásával oldottuk meg, amely a gyakorlatban kelégítınek bzonyul. Ez az egyetlen algortmkus eltérés amelyet a szerzık leírásához képest a saját mplementácónkban végeztünk. 2. módszer (saját ötletek alapján) A meglévı megoldások és az elérhetı könyvtárak alapján a következı saját megvalósítást tervezzük a feladat megoldására: feature pontok keresése feature pontok követése feature pontok szurése transzformácó meghatározás mozgás utófeldolgozás OpenCV, Hesse sajátértékek Lukas-Kenade (template-matchng) RANSAC affn transzformácó SVD felbontással átlagolás 4. ábra: Az általunk fejlesztett HCI algortmus vázlata. A feature pontok meghatározására jó és hatékony mplementácót találtunk OpenCV-ben. A függvény neve GoodFeaturesToTrack. Ez a pontok közül azokat választja k, melyeknek lokálsan a legnagyobbak a Hesse mátrx sajátértéke. A pontok Lukas-Kenade szernt követése szntén meg van valósítva OpenCV függvényként (cvcalcoptcalflowpyrlk). Ez hatékony, mvel a pontkövetést két-szntő képpramson végz, template matchng segítségével. Mvel a pont megfeleltetések túldefnálják a transzformácót, ezért elıször az outler-eket k kell szőrn, amre a RANSAC algortmust használjuk. Véletlenszerően kválasztott pontok által meghatározott transzformácóra megnézzük hogy a több pontmegfeleltetést mennyre elégítk k valamlyen küszöb alatt hbával. T p 1, p2, p3 [ p p p ][ p p ] 1 = p 1 2 3 1 2 ahol p-k a véletlenszerően kválasztott pontok, T pedg az affn transzformácó. Az -edk pont szavazatszáma a j 1, j 2, j 3 pontokra: K E( p ) E( p ) = d( p, Tp p p p K j, j, ) < 1 2 j3 V ( p j, p j, p j ) = 1 2 3 0 különben 3 ahol K tapasztalat úton választott küszöbérték (a m esetünkben 15), d az eukldesz távolság, E pedg a hba mértéke. A legjobb pontokat és a rájuk szavazó pontokat tartjuk meg. A megmaradó pontokból még mndg túldefnált egyenletrendszert kapunk: T [ p p... p ][ p p p ] 1 = 1 2 n 1 2... n A jobboldalon található nverz számítást SVD felbontással közelítjük.
Számítógépes látás 2007 Project 4. 9 / 12 A mozgás utófeldolgozását jelenleg a 3 utolsó elmozdulás súlyozott átlagolásával oldjuk meg. A fejlesztés technka részlete Egyk célunk, hogy a fejlesztett forráskódban csak ngyenes, open-source eszközöket használjunk, valamnt a kód változtatás nélkül fordítható legyen az különbözı platformokon (Wndows és Lnux). A fordítás elıkészítését CMake-kel végezzük, amely egy konfgurácós text fle-ból különbözı platformokra elıkészít a fordítást, pl. GCC-hez makefle-t csnál, Vsual Studo-hoz projekt fle-t. Fordítás környezetün részletet a következı címen publkussá tettük: http://opencvlbrary.sourceforge.net/gettng_started A kamera képenek beolvasása, képfeldolgozó mőveletek és numerkus mőveletek elvégzéséhez az OpenCV könyvtár függvényet használjuk. A program használata A programot parancsor termnálból neye.exe futtatásával ndítjuk, mely egy kötelezı paramétert vár, a böngészn kívánt képfájl nevét. Másodk opcnáls paraméterként teszt nput vdeófájlt lehet megadn, ezesetben ennek a képet használja webkamera helyett. Futtatás közben az alább funkcóbllentyőket használhatjuk: 's' : pozícó alaphelyzetbe állítás; 'r' : forgatás engedélyezés/tltás; 'x' : klépés; +/- : zoomolás. A képben való navgácó a feladatkírásnak megfelelıen a webkamera mozgatásával történk. Tesztelı környzet Az általunk fejlesztett HCI mnıségét az alább teszt segítségével mérjük. Az 5. ábrán látható képeket nytjuk meg navgácó céljából. A HCI segítségével úgy kell navgáln a képeken hogy a zöld pontból eljussunk a pros pontg, mközben a látómezı csak a fekete és sárga mezıket érnthet (a kéket nem). A kék mezık érntése hbának számít. A fekete utakon úgy kell haladn hogy mndg legyen sárga mezı a látómezıben. Ha a sárga mezın hurok van, akkor azon a helyen az egész hurkot látómezıbe kell hozn. A három képen végghaladva számoljuk a hbák számát. 5. ábra: Tesztképek navgácóhoz.
Számítógépes látás 2007 Project 4. 10 / 12 Eredmények 1. ellenırzés pont A fejlesztı környezetet, az OpenCV és VTK könyvtárak összelnkelését megoldottuk. Készítettünk két egyszerő demóprogramot. Az egyk a feladatot oldja meg, a másk egy 3D-s objektumot forgat a fej jobbra-balra mozgatásával egyszerre a montorra rögzített kamera segítségével. A demó programokról készült vdeónk a következı lnkeken elérhetık: http://www.youtube.com/watch?v=kny-u6h7wm http://www.youtube.com/watch?v=hm-fwnr5uzu 2. ellenırzés pont Elkészítettük a [2] referencában leírt módszer mplementácóját, azzal az egyetlen módosítással, hogy a mozgás utófeldolgozása nem Kálmán flterrel, hanem egyszerő átlagolással történk. Mvel véleményünk szernt e módszer bonyolultsága nem áll arányban a hatékonyságával, úgy döntöttünk hogy saját ötleteken alapuló módszert s mplementálunk. A két módszer futásdejének elemzését az alább ábrán mutatjuk be: sec 0.07 0.06 0.05 0.04 0.03 0.02 0.01 : 1. módszer : m módszerünk 0 1 FP 2 outler 3 4 követés analyss FP választás gobáls mozgás 5. ábra: A két mplementácó futásdejének elemzése. Az FP kválasztás és követés az 1. módszerben mőveletgényesebb mnt az OpenCV úgyanezt a feladatot ellátó függvénye. Az outler analízsnél a bonyolultabb mátrxmőveletek lelassítják a RANSAC mőködését az 1. módszer esetén. Ennek oka az elmozdulás meghatározás hbájának továbbvtele kovarancamátrxok formájában. 3. ellenırzés pont Megpróbáltuk a frame-ek között globáls fényerı változást frame-enként hsztogram kegyenlítéssel kompenzáln, de mvel ez lokálsan nagy eltéréseket okozott az átlag pxelértékekben, az eredményenket rontotta, ezért ezt az ötletet elvetettük.
Számítógépes látás 2007 Project 4. 11 / 12 A navgácós tesztképekkel bzonyítottuk hogy a m módszerünkkel s el lehet érn a kívánt pontosságot, hszen a feladatok hba nélkül teljesíthetık. Célunk volt a számítások gyorsítása. A mátrxmőveletek futás dejét skerült csökkentenünk az mplementácó hatékonyabbá tételével, kevesebb szükségtelen memórafoglalás használatával. A használhatóságot javítottuk az utófeldolgozás közben végzett átlagolás súlyozásával. Tesztelés közben megfgyeltük hogy a kamerától kapott kép mérete jelentısen befolyásolja a futás sebességét, ezért méréseket végeztünk az összefüggés felderítése céljából (6. ábra). Ezek alapján skerült megtaláln a leghasználhatóbb felbontást a m tesztelı hardverünkre (160x120). 18 16 14 frame / sec 12 10 8 6 4 2 0 0 20 40 60 80 100 klopxel 6. ábra: Input képméret és futás sebesség összefüggése. Tovább lehetıségek Mozgás predkcó Feature pont szegény nput kép esetén a korább nformácók alapján valamekkora dıtartományban jósolható lehet a mozgás. Ezzel ellensúlyozn lehet homogén területek fölött kamera áthúzást. Térképnézegetı A feladatban meghatározott képnézegetı program specáls esete amkor térképet nézünk mobltelefonon vagy PDA-n. Ez az felhasználás különösen hasznos. Térképszoftveren lokalzácó A GPS helymeghatározó rendszerek egyk korlátja hogy csak néhány méteres pontossággal képesek az elmozdulást érzékeln. Ezért pl. amkor elndulunk egy rányba akkor akár több tíz métert s megtehetünk mre a GPS jel alapján a térképszoftver el tudja dönten hogy mlyen rányba ndultunk és
Számítógépes látás 2007 Project 4. 12 / 12 ahhoz képest merre kanyarodjunk. Ha a navgáló készüléket kegészítjük egy földre rányuló kamerából származó mozgásnformácóval (pl. autó aljára szerelve), akkor ez nagyon jól kegészítené a GPS pontatlanságát ks távolságokon. Készülékek általános vezérlése A mobl készülékek mozgásnformácót nem csak másféle mozgássá transzformálhatjuk (pl. kép mozgatása) hanem egyéb parancsokat s rendelhetünk a mozgásokhoz. Például a jobbra-balra gyors mozgatás megnythatja a telefonkönyvet, a körbe mozgatás megnythat egy programot stb. Egy fotó sorozat megnézése közben kameránkkal apró mozdulatot tehetünk jobbra vagy balra ezáltal lapozva oda-vssza a képek között. 3D tervezıprogramok segítése Úgy kell tennünk, mntha a valóságban akarnánk megnézn bármlyen 3D-s objektumot. A kamera elıtt ülve csak balra-jobbra, elıre -hátra dılünk, az alkalmazásunk pedg a kamera képe alapján elforgatja, átméretez a montoron látható objektumot. Ez nagyban segíthet a 3D-s szerkesztıprogramok kényelmes használatát, mvel általában nagyon sok nterakcó kell a pontos szerkesztéshez. Hvatkozások 1. Judy York and Parag C. Pendharkar. Human-computer nteracton ssues for moble computng n a varable work context. Internatonal Journal of Human-Computer Studes. HCI Issues n Moble Computng, 2004 (60); 771-797. 2. Hannuksela J, Sang P. Hekklä J. Vson-based moton estmaton for nteracton wth moble devces. Computer Vson and Image Understandng: Specal Issue on Vson for Human- Computer Interacton, 108(1-2):188-195. 3. Jln Tu, Ha Tao and Thomas Huang. Face as mouse through vsual face trackng. Computer Vson and Image Understandng. 2007 (108); 35-40. 4. http://en.wkpeda.org/wk/optcal_flow 5. E. De Castro and C. Morand. Regstraton of Translated and Rotated Images Usng Fnte Fourer Transforms. IEEE Transactons on pattern analyss and machne ntellgence, Sept. 1987. 6. http://www.fxgude.com/artcle333.html 7. Lucas BD and Kanade T. An teratve mage regstraton technque wth an applcaton to stereo vson. Proceedngs of Imagng understandng workshop 1981. pp 121 130. 8. Tomas C, Kanade T. Detecton and Trackng of Pont Features. Tech Report 1991. http://www.ces.clemson.edu/~stb/klt/tomas-kanade-techreport-1991.pdf 9. Sang P, Hekkla J, Slven O. Moton analyss usng frame dfferences wth spatal gradent measures. Pattern Recognton, 2004. ICPR 2004. Proceedngs of the 17th Internatonal Conference on, Volume 4, Issue, 23-26 Aug. 2004: 733-736.