Upload
others
View
1
Download
0
Embed Size (px)
Citation preview
KINECT© szenzor intelligens terekben Önálló labor 2.
Pálfalvi József BME VIK, Intelligens Rendszerek MSc szakirány
e-mail: [email protected]
Budapest, 2011.05.07
dr. Dobrowiecki Tadeusz egyetemi konzulens
BME MIT
2
Tartalomjegyzék
TARTALOMJEGYZÉK ...................................................................................................................................... 2
1 BEVEZETŐ ........................................................................................................................................... 3
2 OPENNI ÉS NITE .................................................................................................................................. 4
2.1 MI AZ NI?.......................................................................................................................................... 4
2.2 MI AZ OPENNI? .................................................................................................................................. 4
2.3 HARDVER ÉS MIDDLEWARE KOMPONENSEK ................................................................................................ 5
2.4 PROGRAMOZHATÓSÁG .......................................................................................................................... 6
2.5 OPENNI ÉS A KINECT .......................................................................................................................... 7
2.6 MI A NITE? ....................................................................................................................................... 7
3 FELHASZNÁLÁSI LEHETŐSÉGEK ........................................................................................................... 8
3.1 ROBOTVEZÉRLÉS .................................................................................................................................. 8
3.2 AUGMENTED REALTY ............................................................................................................................ 9
3.3 ASSISTED AMBIENT LIVING, ACTIVITIES OF DAILY LIVING ............................................................................... 9
3.4 INTELLIGENS SZOBA (INTELLIGENS HÁZ) ................................................................................................... 10
3.5 BIZTONSÁGTECHNIKA .......................................................................................................................... 12
3.6 BIOMETRIA ....................................................................................................................................... 13
4 KINECT, MINT „BIOMETRIAI SZENZOR” ............................................................................................ 15
4.1 ÁLTALÁNOS ALKALMAZHATÓSÁG ........................................................................................................... 15
4.2 TAPASZTALATOK A SZENZORRAL ............................................................................................................. 16
5 LÉTEZŐ MEGOLDÁSOK, MEGKÖZELÍTÉSEK ........................................................................................ 19
5.1 OPENCV [9] ..................................................................................................................................... 19
5.2 BAYESI BECSLÉS AZ EMBERI TEST 3D-S MOZGÁSREKONSTRUKCIÓJÁHOZ [10] .................................................... 20
5.3 ORGANICMOTION [13]....................................................................................................................... 20
5.4 MÁS EGYETEMEKEN ............................................................................................................................ 20
6 KINCET TECHNIKAI SPECIFIKÁCIÓ, MŰKÖDÉS ................................................................................... 21
6.1 SZENZORRAL KIADOTT HIVATALOS PARAMÉTEREK [8] .................................................................................. 21
6.2 A SZENZOR MŰKÖDÉSE ........................................................................................................................ 22
7 KONKLÚZIÓ ....................................................................................................................................... 23
8 FORRÁSJEGYZÉK ............................................................................................................................... 24
3
1 Bevezető
A labor célja a 2010. november 10-én megjelent Microsoft KINECT szenzor, és a szenzor
segítségével megvalósítható problémák tanulmányozása. A szenzor egy RGB kamerával,
hangérzékelővel, és egy mélységtérképet szolgáltató IR kamerával és chippel van ellátva. Az integrált
megoldásnak köszönhetően egyszerűen lehet objektumokat (elsősorban emberi alakokat, arcokat,
végtagokat) azonosítani a 3D térben, és ez leegyszerűsíti a sok témakörben felmerülő problémát:
jellegzetes pontokat 3D térben azonosítani és követni.
Olyan alkalmazási területeket szeretnék megvizsgálni, ahol a szenzor speciális adottságait
kihasználva érdekes és innovatív feladatokat lehetne megoldani.
A szenzor tulajdonságait szem előtt tartva felmerülhet a robotvezérlés, kiterjesztett valóság
(augmented realty), biztonság technikai, vagy akár a biometriai felhasználás is.
Az alkalmazás feltétele a szenzor tesztelése. Elsősorban nem egy konkrét probléma
megoldhatóságát akarom megvizsgálni, hanem általános paramétereket tesztelni, amik
körülhatárolhatják a felhasználás lehetőségeit (hatótávolság, érzékenység, felbontás…).
4
2 OpenNI és NITE
Az ebben a fejezetben bemutatott technológiák hivatalos leírása és forrásai: [5, 6, 7]
2.1 Mi az NI?
Az NI (Natural Interaction) egy olyan elgondolás, ami az ember-gép interakciót elsősorban a
látásra és hallásra akarja alapozni. A koncepció szerint az olyan eszközök, mint a távirányító, egér
vagy billentyűzet szükségtelenek egy ember-gép interakcióhoz.
Alapvető céljai közé tartozik a hangfelismerés és hangvezérlés, kézjelek felismerése, vagy akár
a teljes emberi alakfelismerés, követés és interpretáció további felhasználásra.
2.2 Mi az OpenNI?
Az OpenNI egy cross-platform, több programozási nyelven elérhető (C, C++, C#, Java)
framework, ami API-kat szolgáltat az olyan alkalmazások készítéséhez, amik az NI (Natural
Interaction) alapelvekre épülnek.
Az API-kat interfészeken keresztül lehet elérni, amik azt a célt szolgálják, hogy egységes
felületen lehessen kommunikálni a hardver elemekkel, amik „látnak és hallanak”, és a
szenzoradatokat feldolgozó middleware-rel. A middleware elemek olyan szoftverkomponensek, amik
a szenzorból érkező adatokat feldolgozzák, és olyan magasabb szintű információkat szolgáltatnak a
nyers adatokon felül, mint például egy felismert kézfej pozíciója a 3D térben.
Ez alapján tehát az OpenNI egy sor olyan API-t definiál, amit a hardvernek, vagy a
szoftverkomponensnek kell kielégítenie. Ezzel létrehozva egy egységes környezetet, ami lehetővé
teszi:
1. a hardver elemek egyszerű helyettesítését
2. több hardver egyszerre való használatát
3. szoftver komponensek újrafelhasználását, hordozhatóságát
Például, ha egy hardvergyártó implementálja egy eszközébenben az OpenNI interfészeket,
akkor ezzel biztosítja, hogy az OpenNI-t használó szoftverek az ő készüléküket is használni tudják,
gyakorlatilag szabványosan (ehhez persze minden hardvernek egy listát kell szolgáltatnia az elérhető
szolgáltatásokról).
Másik oldalról megközelítve pedig a szoftverfejlesztők olyan alkalmazásokat készíthetnek, amik
függetlenek a konkrét hardvertől (attól, hogy melyik hardverből jön az adat), csak a hardver
5
képességeit kell szem előtt tartani (lsd. előbb említett szolgáltatáslista), és függetlenek a middleware
komponensektől is.
A koncepciót a 2.1-es ábra mutatja be. A legalsó réteg reprezentálja a hardver réteget, ide
tartozik maga a KINECT eszköz is. A középső (zöld) réteg azokat a middleware alkalmazásokat jelöli,
amik kielégítik az OpenNI API-t és valamilyen hardverre támaszkodva magasabb szintű adatokat
szolgáltatnak (pl. nyers pixel adatok helyett egy kézfej pozícióját a térben). Az ezeket összekötő réteg
maga az OpenNI, mely ez által egy egységes interfészt kínál a legfelsőbb szinten elhelyezkedő
felhasználói alkalmazásnak.
A felhasználói alkalmazásnak ez által egyidejűleg lehetősége van:
1. Middleware által kinyert információ felhasználására.
2. Nyers hardver adatok felhasználására.
3. Az OpenNI funkcionalitásait használni az előbbi két ponton.
4. Más API-kat (pl. OpenCV) használni bármelyik előbbi pontban leírt információforrással.
2.1 ábra: OpenNI architektúra (forrás: OpenNI dokumentáció, [5])
2.3 Hardver és middleware komponensek
Az OpenNI által támogatott és menedzselt hardver komponensek:
3D érzékelő (mélységtérkép)
RGB kamera
IR kamera
Audio eszköz
Az OpenNI által támogatott és menedzselt middleware komponensek:
6
Teljes emberalak analizátor: emberi alakot felismerő, és általában szkeleton (csontváz)
adatokat visszaadó komponens.
2.2 ábra: Emberalak analizátor (szkeleton) példaalkalmazás (forrás: OpenNI demo, [5])
Kézfej felismerő: olyan komponens mely analizálja a színtere, és a kézfej pozícióját
követi.
Gesztus értelmező :olyan komponens, mely előre definiált gesztusokat,
gesztusszekvenciákat (pl. integető mozdulat) képes felismerni.
Színtér analizáló: analizálja az egész 3D színteret, meghatározva az föld síkját.
Azonosítja és követi a mozgó objektumokat (leválasztja a „hátteret” és az
„objektumokat”).
A fenti komponenseket képes az OpenNI kezelni, és ezekhez biztosít rengeteg funkciót, kezdve
a komponensek menedzselésétől és paraméterezésétől, a tényleges adatok kinyerésén át, a
komponensek képességeinek analíziséig.
Az OpenNI-vel és KINECT-tel szabadon felhasználható és a fenti funkciókat biztosító
middleware a PrimeSense NITE megoldása.
2.4 Programozhatóság
Az API elérhető C, C++ nyelven, és egy még fejlesztés alatt áll, de már tesztelhető a C# és Java
API is. A programozáshoz megfontolandó, hogy a későbbiekben akarjuk-e az alkalmazást kombinálni
valamilyen másik API-val, például az OpenCV-vel (Open Computer Vision), amely rengeteg plusz
funkciót tenne elérhetővé. Mindkét API támogatja a C++ programnyelvet és dokumentált. Mivel a
KINECT szolgáltat színes képet is, ezért az felhasználható az OpenCV által is.
7
2.5 OpenNI és a KINECT
Az OpenNI interfész bármilyen, az interfészt implementáló hardvert és drivert képes kezelni.
Ezzel tehát az eszköz helyettesíthető egyszerűbb, költséghatékonyabb megoldásokkal, amik például
csak egy mélység térképet generáló kamerával vannak ellátva, mellőzve az RGB kamerát, a
mozgatómotort és a hangérzékelőket.
Ezt azért célszerű szem előtt tartani, mivel a KINECT elsősorban a szórakoztató ipar számára
készült (Xbox360 játékkonzolhoz: http://productcatalog.xbox.com/hu-HU/), és nem ipari
felhasználáshoz. Így kevésbé költséghatékony, illetve a kialakítása is alkalmatlanná teszi például külső
terekben való alkalmazásra.
Az OpenNI továbbá támogatja több hardver egyidejű, akár szinkronizált használatát. Ezzel
könnyen kialakítható egy multi-szenzoros rendszer, mely több szemszögből figyeli meg a színteret,
akár több különböző forrást (IR, RGB, 3D) kombinálva.
2.6 Mi a NITE?
A NITE a Natural Interacion Technology for End-user kifejezésből ered, ami az OpenNI-t
használó egyik legelső szabadon felhasználható middleware komponens. Célja a nyers 3D adatokból
használható információkat kinyerni, ahhoz hasonlóan, ahogy az ember is teszi. A NITE-ban egyszerre
megtalálhatók olyan eljárások, melyek segítségével egyszerűbbé válik a 3D térben a pontok, alakok
követése, és számos funkciót (API) szolgáltat NI felhasználói felületek készítéséhez.
Alapvetően két fontos területtel foglalkozik:
1. kéz (kézfej) követés
2. teljes alak (szkeleton) követés
A kézfej követés két alapállapotból áll: fókusz mozdulat és vezérlő mozdulat követés. A fókusz
mozdulatok lényege, hogy ezek segítéségével lehet a NITE rendszerben a vezérlést „átvenni”, vagy a
vezérlést elkezdeni. Lényege, hogy a szenzor látóterében álló ember valamilyen jellegzetes
kézmozdulatot végez (integetés, kéz felemelés), aminek hatására a vezérlést a mozdulatot végző kéz
(és a hozzá tartozó ember alak) kapja meg. A vezérlő mozdulatokhoz akármilyen egyéb mozdulat
(vagy mozdulatos orozat) tartozhat.
A teljes test követés lényege, hogy a nyers mélységtérkép adatokból a NITE rendszer egy
szekeltont hoz létre a látótérben tartózkodó alakokhoz. Ez által a felhasználói programoknak nem kell
az alacsonyszintű adatokat feldolgozni, hanem egy könnyen kezelhető, végtag és csuklópontokból
álló csontvázat kapnak meg.
Az algoritmusok között megtalálható még a környezet (scene) detektálás is, mely az előző két
követési algoritmusnak az alapja. Ez határozza meg az érzékelt világ síkját („föld”) és szeparálja a
háttér objektumokat az előtér objektumoktól (ember alakok).
8
3 Felhasználási lehetőségek
Ebben a fejezetben gyűjtöttem össze azokat a felhasználási lehetőségeket, amikkel elsősorban
a KINECT, az OpenNI és a NITE nyújtotta előnyöket (egyszerű alakfelismerés és követés, kézfej-
követés, gesztus felismerés) lehetne kiaknázni.
3.1 Robotvezérlés
3.1.1 Közvetlen vezérlés (Teleoperation)
A robotok közvetlen vezérlése egy KINECT által megfigyelt emberalak által. A szoftverből
érkező jeleket a robotkarok vagy robotok közvetlenül végrehajtják. Lényegében az emberi végtagok
csuklói illeszkednek a robotkar vagy robot csuklóihoz, és azok szinkronban mozognak az emberrel.
Ezzel olyan gépeket lehet készíteni, melyek veszélyes környezetben (pl. sugárzás, elérhetetlen
helyek) is könnyen, precízen irányíthatók, minden külső beavatkozó periféria (joystick, billentyűzet)
nélkül.
Érdekes projektek:
Robot felsőtest: http://kinecthacks.net/irobot-icub-humanoid-robot-kinect/
Teljes robot irányítás: http://kinecthacks.net/teleoperation-of-humanoid-robot-using-
kinect/
A potenciál abban van, hogy a mozgás sokkal természetesebb, és ez által jobban irányítható a
robot. Hátránya, hogy az emberi csuklópontok korlátozzák a robotot. Egyes robotkarok akár 27
szabadsági fokkal rendelkeznek, amit nem lehetne így irányítani.
3.1.2 Autonóm mozgás
A robotok autonóm módon dolgozzák fel a szenzoradatokat, és autonóm módon cselekszenek,
következtetnek. Ez lényegében a térlátás megvalósulása a robotokban. A mögöttes robot ágens
működése persze nagyban befolyásolja a végeredményt, de a saját környezetét feltérképezni képes
robot nagy előrelépés.
Például egy takarító robot, mely képes a teret leképezni egy 3D-s objektummá (esetleg
eltárolni), majd ez alapján tájékozódni és a későbbiekben pozícionálni magát.
További példa projektek:
Quadrotoros helikopter: http://kinecthacks.net/autonomous-flying-quadrotor-kinect/
Ebbe a kategóriába tartozhat még az olyan robot, mely emberi utasításokat képes végrehajtani
gesztusok, mozgások értelmezésével. Egy robot mely képes értelmezni az előre kinyújtott tenyeret
9
megáll, vagy egy adott irányba való mutatás jelentheti a következő haladási irányt. Bonyolultabb
értelmezővel akár konkrét feladatokat is át lehet adni. Ez helyettesítheti a sokszor kényes
hangfelismerő és értelmező, és az erre épülő szöveg értelmező komponenseket, hiszen
gesztikulációval lehetne kommunikálni.
3.2 Augmented realty
A kifejezés jelentése: kiterjesztett valóság. Ezt olyan alkalmazásokra használják, melyek a való
világ egy képrészletéhez kontextus-függő, virtuális elemeket rendelnek hozzá. Ilyen, például amikor
egy mobiltelefon és GPS segítségével a mobiltelefon kamerája által felvett képre rávetül a közelben
lévő üzletek nyitva tartása, távolsága, vagy egy nevezetesség információi.
Elsősorban a szórakoztató iparban használják a kiterjesztett valóságot, de a KINECT
segítségével sokkal precízebb, ember központibb alkalmazások is készíthetők. Például egy interaktív
online ruházati cikkeket áruló bolt támogathatja a KINECT-et. A KINECT által felismert emberalakra az
online webshopban kiválasztott ruhát méret-helyesen ráilleszti, és a monitoron megjeleníti a teljes
RGB képet, a valós emberrel, de a virtuálisan ráillesztett ruhával.
További érdekes projektek:
Orvosi alkalmazás (inkább demonstrációhoz): http://kinecthacks.net/magic-mirror-for-
medical-data-visualization-using-kinect/
Physx-es demó: http://kinecthacks.net/interactive-augmented-reality-with-kinect-and-
nvidia-physx/
Ebbe a kategóriába tartozhat még a művészeti töltetű alkalmazások, mint például a 3D ecset,
vagy a virtuális szobrászat. Ezek olyan programok, melyekkel a való világba lehet „rajzolni”.
Példa projekt: http://vimeo.com/16818988
3.3 Assisted Ambient Living, Activities of Daily Living
AAL: Assisted Ambient Living: élhetést segítő technológiák, főleg idősebb embereknek
ADL: Activities of Daily Living: hétköznapi, sokszor ismételt cselekvések
Elsősorban az idősebb emberek, vagy valamilyen módon korlátozott (mozgás, látás, hallás)
emberek élhetését segítő technológiákról van szó. A betegellátás, betegfigyelés, idősek gondozása
egyre fontosabbá válik, főleg az öregedő országokban, mint pl. Németország. Alapfunkciókat ellátó,
automatizált rendszerekre lehet szükség, melyek nem az emberek szociális igényeit kell, hogy
kielégítsék, hanem a sürgős, kritikus esetekben kell, hogy gyors segítséget nyújtsanak. Tehát a cél
nem egy beszélgető robot létrehozása kéne, hogy legyen, hanem egy olyan megfigyelő rendszer
alkalmazása, amely például elesésnél, mozdulatlanságnál, rossz testtartásnál, mozgáshiánynál… stb.
10
jelez a betegnek, vagy értesíti a megfelelő gondozókat. Ez összekapcsolható, vagy kiegészíthető más
elemekkel is.
3.3.1 Rossz szokások megfigyelése, elesés detektálás
Hétköznapi rossz szokások, mozgásszekvenciák, állapotok megfigyelése és felismerése. Ide
tartozhat például a körömrágás, támaszkodás, helytelen testtartás (akár ülő pozícióban).
Az hirtelen pozícióváltások, mint az elesés, vagy asztal melletti (akár ülő pozícióban) a fej
hirtelen lebillenése könnyen detektálható, és fontos tényező lehet az idősebbek gondozásában.
3.3.2 Rehabilitáció és torna program
A mozgások precíz követése lehetővé teszi tornaprogramok készítését, melyek személyi
edzőként működhetnek akár egyszerű testedzéshez, vagy beteg rehabilitációhoz. A rehabilitációnál
fontos a beteg figyelése a mozgás közben, a szokatlan mozgások detektálása, illetve a
mozgásszekvenciák teljesülésének figyelése. Egy beteg, ha a rehabilitációs programot, vagy annak
egyes részfeladatait egyáltalán, vagy nem kellően pontosan teljesíti, akkor jelez a rendszer.
Tornaprogramok, vagy akár meditációs (tai chi) programok már léteznek az eszközhöz. Ezek
lényege, hogy saját edzésprogramot állítanak össze a testünk (alakunk) és korunk alapján, majd egy
„virtuális világba” helyezve minket végeztetik el velünk a gyakorlatokat, és figyelik a mozdulatok
teljesülését: http://yourshapegame.us.ubi.com/
Ilyen elven egy munkahelyi, vagy otthoni „személyi edző” is készíthető, mely például adott
időközönként (pl. 2 óránként) utasít minket, hogy tornázzunk egy kicsit.
3.3.3 AAL, ADL
A napközben sokszor elvégzett (időben és térben rendszeresen ismételődő) cselekvésekre az
intelligens szoba rá tud tanulni, és sok cselekvés automatizálható. Ezt az intelligens szoba alpontban
fejtem ki bővebben.
3.4 Intelligens szoba (intelligens ház)
Az intelligens szoba (intelligens ház) egy olyan koncepciót jelent, melyben az ember a
környezetével nem közvetlenül kommunikál, nem avatkozik be közvetlenül, hanem a környezet
érzékeli és figyeli meg az embert, és az ember tevékenységeire reagál aszerint, hogy maximalizálja a
kényelmet és biztonságot, minimalizálja az energiafogyasztást, vagy valamilyen más paramétert.
Sokszor multi-szenzoros rendszereket használnak egy ilyen környezet kiépítésére, hiszen a
megfigyelésnek sok dimenziója lehet, például hang, páratartalom, hőméréskelt vagy pozíció. Ezek a
paraméterek ráadásul a térben is elosztva jelenhetnek meg, ezért adott szenzorokból akár több is
kapcsolódhat az intelligens szoba hálózatához, a szoba különböző pontjairól.
11
Legegyszerűbb példa erre, hogy ha egy szobában szeretnénk egy ott sokat tevékenykedő
ember kényelmét maximalizálni. Ekkor jó hőmérséklet, páratartalom kell. Sötétedés után, ha belép a
szobába, akkor automatikusan kapcsolódjon fel a villany, ha előtte több alkalommal manuálisan
felkapcsolta (rátanul). Lefekvés érzékelésekor (ágyban fekvő pozíció) kapcsolja le a fő villanyt, és
húzza le a redőnyt.
A beavatkozás mikéntje is fontos tényező, és itt kapcsolható be a KINECT a rendszerbe. Az NI
(Natural Interaction) korábban bemutatott koncepcióját az intelligens szobában úgy alkalmazhatjuk,
ha a teljes szoba beavatkozó szerve maga a KINECT, mely értelmezi az emberi gesztusokat,
mozdulatokat. Ez alapján a beavatkozás KINECT-et használva automatikus és manuális módon
valósulhat meg:
Manuális: gesztusok felismerése.
Automatikus: pozíciók, testtartás, helyek, (akaratlan) mozdulatok felismerése
Manuális vezérlés alatt minden olyan beavatkozást értek, amikor egy még nem megfigyelt,
vagy még nem kellően nagy bizonyossággal automatizálható funkciót akar aktiválni a szobában
tartózkodó.
Automatikus vezérlés alatt minden olyan autonóm módon a szoba által végrehajtandó funkciót
értek, melyet a szoba korábban sokszor megfigyelt, és az aktuálisan megfigyelt mozgás alapján újra el
kell végezni.
3.4.1 A rendszer egy példa működése
A szobában tartózkodó esténként 10 körül lehúzza a redőnyt. Ezt ismétli párszor, de volt olyan
eset, mikor nem húzta le, ezért ebből még nem lehet következtetni (azaz nem kellő bizonyossággal)
az ADL-re. Az illető természetesen nem kézzel engedi le, és húzza fel a redőnyt, hanem az ablak
irányába mutatva felemeli, vagy leengedi a kezét. Ha az ablak irányába mutatva balra, vagy jobbra
mozdítja a kezét, akkor kinyílik, vagy becsukódik az ablak. Egy idő után, ha már kellő pozitív példa áll
rendelkezésre, akkor az intelligens szoba este 10-kor automatikusan leengedi a redőnyt.
Ez minden könnyen megvalósítható a KINECT-tel, hiszen azonosítható a kar, annak
irányítottsága. A mögöttes rendszer pedig valamilyen tanuló algoritmus, akár szakértőegyüttesekből
álló rendszer is lehet.
3.4.2 Kommunikáció
A kommunikáció kétirányú kell, hogy legyen. Tehát az ember NI alapú (KINECT) beavatkozása
az ember-szoba kommunikációt valósítja meg, és kell egy szoba-ember kommunikációs csatorna is.
Az NI alapelvek alapján ez audió és videó alapú kéne, hogy legyen, tehát például egy
hangszórórendszer, vagy egy kivetítő mely az ember aktuális helyéhez és orientációjához viszonyítva
kivetít egy képet, vagy egy kérdést. A kérdésre pedig hasonlóan a beavatkozáshoz: gesztusokkal lehet
válaszolni.
12
3.4.3 Intelligens ház elemei
1. Hőmérséklet (fűtés, légkondicionáló; HVAC)
2. Páratartalom (levegő frissesség; HVAC)
3. Nyílászárók működése (ajtó, ablak)
4. Világítás (fényerő)
5. Időzített automatika (pl. viráglocsolás)
6. Biztonság (mozgásérzékelés, arc- és alakfelismerés, gesztuskód)
7. Szórakoztatóelektronika vezérlés
3.5 Biztonságtechnika
Biztonságtechnikához a mozgásérzékelőkön kívül kamerák is tartoznak, melyek közül a KINECT
speciális funkciót láthat el: alak- és arcfelismerés, illetve gesztuskód („organikus kód”, ami a testtel
végzet gesztuskombinációt jelenti).
3.5.1 Gesztuskód
Tekintve, hogy a KINECT kb. 20 joint pontot (hajlítható csuklópontot és végpontot) tud követni,
amik mozgási tartománya az ember méreteitől függ, de értékei folytonosak (!), így a gesztuskód (a
lekövetési hibát nem számítva) végtelen sok kombinációt tartalmazhat. Természetesen nem lehet
például az alkar elforgatottságát végtelen precizitással érzékelni, ezért kvantálni kell az értékeket, és
valamilyen hibaszázalékot használni.
A gesztuskód a különböző joint pontok pozíciójától, és az azokat összekötő szakaszok (tagok,
végtagok) elforgatottságától függ a 3D térben, illetve nagyban függ a pozíciók közötti váltástól. (tehát
nem mindegy, hogy egy felfelé kinyújtott kart úgy érünk el, hogy oldalra hozzuk föl a kezünket, vagy
magunk előtt).
Egy szobába, házba való belépéskor a kamera azonosítja a belépőjét (arcfelismerés) és/vagy
gesztuskódot kér. Ekkor az illető egy rögzített gesztussal jelzi a kód kezdetét, majd elvégzi a
gesztussorozatot.
Példa:
Kód eleje: jobb alkar fej fölé kinyújtva.
Kód: Bal kéz 45%-ban magunk mellé; Jobb kéz vízszintesbe; Jobb alkar behajlít; Bal
kar vissza test mellé.
A kód természetesen lehet sokkal „organikusabb” is: kézfejjel magunk előtt két 8-ast leírunk,
majd lehozzuk a kezünket 45%-ban magunk mellé.
A kód lehet rövid is, hiszen a joint pontok száma, és a lehetséges felvehető értékek száma igen
nagy.
13
Az se jelentene problémát, ha a házba belépő személy nem végzi el rögtön a gesztuskódot,
hiszen az érzékelőnek van egy érzékelési zónája (türelmi zóna). Ha ebbe belép a személy, akkor
elkezdődik az érzékelés, ezen belül mozoghat, de (riasztás nélkül) kilépni már csak a kód megadása
után lehet.
3.6 Biometria
A biometria olyan alkalmazások összessége, amik segítségével egy ember a rá jellemző fizikai
tulajdonságok, vagy egyedi mozgás, viselkedésjegyek alapján azonosítható. A biometria nagyon
fontos részét képezi mindenféle azonosítási eljárásnak, mint például az ujjlenyomat azonosítás vagy
az arcfelismerés.
Két csoportja van:
fizikai
viselkedési
Az első csoportba tartoznak az emberekre teljesen egyedi, fizikai jellemzők: ujjlenyomat, írisz,
arc, tenyéralak, fülalak, retina, arc hőtérkép, DNS, hangelemzés.
A második csoportba tartoznak: írás ritmus, testmozgás követés, hangelemzés.
Alapvető követelmények a biometriai leírókkal szemben:
mindenkire (az emberek nagy részére) értelmezhető, használható legyen
egyediség (ne legyen két azonos ember, akire igaz)
időben állandó (hosszú ideig statikus jellemző)
mérhető (lehetőleg nagy teljesítménnyel, gyorsan)
nehezen hamisítható (lemásolható)
3.1 ábra: Biometria általános blokkvázlata (forrás: wikipedia)
14
Az általános blokkvázlaton követhetjük a biometria működését. A szenzor adatokat először elő
feldolgozásnak vetjük alá (pl. zajszűrés), majd a számunkra kívánatos adatokat szűrjük le az
adathalmazból (feature extraction). A szenzorból nyert adatok alapján előállítunk egy mintát, amit az
adatbázisban eltárolt, korábbi mintákkal vethetünk össze, majd az eredményeket továbbítjuk az
alkalmazásnak további feldolgozásra (riasztás, értesítés… stb.).
3.6.1 Írás ritmus, kurzor mozgáskövetés
A technika lényege, hogy a felhasználót írásmód alapján azonosítják. Ez független a leírt szótól,
az azonosított paraméterek között az írásirány, az írási sebesség (karakteren belül is lebontva), és a
kurzor közbülső mozgásának követése van.
A rögzített mozgás (gesztus) többszöri megismétlésével tanulja meg a rendszer a
paramétereket. A „kód” elvileg legalább olyan egyedi, mint az íráskép (grafológiai elemzés), illetve
tudatosan egyedi ismertetőjelekkel is lehet bonyolítani (pl. adott karakter elnyújtása).
A probléma ezzel a biometriai mértékkel, hogy az íráskép és- ritmus nagyban függ a lelki
állapottól.
3.6.2 Gait
Magyarul azt jelenti: testtartás, járásmód. A szakmában a járás közbeni testtartás,
súlymegoszlás elemzését értik ez alatt. Elsősorban mozgásszervi betegségek (ízület, izomzat)
elemzésére, felismerésére használják. Próbálták alkalmazni már emberek azonosításra is
(http://www.youtube.com/watch?v=Voygv1uTF7c), ezzel arra próbáltak kísérletet tenni, hogy
létrehoznak egy központi adatbázist, amelyben az ismert bűnözők mozgásmintáit tárolják el, majd
vetik össze más videókon rögzített mozgásokkal. A projekt (források hiánya alapján), innen nem is
jutott tovább.
15
4 KINECT, mint „biometriai szenzor”
A KINECT által szolgáltatott adatok (RGB kamerakép, és szkeleton) rögtön adják a lehetőséget,
hogy az eszközt vizsgáljuk meg, mint lehetséges biometria alkalmazást. Itt a biometria nem csak
személyazonosításra, vagy biztonságtechnikában használható alkalmazásaira kell gondolni. A
biometriát, mint olyan alkalmazások összességét tekinthetjük, amik az emberi test valamilyen
tulajdonságát próbálja meg azonosítani, követni, és a 3.1 ábra architektúrája alapján működik. Ez
alapján a KINECT-et biometriai szenzorként is használhatjuk:
pre-processing: mélységképből érkező adatok feldolgozása
feature extarction: emberi alakok, joint pontok, kezek azonosítása
mozgás lekövetése (minta készítése)
eltárolt mozgásmintákkal való összevetés
eredmények feldolgozása
Az eredményeket többféle alkalmazási területen (nem feltétlenül személyazonosításban,
biztonságtechnikába) is használhatjuk:
gesztus szekvencia követése (pl. ivás mozdulatsor)
gesztuskövetés rehabilitáció követésére
szokatlan gesztusok azonosítása
gesztus kód (gesztus alapján való azonosítás)
testpozíció követés
4.1 Általános alkalmazhatóság
Az eddigi kutatások alapján a biometria elsősorban fizikai sajátosságokon alapuló változatait
használják, ritka a viselkedési minták felismerése. Ez elsősorban annak tudható be, hogy nehéz olyan
hardvert készíteni, ami kompakt módon, ugyanakkor robosztusan működne. A legtöbb viselkedést
(mozgást) azonosító rendszer infra-kamerákat és markereket használ, ami egy egész stúdió
berendezését és kalibrálását igényli (motion capture). Az egykamerás képfeldolgozás fejlődésének
köszönhetően, és a KINECT szenzorban megvalósított színes kép és infra-kamerából származó
mélységkép hibrid megoldásának köszönhetően, egyszerűen lehetne emberi alakok végtagjainak
mozgását követni, és az adatokat valós időben feldolgozni.
A KINECT precizitását tekintve nem ér fel a markeres megoldásokig (pl. lábfej, térd csavarodást,
de még a csukló finom mozgását is nehéz lenne lekövetni), de jó megközelítéssel lehet rá robosztus
alkalmazást készíteni.
16
A KINECT alkalmazása mellet szól a fényviszonyoktól való függetlenség is, hiszen a szenzor egy
aktív infravörös érzékelővel rendelkezik (infravörös hálót projektál ki, amit egy infra érzékelővel figyel
meg, és ez alapján határozza meg a szenzortól való távolságot).
4.1.1 Testpozíció követés
Részfeladatai:
éber figyelés
éber nem figyelés
alvás
szokatlan aktivitás
szokatlan aktivitáshiány (mozdulatlanság)
Ezt önmagában a KINECT-tel nehéz lenne megoldani, hiszen az alvás és nem alvás közötti
különbséget pl. TV nézés közben a testtartásból nehéz megállapítani. Szükséges lenne komolyabb
arcfelismerésre, és azon belül pl. csukott/nyitott szem felismerésre is. A probléma az, hogy az alvó
(nem aktív) ember testtartása alig különbözik egy éber, de mozdulatlan emberétől, és kis
mozdulatlanságot nem lehet precízen mérni.
A szokatlan aktivitást, vagy hirtelen pozícióváltást már lehetne követni, felismerni. Tehát
például elesés detektálás, vagy hirtelen rángás felismerésére használható lenne.
4.1.2 Gesztus szekvencia követés
A szekvenciák követése KINECT-tel megoldható feladat, mivel a szekvenciák nem csak
önmagukban felismerendő, statikus pozíciók, hanem pozíciók sokasága, átmenetekkel, amik
valamilyen hibafaktort számításba véve jobban felismerhetők.
Konkrét alkalmazásai már léteznek, elsősorban játékfejlesztésben találkoztam ennek
komolyabb felhasználásával, ahol aerobic és tánckoreográfiai programok hasonlították össze az
ember tényleges mozgását az elvvárttól. Itt igen összetett mozgásokra kell gondolni, tehát
összehangolt végtag, törzs, és fejmozgásra.
4.2 Tapasztalatok a szenzorral
A szenzor tesztelését általam is felülvizsgált (forráskódból fordított, kis mértékben módosított)
demó programok (OpenNI SDK-hoz mellékelt; lásd 3. fejezet) segítségével végeztem el. Ezek a
programok mindig valamilyen speciális feladatra vannak kiélezve, így például van program, ami az
emberi alakokat azonosítja és megpróbálja a szkeletont ráilleszteni, és van, amelyik csak és kizárólag
a kézfejet próbálja követni (automatikus azonosítás és követés).
17
4.2.1 Pontosság és az érzékelés robosztussága
Az érzékelő a legkisebb érzékelési távolságban (kb. 0.8m) vízszintesen kb. 87cm-t lát,
függőlegesen 63cm-t, és így a felbontása 1.3mm/pixel. [8]
Az érzékelő legnagyobb hátránya a viszonylag kis látószög. A problémát (felismerés
bizonytalanságát, vagy teljes hiányát) sokszor a rossz távolság okozza, mivel a szkeleton
felismeréshez legalább csípőig benne kell, hogy legyen a felsőtest. A szoknyát viselő emberek lábait
rendszeresen helytelenül illeszti a NITE.
A teljes alak felismerés kétféle módon történhet:
előre eltárolt szekeleton használata (előzőleg valaki el lett „mentve” a rendszerben)
instant felismerés (valamilyen fókusz pozíciót kell felvenni, hogy a rendszer felismerje
az emberalakot, és ráillessze a szkeletont)
A KINECT-et használó fejlesztők között sokan állítják, hogy egy tetszőleges, de nagyjából
átlagos emberről vett szkeletont a rendszer később igen nagy pontossággal rá tud illeszteni más
alakokra, mindenféle fókusz pozíció nélkül.(Ezt még tesztelni kell.)
4.2.2 OpenNI és NITE funkciók
Az OpenNI funkciói elsősorban a hardver (KINECT) és a middleware összekapcsolását,
menedzselését végzi.
A NITE API-ba (és dokumentációba) mélyebben beleásva sok olyan előre definiált funkciót
találtam, melyek nagyban könnyítik, és egyszerűen variálhatóvá teszik a különböző mozdulatok
detektálását, felhasználását. A NITE middleware alapvetően egy eseményvezérelt struktúrát valósít
meg, ahol a szenzorból érkező adatokat feldolgozva (tehát az ember mozgását érzékelve), különböző
események generálódnak. Ezek az események általában kézmozdulatok, de minden esemény
„generálódása” paraméterezhető. Például rendelkezésre áll egy olyan funkció, mely az integetés
jellegű mozdulatokat detektálja. Az integetés egy rögzítet síkban történik, de paraméterezhető, hogy
hány oda-vissza mozdulat, milyen sebességű mozgás után ismerje fel integetésnek. Másik példa:
rendelkezésre áll olyan funkció, mely a kézfej olyan jellegű mozgását érzékeli (detektálja), mely egy
tetszőleges (de rögzített) X-Y síkban figyeli a kéz mozgását, és egy 2D térképet készít a mozgásról
minden képkockában.
A másik hasznos megoldás a NITE-ban az adatfolyam kezelés. Ez alatt a különböző forrásból
érkező adatok (akár különböző szenzorból, vagy az adott színtérből érkező különböző
eseményforrások pl. kézfej, test) alkalmazásállapottól függő felhasználását, irányítását kell érteni.
Például, ha az alkalmazás egy pillanatában csak egy adott kézmozdulatot szeretnénk megtalálni (a
többi mozdulatot átmenetileg nem akarjuk figyelni), akkor erre beépített szolgáltatások állnak
rendelkezésre.
18
Továbbá rendelkezésre állnak szűrő funkciók is, melyek például a kis mozgásokat szűrik le,
illetve olyan funkciók, melyekkel a teret lehet „partícionálni” és a térben mozgó (és követett
pontokat) figyelni a partíciók közötti váltáskor.
4.1 ábra Szkeleton felbontás a NITE alapján (forrás: NITE algorithms, [6])
A NITE API leírás viszonylag részletesen ismerteti az egész rendszer képességeit. Arra is kitér,
hogy a teljes alak felismerését végző komponens milyen pontossággal képes a végtagcsavarodást
meghatározni. A probléma, hogy ezeket (pl. a felkar csavarodását) nem lehet közvetlenül a
mélységképből meghatározni, ezért következtető módszereket használ a NITE (pl. ha előrefele hajlik
a könyökünk, akkor nyilvánvalóan a bicepszünk előrefele néz). A gyors mozgások, és extrém pozíciók
is zavarhatják a felismerést.
Hasznos, hogy a legtöbb funkcióhoz szolgáltat egy bizonytalansági faktort, mellyel
meghatározható, hogy egy adat (pozíció, irány) mennyire „biztos”.
4.2.3 Egyéb tapasztalati adatok
A szenzor válaszideje nagyon kicsi (ms nagyságrendű), persze ez függ az alkalmazástól is. Az
érzékelési tartománya főleg a „közelség” terén korlátozott, hiszen a látószög miatt a túl közeli
alakokat nem látja egészben (ez még nem probléma), de az alak-felismerési algoritmusok nem mindig
működnek 100%-osan csak a felsőtestet látva.
A felbontás a gesztusérzékeléshez kielégítő (nagy pontossággal), de ujjfelismerés, ujjmozgás
követéshez már nem, ahhoz közeli felvételre és speciális alkalmazásra lenne szükség.
19
5 Létező megoldások, megközelítések
A teljes alak felismerés és követés nem új elgondolás, más rendszerekben is foglalkoznak ezzel,
sok létező megoldás található. Csak azokaz a megoldásokat citálom, melyek nem csak a test általános
felismerését és követését teszik lehetővé, hanem teljes test alak felismerést, tehát végtagok,
csuklópontok követését is.
Mint korábban már említettem, a legtöbb felismerési módszer vagy csak magát az emberi
mozgás tényét ismerik fel (magát az alakot, vagy annak részleteit már nem), vagy többkamerás,
kalibrált, markeres megoldásra van szükség, ami viszont igen költséges, és nehezen alakítható ki
bármilyen környezetben. A többkamerás megoldások között is léteznek olyanok, melyek markerek
nélkül használhatók [11,12].
Tehát olyan egykamerás megoldásokat kerestem, amik komplexitásukat tekintve a KINECT
szintjén vannak.
5.1 OpenCV [9]
Az OpenCV (Open Computer Vision Library) az egyik leggyakrabban használt, nyílt forráskódú
és szabadon felhasználható programcsomag, mely rengeteg funkciót biztosít a képfeldolgozás és gépi
látás témakörében. Alapvetően csak RGB képeken dolgozik, tehát akármilyen forrásból származó
kameraképeken. A beépített alapfunkciókkal könnyen lehet magasabb szintű felismerést lehetővé
tevő alkalmazásokat készíteni, megkerülve ezzel olyan nehéz problémák implementálását, mint az
arcfelismerés, vagy kézfelismerés.
A probléma a legtöbb funkcióval az, hogy alapvetően 2D-s képekről származó információból
nehezen lehet 3D-s információt leszűrni. Az objektum felismerő algoritmusok akkor működnek csak
helyesen, ha például az arc, vagy az emberi alak szemben van a kamerával. Az elfordult, elcsavarodott
pozíciókat alig, vagy egyáltalán nem képes követni.
Az arc és alakfelismerő funkciók többnyire a Haar-féle jellemzők segítségével keresi meg a
szem, vagy testrészek pozícióit. Él és textúra alapú (régió felismerés) objektum-azonosítás is gyakori,
de ezek is szinte minden esetben nagyon érzékenyek a megvilágítási körülményekre (intenzitás), az
ember öltözködésére, és kamerához viszonyított pozíciójára. Továbbá csak „bounding box” jellegű
információt szolgáltatnak a felismert alakról.
20
5.2 Bayesi becslés az emberi test 3D-s
mozgásrekonstrukciójához [10]
A megoldás két részből épül fel: előzetes mozgási modell felépítése markerek segítségével
rögzített, mozgásszekvenciákról készített adatokból. Ezzel egy olyan valószínűségi modellt építenek
fel, ami megadja pár képkockán keresztül a végtagok elhelyezkedésének valószínűségét.
Második lépésben a tényleges kameraképeket analizálják, de itt egy egyszerűsített megoldást
használnak: a kamera által könnyen felismerhető markereket a testen. A bonyolultabb, valós
helyzetekhez már létező alak-felismerési megoldásokat használnak.
A munka legnagyobb felfedezése az volt, hogy az előzetes tudásbázis felépítése nagyban
hozzájárul a megoldás jó alak-felismerési teljesítményéhez.
Egy friss, 2010-es tanulmány azt vizsgálja, hogy az így rögzített mozgás adatokat milyen
módszerekkel lehetne finomítani. Különböző technikákat ismertet a már létező adatok „simítására”
az új adatok segítségével (Gibbs mintavételezés, Markov láncoknál használkt simítási technika)
[16,17]
5.3 OrganicMotion [13]
Ez egy ipari alkalmazás, mely markerek nélküli alakfelismerést és követést tesz lehetővé. Alapja
hasonló a KINECT-ben használthoz: kalibrált IR kamerák segítségével határozza meg az ember
pozícióját a térben. A megoldás hátránya, hogy egy rögzített stúdióban használható csak, szigorúan
korlátozott fényviszonyok mellett.
5.4 Más egyetemeken
A Stanford egyetemen egy külön kutatócsoport (BioMotion Lab [14]) foglalkozik ezzel a
témakörrel. Ők is markeres megoldásokkal dolgoznak, külön felépített stúdióban. Elsődleges céljuk
nem a kiterjesztett virtuális valóság, vagy az intelligens szobában való alkalmazása a technológiának,
hanem orvosi megoldások.
Coventry University (UK) , Bournemouth University (UK) intézményeiben markeres, elsősorban
játékfejlesztésre és animáció készítésre szánt megoldásokkal foglalkoznak.
Carnegie Mellon egyetemen is foglalkoznak motion capture-rel (mocap), sőt, egy nyíltan
hozzáférhető adatbázist is biztosítanak, melyben a saját laborjuk (Carnegie Mellon Graphics Lab) által
rögzített adatok érhetők el. [15]
21
6 KINCET technikai specifikáció, működés
6.1 Szenzorral kiadott hivatalos paraméterek [8]
6.1.1 Fő tulajdonságok
RGB kamera (640x480; 30FPS)
Mélységérzékelő (IR; 640x480; 30FPS)
Hangérzékelő
Mozgató motor a dőlésszög változtatáshoz
6.1.2 Látószög
Vízszintes FOV: 57°
Függőleges FOV: 43°
Motor függőleges szögváltoztatása: 27°
Mélységérzékelő érzékelési tartománya (ajánlott): 1.2m–3.5m
Mélységérzékelő érzékelési tartománya: 0.8–6 m
6.1.3 Adatfolyam
640x480 16-bit depth @ 30 frames/sec
(mélység-térkép)
640x480 32-bit colour@ 30 frames/sec
(színes kamerakép)
16-bit audio @ 16 kHz
6.1.4 Szkeleton (csontváz; ember) érzékelés
mozgó alakok érzékelése
aktív alakok érzékelése (szkeletonnal)
aktív alakonként 20 joint pont (hajlítható vagy végpontok) érzékelése
6.1.5 Audio érzékelő (PC-n jelenleg nem működik)
Hangfelvétel
Visszhang kiszűrés
Beszédfelismerés több nyelven
22
6.2 A szenzor működése
A KINECT szenzor alapja az IR kamera együttes, mely egy infravörös fényt kibocsájtó
fényforrásból, és egy infravörös fényt érzékelő kamerából áll. Más IR fényt használó
mélységérzékelők általában azon az egyszerűsített fizikai modellen alapszanak, mely a kisugárzott
fény által megtett utat (távolság a szenzortól) a kibocsátás és érzékelés között eltelt idő és a
fénysebesség által határozzák meg.
A KINECT –ben használt PrimeSense chip más megoldást használ. [18,19]. Ennek lényege a
következő: az IR kibocsátó egy pszeudorandom mintázatot (sűrű ponthalmazt) vetít ki a
megfigyelendő objektumra. A kivetített mintázatokat először ismert, de különböző távolságban lévő
referencia felületekre vetítik ki (egymás után, egyenként), majd ezeket az képeket, és a
mintázatokban lévő pontok távolságát elmentik referencia adatokként.
A 6.1 ábra: KINECT által kibocsátott infravörös fény (pont háló) [20]
Az ismeretlen távolságban lévő objektumra ezután ugyan azt a pszeudorandom mintázatot
vetítik ki. Az előzőleg referencia felületekre kivetített mintázatok közül, különböző korrelációs
technikákat alkalmazva, kiválasztják a legvalószínűbb referencia felületet (felületeket), és az ahhoz
eltárolt referenciapontok távolságát. Ezután az ismeretlen objektumra (objektumokra) kivetített
mintázat pontjait keresztkorrelációs technikákkal megfeleltetik a referencia felület pontjainak, és a
pontok távolságából meghatározható a referencia felület és az ismeretlen objektum felületének
pontjainak z-tengely (3. dimenzió) menti különbsége.
Az így meghatározott mélységkülönbségek képezik tehát a mélységkép (mélység térkép)
alapját.
23
7 Konklúzió
A KINECT szenzor egy kompakt eszköz, mely köré egy olyan framework épül(t), ami a jövőben a
gépi látásban, azon belül is az alak és arcfelismerésben nagy szerepet fog játszani. A szenzor által
szolgáltatott 3D adatok, és az ezeket felhasználó OpenNI és NITE framework komponensek
segítségével robosztus módon lehet teljes alak felismerést és követést, kézfej követést és gesztus
felismerést alkalmazni. Az eszköz alapvetően beltéri felhasználásra lett kialakítva, és a paraméterei
alapján egy átlagos nappali (kisebb terem) megfigyelésére alkalmas. Ezen belül tetszőlegesen képes
mozgó alakok felismerésére, azonosítására és szkeleton adatok 3D térben történő illesztésére (relatív
pozícióval a szenzorhoz viszonyítva), függetlenül a megvilágítástól és az emberek öltözködésétől (egy-
két extrém kivételtől eltekintve).
A felhasználási lehetőségek között minden olyan területet megpróbáltam feltérképezni, ahol a
teljes alakfelismerés és követés hasznos lehet. Több izgalmas megoldással találkoztam (kiterjesztett
valóság, robot vezérlés), és egy saját ötleten alapuló (és további végiggondolásra, kidolgozásra váró)
alkalmazását is bemutattam: gesztuskód, és a KINECT mint biometriai szenzor.
A kutatómunka során talált meglévő alkalmazások többsége az emberi alak követésére
markeres megoldást használ, általában a célra speciálisan kiépített stúdióval. Az egykamerás
megoldások körében robosztus megoldás a teljes alak felismerésre és követésre nem igazán létezik, a
meglévő megoldások többnyire olyan megszorításokkal működnek csak, amik a megoldás
felhasználhatóságát erősen csökkentik (szín alapú markerek használata; egy adott irányba nézve
működő megoldások). A létező megoldások többsége azért van nagy hátrányban a KINECT-tel
szemben (a KINECT-tel megvalósítható funkciók terén), mivel a 2D képekből 3D információ leszűrése
alapvetően egy nehéz képfeldolgozási probléma.
24
8 Forrásjegyzék
[1] http://en.wikipedia.org/wiki/Biometrics
[2] http://techbiometric.com/
[3] http://en.wikipedia.org/wiki/Assisted_living
[4] http://en.wikipedia.org/wiki/Activities_of_daily_living
[5] OpenNI User Guide ( http://www.openni.org/documentation )
[6] NITE Algorithms notes 1.3 (PrimeSense Inc.)
[7] PrimeSense NITE Controls 1.3.1 User Guide (PrimeSense Inc.)
[8] http://en.wikipedia.org/wiki/Kinect
[9] http://opencv.willowgarage.com
[10] Bayesian Estimation of 3-D Human Motion (Michael E. Leventon, William T. Freeman;
TR98-06, 1998)
[11] D. M. Gavrila and L. S. Davis. 3-d model-based tracking of humans in action: a multi-view
approach. In Proc. IEEE CVPR, pages 73{80, 1996.
[12] I. A. Kakadiaris and D. Metaxas. 3d human body model acquisition from multiple views. In
Procp. 5th Intl. Conf. on Computer Vision, pages 618{623. IEEE, 1995.
[13] http://www.organicmotion.com
[14] http://www.stanford.edu/group/biomotion/
[15] http://mocap.cs.cmu.edu/
[16 ] http://en.wikipedia.org/wiki/Markov_chain
[17] A Study on Smoothing for Particle-Filtered 3D Human Body Tracking (International Journal
of Computer Vision, Volume 87, 2010 március)
[18] http://www.faqs.org/patents/asn/62087
[19] Range mapping using speckle decorrelation (United States Patent 7433024, PrimeSense
Ltd.)
[20] http://graphics.stanford.edu/~mdfisher/Kinect.html