Mozgó alakzatok valósidejű 3D-s rekonstrukciója és megjelenítése
|
|
- Ferenc Gusztáv Jónás
- 8 évvel ezelőtt
- Látták:
Átírás
1 EÖTVÖS LORÁND TUDOMÁNYEGYETEM INFORMATIKAI KAR Mozgó alakzatok valósidejű 3D-s rekonstrukciója és megjelenítése DIPLOMAMUNKA Témavezető: Csetverikov Dmitrij egyetemi tanár Készítette: Hapák József Programtervező informatikus MSc nappali tagozat Szoftvertechnológia szakirány Budapest, 2012
2 A projekt az Európai Unió támogatásával, az Európai Szociális Alap társfinanszírozásával valósul meg (a támogatás száma TÁMOP /B-09/1/KMR ). 1
3 Tartalomjegyzék 1. Bevezetés Dolgozat felépítése A feladat áttekintése A stúdió felépítése A vezérlőszoftver A feladat Tudományos, technikai előzmények GPGPU nvidia CUDA Kernelek Szál hierarchia Memória hierarchia További technológiák Szakirodalmi előzmények INRIA Rhone-Alpes, Montbonnot, Franciaország Max Planck Institut, Saarbrücken, Németország Institute of Computer Science (ICS), Heraklion, Görögország University of Surrey, Guildford, Nagy-Britannia University of Southern California Megoldás áttekintése Képek feltöltése Szegmentálás Vizuális Burok Élsimítás Marching Cubes Textúrázás Árnyéktérképek
4 5. Megvalósítás Fejlesztés során alkalmazott eszközök Programkönyvtár ismertetése Gyakorlati alkalmazás Tesztelés, eredmények Tesztelés Eredmények, további tervek Köszönetnyilvánítás Dolgozat témakörében megjelent publikációk 48 3
5 1. fejezet Bevezetés Napjaink film és játékipara a technológiai fejlődés hatására egyre magasabb minőségű számítógépes grafikai megoldásokat alkalmaz. Ennek a magas szintnek az eléréséhez megfelelő minőségű bemenő adatokra van szükség, amik még napjainkban is nagyrészt emberi munka által kerülnek előállításra. Ennek a módszernek természetesen több szempont szerint is korlátai vannak. Nagy szükség lenne egy teljesen automatikus rekonstrukciós eljárásra, mely a rekonstruálandó időben változó színteret magas minőségben tudja digitalizálni. A feladat bonyolultsága miatt speciális stúdiót igényel. Még napjainkban is kevés ilyen stúdió került felépítésre. Még kevesebb készült kifejezetten tudományos kísérletek és különböző kutatások elvégzése céljából. Hazánkban a Magyar Tudományos Akadémia Számítástechnikai és Automatizálási Kutatóintézetének Geometriai Modellezés és Számítógépes Látás Kutatólaborjában található egy ilyen stúdió. Dolgozatom témája megvizsgálni, hogy lehetséges-e a rögzített, időben változó színtér valósidejű rekonstrukciója. Illetve amennyiben ez kivitelezhetőnek bizonyul, akkor az ezt végrehajtó szoftverkomponenst megvalósítani a stúdió meglévő vezérlőszoftveréhez. Az elért eredmények megkönnyítik a stúdió keretein belül végzett munkát, hiszen már a felvétel készítése és utófeldolgozása előtt betekintést nyerhetünk a várható eredménybe. A felhasználási lehetőségek jelenleg még nem teljesen tisztázottak a film és játékipar, vagy a telekommunikáció is kamatoztathatja a fejlesztés során kidolgozott módszereket. További célunk a felvett a rekonstruált alakzat virtuális világban való elhelyezése, illetve a felvett mozgás más modellre történő átültetése Dolgozat felépítése A dolgozat első felében bemutatjuk a labor által felépített stúdiót, az alkalmazott hardvereket, és a szoftverkörnyezetet. Ezek ismeretében pontosítjuk a megoldandó probléma 4
6 1.1. ábra. A felvétel és a rekonstruált eredmény definicióját. A második részben ismertetjük a dolgozat megértéséhez szükséges alapismereteket. Tisztázzuk a grafikus processzorok programozásakor előforduló fogalmakat. Továbbá áttekintjük a feladat szakterületén már elért eredményeket. Ezután részletezzük magát a megoldás módszerét. Bemutatjuk a megoldás során alkalmazott már meglévő és általunk kidolgozott módszereket. Az ötödik fejezetben összefoglaljuk a konkrét megvalósítás során alkalmazott eszközöket, és bemutatjuk a rendszer használatát. Végezetül néhány szót ejtünk a rendszer teszteléséről, és összefoglaljuk a dolgozat elkészítése során elért eredményeket. 5
7 2. fejezet A feladat áttekintése Ebben a fejezetben részletesen bemutatjuk a studióban alkalmazott hardver eszközöket, és pontosítjuk a megoldandó feladatot 2.1. A stúdió felépítése A Stúdió egy 5 méter átmérőjű, 3 méter magas fémváz, mely zöld színű vászonnal van takarva. [7] A rekonstruálandó tér rögzítését 13 darab a JAI cég által fejlesztett CB-200GE típusú ipari kamera végzi. Ezek közül 12 egyenletesen elosztva helyezkedik el a terem oldalfalán váltakozó magasságban hat kamera fentről, hat pedig lentről rögzíti a stúdió belső terét. Az utolsó kamera középen fent került felfogatásra. A kamerák 1624x1236 felbontású képeket küldenek Bayer kódolásban ábra. A stúdió panorámaképe belülről A kamerák által küldött nagy mennyiségű adat mentéséért összesen 7 számítógép felelős. Egy számítógépet kivéve mindegyikre két kamera csatlakozik. A nagy sávszélesség biztosítása érdekében az adatok különböző merevlemezeken kerülnek tárolásra. A számítógépeken Open SUSE operációs rendszer fut. A későbbi feldolgozás érdekében minden számítógép el van látva egy közepes teljesítményű videokártyával. A valósidejű rekonst- 6
8 rukciót végző PC egy nagyteljesítményű Fermi architektúrás GF110 típusú grafikus processzorral szerelt GeForce 580 GTX videokártyával rendelkezik. Az alkalmazott GPU 512 darab feldolgozó processzort tartalmaz, amelyek 32-esével 16 csoportokba szerveződnek. Az elérhető maximális számítási kapacitás 1500 Gflops. A kamerák és a számítógépek Gigabit Ethernet segítségével kerültek összekötésre. Erre a sávszélességre mind a rögzítés, mind a rekonstrukció folyamán szükség van ábra. A stúdió látványterve A megfelelő minőségű képek előállítása érdekében a stúdió fontos részét képezi a megvilágítás. Túl kevés fény esetén a képek sötétek lesznek. Ha ezt hosszú expozíciós idővel próbáljuk korrigálni, akkor elmosott, részletszegény képeket kaphatunk. Túl erős megvilágítás használata esetén pedig a fényforráshoz közel eső részek telítődhetnek, a távolabbiak pedig sötétek maradnak a fényintenzitás négyzetes csökkenése miatt ábra. A stúdióban található egyik kamera, és a hozzá tartozó fényforrás A stúdió felülről néhány szórt fényforrással van megvilágítva. Ezen kívül minden kamera mellé fel van szerelve egy-egy LED-eket tartalmazó panel, a kamera által rögzített 7
9 tér bevilágítása céljából. Mivel a kamerák körben egyenletesen kerültek elosztásra, ezért adódik, hogy egymás fényforrásait is látják. A szemből világító erős fény elronthatja a felvételek minőségét. A probléma kiküszöbölése érdekében a kamerák két csoportra vannak osztva. Míg az egyik csoport felvételt készít, addig a másik csoport fényforrásai sötétek maradnak. Ennek a váltakozásnak az irányításáért, egy speciális mikrokontrollert tartalmazó vezérlőegység felelős. Ez a vezérlőegység végzi a kamerák szinkronizálását, és lehetővé teszi az egyes fényforrások külön-külön történő vezérlését. Programja számítógép segítségével könnyen módosítható. A kamerák két csoportra bontása minimális időeltolódást eredményez a felvételek között, de ez érdemben nem befolyásolja a rekonstrukció minőségét A vezérlőszoftver A stúdió, mint egy összetett hardverrendszer működtetése bonyolult feladat, saját szoftvert követel meg [10]. A szoftvernek lehetőséget kell adnia a következő feladatok elvégzésére: stúdió kameráinak kalibrálása, a kamerák mikrokontroller segítségével való szinkron működtetése, a hálózatba kapcsolt számítógépek vezérlése, mérési adatok rögzítése, háttérkép készítése, a stúdió fényeinek szabályozása Ezen feladatok elvégzésére egy kényelmes korszerű grafikus felületet biztosít a program (2.4. ábra). Fejlesztése C++ nyelven történt, a grafikus felület pedig a Qt keretrendszer segítségével lett megvalósítva. A szoftver tervezése során igény volt annak egyszerű kiegészíthetőségének a biztosítása, lehetőséget adva a stúdió további funkciókkal való könnyű tovább fejlesztésére. Munkám során a stúdió már meglévő vezérlőszoftverét kellett kibővíteni a valósidejű rekonstrukciót lehetővé tevő komponenssel A feladat A munka célja megvizsgálni, hogy megfelelően megválasztott hardver és szoftver technológiák alkalmazásával lehetséges-e a stúdióban rögzített mozgó 3D-s alakzatok valósidejű rekonstrukciója és megjelenítése. A munka kiinduló pontja a már elkészített 8
10 2.4. ábra. A stúdió vezérlo szoftvere utófeldolgozáson alapuló offline mu ködés volt. Ennek használatával egy tíz másodperces rögzített adatfolyam feldolgozása 30 percet vesz igénybe. Az ido nek a nagy részét a lemezmu veletek teszik ki. A valósideju implementációban az offline mu ködéssel ellentétben nincs szükség a felvételek rögzítésére, a rendelkezésre álló feldolgozási ido t a leheto legjobb mino ség elérése kell fordítani A feladat megoldása jelento s számítási kapacitást igényel, az ezt biztosító grafikus processzorok napjainkra érték el a szükséges teljesítményt. Ezen oknál fogva a problémakör kis irodalommal rendelkezik, és az alkalmazott hardver és szoftvermegoldások is különbözo ek. Az alkalmazott stúdióban szokványos kamerák állnak rendelkezésre, más hardverkörnyezet, például mélységkamerák esetén más szoftveres megoldások is számításba kerülhetnek. A megoldandó feladat lényegesen különbözik a film és játékiparban már rég alkalmazott Motion Capture1 technológiáktól. Hiszen míg ez utóbbiak az alakzatokon elhelyezett markerek segítségével csak a mozgás követésére, úgynevezett ritka rekonstrukcióra alkalmasak, addig esetünkben komplett, su ru geometria létrehozása a cél. A mu velet elvégzéséhez nincs szükség markerek elhelyezésére, így leheto ség nyílik állatok, vagy akár füst rekonstrukciójára is. A munka eredményét egy a stúdiót mu ködteto már elkészült vezérlo programhoz in1 9
11 tegrálható kiegészítésként kellett megvalósítani. A vezérlőprogram már biztosította számunkra a képek rögzítését, és a kamerák kalibrációs adatait, ezekkel a fejlesztés során már nem kellett foglalkozni. További igény volt az eredmények egyszerű megjeleníthetősége a Visualisation Toolkit 2 segítségével
12 3. fejezet Tudományos, technikai előzmények 3.1. GPGPU Napjainkra a számítógépekben található grafikus processzor - főleg a játékfejlesztés jóvoltából - óriási fejlődésen ment keresztül. Ezeknek a sokmagos architektúrával rendelkező processzoroknak a teljesítménye rövid időn belül elérte, később többszörösen meghaladta a központi feldolgozó egységek teljesítményét (3.1. ábra). Igény merült fel, ennek a jelentős számítási kapacitásnak az általános célra történő felhasználására. Ezt a törekvést nevezzük GPGPU-nak (General-Purpose computing on Graphics Processing Units). Kezdetben a problémát hekkeléssel a grafikus futószalag segítségével valósították meg. Ez a megközelítés azonban több nehézséggel is jár. Egyrészt magas szintű ismereteket feltételez a grafikus környezetekkel kapcsolatban, másrészt az egyes problémák grafikus futószalagba való átültetése sem könnyű feladat. Kezdetben a grafikus API-kra épülő, azok kényelmetlenségét elfedő könyvtárak próbálták segíteni a fejlesztők munkáját, mint például a BrookGPU. Ezek elterjedését azonban hamar megakadályozta az egyes gyártó specifikus megoldások megjelenése, mint például az nvidia CUDA és az Ati Stream. Segítségükkel már közvetlenül a videokártya hardverét programozhattuk megkerülve a grafikus API-k miatt fellépő korlátozásokat mind technikai, mind teljesítménybeli téren. Később az ipar igényeire válaszolva elkészült az első gyártó független megoldás is - az OpenCL. Ezt a kiemelkedő teljesítményt a grafikus processzorok a központi feldolgozó egységtől jelentősen eltérő architektúrával valósítják meg. Míg utóbbiak néhány, fejlett önálló munkavégzésre alkalmas feldolgozó magot alkalmaznak, addig a GPU több száz jóval egyszerűbb feldolgozó egységgel rendelkezik. Ezen kívül az egyes részfunkciókra alkalmazott tranzisztorok száma is jelentős különbséget mutat (??. ábra). Míg a CPU-k kialakítása során nagy mennyiséget fordítanak vezérlésre és gyorsítótár kialakítására, addig a grafikus processzorok esetében a feldolgozó magok élveznek prioritást. A feldolgozó egységek nem rendelkeznek önállóan folyamat vezérléssel, csoportokba szerveződve közös 11
13 3.1. ábra. A GPU-k és CPU-k teljesírményének növekedése az évek során (forrás CUDA C Programming Guide) egység felelős az irányításukért. Az architektúra kialakításából adódik, hogy a számítási kapacitás kihasználása csak magas szintű adatpárhuzamosságra alapozó egyszerű folyamatvezérlést tartalmazó algoritmusok esetén van lehetőség. A technológia legnagyobb gyengesége a GPU-val történő kommunikáció. Mivel a videókártya saját nagysebességű fedélzeti memóriával rendelkezik, ezért szükséges feldolgozandó és már feldolgozott adatok mozgatása. Sajnos, ez a folyamat a PCI-Express busz lassúsága miatt meglehetősen költséges. Napjainkban érkeztünk el a személyi számítógépek 3. érájába. Minden nagyobb ipari szereplő fejlesztéseire jellemző a törekvés a két különböző architektúra előnyeinek egyesítésére. A 2011-es évben megjelenő APU-k (Accelarated Processing Units) vegyesen tartalmaznak a GPU, illetve a CPU-ra jellemző feldolgozó egységeket. A magok egy szilicum lapkán való kialakításának az előnye az alacsony fogyasztás, továbbá lehetőség adódik különböző típusú végrehajtó egységek közös gyorsítótárral való összekapcsolására, mely rendkívül hatékony kommunikációt tesz lehetővé. A kezdetben speciális feladatkör elvégzésére kialakított processzorok (esetünkben GPU) központi egységbe (CPU) való visszakerülésének folyamatát wheel of reincarnation nevezzük. A grafikus processzorok által biztosított teljesítmény kihasználása nem egyszerű feladat. Nem lehetséges az ipar által már kidolgozott, bevált módszerek segítségével. Új programozási nyelvekre, a fejlesztést megkönnyítő eszközkészletekre, paradigmákra van 12
14 3.2. ábra. A rekonstrúkció végrehajtására alkalmazott GF110 GPU belső felépítése szükség. Ezen új elvek mentén végzett szoftverfejlesztési munkát nevezzük heterogén programozásnak. Mind grafikus, mind általános számítások futása során a központi egység (CPU) és a grafikus processzor (GPU) egyfajta szerver kliens szerepkörben állnak egymással. A jóval alacsonyabb számítási kapacitással rendelkező CPU-n futó úgynevezett gazdaprogram, egyszerű, főleg adatpárhuzamosságra alapozó feladatokkal bízza meg a nagy teljesítményű GPU-t. A gazdaprogram szokványos programozási nyelvek segítségével készíthető el. Esetünkben ez C++ volt mivel a komponenst beágyazó keretprogram is ezen a nyelven készült. A videokártyák programozása azonban speciális nyelvek, technológiák segítségével valósítható meg, melyek új nyelvi elemeket vezetnek be a hardver hatékony kihasználása érdekében. Ilyen nyelvi elem például a grafikában használatos mátrix, és vektorműveletek, vagy a párhuzamosságot támogató szinkronizációs műveletek. Az általunk a valósidejű rekonstrukcióra használt videokártya programozása a Cuda, DirectCompute, GLSL, HLSL, és az OpenCL technológiák segítségével lehetséges. A DirectCompute és a HLSL csak Windows operációs rendszeren elérhető technológiák, így esetünkben nem voltak alkalmazhatóak. A GLSL az OpenGL grafikus könyvtár saját C szerű programozási nyelve, mellyel a korszerű renderelési futószalagok egyes fázisait programozhatjuk. Ezt a technológiát a ma kapható hardverek széles köre magas szinten támogatja. Általános számítási feladatok 13
15 3.3. ábra. A részegységekre felhasznált tranzisztorok mennyisége különböző architektúrák esetén. elvégzésére az OpenGL-lel való szoros kapcsolata miatt csak nehézkesen alkalmazható. Az OpenCL az utóbbi években jelentősen feltörekvő nyílt technológia, mely lehetővé teszi a sok és többmagos processzorok - legyen az központi feldolgozó egység (CPU), vagy grafikus processzor (GPU) - egy egységes felületen való hatékony kihasználását. Széleskörű támogatottságát a felhasználói programok írásakor kamatoztathatjuk, hiszen az otthoni multimédiás eszközök jelentős hányada támogatja. Jelentősége az utóbbi években az APU-k megjelenésével tovább nőt, hiszen egy egységes felületet nyújt azok teljes mértékű kihasználáshoz, megőrizve a régebbi hardverekkel való kompatibilitást. Felépítése hasonlít az OpenGL grafikus könyvtáréra, amivel magas fokú együttműködésre képes. A hatékony működés érdekében lehetőség van erőforrások megosztására a két technológia között. A CUDA-val ellentétben viszont - a technológia frissességéből adódóan - számottevően kisebb szakirodalom bázissal, a fejlesztést megkönnyítő könyvtárral és eszközzel rendelkezik jelenleg. Az CUDA (Compute Unified Device Architecture) a heterogén programozást lehetővé tevő eszközkészlet az nvidia-tól. Lehetőséget ad a cég által gyártott grafikus processzorok teljesítményének egyszerű kihasználására. Első verziója 2007-ben jelent meg, jelenleg a 4.2-es verziónál tart. A cég a tudományos, és ipari felhasználáshoz külön termékvonalat tart fenn Tesla néven, melyek kifejezetten általános számítások elvégzésére készültek. A piacon való elsősége révén nagyobb felhasználói bázissal, kiforrottabb eszközkészlettel rendelkezik. Az OpenCL-hez hasonlóan képes együttműködni az OpenGL grafikus környezettel. Választásunk végül a CUDA platformra esett annak magasabb színtű támogatottsága miatt, A futószalag minden fázisa, a textúrázás kivételével ezen a nyelven került implementálásra. A megvalósításban kihasználjuk a OpenGL-lel való erőforrás megosztás lehetőségét, és igény esetén a rekonstrukció eredményét, egy már az OpenGL segítségével hatékonyan megjeleníthető Vertex Buffer Objectben adjuk át. A textúrázást a többi fázissal ellentétben GLSL-ben valósítottuk meg. 14
16 3.2. nvidia CUDA Ebben az alfejezetben bemutatjuk a CUDA programozási modelljét, és a hozzá kapcsolódó fogalmakat Kernelek A fejlesztés során a videokártya programozása CUDA C nyelven történik. Ez a C nyelv kiterjesztése, mely lehetővé teszi a programozóknak úgynevezett kernelek írását. A kernelek egyszerű C metódusok, melyek nagy számban futtathatók párhuzamosan a grafikus processzoron. A kerneleket a global kulcsszó segítségével definiálhatjuk. A kernelek végrehajtása szálakban történik. Végrehajtás során minden szál, egy egyedi threadidx értékkel rendelkezik. // Kernel definició g l o b a l void VecAdd( f l o a t * A, f l o a t * B, f l o a t * C) { i n t i = threadidx.x; C[i] = A[i] + B[i]; } i n t main() {... // Kernel hívás N példányban VecAdd<<<1, N>>>(A, B, C); }... Illusztrációként a következő példakód összead két N hosszú vektort A-t és B-t, majd az eredményt eltárolja a C vektorban Szál hierarchia A szálak végrehajtása munkatereken történik. A munkatér minden pontjában végrehajtódik egy kernel példány. Jelenleg a szabvány egy-, két-, illetve háromdimenziós munkaterek használatát teszi lehetővé. Ez egy természetes módot ad vektor, mátrix, és térfogat adatszerkezetek feldolgozására. A végrehajtás során a szál indexe a munkatérben a threadidx környezeti változóból kérdezhető le. A szálak csoportja úgynevezett blokkokat alkot (3.4. ábra). A blokkban résztvevő szálakra igaz, hogy azok végrehajtása egy processzoron belül zajlik. Így lehetőség nyílik a processzor belső memóriája segítségével az adatmegosztásra. A blokkok hálókba szerveződnek. 15
17 3.4. ábra. A CUDA szálhierarchiája (forrás CUDA C Programming Guide) Memória hierarchia A CUDA szálak több különböző memória területet érhetnek el futtatásuk során (3.5. ábra). Mindegyik szál rendelkezik egy privát memória területtel. Itt tárolódnak a futás során használt lokális változók. A szálak által alkotott blokk is rendelkezik egy megosztott memória területtel. Ez a memória terület lehetővé teszi a blokkban található szálak közötti hatékony kommunikációt. Ezen kívül minden szál eléri ugyanazt a globális, konstans, és textúra memóriát. A globális memória egy írható olvasható tár az adatok tárolásra. A konstans memória csak olvasható memória, a gazdaprogram által átadott konstans adatok tárolására használható. Alkalmazása hatékonyabb a globális memóriánál hiszen a benne lévő változatlansága biztosított, így hatékonyabban gyorsítótárazható. 16
18 3.5. ábra. A CUDA memóriahierarchiája (forrás CUDA C Programming Guide) 3.3. További technológiák A Visualization Toolkit (VTK) egy ingyenes, nyílt forráskódú keretrendszer mely számos 3D-s számítógépes grafikai, képfeldolgozó és vizualizációs algoritmust foglal magába. Lehetőséget biztosít különböző típusú bejövő adatok egyszerű módon való vizualizációjára. Könyvtára számos eszközt kínál a vizualizáció interaktívvá tételére. Fejlesztése C++ nyelven történik, de rendelkezik Tcl/TK, Java és Python interfészekkel is. Feladataim közé tartozott a valósidőben rekonstruált adatok VTK-ban történő hatékony megjelenítésének a biztosítása. Gazdaprogram oldalán a matematikai számításokat az OpenCV 1 könyvtár segítségé
19 vel végeztük el. Az OpenCV egy nyílt forráskódú függvénykönyvtár, amely a számítógépes látással kapcsolatos algoritmusokat gyűjti össze. Kialakítása során nagy figyelmet fordítottak, hogy az implementált funkciók valósidejű programok írása esetén is alkalmazhatóak legyenek. Az implementált algoritmusokat a fejlesztők a következő területeken alkalmazhatják: Általános képfeldolgozással kapcsolatos feladatok Kamera kalibráció, 3D sztereo Szegmentálás és felismerés Arcfelismerés Ember-gép interakciók Mozgás követés Robotika 3.4. Szakirodalmi előzmények A 4D rekonstrukciós stúdiók magas kivitelezési költsége, és speciális felhasználási módja miatt viszonylag kevés kifejezetten kutatási célra létrehozott rendszert lehet találni, Magyarországon legjobb tudomásunk szerint a labor által létrehozott az egyetlen. A továbbiakban bemutatunk néhány hasonló Európában és a tengerentúlon található stúdiót INRIA Rhone-Alpes, Montbonnot, Franciaország A GrImage három kutatási terület együttes kezdeményeként jött létre. Célja kiszolgálni a számítógépes grafikával, mesterséges látással és párhuzamos számításokkal kapcsolatos kutatási projekteket, mint például: Marker nélküli valósidejű 3D-s modellezés Nagy erőforrás igényű fizikai szimulációk Nagy erőforrás igényű képszintézis és tudományos vizualizáció Kiterjesztett és virtuális valóság Bemeneti (kamerák) és kimeneti (projektorok) eszközök kalibrációja és szinkronizációja. 18
20 A stúdió kivitelezésének egy részét a 4D View Solution 2 vállalat végezte (3.6. ábra). A 12 színes és 8 fekete-fehér kamera adatainak feldolgozásért 27 számítógép felelős. A számítógépek dual Gigabites hálózat segítségével kerültek összekötésre. Nagyobb számítás igényű feladatok elvégzése esetén lehetőség van további számítógép klaszterek átmeneti csatlakoztatására is ábra. INRIA stúdió és az alkalmazott géppark Max Planck Institut, Saarbrücken, Németország A labor legfőbb célja mozgó emberi alakzatok rekonstrukciója. Magáról a stúdió hardveres felépítéséről kevés információ található. A modelleket első lépésben lézerszkennerek segítségével rekonstruálják. Az így kinyert háromszöghálókat deformálják különböző algoritmusok segítségével videofelvételek alapján. A felvételek rögzítése során nem alkalmaznak markereket. További kutatási területük a rekonstruált animált modellből automatikus csontváz modell előállítása Institute of Computer Science (ICS), Heraklion, Görögország A munkacsoport célja egy olyan többkamerás rendszer kiépítése volt, mely lehetővé teszi az emberi kéz által végzett műveletek rögzítését és feldolgozását. [2] A munka keretein belül egy valósidejű implementáció is elkészítésre került. A megfigyelt terület egy 2 1 m 2 területű asztallap. Az általuk épített hardveres körülmények nagy mértékben hasonlítanak a laborunk stúdiójához. 8 darab Flea2 típusú kamerát alkalmaznak. Az elérhető maximális felbontás másodpercenként 30 képkocka sebesség mellett. A 8 kamera által felvett képet 4 személyi számítógép dolgozza fel. A teljes rekonstrukciós folyamatot a központi gép végzi, egy nvidia Geforce GTX 295 típusú videokártya segítségével a CUDA platformot alkalmazva. Az eljárás során a videókártyán található két grafikus processzorból csak egy kerül alkalmazásra. A
21 3.7. ábra. Institute of Computer Science stúdiója, Görögország rögzített képeket szegmentálják, majd a sziluett képekbo l térfogatmodellt építenek a Vizuális Burok algoritmus segítségével. A valósideju rekonstrukció során nincs leheto ség az elo állított modell simítására University of Surrey, Guildford, Nagy-Britannia A stúdió egy fontos EU-s projekt keretében jött létre. A projekt három évig zajlott. A Surrey Egyetemen kivül további 5 tagja a szakterületben vezeto nek számító egyetemek és vállalatok közül kerültek ki: The Foundry Visionmongers Ltd London, Egyesült Királyság Trinity College Dublin, Írország University of Surrey, Egyesül Királyság Centre of Research and Technology Hellas Informatics and Telematics Institute (CERTH-ITI) Thessaloniki, Görögország Quantic Dream S.A. Párizs, Franciaország BUF Compagnie Párizs, Franciaország A munka eredményeképp új eljárások és intelligens technológiák készültek strukturált 3D-s adatok felépítésére videofelvételekbo l. Az elo állított tartalom mino sége megfelel a 20
22 filmipari és játékipari felhasználás által támasztott magas követelményeknek. A fejlesztések leheto vé tették a felvételek újrahasznosítását, utólag más megvilágítás és nézo pont alkalmazását. A rögzített tartalmat több grafikai és média platformon is feldolgozható tették. A projekt során a következo eredményeket sikerült elérni: Álló és mozgó alakzatok rögzítése és 3D adatstruktúrában való eltárolása. Magas mino ségu adatok rögzítése díszletekro l és színészekro l, hogy leheto vé tegyék más jelenetekben való alkalmazásukat. A színészek arcának és ruhájának magas mino ségben történo rögzítése. Szoftvereszközök fejlesztése az adatok utólagos feldolgozására. Az elért eredmények demonstrálása egy kísérleti produkcióval. Nyílt szabványok létrehozása a 3D-s tartalmak módosításához University of Southern California A tengerentúlon található a Insititute for Creative Technologies Graphics Lab stúdiója, Paul Debevec, a számítógépes grafika elismert szakérto jének vezetésével. Számos kamera és fényforrás alkalmazásával a fotometrikus sztereó segítségével hajtanak végre részlet gazdag rekonstrukciót. Az eljárás alapötlete hogy a különbözo irányú, színu fényforrásokkal megvilágított alakzatok felületének normálvektorai a megvilágítás alapján becsülheto. A különbözo fényforrások és kamerák alapján kinyert normálvektorok összeregisztrálásával felépítheto a keresett 3D-s modell. Mivel a stúdió dinamikus színterek rekonstrukciója végett készült, ezért az alkalmazott fényforrások nagysebességgel ki-be kapcsolhatóak. A stúdió a 3.8 ábrán látható ábra. Dél-Kaliforniai egyetem stúdiója 21
23 4. fejezet Megoldás áttekintése Mivel napjainkban a probléma megoldása által igényelt számítási teljesítményt csak a korszerű grafikus processzorok képesek biztosítani, ezért a megvalósítás során olyan algoritmusokat kellett választanunk, amelyek hatékonyan implementálhatóak sok magos környezetben. Ezeket az algoritmusokat egymás után fűzve kialakításra került egy végrehajtási futószalag (4.1. ábra), mely lehetővé teszi a valósidejű rekonstrukciót. Az eljárás első lépése, amint a vezérlőszoftver megkapja minden kamerától az aktuális képkockát, a képek feltöltése a videokártya memóriájába a további feldolgozás végett. Ezeket a képeket már a kamerák felvételeit fogadó gépek előfeldolgozzák: a Bayer kódolásból [1] RGB színtérbe alakítják, és elvégzik a megfelelő átméretezést is. Ezután a képeket szegmentáljuk elválasztva a stúdió hátterét az előtértől. A szebb eredmény elérése érdekében igény esetén egy simítást is elvégezhetünk. Az eredményül kapott sziluett képekből a Vizuális Burok algoritmussal térfogat modellt állítunk elő. Ezután a Marching Cubes algoritmus alkalmazásával háromszöghálót generálunk, amelyet már a videókártya hatékonyan meg tud megjeleníteni. A pipeline utolsó opcionális lépése a kapott háromszögháló textúrával történő renderelése. Ez a lépés felbomlik úgynevezett shadowmapok (árnyéktérképek) előállítására, és magára a textúrázásra. A futószalag modulárisan került implementálásra. Annak tetszőleges része külön lefuttatható, a részeredmények kinyerhetők. Ezáltal lehetőség nyílik az egyes fázisok más módszerrel való megoldására, a megoldások teljesítményének, hatékonyságának összevetésére. Egyes fázisok opcionálissá tehetők, mint például a textúrázás vagy a sziluettképek simítása. Ezt az igényt szem előtt tartva az egyes fázisokat osztályokba szerveztük. Az egyes implementációknak meg kell valósítani az adott fázis interfészét. Mivel az egyes fázisok nagy mennyiségű adatot dolgoznak fel, ezért a fölösleges adatmozgatásokat minimalizálni kell. Ezért az egyes fázisok közvetlen használják egymás memóriaterületeit a végrehajtás során. 22
24 4.1. ábra. A GPU munkamenet (a szaggatott vonallal jelölt fázisok opcionálisak) 4.1. Képek feltöltése Bár a képek feltöltése során nem történik semmilyen számítási művelet, végrehajtása mégis költséges a PCI-Express busz alacsony áteresztő képessége miatt. A képeket a vezérlőprogramtól egy összefüggő memóriatömbként várjuk. A videokártyában a tárolás egy 3 dimenziós tömbben történik, az egyes kameraképeket egymás mögött eltárolva. Az implementációban a lépés összevonásra került a szegmentálás fázissal Szegmentálás A szegmentálás feladata a beérkező képek szétválasztása háttérre és előtérre. Az eljárás végeredménye egy az eredetivel megegyező méretű bináris kép, melyben a fekete pixelek háttérhez, a fehér pixelek pedig az előtérhez tartoznak. Több különböző elvű algoritmus létezik a probléma megoldására, ezek közül az egyik leghatékonyabb, legjobban párhuzamosítható a háttér alapú szegmentálás. Első lépésként a kalibrált kamerák segítségével rögzítjük az üres stúdiót ezek az úgynevezett háttérképek. A feldolgozás során meghatározzuk az aktuális képkocka pixelei, és a háttérképek közötti abszolút különbséget az RGB szintérben. Ha a különbség átlépi a paraméterként megadott küszöbértéket, akkor a pixel az előtérhez tartozik, egyébként pedig a háttérhez. Jelöljük i-vel az előtér, bg-vel a háttér, s-sel pedig a sziluett kép aktuálisan feldolgozás alatt álló pixelét. Ekkor a szegmentálás a következő formula alapján hajtódik végre. d = i r bg r + i g bg g + i b bg b ahol az r, g, b a megfelelő színcsatornákat jelölik. 23
25 s = { 255 ha d > threshold 0 egyébként Látható, hogy az algoritmus nagyon jól párhuzamosítható sok feldolgozó egységgel rendelkező architektúrákon, mint például a grafikus processzorok, hiszen az egyes pixelek feldolgozása egymástól függetlenül zajlik. Az implementációban a bináris képeket bájtok segítségével ábrázoljuk, 0 értékkel jelöljük a háttér 255-tel az előtér színeit ábra. A feldolgozásra beérkező képek Egy-egy pixel szegmentálását a grafikus processzor egy-egy feldolgozó processzora végzi el. A feldolgozás gyorsítása érdekében az adatokat textúraként, csak olvasható módon érjük el. Ebben az esetben a futtató környezetnek lehetősége van a grafikus processzor textúra mintavételezőire támaszkodni, melyek nagy sebességgel képesek egyszerre több adatot beolvasni és gyorsítótárazni. Mivel az algoritmus magja minden pixelre lefut, ezért műveletigénye a képpontok számában lineáris Vizuális Burok A szegmentált képekből a Vizuális Burok (Visual Hull) [4, 5] nevű eljárással állítunk elő térfogat modellt. A térfogat modell egy 3 dimenziós adatstruktúra, lényegében a 2 dimenziós képek kiterjesztése. Pixelek (picture elements) helyett úgynevezett voxeleket (volumetric pixel) tartalmaznak, amely a reprezentált térfogat egy-egy pontjáról tárolnak 24
26 4.3. ábra. A szegmentálás eredménye információkat. Például orvosi felhasználás terén az emberi szövetek sűrűségértékeit. Esetünkben egy valószínűségi érték kerül tárolásra, mely jellemzi, hogy a rekonstruálandó objektum, milyen valószínűséggel található az adott voxelben. Az eljárás bemenő adatként kalibrált kamerákból származó sziluett képeket vár, tehát ismernünk kell az egyes kamerák egymáshoz képesti orientációját és pozícióját. Az ismert transzformációk alapján az egyes sziluettképeket visszavetíthetjük a rekonstruálandó térbe. A visszavetítés a térből, egy sziluett alapú gúlát metsz ki. Minden kamerára elvégezve a műveletet, megkapjuk a rekonstruálandó tér durva modelljét. Az eljárást működési módszeréből adódóan térfaragásnak (space carving) is nevezik, hiszen iteratívan a sziluettképek mentén kifaragja a rekonstruálandó alakzatot a térből. Az eljárás korlátai közé tartoznak a színtér azon konkáv mélyedései, amelyek nem jelennek meg egyetlen kamera felvételén sem. Például egy bögre belső üreges terét az algoritmus nem képes helyesen rekonstruálni. A gyakorlatban az eljárás végrehajtása során bejárjuk a készítendő modell voxeleit. A voxel térbeli pozícióijának ismeretében, lehetőségünk van annak helyét meghatározni az egyes kamerák terében. Jelöljük R i -vel az i. kamera forgatási, K i -vel a kameramátrixát, Legyen t i a kamera térbeli poziciója. T a térfogatmodell indexteréből a rekonstruálandó térbe átvivő transzformáció. Ekkor a képpont koordinátái a szegmentált képen c i = K i (R i T [x,y,z] T +t i ) ahol x, y, z az aktuálisan feldolgozás alatt álló voxel koordinátái. 25
27 A kapott eredmény segítségével mintavételezzük a sziluettképet. A voxel végeredményben, a mintavételezett értékek minimumát kapja eredményül. v(x,y,z) = min 1..n (tex2d(s i,c i )), ahol n a kamerák száma, S i az aktuális kamerához tartozó sziluettkép, tex2d pedig egy textúra mintavételező függvény ábra. A Vizuális Burok algoritmus Mivel a sziluettből kapott gúla a kamerától való távolság alapján szélesedik, ezért mintavételezési hibák jelentkezhetnek a szegmentált képek mintavételezése során. Ezeknek a hibáknak az elkerülésére a mipmapping algoritmus szolgál. Előfeldolgozási lépésként a textúrából több különböző méretű verziót, úgynevezett réteget állít elő. A mintavételezés során egy, vagy akár több réteget alkalmaz a lehető legjobb eredmény elérése érdekében. Mivel esetünkben az alkamazott textúrák dinamikusan kerülnek előállításra, és a mipmapping algoritmus alkalmazására költséges, annak előfeldolgozási lépése miatt, ezért kompromisszumokat kell kötni. A szegmentált képekre a Vizuális Burok eljárás előtt opcionálisan alkalmazhatunk egy élsimítási fázist. Ezzel valamilyen szinten kiküszöbölhetjük a mintavételezési hibákat, a teljesítmény drasztikus csökkenése nélkül. Az algoritmus futás során a paraméterként megadott méretű térfogatmodellt járja be. Minden voxelben mintavételezés történik az egyes sziluettképekből. Az műveletigény tehát a képek számában, és a térfogatmodell méretében lineáris Élsimítás A Vizuális Burok algoritmusban felmerülő mintavételezési problémák részleges kiküszöbölése végett a szegmentált képeken egy élsimítást hajtunk végre. A valósidejű implementációban ezt egy egyszerű szeparábilis dobozszűrő segítségével valósítjuk meg. Az 26
28 egyes pixelek feldolgozását ebben az esetben is a grafikus processzor egy-egy végrehajtó processzora végzi. A szűrő mérete futásidőben nem módosítható, csak a teljes program újrafordításával. Ez lehetőséget ad a fordítónak, hogy optimalizációkat hajtson végre a generált kódon (ciklusok kibontása) ábra. Az elmosott sziluettképek A szegmentált képeket csak olvasható módon textúraként érjük el. Ez esetben a grafikus processzornak lehetősége van a textúra mintavételezők alkalmazására, mely egyszerre több adatot képes elérni, mindezt gyorsítótárazva. Ez különösen előnyös a simítás szempontjából, hiszen a szűrés folyamán sokszor van szükségünk ugyanazokra az értékekre. Műveletigény szempontjából az algoritmus a képpontok számában lineáris. Az elmosott sziluett képek a 4.5 ábrán látható. A 4.6. ábrán láthatjuk a simítás hatását az eredményre. Bal oldalt nem alkalmaztuk a lehetőséget, míg jobboldalt viszont igen Marching Cubes A Vizuális Burok algoritmus által előállított térfogatmodell a Marching Cubes algoritmus segítségével háromszöghálót állítunk elő [6, 9]. Mivel az eljárás meglehetősen népszerű a térfogatmodellek vizualizációja terén, ezért már több hatékony implementációval rendelkezik. Mi az nvidia SDK-ban található megoldást választottuk. Ennek oka, hogy meglehetősen egyszerű, de hatékony implementáció, és könnyen testre szabható igényeinknek megfelelően. 27
29 4.6. ábra. Simitás alkalmazásának hatása az eredményre. (bal oldalt nincs alkalmazva) A végrehajtás során az algoritmus bejárja a térfogatmodellt. A voxeleket nyolcasával veti össze a megadott küszöbértékkel. Az összehasonlítás eredménye 8 logikai érték, mely a megfelelő voxeleket minősíti aszerint, hogy az objektumban van-e vagy sem. A 8 logikai érték, mint egy bájt segítségével két úgynevezett lookup táblát címzünk. Az első tábla segítségével döntjük el, hogy a 8 voxel által alkotott egységkocka élei közül melyik metszi el az alakzat határvonalát, azaz melyiken helyezkednek el az végeredményt alkotó háromszögháló csúcspontjai. (Lásd 4.7. ábra). A második tábla pedig egy index lista, mely a kapott vertexekből alkotja meg a poligonokat. A csúcspontok végső elhelyezését a voxelek pozicióinak lineáris kombinációjával számítjuk ki a küszöbértéknek megfelelően. Legyen v 0, v 1 a két voxel koordinátiái, f 0, f 1 a voxelekben mért érték, i pedig az aktuális küszöbérték. Ekkor a csúcspont koordinátái: e = (i f 0)v 1 + ( f 1 i)v 0 ( f 1 f 0 ) Az algoritmus végeredményképp vertexek listáját generálja, melyek hármasával egyegy poligont alkotnak. A végeredményt visszaolvashatjuk a videokártya memóriájából egy tömbbe, vagy az OpenGL közreműködést kihasználva egy Vertex Buffer Objectben is eltárolhatjuk a további feldolgozás céljából. 28
30 4.6. Textúrázás 4.7. ábra. A Marching Cubes algoritmus különböző esetei A munka első fázisa a valósidejű geometriai rekonstrukció volt. Mivel ezt sikerült megvalósítani, a generált geometria valósidejű textúrázása következett. Ezzel a problémával kapcsolatban napjainkban még meglehetősen kevés eredmény született. A létező megoldások, is általában speciális feltételek mellett biztosítanak értékelhető eredményt. Ezért a stúdióban tapasztalható körülményekhez saját módszereket dolgoztunk ki. Az offline verzióban alkalmazott textúra atlaszt előállító megoldás nem alkalmazható, annak nagy erőforrás költsége miatt. A valósidejű eredmény elérése érdekében közvetlenül a bejövő képekből kellett megoldanunk a feladatot. A textúrázást a renderelés alatt fragment shaderek segítségével oldottuk meg GLSL nyelv használatával. Egy pixel színének kiszámítása során első lépésben el kell döntenünk, hogy egy adott kamera egyáltalán látja az általa reprezentált térbeli pontot. Ezt a problémát az árnyéktérképek (shadow maps) segítségével oldja meg a program. A kamerákra, jelen esetben mint fényforrásokra tekintve, előállítjuk a megfelelő árnyéktérképeket minden geometriai rekonstrukciós fázis végén. Ez esetben a takarási probléma az árnyékolási problémával analóg módon megoldható. Amely pixel árnyékban van azt a kamera nem látja. A pixel színének meghatározására két módszer került kidolgozásra. Az egyik módszer robusztusabb, minden kamerák által látható pixelhez képes színinformációt rendelni, de az eredménye meglehetősen zajos. A másik megoldás jóval simább életszerűbb képminőséget biztosít, de működéséhez több kamera alkalmazása szükséges. Alapértelmezésben ez utóbbi módszert alkalmazzuk, de ha a textúrázás nem sikerülne visszaváltunk az elsőre. Mindkét esetben a láthatósági problémát az árnyéktérképek segítségével oldjuk meg. Az első módszer kiszámítja a textúrázandó felület normálvektora, és a kamera irányvektora által bezárt szöget. Egy maximumkereséssel eldöntjük, melyik kamera látja legnagyobb szögből az adott pontot, majd a pixel színének mintavételezését az ehhez tartozó 29
31 4.8. ábra. A voxelek, és a csúcspontok indexei bejövő képből végezzük. Az algoritmus előnye a robusztusság, azaz minden esetben működik, ha az adott pontot legalább egy kamera látja. Hátránya a meglehetősen zajos kép. Ezt a kamerák közötti éles váltások okozzák (4.10. ábra). Sokkal egyenletesebb eredményt kapunk, ha a textúrázást annak a kamerának a képe alapján végezzük, amelynek irányvektora aktuális nézőpontunkhoz képest a lehető legkisebb szöget zár be. Ezt használja ki a második módszer. Első lépésként, még a renderelés megkezdése előtt CPU oldalon kiszámoljuk a saját és a kamerák nézeti irányvektora által bezárt szöget. A takarási probléma miatt sajnos csak pixel szinten tudjuk meghatározni, hogy mely három kamera a legmegfelelőbb a mintavételezés szempontjából. A művelet gyorsítása érdekében sorba rendezzük a kamerákat a bezárt szög alapján. Ezt a sorrendet küldjük el a fragment shadernek. A shader a takarási információkat is figyelembe véve megpróbálja kiválasztani a három legmegfelelőbb kamerát. Ha sikerül, akkor a kamerák nézeti irányvektorában, mint bázisban felírjuk a mi nézeti irányvektorunkat. Ez a művelet egy mátrix szorzással elvégezhető. A kapott együtthatókat, mint súlyokat használva súlyozzuk az egyes kamerák képéből mintavételezett színinformációkat. Az eredmény lesz a pixel végleges színe (4.11. ábra. A piros színnel jelöltük az eljárás alkalmazásával nem feltextúrázható pixeleket) Ha nem sikerülne három megfelelő kamerát találni, akkor visszaállunk az első módszerre. Ez csak nagyon kevés kamera alkalmazása esetén fordul elő, illetve ha a felület eleve nem látható (4.12. ábra). A textúrázás a többi lépéshez képest aszinkron dolgozik. Végrehajtása a megjelenítő 30
32 Algorithm 1 Textúrázás Require: n: kamerák száma, I i, i [1..n]: beérkező képek, P i,c i, i [1..n]: a kamerák projekciós mátrixai, és nézeti irányuk, P,v: projekciós mátrix, aktuális nézeti irányunk Ensure: I out : eredmény kép for all pixel u I out do /* A kamerák, és az aktuális nézeti irányunk közötti szögek kiszámítása */ γ i := cos 1 ( vt c i v c i ), i [1..n] /* A legjobb 3 kamera kiválasztása */ i 1,i 2,i 3 := argmin i [1..n] (γ i ) /* Nézeti irányokból előállítjuk a bázist */ B := [c i1,c i2,c i3 ] /* Súlyok kiszámítása */ w := B 1 v /* Súlyok normalizálása */ w := w w[1]+w[2]+w[3] /* A képpontnak megfelelő térbeli pont meghatározása */ X := backproject P (u) u i j := P i j X, j = 1,2,3 /* A pixel színének meghatározása */ I out (u) := w[1]i i1 (u i1 ) + w[2]i i2 (u i2 ) + w[3]i i3 (u i3 ) end for 31
33 4.9. ábra. A generált háromszögháló VTK-ban ablak minden újrarajzolásakor megtörténik. A többi fázis az árnyéktérképek generálásig bezárólag viszont csak új képek érkezésekor, azaz új geometriai modell létrehozásakor hajtódik végre Árnyéktérképek A shadowmapping (árnyéktérképek) algoritmus, egy gyakran használt gyors eljárás valósidejű árnyékok létrehozására. [8] Az eredeti algoritmus irányított, illetve fényszórószerű fényforrásokkal dolgozik, de többszöri alkalmazással pontszerű fényforrások esetén is alkalmazható. Az eljárás a mélységbuffer (z-buffer) segítségével határozza meg az árnyékban lévő részeket. Az első fázisban a fényforrás szemszögéből lerendereli a jelenetet. Közben a mélységbuffert egy speciális textúrába, úgynevezett árnyéktérképbe (shadowmap) mentve. A textúra texelei a fényforrás és a tér egyes pontjai közötti távolságot tartalmazzák. A második fázisban ezt a textúrát a fényforrásnak megfelelő vetítéssel alkalmazzuk a jelenetre. Minden fragmentre összevetjük a textúrából mintavételezett távolság értéket a vetítés által megadott távolság értékkel. Ha utóbbi érték nagyobb akkor az adott fragment árnyékban van, egyébként pedig nem. Az implementáció során a teljesítmény növelése érdekében speciális shader programokat alkalmaztunk, amelyek az árnyéktérképek számítása során csak a mélységértékek 32
34 4.10. ábra. Az első textúrázási módszer eredménye meghatározásához szükséges műveleteket végzik el. 33
35 4.11. ábra. Az második textúrázási módszer eredménye ábra. A textúrázási módszerek összevonása 34
36 4.13. ábra. A textúrázott eredmény VTK-ban ábra. Árnyékszámítás a generált modellből 35
37 5. fejezet Megvalósítás 5.1. Fejlesztés során alkalmazott eszközök A működést vezérlő gazdaprogram fejlesztése C++ nyelven történt NetBeans fejlesztő környezet segítségével. Az alkalmazott fordítóprogram a g++ volt. A számításokat elvégző algoritmusokat CUDA C-ben implementáltunk. A textúrázási fázist, annak jellegéből adódóan az OpenGL grafikus környezet, és annak GSLS shadernyelve segítségével valósítottuk meg. A CUDA SDK-ból az akkor elérhető legfrissebb 3.2-es változat került felhasználásra. A forrásállományok kezelését a Subversion verziókezelő rendszer könnyítette meg. Az elkészült eredményeket VTK segítségével jelenítettük meg. A gazdaprogramon belül felmerülő matematikai számításokat az OpenCV könyvtárral végeztük el. A CUDA SDK képességeit a Thrust könyvtárral egészítettük ki. A Thrust, egy ingyenes nyílt forráskódú template könyvtár CUDA alapú alkalmazásokhoz. Magas szintű interfésze a C++ Standart Template Library (STL) számos szolgáltatását valósítja meg. Kezdetben külön kellett telepíteni a CUDA könyvtártól függetlenül, azonban annak 4.0-s verziójától kezdve hivatalosan is a része lett Programkönyvtár ismertetése A fejlesztés során a rekonstrukciós algoritmusok egy programkönyvtárként kerültek implementálásra. Felhasználásával bármilyen programban könnyen elvégezhetjük a valósidejű rekonstrukciót. A kódbázis jelentős része a valósidejű implementáció megvalósítása során készült, csupán néhány metódus került felhasználásra az offline verzióból. A futószalag egyes elemei végrehajtó programrészletek egy-egy osztályban kerültek megvalósításra. Az egyes fázisok egymás interfészein kerülnek összekapcsolásra. A kód jobb áttekinthetősége érdekében az adott lépést megvalósító osztály, és a CUDA nyelven írt algoritmus külön fordítási egységbe került. A továbbiakban ismertetjük az egyes fázisok megvalósításának részleteit. 36
38 A szegmentálási algoritmusok interfészét a CSilhoutteSource absztrakt osztály biztosítja. Metódusai segítségével beállíthatjuk a működéshez szükséges paramétereket. Az aktuális küszöbérték módosítására és lekérdezésére a setthreshold és getthreshold függvényeket alkalmazhatjuk. Az alkalmazandó háttérképek beállítására a setbackgrounds metódus szolgál. Paraméterként egy bájttömböt vár, melyben a képek RGB kódolásban folytonosan egymás mögött helyezkednek el. Az aktuálisan szegmentálandó képek tömbjére mutató pointert a setimageptrs metódus segítségével állíthatjuk be. A szegmentálás végrehajtását az update metódus váltja ki. Az eredmény egy 3D-s CUDA bufferbe kerül. A szegmentálás egy háttéralapú változatát a CCudaSilhouetteSource osztály valósítja meg. Létrehozáskor meg kell adnunk a feldolgozandó képek méreteit és számát. Az update metódus lefuttatásának hatására a képek feltöltésre kerülnek, majd meghívásra kerül a szegmentálást végző kernel. A művelet egy 3D-s munkatér felett kerül végrehajtásra. Az első két koordináta a feldolgozandó kép pixelét, míg a harmadik koordináta magát a képet választja ki. A munkatér pontjaiban lefutó kernel kódja a következő: g l o b a l void segmentationkernel(cudapitchedptr silhouettebuffer, cudapitchedptr imagebuffer, cudapitchedptr backgroundbuffer, i n t threshold) { uchar* silptr = (uchar*)silhouettebuffer.ptr ; // A munkatéren belüli koordináták lekérdezése i n t i = blockidx.x; i n t j = blockidx.y; i n t k = threadidx.z; // A CUDA buffereken belüli indexek meghatározása s i z e _ t silpitch = silhouettebuffer.pitch ; s i z e _ t silslice = silpitch * silhouettebuffer.ysize ; i n t silidx = k*silslice + j*silpitch + i ; s i z e _ t imgpitch = imagebuffer.pitch ; s i z e _ t imgslice = imgpitch * imagebuffer.ysize ; i n t imgidx = k*imgslice + j*imgpitch + 3*i ; s i z e _ t bgpitch = backgroundbuffer.pitch ; s i z e _ t bgslice = bgpitch * backgroundbuffer.ysize ; i n t bgidx = k*bgslice + j*bgpitch + 3*i ; // A szegmentálás i n t diff = abs(fetchimg(imgidx + 0) - fetchbg(bgidx + 0)) + abs(fetchimg(imgidx + 1) - fetchbg(bgidx + 1)) + abs(fetchimg(imgidx + 2) - fetchbg(bgidx + 2)); 37
39 uchar res = (diff<threshold)?0:255 ; } silptr[silidx] = res ; Textúrázás alkalmazása esetén a CCudaSilhouetteTextureSource osztályt kell használunk, mely a szegmentálás elvégzése mellett biztosítja az textúrázási fázis számára a megfelelő adatokat. A futószalag további algoritmusainak a rekonstrukció elvégzéséhez szüksége van a kamerák pontos kalibrációs adataira. Ezen adatok egyszerű kezeléséért a CCameraTransformGroup osztály felelős. A kalibrációs adatok a kamerák natív felbontása mellett kerültek meghatározásra. Mivel a valósidejű rekonstrukció során különböző méretű feldolgozandó képeket használhatunk, ezért szükség van az adatok korrekciójára. A megvalósítás biztosítja ennek a műveletnek az elvégzését. Lekérdezhető továbbá a rekonstruálandó 3Ds tér befoglaló téglatestének koordinátái is. A térfogatmodellt előállító algoritmusokat a CVolumeSource absztrakt osztály fogja össze. Optimalizációs okokból megkötés, hogy az előállítandó modell mérete csak kettő hatvány lehet. Egy Vizuális Burok algoritmus használó megvalósítás a CCudaVolume- Source osztály. Létrehozáskor meg kell adni, a használandó CSilhouetteSource és CCameraTransformGroup típusnak megfelelő objektumokat, illetve a előállítandó térfogatmodell méretét. Az update metódus hívása során automatikusan frissíti a hozzá kapcsolódó CSillhouetteSource objektum állapotát is. Ez a működés jellemző a végrehajtási futószalag összes fázisára is, így a rekonstrukció során elég csak az utolsó lépés frissítéséről gondoskodni. Az alkalmazott munkatér a térfogatmodellből adódóan természetes 3 dimenziós. Az aktuális szál indexei megfelelnek a térfogatmodell koordinátáinak. A kamera transzformációs mátrixainak segítségével a koordinátákat a sziluettképek terébe vetítjük. A voxel értéke a sziluettképekből mintavételezett értékek minimuma lesz. A műveletet elvégző kernel a következő: f l o a t xf, yf, zf // A voxel koordinátáinak meghatározása xf, yf, zf változókba //... volrow[x] = 0xFF; // vetítés minden sziluett képre f o r ( i n t i = 0; i < img_depth; ++i) { uint sp = 3 * 4 * i; 38
Hatékony eljárások mozgó objektumok valósidejű 3D-s rekonstrukciójához GPU segítségével
Eötvös Loránd Tudományegyetem Informatikai Kar Hatékony eljárások mozgó objektumok valósidejű 3D-s rekonstrukciójához GPU segítségével Tudományos diákköri dolgozat Témavezető: Csetverikov Dmitrij egyetemi
OpenCL alapú eszközök verifikációja és validációja a gyakorlatban
OpenCL alapú eszközök verifikációja és validációja a gyakorlatban Fekete Tamás 2015. December 3. Szoftver verifikáció és validáció tantárgy Áttekintés Miért és mennyire fontos a megfelelő validáció és
OpenCL - The open standard for parallel programming of heterogeneous systems
OpenCL - The open standard for parallel programming of heterogeneous systems GPU-k általános számításokhoz GPU Graphics Processing Unit Képalkotás: sok, általában egyszerű és független művelet < 2006:
Grafikus csővezeték 1 / 44
Grafikus csővezeték 1 / 44 Grafikus csővezeték Vertex feldolgozás A vertexek egyenként a képernyő térbe vannak transzformálva Primitív feldolgozás A vertexek primitívekbe vannak szervezve Raszterizálás
(Solid modeling, Geometric modeling) Testmodell: egy létező vagy elképzelt objektum digitális reprezentációja.
Testmodellezés Testmodellezés (Solid modeling, Geometric modeling) Testmodell: egy létező vagy elképzelt objektum digitális reprezentációja. A tervezés (modellezés) során megadjuk a objektum geometria
A CUDA előnyei: - Elszórt memória olvasás (az adatok a memória bármely területéről olvashatóak) PC-Vilag.hu CUDA, a jövő technológiája?!
A CUDA (Compute Unified Device Architecture) egy párhuzamos számításokat használó architektúra, amelyet az NVIDIA fejlesztett ki. A CUDA valójában egy számoló egység az NVIDIA GPU-n (Graphic Processing
Videókártya - CUDA kompatibilitás: CUDA weboldal: Példaterületek:
Hasznos weboldalak Videókártya - CUDA kompatibilitás: https://developer.nvidia.com/cuda-gpus CUDA weboldal: https://developer.nvidia.com/cuda-zone Példaterületek: http://www.nvidia.com/object/imaging_comp
GPU-Accelerated Collocation Pattern Discovery
GPU-Accelerated Collocation Pattern Discovery Térbeli együttes előfordulási minták GPU-val gyorsított felismerése Gyenes Csilla Sallai Levente Szabó Andrea Eötvös Loránd Tudományegyetem Informatikai Kar
Podoski Péter és Zabb László
Podoski Péter és Zabb László Bevezető Algoritmus-vizualizáció témakörében végeztünk kutatásokat és fejlesztéseket Felmértük a manapság ismert eszközök előnyeit és hiányosságait Kidolgoztunk egy saját megjelenítő
GPGPU alapok. GPGPU alapok Grafikus kártyák evolúciója GPU programozás sajátosságai
GPGPU alapok GPGPU alapok Grafikus kártyák evolúciója GPU programozás sajátosságai Szenasi.sandor@nik.uni-obuda.hu GPGPU alapok GPGPU alapok Grafikus kártyák evolúciója GPU programozás sajátosságai Szenasi.sandor@nik.uni-obuda.hu
Párhuzamos és Grid rendszerek
Párhuzamos és Grid rendszerek (10. ea) GPGPU Szeberényi Imre BME IIT Az ábrák egy része az NVIDIA oktató anyagaiból és dokumentációiból származik. Párhuzamos és Grid rendszerek BME-IIT
Számítógép felépítése
Alaplap, processzor Számítógép felépítése Az alaplap A számítógép teljesítményét alapvetően a CPU és belső busz sebessége (a belső kommunikáció sebessége), a memória mérete és típusa, a merevlemez sebessége
Készítette: Trosztel Mátyás Konzulens: Hajós Gergely
Készítette: Trosztel Mátyás Konzulens: Hajós Gergely Monte Carlo Markov Chain MCMC során egy megfelelően konstruált Markov-lánc segítségével mintákat generálunk. Ezek eloszlása követi a céleloszlást. A
SZE, Doktori Iskola. Számítógépes grafikai algoritmusok. Összeállította: Dr. Gáspár Csaba. Felületmegjelenítés
Felületmegjelenítés Megjelenítés paramétervonalakkal Drótvázas megjelenítés Megjelenítés takarással Triviális hátsólap eldobás A z-puffer algoritmus Megvilágítás és árnyalás Megjelenítés paramétervonalakkal
OPENCV TELEPÍTÉSE SZÁMÍTÓGÉPES LÁTÁS ÉS KÉPFELDOLGOZÁS. Tanács Attila Képfeldolgozás és Számítógépes Grafika Tanszék Szegedi Tudományegyetem
OPENCV TELEPÍTÉSE SZÁMÍTÓGÉPES LÁTÁS ÉS KÉPFELDOLGOZÁS Tanács Attila Képfeldolgozás és Számítógépes Grafika Tanszék Szegedi Tudományegyetem OpenCV Nyílt forráskódú szoftver (BSD licensz) Számítógépes látás,
Számítógépes látás alapjai
Számítógépes látás alapjai Csetverikov Dmitrij, Hajder Levente Eötvös Lóránd Egyetem, Informatikai Kar Csetverikov, Hajder (ELTE Informatikai Kar) Számítógépes látás 1 / 23 Rekonstrukció speciális hardverekkel
Láthatósági kérdések
Láthatósági kérdések Láthatósági algoritmusok Adott térbeli objektum és adott nézőpont esetén el kell döntenünk, hogy mi látható az adott alakzatból a nézőpontból, vagy irányából nézve. Az algoritmusok
Nagy pontosságú 3D szkenner
Tartalom T-model Komponensek Előzmények Know-how Fejlesztés Pilot projektek Felhasználási lehetőségek 1 T-model: nagy pontosságú aktív triangulációs 3D lézerszkenner A 3D szkennert valóságos tárgyak 3D
Információ megjelenítés Számítógépes ábrázolás. Dr. Iványi Péter
Információ megjelenítés Számítógépes ábrázolás Dr. Iványi Péter (adat szerkezet) float x,y,z,w; float r,g,b,a; } vertex; glcolor3f(0, 0.5, 0); glvertex2i(11, 31); glvertex2i(37, 71); glcolor3f(0.5, 0,
Operációs rendszerek. Az NT folyamatok kezelése
Operációs rendszerek Az NT folyamatok kezelése Folyamatok logikai felépítése A folyamat modell: egy adott program kódját végrehajtó szál(ak)ból és, a szál(ak) által lefoglalt erőforrásokból állnak. Folyamatok
Autóipari beágyazott rendszerek. Komponens és rendszer integráció
Autóipari beágyazott rendszerek és rendszer integráció 1 Magas szintű fejlesztési folyamat SW architektúra modellezés Modell (VFB) Magas szintű modellezés komponensek portok interfészek adattípusok meghatározása
SZENZORFÚZIÓS ELJÁRÁSOK KIDOLGOZÁSA AUTONÓM JÁRMŰVEK PÁLYAKÖVETÉSÉRE ÉS IRÁNYÍTÁSÁRA
infokommunikációs technológiák SZENZORFÚZIÓS ELJÁRÁSOK KIDOLGOZÁSA AUTONÓM JÁRMŰVEK PÁLYAKÖVETÉSÉRE ÉS IRÁNYÍTÁSÁRA BEVEZETŐ A KUTATÁS CÉLJA Autonóm járművek és robotok esetén elsődleges feladat a robotok
Pontfelhő létrehozás és használat Regard3D és CloudCompare nyílt forráskódú szoftverekkel. dr. Siki Zoltán
Pontfelhő létrehozás és használat Regard3D és CloudCompare nyílt forráskódú szoftverekkel dr. Siki Zoltán siki.zoltan@epito.bme.hu Regard3D Nyílt forráskódú SfM (Structure from Motion) Fényképekből 3D
Csoportos üzenetszórás optimalizálása klaszter rendszerekben
Csoportos üzenetszórás optimalizálása klaszter rendszerekben Készítette: Juhász Sándor Csikvári András Budapesti Műszaki és Gazdaságtudományi Egyetem Villamosmérnöki és Informatikai Kar Automatizálási
EEE Kutatólaboratórium MTA-SZTAKI Magyar Tudományos Akadémia
DElosztott I S T R I B U T EEsemények D EV E N T S A NElemzé A L Y S I S se R E SKutatólaboratór E A R C H L A B O R A T Oium R Y L I D A R B a s e d S u r v e i l l a n c e Városi LIDAR adathalmaz szegmentációja
Már megismert fogalmak áttekintése
Interfészek szenasi.sandor@nik.bmf.hu PPT 2007/2008 tavasz http://nik.bmf.hu/ppt 1 Témakörök Polimorfizmus áttekintése Interfészek Interfészek kiterjesztése Eseménykezelési módszerek 2 Már megismert fogalmak
3D számítógépes geometria és alakzatrekonstrukció
3D számítógépes geometria és alakzatrekonstrukció 14. Digitális Alakzatrekonstrukció - Bevezetés http://cg.iit.bme.hu/portal/node/312 https://www.vik.bme.hu/kepzes/targyak/viiima01 Dr. Várady Tamás, Dr.
Grafikus folyamatmonitorizálás
Grafikus folyamatmonitorizálás 1. A gyakorlat célja Ipari folyamatok irányítását megvalósító program alapjának megismerése, fejlesztése, lassú folyamatok grafikus monitorizálásának megvalósítása. 2. Elméleti
KÉPFELDOLGOZÓ ALGORITMUSOK FEJLESZTÉSE GRAFIKUS HARDVER KÖRNYEZETBEN
KÉPFELDOLGOZÓ ALGORITMUSOK FEJLESZTÉSE GRAFIKUS HARDVER KÖRNYEZETBEN Takács Gábor Konzulens: Vajda Ferenc PhD, adjunktus 1 TARTALOMJEGYZÉK: Budapesti Műszaki és Gazdaságtudományi Egyetem A kutatási projekt
Utolsó módosítás:
Utolsó módosítás: 2011. 09. 08. 1 A tantárggyal kapcsolatos adminisztratív kérdésekkel Micskei Zoltánt keressétek. 2 3 4 5 6 7 8 9 10 11 12 13 14 Erősen buzzword-fertőzött terület, manapság mindent szeretnek
1. Bevezetés 1. Köszönetnyilvánítás 1. 2. A számítógépes játékfejlesztésről 3
1. Bevezetés 1 Köszönetnyilvánítás 1 2. A számítógépes játékfejlesztésről 3 2.1. Néhány tanács játékfejlesztőknek 3 2.2. Hogyan fogjunk saját játék írásához? 4 2.3. A számítógépes játék főbb elemei 9 3.
Transzformációk. Grafikus játékok fejlesztése Szécsi László 2013.02.26. t05-transform
Transzformációk Grafikus játékok fejlesztése Szécsi László 2013.02.26. t05-transform Koordinátarendszerek: modelltér Koordinátarendszerek: világtér Koordinátarendszerek: kameratér up right z eye ahead
Párhuzamos programozási platformok
Párhuzamos programozási platformok Parallel számítógép részei Hardver Több processzor Több memória Kapcsolatot biztosító hálózat Rendszer szoftver Párhuzamos operációs rendszer Konkurenciát biztosító programozási
Összeállította Horváth László egyetemi tanár
Óbudai Egyetem Neumann János Informatikai Kar Intelligens Mérnöki Rendszerek Intézet Intelligens Mérnöki Rendszerek Szakirány a Mérnök informatikus alapszakon Összeállította Horváth László Budapest, 2011
Képfeldolgozás Szegmentálás Osztályozás Képfelismerés Térbeli rekonstrukció
Mesterséges látás Miről lesz szó? objektumok Bevezetés objektumok A mesterséges látás jelenlegi, technikai eszközökön alapuló világunkban gyakorlatilag azonos a számítógépes képfeldolgozással. Számítógépes
Használati alapú és modell alapú tesztelés kombinálása szolgáltatásorientált architektúrák teszteléséhez az ipari gyakorlatban
Használati alapú és modell alapú tesztelés kombinálása szolgáltatásorientált architektúrák teszteléséhez az ipari gyakorlatban Nagy Attila Mátyás 2016.12.07. Áttekintés Bevezetés Megközelítés Pilot tanulmányok
Informatika érettségi vizsga
Informatika 11/L/BJ Informatika érettségi vizsga ÍRÁSBELI GYAKORLATI VIZSGA (180 PERC - 120 PONT) SZÓBELI SZÓBELI VIZSGA (30 PERC FELKÉSZÜLÉS 10 PERC FELELET - 30 PONT) Szövegszerkesztés (40 pont) Prezentáció-készítés
Az MTA Cloud a tudományos alkalmazások támogatására. Kacsuk Péter MTA SZTAKI
Az MTA Cloud a tudományos alkalmazások támogatására Kacsuk Péter MTA SZTAKI Kacsuk.Peter@sztaki.mta.hu Tudományos alkalmazások és skálázhatóság Kétféle skálázhatóság: o Vertikális: dinamikusan változik
V. Félév Információs rendszerek tervezése Komplex információs rendszerek tervezése dr. Illyés László - adjunktus
V. Félév Információs rendszerek tervezése Komplex információs rendszerek tervezése dr. Illyés László - adjunktus 1 Az előadás tartalma A GI helye az informatikában Az előadás tartalmának magyarázata A
Tartalomjegyzék. Előszó... 10
Előszó... 10 1. Bevezetés a Symbian operációs rendszerbe... 11 1.1. Az operációs rendszer múltja...11 1.2. Az okos telefonok képességei...12 1.3. A Symbian felépítése...15 1.4. A könyv tartalma...17 2.
Számítógépek felépítése
Számítógépek felépítése Emil Vatai 2014-2015 Emil Vatai Számítógépek felépítése 2014-2015 1 / 14 Outline 1 Alap fogalmak Bit, Byte, Word 2 Számítógép részei A processzor részei Processzor architektúrák
Párhuzamos programozási platformok
Párhuzamos programozási platformok Parallel számítógép részei Hardver Több processzor Több memória Kapcsolatot biztosító hálózat Rendszer szoftver Párhuzamos operációs rendszer Konkurenciát biztosító programozási
Iman 3.0 szoftverdokumentáció
Melléklet: Az iman3 program előzetes leírása. Iman 3.0 szoftverdokumentáció Tartalomjegyzék 1. Az Iman rendszer...2 1.1. Modulok...2 1.2. Modulok részletes leírása...2 1.2.1. Iman.exe...2 1.2.2. Interpreter.dll...3
NETinv. Új generációs informatikai és kommunikációs megoldások
Új generációs informatikai és kommunikációs megoldások NETinv távközlési hálózatok informatikai hálózatok kutatás és fejlesztés gazdaságos üzemeltetés NETinv 1.4.2 Távközlési szolgáltatók és nagyvállatok
Interfészek. PPT 2007/2008 tavasz.
Interfészek szenasi.sandor@nik.bmf.hu PPT 2007/2008 tavasz http://nik.bmf.hu/ppt 1 Témakörök Polimorfizmus áttekintése Interfészek Interfészek kiterjesztése 2 Már megismert fogalmak áttekintése Objektumorientált
Multimédiás adatbázisok
Multimédiás adatbázisok Multimédiás adatbázis kezelő Olyan adatbázis kezelő, mely támogatja multimédiás adatok (dokumentum, kép, hang, videó) tárolását, módosítását és visszakeresését Minimális elvárás
Diplomamunka. Miskolci Egyetem. GPGPU technológia kriptográfiai alkalmazása. Készítette: Csikó Richárd VIJFZK mérnök informatikus
Diplomamunka Miskolci Egyetem GPGPU technológia kriptográfiai alkalmazása Készítette: Csikó Richárd VIJFZK mérnök informatikus Témavezető: Dr. Kovács László Miskolc, 2014 Köszönetnyilvánítás Ezúton szeretnék
Tárgy. Forgóasztal. Lézer. Kamera 3D REKONSTRUKCIÓ LÉZERES LETAPOGATÁSSAL
3D REKONSTRUKCIÓ LÉZERES LETAPOGATÁSSAL. Bevezetés A lézeres letapogatás a ma elérhet legpontosabb 3D-s rekonstrukciót teszi lehet vé. Alapelve roppant egyszer : egy lézeres csíkkal megvilágítjuk a tárgyat.
Transzformációk. Szécsi László
Transzformációk Szécsi László A feladat Adott a 3D modell háromszögek csúcspontjai [modellezési koordináták] Háromszögkitöltő algoritmus pixeleket színez be [viewport koordináták] A feladat: számítsuk
IT - Alapismeretek. Feladatgyűjtemény
IT - Alapismeretek Feladatgyűjtemény Feladatok PowerPoint 2000 1. FELADAT TÖRTÉNETI ÁTTEKINTÉS Pótolja a hiányzó neveket, kifejezéseket! Az első négyműveletes számológépet... készítette. A tárolt program
A LEGO Mindstorms EV3 programozása
A LEGO Mindstorms EV3 programozása 1. A fejlesztői környezet bemutatása 12. Az MPU6050 gyorsulás- és szögsebességmérő szenzor Orosz Péter 1 Felhasznált irodalom LEGO MINDSTORMS EV3: Felhasználói útmutató
A Java EE 5 plattform
A Java EE 5 platform Ficsor Lajos Általános Informatikai Tanszék Miskolci Egyetem Utolsó módosítás: 2007. 11. 13. A Java EE 5 platform A Java EE 5 plattform A J2EE 1.4 után következő verzió. Alapvető továbbfejlesztési
3D számítógépes geometria és alakzatrekonstrukció
3D számítógépes geometria és alakzatrekonstrukció 15. Digitális Alakzatrekonstrukció Méréstechnológia, Ponthalmazok regisztrációja http://cg.iit.bme.hu/portal/node/312 https://www.vik.bme.hu/kepzes/targyak/viiima01
Flynn féle osztályozás Single Isntruction Multiple Instruction Single Data SISD SIMD Multiple Data MISD MIMD
M5-. A lineáris algebra párhuzamos algoritmusai. Ismertesse a párhuzamos gépi architektúrák Flynn-féle osztályozását. A párhuzamos lineáris algebrai algoritmusok között mi a BLAS csomag célja, melyek annak
Ismerkedjünk tovább a számítógéppel. Alaplap és a processzeor
Ismerkedjünk tovább a számítógéppel Alaplap és a processzeor Neumann-elvű számítógépek főbb egységei A részek feladatai: Központi egység: Feladata a számítógép vezérlése, és a számítások elvégzése. Operatív
AliROOT szimulációk GPU alapokon
AliROOT szimulációk GPU alapokon Nagy Máté Ferenc & Barnaföldi Gergely Gábor Wigner FK ALICE Bp csoport OTKA: PD73596 és NK77816 TARTALOM 1. Az ALICE csoport és a GRID hálózat 2. Szimulációk és az AliROOT
SZOFTVERES SZEMLÉLTETÉS A MESTERSÉGES INTELLIGENCIA OKTATÁSÁBAN _ Jeszenszky Péter Debreceni Egyetem, Informatikai Kar jeszenszky.peter@inf.unideb.
SZOFTVERES SZEMLÉLTETÉS A MESTERSÉGES INTELLIGENCIA OKTATÁSÁBAN _ Jeszenszky Péter Debreceni Egyetem, Informatikai Kar jeszenszky.peter@inf.unideb.hu Mesterséges intelligencia oktatás a DE Informatikai
Szoftver labor III. Tematika. Gyakorlatok. Dr. Csébfalvi Balázs
Szoftver labor III. Dr. Csébfalvi Balázs Irányítástechnika és Informatika Tanszék e-mail: cseb@iit.bme.hu http://www.iit.bme.hu/~cseb/ Tematika Bevezetés Java programozás alapjai Kivételkezelés Dinamikus
Eseménykezelés. Szoftvertervezés és -fejlesztés II. előadás. Szénási Sándor.
Eseménykezelés előadás http://nik.uni-obuda.hu/sztf2 Szénási Sándor szenasi.sandor@nik.uni-obuda.hu Óbudai Egyetem,Neumann János Informatikai Kar Függvénymutatókkal Származtatással Interfészekkel Egyéb
Infobionika ROBOTIKA. X. Előadás. Robot manipulátorok II. Direkt és inverz kinematika. Készült a HEFOP P /1.0 projekt keretében
Infobionika ROBOTIKA X. Előadás Robot manipulátorok II. Direkt és inverz kinematika Készült a HEFOP-3.3.1-P.-2004-06-0018/1.0 projekt keretében Tartalom Direkt kinematikai probléma Denavit-Hartenberg konvenció
Termék modell. Definíció:
Definíció: Termék modell Összetett, többfunkciós, integrált modell (számítógépes reprezentáció) amely leír egy műszaki objektumot annak különböző életfázis szakaszaiban: tervezés, gyártás, szerelés, szervízelés,
Mit látnak a robotok? Bányai Mihály Matemorfózis, 2017.
Mit látnak a robotok? Bányai Mihály Matemorfózis, 2017. Vizuális feldolgozórendszerek feladatai Mesterséges intelligencia és idegtudomány Mesterséges intelligencia és idegtudomány Párhuzamos problémák
SZERZŐ: Kiss Róbert. Oldal1
A LOGO MindStorms NXT/EV3 robot grafikus képernyőjét használva különböző ábrákat tudunk rajzolni. A képek létrehozásához koordináta rendszerben adott alakzatok (kör, téglalap, szakasz, pont) meghatározó
GPGPU-k és programozásuk Dezső, Sima Sándor, Szénási
GPGPU-k és programozásuk Dezső, Sima Sándor, Szénási GPGPU-k és programozásuk írta Dezső, Sima és Sándor, Szénási Szerzői jog 2013 Typotex Kivonat A processzor technika alkalmazásának fejlődése terén napjaink
Erőforrás gazdálkodás a bevetésirányításban
Professzionális Mobiltávközlési Nap 2009 Új utakon az EDR Erőforrás gazdálkodás a bevetésirányításban Fornax ZRt. Nagy Zoltán Vezérigazgató helyettes Budapest, 2009. április 9. Tartalom 1. Kézzelfogható
5. KOMBINÁCIÓS HÁLÓZATOK LEÍRÁSÁNAK SZABÁLYAI
5. KOMBINÁCIÓS HÁLÓZATOK LEÍRÁSÁNAK SZABÁLYAI 1 Kombinációs hálózatok leírását végezhetjük mind adatfolyam-, mind viselkedési szinten. Az adatfolyam szintű leírásokhoz az assign kulcsszót használjuk, a
elektronikus adattárolást memóriacím
MEMÓRIA Feladata A memória elektronikus adattárolást valósít meg. A számítógép csak olyan műveletek elvégzésére és csak olyan adatok feldolgozására képes, melyek a memóriájában vannak. Az információ tárolása
Miről lesz szó? Videó tartalom elemzés (VCA) leegyszerűsített működése Kültéri védelem Közúthálózat megfigyelés Emberszámlálás
Videóanalitikát mindenhova! Princz Adorján Miről lesz szó? Videó tartalom elemzés (VCA) leegyszerűsített működése Kültéri védelem Közúthálózat megfigyelés Emberszámlálás VCA alapú detektorok Videótartalom
Ficsor Lajos Általános Informatikai Tanszék Miskolci Egyetem
A Java EE 5 platform Ficsor Lajos Általános Informatikai Tanszék Miskolci Egyetem Utolsó módosítás: 2008. 04. 17. A Java EE 5 platform A Java EE 5 plattform A J2EE 1.4 után következő verzió. Alapvető továbbfejlesztési
Dr. habil. Maróti György
infokommunikációs technológiák III.8. MÓDSZER KIDOLGOZÁSA ALGORITMUSOK ÁTÜLTETÉSÉRE KIS SZÁMÍTÁSI TELJESÍTMÉNYŰ ESZKÖZÖKBŐL ÁLLÓ NÉPES HETEROGÉN INFRASTRUKTÚRA Dr. habil. Maróti György maroti@dcs.uni-pannon.hu
Google App Engine az Oktatásban 1.0. ügyvezető MattaKis Consulting http://www.mattakis.com
Google App Engine az Oktatásban Kis 1.0 Gergely ügyvezető MattaKis Consulting http://www.mattakis.com Bemutatkozás 1998-2002 között LME aktivista 2004-2007 Siemens PSE mobiltelefon szoftverfejlesztés,
Számítógépes Grafika SZIE YMÉK
Számítógépes Grafika SZIE YMÉK Analóg - digitális Analóg: a jel értelmezési tartománya (idő), és az értékkészletes is folytonos (pl. hang, fény) Diszkrét idejű: az értelmezési tartomány diszkrét (pl. a
Számítógép architektúra
Budapesti Műszaki Főiskola Regionális Oktatási és Innovációs Központ Székesfehérvár Számítógép architektúra Dr. Seebauer Márta főiskolai tanár seebauer.marta@roik.bmf.hu Irodalmi források Cserny L.: Számítógépek
Koós Dorián 9.B INFORMATIKA
9.B INFORMATIKA Számítástechnika rövid története. Az elektronikus számítógép kifejlesztése. A Neumann-elv. Információ és adat. A jel. A jelek fajtái (analóg- és digitális jel). Jelhalmazok adatmennyisége.
3D-s számítógépes geometria és alakzatrekonstrukció
3D-s számítógépes geometria és alakzatrekonstrukció 14. Digitális Alakzatrekonstrukció - Bevezetés http://cg.iit.bme.hu/portal/node/312 https://www.vik.bme.hu/kepzes/targyak/viiiav08 Dr. Várady Tamás,
Zárójelentés. Az autonóm mobil eszközök felhasználási területei, irányítási módszerek
Zárójelentés Az autonóm mobil eszközök felhasználási területei, irányítási módszerek Az autonóm mobil robotok elterjedése növekedést mutat napjainkban az egész hétköznapi felhasználástól kezdve az ember
Sztöchiometriai egyenletrendszerek minimális számú aktív változót tartalmazó megoldásainak meghatározása a P-gráf módszertan alkalmazásával
Sztöchiometriai egyenletrendszerek minimális számú aktív változót tartalmazó megoldásainak meghatározása a P-gráf módszertan alkalmazásával * Pannon Egyetem, M szaki Informatikai Kar, Számítástudomány
Plakátok, részecskerendszerek. Szécsi László
Plakátok, részecskerendszerek Szécsi László Képalapú festés Montázs: képet képekből 2D grafika jellemző eszköze modell: kép [sprite] 3D 2D képével helyettesítsük a komplex geometriát Image-based rendering
Bodó / Csató / Gaskó / Sulyok / Simon október 9. Matematika és Informatika Tanszék Babeş Bolyai Tudományegyetem, Kolozsvár
Bodó / Csató / Gaskó / Sulyok / Simon Matematika és Informatika Tanszék Babeş Bolyai Tudományegyetem, Kolozsvár 2016. október 9. Tudnivalók Tudnivalók: 1 Csapatok kiválasztása: a második hét végéig; 2
UNIX / Linux rendszeradminisztráció
UNIX / Linux rendszeradminisztráció VIII. előadás Miskolci Egyetem Informatikai és Villamosmérnöki Tanszékcsoport Általános Informatikai Tanszék Virtualizáció Mi az a virtualizáció? Nagyvonalúan: számítógép
GPU alkalmazása az ALICE eseménygenerátorában
GPU alkalmazása az ALICE eseménygenerátorában Nagy Máté Ferenc MTA KFKI RMKI ALICE csoport ELTE TTK Fizika MSc Témavezető: Dr. Barnaföldi Gergely Gábor MTA KFKI RMKI ALICE csoport Elméleti Fizikai Főosztály
30 MB INFORMATIKAI PROJEKTELLENŐR
INFORMATIKAI PROJEKTELLENŐR 30 MB DOMBORA SÁNDOR BEVEZETÉS (INFORMATIKA, INFORMATIAKI FÜGGŐSÉG, INFORMATIKAI PROJEKTEK, MÉRNÖKI ÉS INFORMATIKAI FELADATOK TALÁKOZÁSA, TECHNOLÓGIÁK) 2016. 09. 17. MMK- Informatikai
egy szisztolikus példa
Automatikus párhuzamosítás egy szisztolikus példa Áttekintés Bevezetés Példa konkrét szisztolikus algoritmus Automatikus párhuzamosítási módszer ötlet Áttekintés Bevezetés Példa konkrét szisztolikus algoritmus
Máté: Számítógépes grafika alapjai
Történeti áttekintés Interaktív grafikai rendszerek A számítógépes grafika osztályozása Valós és képzeletbeli objektumok (pl. tárgyak képei, függvények) szintézise számítógépes modelljeikből (pl. pontok,
Szimuláció RICHARD M. KARP és AVI WIGDERSON. (Készítette: Domoszlai László)
Szimuláció RICHARD M. KARP és AVI WIGDERSON A Fast Parallel Algorithm for the Maximal Independent Set Problem című cikke alapján (Készítette: Domoszlai László) 1. Bevezetés A következőkben megadott algoritmus
A PiFast program használata. Nagy Lajos
A PiFast program használata Nagy Lajos Tartalomjegyzék 1. Bevezetés 3 2. Bináris kimenet létrehozása. 3 2.1. Beépített konstans esete.............................. 3 2.2. Felhasználói konstans esete............................
Magas szintű optimalizálás
Magas szintű optimalizálás Soros kód párhuzamosítása Mennyi a várható teljesítmény növekedés? Erős skálázódás (Amdahl törvény) Mennyire lineáris a skálázódás a párhuzamosítás növelésével? S 1 P 1 P N GPGPU
Szárazföldi autonóm mobil robotok vezérlőrendszerének kialakítási lehetőségei. Kucsera Péter ZMNE Doktorandusz
Szárazföldi autonóm mobil robotok vezérlőrendszerének kialakítási lehetőségei. Kucsera Péter ZMNE Doktorandusz A mobil robot vezérlőrendszerének feladatai Elvégzendő feladat Kommunikáció Vezérlő rendszer
Jegyzetelési segédlet 7.
Jegyzetelési segédlet 7. Informatikai rendszerelemek tárgyhoz 2009 Szerkesztett változat Géczy László Projektor az igazi multimédiás (periféria) eszköz Projektor és kapcsolatai Monitor Számítógép HIFI
"A tízezer mérföldes utazás is egyetlen lépéssel kezdődik."
"A tízezert mérföldes utazás is egyetlen lépéssel kezdődik dik." A BINB INSYS Előadók: Kornafeld Ádám SYS PROJEKT Ádám MTA SZTAKI kadam@sztaki.hu Kovács Attila ELTE IK attila@compalg.inf.elte.hu Társszerzők:
1. DIGITÁLIS TERVEZÉS PROGRAMOZHATÓ LOGIKAI ÁRAMKÖRÖKKEL (PLD)
1. DIGITÁLIS TERVEZÉS PROGRAMOZHATÓ LOGIKAI ÁRAMKÖRÖKKEL (PLD) 1 1.1. AZ INTEGRÁLT ÁRAMKÖRÖK GYÁRTÁSTECHNOLÓGIÁI A digitális berendezések tervezésekor számos technológia szerint gyártott áramkörök közül
Grafikus csővezeték és az OpenGL függvénykönyvtár
Grafikus csővezeték és az OpenGL függvénykönyvtár 1 / 32 A grafikus csővezeték 3D-s színtér objektumainak leírása primitívekkel: pontok, élek, poligonok. Primitívek szögpontjait vertexeknek nevezzük Adott
Bepillantás a gépházba
Bepillantás a gépházba Neumann-elvű számítógépek főbb egységei A részek feladatai: Központi egység: Feladata a számítógép vezérlése, és a számítások elvégzése. Operatív memória: A számítógép bekapcsolt
Bevezetés a programozásba II. 8. Előadás: Osztályok, objektumok, osztályszintű metódusok
Bevezetés a programozásba II 8. Előadás: Osztályok, objektumok, osztályszintű metódusok vektor.h #ifndef VEKTOR_H #define VEKTOR_H class Vektor { int meret, *mut; public: Vektor(int meret); int szamlal(int
Adatok ábrázolása, adattípusok
Adatok ábrázolása, adattípusok Összefoglalás Adatok ábrázolása, adattípusok Számítógépes rendszerek működés: információfeldolgozás IPO: input-process-output modell információ tárolása adatok formájában
3D - geometriai modellezés, alakzatrekonstrukció, nyomtatás
3D - geometriai modellezés, alakzatrekonstrukció, nyomtatás 15. Digitális Alakzatrekonstrukció Méréstechnológia, Ponthalmazok regisztrációja http://cg.iit.bme.hu/portal/node/312 https://www.vik.bme.hu/kepzes/targyak/viiiav54
A szoftver-folyamat. Szoftver életciklus modellek. Szoftver-technológia I. Irodalom
A szoftver-folyamat Szoftver életciklus modellek Irodalom Ian Sommerville: Software Engineering, 7th e. chapter 4. Roger S. Pressman: Software Engineering, 5th e. chapter 2. 2 A szoftver-folyamat Szoftver
GPU Lab. 14. fejezet. OpenCL textúra használat. Grafikus Processzorok Tudományos Célú Programozása. Berényi Dániel Nagy-Egri Máté Ferenc
14. fejezet OpenCL textúra használat Grafikus Processzorok Tudományos Célú Programozása Textúrák A textúrák 1, 2, vagy 3D-s tömbök kifejezetten szín információk tárolására Főbb különbségek a bufferekhez
Adatbázis és szoftverfejlesztés elmélet
Adatbázis és szoftverfejlesztés elmélet Témakör 4. Összefoglalás 1. A kódolás eszközei Általános szövegszerkesztő Programozói szövegszerkesztő Fejlesztői környezet Vizuális fejlesztői környezet Általános
Információ megjelenítés Számítógépes ábrázolás. Dr. Iványi Péter
Információ megjelenítés Számítógépes ábrázolás Dr. Iványi Péter Raszterizáció OpenGL Mely pixelek vannak a primitíven belül fragment generálása minden ilyen pixelre Attribútumok (pl., szín) hozzárendelése