Képfeldolgozó algoritmusok fejlesztése virtuálisvalóság-rendszerekhez
Írásbeli beszámoló az “Önálló laboratórium” c. Tárgy keretében végzett munkáról a 2008/2009 tavaszi félévben a Budapesti Műszaki és Gazdaságtudományi Egyetem Mérnök informatikus (BSc) szakán
Készítette: Monszpart Áron Konzulens: Dr. Vajda Ferenc
2009.05.15
1. Bevezetés Mióta a számítógépet az ember saját munkájának megkönnyítése érdekében feltalálta, azóta az egyik legfontosabb kérdéskör a gép-ember kapcsolati felületének természete. Hiába végez el egy számítógép nagyságrendekkel több munkát, nálunk nagyságrendekkel gyorsabban, ha a feladat kiadása, a munka közbeni interakció és irányítás nehézkes, és megerőltetést jelent a munkát irányító ember számára. Két irányban kezdhetünk neki a probléma feldolgozásának. Egyrészről törekedhetünk minél intelligensebb és önállóbb számítógépek, rendszerek és alkalmazások kifejlesztésére, ami által emberi beavatkozásra az elvégzendő munka mennyiségéhez képest egyre kevesebb szükség van. Mivel azonban jelen világunk közgazdasági rendszere az emberi teljesítményt a szükséges szakértelmen túl a ráfordított idő mértékegységével méri, és a technológiai fejlődés is ott tart, hogy számítási kapacitásban a nem túl specifikus feladatok esetén egy munkaeszközként használt számítógép a számítási kapacitásának csak töredékét használja ki, azaz az idő nagy részében az őt irányító ember beavatkozására vár, a felhasználói felület egyszerűsítése, annak használatának hatékonnyá tétele vált a munkateljesítmény következő kulcskérdésévé. Ehhez kapcsolódik az a tény is, hogy az ember nem egy gép, hanem egy biológiai lény. Bizonyos körülményekre szüksége van ahhoz, hogy jól tudjon teljesíteni. Kellő motiváltság és egészségi állapot hiányában a teljesítménye radikálisan csökken. Fontos, hogy a számítógépek, mint munkaeszközök használata közben a fizikai állóképességünket a lehető legkisebb mértékben tegyük próbára. Ezen kérdés fontosságát mi sem bizonyítja jobban, minthogy egy külön, ezzel foglalkozó tudományág, az ergonómia tudománya jött létre a kérdéskör kezelésére.
2. A hagyományos számítógép-irányítás paradigmája A nagyon kezdetleges megoldásoktól eltekintve, viszonylag hamar kialakult a számítógépeknél már általunk jól megszokott egér-billentyűzet-képernyő párosítás a gép-ember interakció megvalósítására. Maga a billentyűzet gondolata nem a személyi számítógépek keletkezéséhez köthető, annál sokkal hamarabb, az írógép feltalálásával párhuzamosan keletkezett. Az információ beviteli sebesség szempontjából kulcsfontosságú billentyűzetkiosztás rendje a hagyományos „qwerty”-„qwertz” rendszerű billentyűzetek esetén erősen korlátozott. Mindez betudható annak a ténynek, hogy a qwerty rendszerű billentyűzeteket első sorban az írógép fizikai kialakítására optimalizálták, és csak második sorban az angol nyelv betűgyakoriságait figyelembe véve. Ezt a megoldást az ún. „dvorak” kiosztású billentyűzeteknél átdolgozták, és az valóban az angol nyelv szavainak betűsorozat gyakoriságait figyelembe véve került kialakításra. Kettő probléma említendő ezzel az elképzeléssel kapcsolatban. Egyrészről a „dvorak” kiosztású billentyűzet a „qwerty” elterjedtsége révén szinte esélytelen a szignifikáns térnyerésre a felhasználói körökben, másrészről a billentyűzetkiosztás optimalizálására valójában nyelvenként lenne szükség. Készültek a dvorak kialakítási elveit figyelembe vevő megoldások számos európai nyelven, azonban az is elfogadhatatlan, hogy az ember kénytelen legyen minden országhatár átlépéskor, vagy munkanyelv váltáskor egy teljesen új billentyűzetkiosztást megtanulni. Egy másik lehetőség az egyszerre több nyelvre történő optimalizálás, ez azonban akkor így nem visz minket elég közel eredeti célunk megvalósításához, az információ beviteli sebesség szükségtelen korlátokba ütközik. -2-
Az ergonómia tudományának fontosságát mi sem jelzi jobban, minthogy minden billentyűzet hátoldalán valamilyen formában jelzik a felhasználók számára, hogy többek között ún. „repetetive strain injury” („ismétlődő megerőltetés következtében fellépő sérülések”) kialakulásának veszélye áll fenn. A hagyományos billentyűzeteknél a billentyűk elhelyezkedésénél fogva, ha az ember tíz ujjal használja őket, a csuklók természetellenes, kifordított helyzetben helyezkednek el hosszú, sokszor minimális pihenés nélkül töltött munkaóra során. Ennek hatására két betegség fordul elő a leggyakrabban a felhasználóknál: az ínhüvelygyulladás és a kéztőcsatorna-szindróma (carpal tunnel syndrome). A kéztőcsatorna-szindróma lényege, hogy a kéztőalagútban futó idegeket a megterhelés hatására nyomni kezdi a felettük futó haránt csuklószalag. Ennek hatására zsibbadást, fájdalmat érezhetünk a csuklóban és az első három ujjban, a legtöbbször éjszaka. Van, hogy elég pihentetni, de sokszor csak a műtéti úton orvosolható a probléma. Az ínhüvelygyulladás leggyakrabban az ujjak feszítőinek ínhüvelyén fordul elő, erős kézfájdalommal jár. Pihentetés, sínbe helyezés és gyulladáscsökkentő gyógyszerek néhány hét alatt meggyógyítják. Az ínhüvelygyulladás különösen akkor kerül a számítógépes munkával kapcsolatos betegségek tárgyalásakor előtérbe, ha hozzávesszük a tasztatúrához szinte elengedhetetlenül párosodó egeret is. A hagyományos egérnek, mint konstrukciónak a jelenleg tárgyalt szemszögből a legfontosabb hibája, hogy munka közben a felhasználó a kézfejét anatómiai szempontból természetellenes módon kénytelen tartani. A munka, tipikusan irodai dolgozók, valamint CAD rendszerű szoftverekkel dolgozó emberek számára sokszor egész napos, 8-12 órás igénybevételt jelent. A természetellenes tartás az ember anatómiai felépítéséből adódik. A karban található két csont, a singcsont (az „alsó”) és az orsócsont (a „felső”) pihenő állapotban keresztezetlenül helyezkedik el, a kézfejek függőlegesen állnak, a tenyerek egymás felé mutatnak. Annak érdekében, hogy a tenyér lefelé mutathasson, izmok, inak és szalagok segítségével az alkar két csontját keresztezzük. A folyamatos munka során ezek az izmok, inak és szalagok folyamatos feszült állapotúak, ami a különböző betegségek kialakulásának legfőbb forrása. A folyamatos egérkattintások hatására a mutatóujjat mozgató ín kerül a legkiszolgáltatottabb helyzetbe. A számítógépes munka során előforduló betegségek elkerülésének szempontjából fontossá vált a felhasználók és a gyártók számára a megoldások emberbarátabbá tétele. A billentyűzet-egér párosról, mint a gép-ember kapcsolatot megvalósító, beviteli eszköz elképzelését implementáló szerkezetről, a fent tárgyaltak alapján megállapíthatjuk, hogy kellő teret biztosít az alternatív megoldások számára. Mi sem bizonyítja ezt kevésbé, mint a piacon lévő, a billentyűzetet és egeret helyettesíteni vagy kiváltani megkísérlő perifériák széles skálája. A projektünk szempontjából nagyon fontos látni, hogy a gyártóknak megéri foglalkozni alternatív megoldásokkal, mivel van rájuk kereslet. Van a felhasználóknak egy rétege, amely hajlandó azért fizetni, hogy minél kevesebb időt kelljen a billentyűzettel és egérrel dolgoznia.
3. Biológiai fizika tudományága biztosította megoldások Elrugaszkodván a hagyományosnak tekinthető perifériáktól, megvizsgáltuk, hogy milyen egyéb lehetőségek állnak rendelkezésre a gép-ember interfész megvalósítására. Egyetemi kutatások és kereskedelmi cégek is sokat foglalkoznak a számítógépek hangfelismeréses irányításával. Az erre gyártott eszközök elvi lényege az emberi beszéd fizikai lenyomatának rögzítése.
-3-
A legegyszerűbb megoldás a mikrofon használata. Ennek a technológiának alkalmazásakor bizonyos kihívásokkal kell szembenéznie a fejlesztőknek. Első körben áthidalandó probléma a nyelvés nyelvjárásfüggőség, valamint a kiejtéssel kapcsolatos egyéb különbségekből adódó nehézségek. Nyilvánvaló, hogy programozói szempontból óriási különbség van két ember beszéde között. Matematikai modell alkotásakor ennek figyelembe vétele komoly kihívást jelent. Gyakori megoldás a hosszas gyakorlás, a szoftver tanítása, ennek körülményessége miatt azonban a technológia nem igazán tud elterjedni. Az egyetlen terület, ahol valamiféle szárnycsapkodást láthattunk tőle az angol nyelvű beszédfelismerés. Érthető is, hogy az angol nyelv az első, ahol a technológia terjedésbe kezdett, hiszen a szoftverfejlesztés nyelve általában az angol, valamint a felhasználók széles köréről is állíthatjuk, hogy az angol nyelvtudás valamely változatának, valamilyen formában birtokában vannak. Mikrofonnal történő beszédfelismerés során óriási kihívást jelent a fejlesztők számára a különböző környezeti zajok eliminálása. A különböző nyelvjárások mellett arra is kell figyelni egy-egy hangminta szegmentálásánál és szűrésénél, hogy azt a hangot valamilyen zajos környezetben vették fel. Ez a probléma sokszor nehezen kiküszöbölhető, így további megoldási lehetőségek felé néztek a gyártók. Ennek kapcsán jöttek szóba a rezonanciás és a test izomműködésére vonatkozó elektromágneses jelek felfogásán alapuló technológiák. A rezonanciára alapuló megoldások elvének lényege, hogy az emberi hangképzés biológiájánál fogva a hangképzésben részt vevő szervek a beszéd során rezgésbe jönnek. Attól függően, hogy a megfigyelt és mért szerv mennyire későn kapcsolódik be hangképzésbe, a rezonancia képe egyre változatosabb lesz. A variációk legszélesebb skáláját nyilván a mikrofonnal felfogott, a levegő közvetítette rezgések nyújtják. Innen az ötlet, hogy úgy hagyjuk ki a vett jelből a környezet zajait, hogy megpróbálunk adott morfémákra karakterisztikus rezgésmintákat a hangképzés korábbi szakaszában felfogni. Az ilyen elven dolgozó eszközök legtöbbször a nyakra helyezett, a hangszálak környéki rezgéseket felfogni hivatott érzékelőkkel működnek, valamint létezik olyan verzió is, amelyik az állkapocscsont rezgéseit érzékeli a fül mögé helyezett érzékelő segítségével. Az ellenőrzött körülmények között futtatott kísérletek azt mutatják, hogy kevés betanított szó esetén (10-es nagyságrendű) a felismerési ráta 90% fölé is feltornászható. Az EMG (electromyogram) egy olyan eszköz, amely képes az emberi izomzatot irányító elektromos impulzusok, akciós potenciálok detektálására. Az érzékelők elhelyezése történhet tűelektródákon keresztül, de egyre pontosabb mérések készíthetőek olyan, a bőr felületére felhelyezhető elektródák segítségével is, amelyeknél nem kényelmetlen azok hosszú távú viselete. Az utóbbi típus esetén komoly kihívást jelent pl. az agy jeleinek érzékelésénél az elektródák elhelyezési konfigurációjának pontos megismétlése. Nagyon nehéz egy elektródát kétszer ugyan arra a pontra felhelyezni, akár ugyanazon a páciensen is. Az ennek következtében beállt mérési eredménytorzulást algoritmikusan kezelni kell. Az érzékelőket beszédfelismerés esetén az arc száj körüli izmaira szokták felhelyezni. Már öt érzékelő megfelelő elhelyezése esetén értékelhető eredményekhez juthatunk. A praktikus alkalmazások felé haladó fejlesztések során több ötlet is felmerült az érzékelők helyének fixálási problémáit megoldó elképzelések terén, létezik például olyan hangfelismerő rendszer, amellyel kapcsolatban egy oxigénmaszk belsejére helyezték el az érzékelőket.
-4-
A hangképző izmokra helyezett elektródák egy kísérleti alanyon
A másik, EMG módszerével megfigyelt terület az emberi testen az agy. Körülbelül húsz érzékelővel már komoly eredményeket lehet elérni a beszédfelismerés területén. A megoldás elvi alapja, hogy beszéd során adott morfémák kimondásakor minden alkalommal hasonló neuron aktiválódási impulzusmintákat generál, így cél ezek betanítása, és felismerése. Az elektródák pontos elhelyezésének kérdését úgy oldják meg, hogy az érzékelőket egy úszósapkaszerű ruhadarab belsejére helyezik fel. Ezt természetesen nehezen tudjuk elképzelni mindennapi használat közben. Léteznek kísérletek, amelyek egy fejpánt belsejében elhelyezett elektródákkal dolgoznak, tipikusan 5 érzékelőről beszélünk, azonban ilyenkor a meglehetősen kevés mérési eredmény rendelkezésre állása végett komoly kihívásokkal küzdenek a szoftveres megoldások tervezői. A rezonanciás, és az idegi impulzusokon alapuló módszerek további előnye, hogy az előbbi csupán suttogás, az utóbbi pedig a néma beszéd körülményei között is változatlanul működőképes elképzelés marad. Ez azt jelenti, hogy ha a szavakat nem mondjuk ki, csupán úgy teszünk, mintha kimondanánk, akkor is tudják venni a szerkezetek kis teljesítményromlás mellett az általunk kiejteni szándékozott szöveget. Ennek jelentősége a beszédkörnyezet problémaköréhez vezet minket vissza. Ilyen megoldásokkal nyugodtan folytathatnánk beszélgetést zajos környezetben, pl. tömegközlekedési eszközön, továbbá olyan helyen, ahol másokat zavarnánk hangos kommunikációnkkal, pl. könyvtárban, ill. olyan esetekben, amikor a saját érdekünk az általunk elmondottak hordozta információ védelme, pl. amikor bizalmas, vagy titkos témákról kívánunk távbeszélgetést folytatni, úgy, hogy azt a körülöttünk lévők ne hallják.
4. Képfeldolgozáson alapuló megoldások Alapvetően két termék jutott már el a kereskedelmi forgalomba hozatalig, így ezek azok, amelyekről érdemes említést tennünk ebben az értekezésben. Az egyik az ún. interaktív tábla elképzelése. A rendszer egy projektorból, és az ahhoz szükséges vetíthető felületből, a vetítőfelület fölé helyezett kamerákból, valamint két számítógépből áll. Az egyik számítógép feladata a kamerák képének feldolgozása, a másik számítógép (gyakran notebook) feladata a konkrét munkához szükséges tartalom megjelenítése, az interaktív szoftver futtatása. A megoldást elsősorban általánosés középiskolák számára ajánlják, hiszen tanulással kapcsolatos tanulmányok sorai mutatták ki, hogy az új ismeretek elsajátításának folyamata akkor a leghatékonyabb, hogyha a tanuló fél is aktív részt
-5-
vállal abban. A technológia lényege tulajdonképpen az, hogy a tábla előtt álló, és a tábla különböző pontjait érintő emberek a táblát úgy használják, mintha az egy érintőképernyő lenne, amin vezeték nélküli egérszerű vezérlést valósítanak meg a kezükkel. A kéz mozgásának pontos adataira a tábla fölé helyezett kamerák az infravörös fénytartományban kibocsátott, és visszavert fényből következtetnek (több kamera szükséges a pontos pozíció számításához), és továbbítják a szoftvert futtató számítógépnek. A technológia még kifejlődőben van, több Európai Uniós pályázat témáját is képezi az ilyen eszközökre szánt szoftverek írása. A lehetőségek tárháza igen nagy, már most is számos szoftvert kínálnak; többek között nyelvtanulás (angol, olasz, francia, …), és természettudományos tantárgyak (fizika, kémia, földrajz, biológia, …) témakörökben. A kisebbeknek különböző játékok, valamint népmesék, és egyéb, kulturális örökségünk átadására alkalmas fejlesztőprogramok kaphatóak a piacon. Egy másik, a piaci fázisát megért projekt a Microsoft terméke, a Microsoft Surface. Ez egy sötétkamrának tekinthető, tömör téglatestszerű asztal, amelyet felülről üveglap határol. A téglatest belsejében négy kamera található, amik az infravörös tartományban veszik az üveglap hátoldalát, és az üveglap felszínére helyezett tárgyak lenyomatait. Ilyen módon a szoftvert felkészítették az „asztal”-ra helyezett digitális tárgyak (pl. bluetooth-on kommunikáló okostelefonok), valamint az emberi ujjak követésére is. A szoftver látványos, kényelmes, és nagy szabadságot nyújtó módon képes egy óriási digitális asztal élményét virtuálisan szimulálni.
5. A saját projekt A számítógépek irányításának kérdése tehát egyelőre egy nyitott piaci szegmens, igazán jól működő, elterjedt megoldás még nincsen, így értelmesnek tűnt számunkra egy saját megoldás kifejlesztése. Tekintettel az egyetemen folytatott tanulmányaim jellegére, valamint a személyes érdeklődésemre, a képfeldolgozás tudomány-területén maradtunk.
5.1 Célkitűzés A cél a számítógép irányításának egy, a hagyományos elképzelésektől elrugaszkodott, kreatív módja, olyan technikai alapok lefektetése, amelyekből utána egy kis fantáziával, és ötleteléssel szinte bármi kihozható. A tervezés és megvalósítás során fontosnak tartottuk a szoftver használatához szükséges körülmények kialakításánál, megválogatásánál azt a szempontot, hogy egy egyszerű, mezei felhasználó is reprodukálni tudja a használathoz szükséges körülményeket otthon, esetleg egy átlagos munkahelyen. A számítógép irányítását valós-idejű képfeldolgozási módszerekkel terveztük megoldani.
5.2 A koncepció A projekt alapja a számítógép kézzel történő irányítása. A kéz mozgását egy web-kamera képének segítségével próbáljuk meg követni. Egy web-kamera a ma a boltokban kapható összes notebookon megtalálható, de ez az állapot nem is számít újnak. Állítható tehát, hogy ha egy működőképes technológiát fejlesztünk, és egy hatékony szoftvert sikerül fejleszteni, akkor technikai akadálya nem lesz annak, hogy a szoftver el is kerülhessen a felhasználók széles köréhez. Fontos kritérium, mivel számítógépek valós-idejű irányításáról beszélünk, hogy a web-kamera képének feldolgozása szintén valós időben történjen.
-6-
Első nekifutásra jó tervnek tűnt valamiféle pozícionálás megoldása, azaz a tenyér pozíciójának kiolvasása a web-kamera képéből, és például az egérkurzor rákapcsolása. A későbbi tervek között szerepel az egérkurzor elképzelésétől való elrugaszkodás is, a számítógép gesztusokkal történő irányításának lehetőségeinek kivizsgálása.
5.4. Első lépések Első feladatként egy web-kamerával készített állóképen kerestem a tenyér közepét. 5.4.1 Programozási környezet Előkészületként meg kellett határozni a használni kívánt programozási környezetet és nyelvet. Mivel az első lépések megvalósításánál a lehetségesként felmerülő, használni kívánt eszközök és módszerek skálája rendkívül széles, ezért elsőként olyan programozási környezet használata lett volna célszerű, amiben minden ötletet gyorsan ki tudok próbálni, hogy az idő ne a zsákutca módszerek és algoritmusok implementálásával menjen el, hanem a jó megoldás felé vezető megoldások felkutatásával. Ezt a megfontolást végül nem vettem figyelembe, hanem tekintettel arra a célkitűzésre, hogy valós-idejű megoldás kidolgozása a cél, a valószínűleg végleges, az ésszerű kereteken belül leggyorsabbnak mondható környezettel kezdtem, a c++ nyelvvel. Az ablakozó fejlesztéshez kényelmes feltételeket jelentő Microsoft Visual Studio nyújtotta szolgáltatásokat használtam fejlesztői környezet gyanánt. Mivel a képfeldolgozási feladatok megoldásaiban a szűrési technikák rendszerint meglehetősen nagy részt vállalnak, a különböző szűrők kipróbálásakor a GIMP ingyenes képfeldolgozó program funkcióit is felhasználtam. Az első próbálkozás egy saját küszöbözési eljárás, valami az ezt követő régiónöveléses szegmentálási algoritmus írása volt. Ez egy 640x480-as képen annyira lassan futott, hogy azonnal másik megoldás felé kellett nézni. Ekkor került szóba többek között az OpenCV elnevezésű, ingyenesen használható, képfeldolgozó eljárásokat széles skáláját összegyűjtő könyvtár is. A szoftverem legfrissebb verzióját végülis erre építve valósítottam meg. Az OpenCV az Intel által indított fejlesztés, amelynek lényege, hogy Intel processzorokra tökéletesen optimalizált módon kínál képfeldolgozóalgoritmus-megvalósításokat, azoknak egyre szélesedő skáláját lefedve. Sok egyéb programozási nyelv között c++ alá is beágyazható dll-ekre fordítható a projekt, és tapasztalataim szerint rendkívül sok fajta algoritmust képes valós-idejű teljesítménnyel megvalósítani. Rendkívül kényelmessé teszi a fejlesztést, hogy kiegészítő szolgáltatásai közé tartozik az ablakkezelés, a képek megjelenítése, a különböző színtér-konverziók implementálása, az egy- és több-csatornás képek kezelése, a képbe történő rajzolás, valamint a kísérletezéshez szükséges csúszkák megvalósítása. 5.4.2 Algoritmusokra vonatkozó tervezési döntések A sebesség kérdését első sorban szem előtt tartva a színtér-konverzió, a küszöbözés, a nyitás-zárás és a súlypontkeresés lépésein keresztül oldom meg a feladatot. Lehetséges lett volna még a konvolúciós szűrők használata, azonban ezek általában élkeresésre és zajsimításra használhatóak, amik jelen esetben nem tűntek jó megoldásnak. Az élkeresést régiónöveléssel kellett volna párosítani, aminek gyorsaságát egyelőre nem próbáltuk ki. A zaj nem jelent nagy problémát a képen, hiszen a felbontásunk általában bőven elegendő, továbbá egy medián szűrő szerű algoritmus például számítási kapacitásban valószínűleg túl nagy kihívást jelentett volna az elképzeléseinkhez képest.
-7-
A hisztogramos, hasonló tulajdonságú pixelek keresése egy alternatív lehetőség lehet, amit még később kivizsgálni tervezek. A Fourier transzformálton keresztüli, frekvenciatartománybeli szűrés a bonyolultsága miatt esik hasonló kategóriába, egyszerűen nem a feladatunk megoldására való.
5.5 Megoldás lépései A jelenlegi fázisában lévő megoldást tehát a színtér-konverzió, a küszöbözés, a bináris nyitászárás, valamint a súlypontkeresés algoritmuscsoportjaival készítettem el. 5.5.1 Színtér-konverzió Ipari körülmények között a megvilágítási tényezők úgy kerülnek kialakításra, hogy azok a számítógépes képfeldolgozás módszereivel a lehető legkönnyebben feldolgozhatóak legyenek. Jelen projektnél azonban olyan környezetben dolgozunk, amelynek megvilágítási viszonyai úgy kerültek kialakításra, hogy azok az emberi szemnek a lehető legkedvezőbbek legyenek. Következik tehát, hogy olyan színkódolási módszerekkel célszerű dolgozni, amelyek matematikái a lehető legnagyobb mértékben közelítik az emberi szem karakterisztikáját. A web-kamerától kapott RGB kódolásnál sokkal jobbnak bizonyult feladatomhoz a HSV / HSI, valamint az L*u*v* kódolás alkalmazása. A cél a tenyér jellegzetességeinek minél könnyebb felismerése. A Hue-színárnyalat és a Saturation-telítettség csatornák segítségével könnyen izolálhatjuk a bőr színt és telítettséget a képen. Az intenzitás ábrázolására használt Value/Intensity skáláknál jobban közelít viszont az L*u*v* kódolásból az L, ami az előző kettőhöz képest egy nem-linearitást eredményező gamma-korrekciót is tartalmaz. Így közelítettük az emberi szem színérzékelését. A feldolgozás során a Hue, Saturation és az L csatornát használtuk. Az OpenCV-ben található olyan függvény, ami egy-egy lépésben megoldja a kívánt színtér-konverziókat, mindezt a valós-idejű feldolgozási tempóval versenyképesen képes teljesíteni. 5.5.2 Küszöbözés A színcsatornákra bontás után a legfontosabb feladatunk azon pontok kiválasztása, amelyek a tenyérhez tartoznak. Ehhez mindhárom csatornán küszöbértékeket vezetünk be, amik felett, ill. alatt azt mondjuk, hogy egy képpont az adott csatornán belül a tenyér jellegzetességét hordozza, vagy sem. A küszöbözés meglehetősen gyors művelet, és nagy eredményeket érhetünk el vele, így fontos elemét képezi eljárásunknak. Egyelőre statikus módon, visszacsatolással, emberi beavatkozással állítjuk be a küszöbözési értékeket. Minden csatornához egy alsó és egy felső küszöböt rendelünk. Ezzel tulajdonképpen egy olyan háromdimenziós szín-koordinátarendszerben, ahol a három tengely a három színcsatorna, egy téglatestet, ún. klasztert jelölünk ki, amin belül eső pontokról azt állítjuk, hogy a tenyérhez tartoznak, az azon kívül eső pontok pedig nem. Eredményül három bináris képet kapunk, ahol a tenyérhez tartozni vélt pontok fehérek, a háttérhez tartozó pontok feketék. A képet a három csatorna egyesítéséből kapjuk, azaz, egy pont az eredményképen akkor fehér, ha mindhárom küszöbözött csatornán fehér. A kép meglehetősen zajos, bár a csúszkák jó beállításával a tenyér képe jól felismerhető, megfelelő háttér és megvilágítás esetén, amely körülményekről később ejtek szót.
-8-
A piros pontok színárnyalatban, a zöldek telítettségben, a kékek fényintenzitásban hasonlítanak a tenyér képpontjaihoz.
5.5.3 Bináris nyitás, zárás A kapott eredménykép meglehetősen zajos. Kétféle zajra tudjuk osztani a problémát. Egyrészt található a képen több-kevesebb olyan pont, ami ugyan hordozza mindhárom csatornán a tenyér színére jellemző jellegzetességeket, ennek ellenére nem a tenyérhez tartozik. Ezek általában pontszerű zajok, pl. a végső felvételen a kar egyes pontjai ilyenek. Ezt azt jelenti, hogy egyszerre felelnek meg színárnyalatban, telítettségben és fényerőben a tenyérre jellemző paramétereknek. A másik zaj a tenyérhez egyébként tartozó olyan pontok, amelyek a szűrt képen úgy tűnik, hogy mégsem tartoznak a tenyérhez (fekete lyukak, rések, bevágások a tenyér képének kontúrjába, vagy annak belsejében). Ezek eltűntetésére, ill. a kép minőségének javítására alkalmaztuk a bináris nyitás és zárás műveletét. A műveletek lényege az erózió és a dilatáció műveleteinek egymás utáni alkalmazása. Az erózió műveletének lényege, hogy a képen található fehér objektumok méretét mindenhol csökkentjük egy pixellel. Ezzel a pozitív jellegű, a mi képünkön egyedülálló fehér pixelekként megjelenő zajok tüntethetőek el. Többször egymás után elvégezve az erózió méretét egyre nagyobb hibák is eltűntethetőek. Az OpenCV függvényhívásakor az erózió függvényének hívásakor a legjobb paraméterezésnek a három pixel nagyságú, kör alakú kernel bizonyult, amely műveletet három és öt közötti alkalommal iteráltuk.
-9-
A kép nyitás-zárás előtt, és után. Jól látszik a pontszerű fehér-zajok eltűnése.
A dilatáció az erózió ellentétes művelete. Lényege a negatív jellegű, a képünkön fekete résekként megjelenő zajok eltűntetése. Az algoritmus végrehajtása során a fekete objektumok méretét mindenhol csökkentjük egy pixellel, ill. egészen pontosan a fehér objektumok méretét növeljük egy pixellel mindenhol. A dilatáció és az erózió műveleteinek egymásutániságával elérhetjük, hogy az objektum mérete ne változzon, miközben a kitöltöttsége növekszik, azaz a fekete és fehér zajok eltűnnek.
Egy ököl képe nyitás-zárás előtt közelről. Jól látszik a fekete zajok eltűntetése. Az ököl legbelseje annyira sötét volt, hogy azt csak még több nyitó-záró művelettel tűntethettük volna el.
A bináris nyitás és zárás egymás után többszöri elvégzésével elértük, hogy a kar tenyérszerű pontjai eltűnjenek, az egész képen valóban csak a tenyérhez tartozó képpontok legyenek fehérek. Elértük azt is, hogy a tenyér kontúrjánál szakadozott, „norvég fjordok” jelleg folytonos, egyenesebb kontúrrá változott, ill. a kisebb rések a tenyér belsejéből kifehéredtek. A csukott ököl esetén egy nagy fekete rés megmaradt, ennek helyzete azonban mozgás közben sem változik, ez nem zaj jellegű jelenség, így a pozíció-meghatározásnál nem zavarja munkánkat.
- 10 -
5.5.4 Súlypontkeresés Rendelkezésre áll tehát egy bináris képünk, ahol csak azok a képpontok fehérek, amik a tenyérhez tartoznak. A felvételeken a tenyér mérete nagyjából stabil, nem nagyon változik, a zajszerű változások pedig a véletlenszerű eloszlásokhoz közelítenek, így a súlypontot nem nagyon befolyásolják, egy-egy képkockán sem. Emiatt döntöttünk úgy, hogy irányítási szempontból első projektünk feladata a súlypont megkeresése. Az OpenCV egyetlen függvényhívásra a nulladik rendű momentumtól kezdve a harmadrendű momentumig kiszámolja nekünk egy képre az x és y irányú momentumokat egyaránt, így a súlypontkeresés (az adott irányú elsőrendű momentum leosztása a nullad rendűvel) nem okozott nagy számításikapacitás-növekedést. A felvételeken a súlypontot jelezni hivatott piros négyzet meglehetősen stabilan helyezkedik el a vágott kép közepén, azaz a mérésünk nem túl zajos, egy kurzor irányítására jelen állapotában is alkalmas. Ezt a fejlesztési fázist azonban még nem kezdtük meg a fejlesztés során.
5.6 Kihívások, felmerült problémák Az első felvett képhez képest több, kisebb korlátozást is be kellett vezetni az első működő megoldás elkészítése érdekében. Kiderült, hogy a világos felületek (ruhák, falak és egyéb környezeti tárgyak), főleg a fehér és sárga jellegű anyagok nagyon hasonlítanak képfeldolgozási szempontból a tenyérre. A kép szegmentálásánál zavaró tényező továbbá az is, hogy ha a tenyéren kívül az arc, a nyak, ill. az alkar is látható a képen. Szűrési algoritmusunk egyelőre nem intelligens, nem alakzat, vagy méret alapján dönt, hanem pusztán a színkódolási tulajdonságait tekinti egy-egy pontnak, így a hasonló színű bőrfelületeket ugyanúgy kiválasztja a képen. További komplikációt jelent a megvilágítás. Nappali felvételeken jól látszik, hogy a tenyér világosabb, mint a környezete, míg éjszakai felvételen, a világítás a többnyire a tenyér mögül érkezik, hiszen ritkán van a laptop háta mögött a fény. Ebben az esetben viszont a tenyér sötétebb, mint a környezete. Ez azt jelenti, hogy más megvilágításoknál más tulajdonságú képpontokat keresünk.
A megvilágítás, a ruházat és a többi bőrfelület jelentősége.
A fent felsorolt komplikációk révén az első felvételeket speciális, azonban nem túl speciális körülmények között készítettük. Viszonylag homogénebb hátteret biztosítottunk, így egy belógó ablak, fali kép, vagy túl fehér fal nem kavart bele a képbe. Ki kellett venni az arcot a képből, valamint az alkart is el kellett tűntetni, így egy hosszú ujjú, fekete póló került a kísérleti alanyra. A megvilágítás kiszámíthatósága és homogenizálása folytán végül egy asztali lámpa került a web-kamera mögé, ami megvilágította a tenyeret a felvétel folyamán. Ilyen, otthon is könnyedén reprodukálható körülmények között gyakorlatilag egérkurzor mozgatására alkalmas jelet hoztunk létre a tenyér mért súlypontjából.
- 11 -
5.7 Továbbfejlesztési tervek Tág értelemben véve tervbe vettük nem csak az egérkurzor irányításához alkalmas megoldás létrehozását, hanem attól független megoldásokat is. A tenyér pozícióján túl az orientációját, a kinyújtott ujjak számát megállapítva egész komplex gesztus-értelmező rendszert hozhatunk létre. Közelebbi fejlesztés a megvilágítástól történő függetlenítés kérdése. El kell tudni választani azt a két esetet, amikor a tenyér sötétebb, ill. világosabb a környezeténél. Törekedni akarunk a tetszőleges háttérválasztás lehetőségének biztosítására is. Feltehetőleg ellenfény (pl. ablak) melletti munka biztosítására nem lesz szükség, mert a legtöbb esetben azért található olyan állása a webkamerának, hogy az ne ablakra nézzen. A viszonylag homogén háttér kritériumától azonban legszívesebben eltekintenénk. Mindez összefüggésben van a legfontosabb fejlesztéssel, a tenyérhez tartozó pixelek kiválasztásának adaptív módjával. A tenyér alakjának, és a kép várhatóan jellemző tulajdonságainak figyelembe vétele mellett egy adaptív vágó-algoritmus kifejlesztése az egyik legfontosabb cél. A folyamatban lévő fejlesztések között szerepel a skeleton (csontvázasítás) algoritmusának implementálása. Egy skeleton – hough transzformáció párosítás stabil implementálása után egészen könnyen tudnánk orientációt számítani, és kinyújtott ujjakat számolni. Az eredmény javítása érdekében felmerült még a „greatest blob” algoritmus alkalmazása is, ami a képen található legnagyobb méretű objektum openCV-ben már implementált algoritmusát alapul véve célozná meg a tenyér jellegű pontok pontosabb megtalálását. Ez azonban egyelőre kidolgozás alatt, hiszen nem biztos, hogy a tenyér a képen a legnagyobb területű objektum. Szintén fejlesztés alatt a területváltozás algoritmikus megfigyelése. A hirtelen területváltozás a tenyér nyitására-zárására utalhat, amit az egérkattintás eseményéhez lehet majd kötni. Kiküszöbölendő zaj azonban a tenyér kamerához történő közelítése, ill. annak távolítása, ami szintén hirtelen területváltozást eredményezhet.
5.8 Eredmény A félév eredménye egy átlagos háztartásban reprodukálható körülmények között elkészített, homogenizált hátterű, megvilágított tenyér mozgása közbeni középpontszámítás. A középpont stabil,
hibája nem elviselhetetlen, a pozíció apró változásainak szűrése azonban még szükséges lehet. Készült egy felvétel is, amin az algoritmus valós időben számítja a tenyér közepét. A következő ábra ebből mutat egy képkockát.
- 12 -
6. Felhasznált irodalom: 1. 2. 3. 4.
http://index.hu/tudomany/rsikillz http://hu.wikipedia.org/wiki/Csontváz http://interaktivtabla.lap.hu Dr. Tanja Schulz (Universität Karlsruhe) – Biosignale und Benutzerschnittstellen c. előadásának témája és diaanyagai. 5. Dr. Vajta László Ipari képfeldolgozás és megjelenítés c. tárgyához kapcsolódó írásos előadásanyagok.
- 13 -