Szécsi László 3D Grafikus Rendszerek 17. előadás

Slides:



Advertisements
Hasonló előadás
ÉRDEKES PONTOK KINYERÉSE DIGITÁLIS KÉPEKEN. BEVEZETÉS  ALAPPROBLÉMA  Jellemzőpontok detektálása mindkét képen  Kinyert pontok megfeleltetése  Megfeleltetések.
Advertisements

JQuery 8. előadás.
Az Esztergom és Vidéke az Interneten, a helyi lapok digitalizálásának problémái Várady Eszter igazgató Helischer József Városi Könyvtár, Esztergom.
1 AIBO Robotfoci Bodor László IAR Bevezetés AIBO RoboCup AIBO RoboCup Célok Célok Rendszer elemei Rendszer elemei Megvalósítás terve Megvalósítás.
1 / / 13 Bevezető Forgalmi dugók okozta problémák: - Feszültség - Sietség - Szabálytalan közlekedés → baleseti források Megoldás: A jó megoldások.
Programozás III KOLLEKCIÓK 2..
DIAPHÁN STRUKTÚRÁK ERDÉLYI GÁBOR FESTÉSZETÉBEN
GPGPU labor I. OpenGL, Cg.
OS INTEGRÁCIÓ képek Hub integráció Egy gyorsindító az appunknak a hubban Extrák és megosztás Az appunk induláskor megkapja a képet.
Botyánszki Laczik Rácz
Néhány beszúrható objektum dr. Bujdosó Gyöngyi
Grafika a programban Készítette: Pető László. Bevezetés Valójában nem a célobjektumra rajzolunk, hanem annak festővászon területére (canvas). Csak olyan.
A négyzet kerülete K = 4· a.
A weboldal képernyő terve: Két szinten kell kidolgozni: 2. 3 db aloldal képe 1. Bejelentkező kép Adjuk meg az embléma és a reklámok helyét is.
Adatbázis-kezelés ACCESS program:
Bináris képek létrehozása Cél: a vizsgálni kívánt objektumok elkülönítése. Szürke kép Bináriskép + szürke kép.
Feladatok - BAR K+F Vámossy Zoltán 2010 Summer School on Image Processing (SSIP) nyári egyetem feladatai és saját ötletek alapján.
Felső tagozatosok programozás oktatása
Web-grafika (VRML) 10. gyakorlat Kereszty Gábor. Script típusok Elemi típusok: szám: egész vagy lebegőpontos – int / float – 1 / 1.1 string: ‘Hello World!’
6. előadás Parametrikus polimorfizmus. Generikus programozás. Az Ada sablonok.
Kliensoldali Programozás
Lénárt Anett egyetemi adjunktus - PTE PMMK Rendszer- és Szoftvertechnológia Tanszék Előadás JavaScript Tananyag: W eb - programozás.
JavaScript a gyakorlatban. 7. Gyakorlat DHTML  Fa-struktúrájú menük létrehozása  Legördülő menük létrehozása.
Az Alakfelismerés és gépi tanulás ELEMEI
Horváth Zsolt Schnádenberger Gábor Varjas Viktor
Számítógépes Grafika 2. gyakorlat Programtervező informatikus (esti) 2011/2012 őszi félév.
Bátyai Krisztián NetAcademia Oktatóközpont oktató, fejlesztő MCT, MCPD
Grafikus tervezőrendszerek programozása 9. előadás.
Önálló labor beszámoló
Diagnosztika intelligens eszközökkel
Objektum orientált programozás a gyakorlatban
Javascript Microsoft által készített kiegészítése Statikus típusosság Nagy projektek Windows 8 fejlesztésénél WinRT egy részét ebben írták Nyílt forráskódú,
Script nyelvek alkalmazása a webkartográfiában 1/14 Script nyelvek alkalmazása a webkartográfiában Gede Mátyás MFTTT, március 22.
Pixel műveletek, képek Szirmay-Kalos László.
Textúrák Grafikus játékok fejlesztése Szécsi László g07-texture.
Effect framework, HLSL shader László Szécsi. forráskódban elérhető egyszerűsíti a shaderek fordítását, rajzolási állapot beállítását – pass: egy ilyen.
Grafikus játékok fejlesztése Szécsi László t09-texture
Hyper Text Markup Language
KINECT© szenzor intelligens terekben
HTML 2. Űrlapok
2. gyakorlat DirectX 2007/2008 tavasz Klár Gergely
Az EtherCore weboldal Jószai Zoltán 1. Az oldal célja Kedvcsináló a fejlesztés alatt lévő játékhoz 2.
Bevezetés - Vonalak. Koordinátarendszer Windows form x y Az y lefelé nő Transzformáció a hagyományosra x Eltolás y Ellentett és eltolás.
Vizualizáció és képszintézis Sugárkövetés (Dart + GLSL) Szécsi László.
5. előadás Parametrikus polimorfizmus. Generikus programozás. Az Ada sablonok.
Szélességi bejárás. Véges gráf összes csúcsának bejárása a kezdőcsúcstól való távolságuk szerinti növekvő sorrendben Egy csúcsot egyszer járunk be Egyenlő.
UNIVERSITY OF SZEGED D epartment of Software Engineering UNIVERSITAS SCIENTIARUM SZEGEDIENSIS Programozás I. 3. gyakorlat.
Weboldalba ágyazott interaktív feladatok GeoGebra módra Papp-Varga Zsuzsanna ELTE IK Média- és Oktatásinformatika Tanszék
Képek, képfeldolgozás Szirmay-Kalos László.
Vizualizáció és képszintézis Térfogati textúrák kezelése (Dart + GLSL) Szécsi László.
OpenCV CV = Computer Vision
A Google Drive használata. Mire jó? A Google Drive segítségével a fotókat, videókat, fájlokat és sok más tartalmat egy biztonságos felhőtárhelyen keresztül.
Menüpontok szerkesztése.
Információ és kommunikáció
3D grafika összefoglalás
(Iskolai) Beléptető rendszer Raspberry Pi 2-vel.
A grafikus hardware programozása
Vizualizáció és képszintézis
A szövegszerkesztés története
Vizualizáció és képszintézis
A bűvös négyzet játék algoritmusa
Szécsi László 3D Grafikus Rendszerek 7. előadás
JavaScript a böngészőben
Szécsi László 3D Grafikus Rendszerek 11. előadás
Sugármetszés implicit szintfelülettel
A digitális kép bevezetés.
Megtudod különböztetni a szineket?! OK, Akkor nézd meg ezt a képet...
JavaScript a böngészőben
CUDA – OpenGL.
Előadás másolata:

Szécsi László 3D Grafikus Rendszerek 17. előadás Kiegészített valóság Szécsi László 3D Grafikus Rendszerek 17. előadás

Négyzetes markerek népszerű kiegészítettvalóság- alkalmazásokban könnyen detektálható a helyzete becsülhető minden markernek lehet egyedi azonosítója több száz vagy ezer különböző marker lehet

ArUco könyvtár OpenCV könyvtármodul js-aruco fő funkciók detectMarkers drawDetectedMarkers estimatePoseSingleMarkers drawAxis

ArUco markerek valahányszor valahányas rács lehetséges markerek száma fekete vagy fehér mező: 1 bit lehetséges markerek száma Hamming-távolság

js-aruco markerek 5x5, plusz fekete keret: 7x7 5 sor, mindegyik lehet WBBBB WBWWW BWBBW BWWWB 1024 lehetséges marker

Markerfelismerés fekete négyzet keresése adaptív küszöbözés zaj eltávolítása morfológiai operátorokkal kontúrkeresés a fekete régiók körül kontúrok közelítése törtvonalakkal négyszögek kiválasztása négyszögbeli képterület perspektív transzformációja négyzetre azonosító kinyerése NxN-es rácson 0 vagy 1 értékek bent van-e a bitminta a lehetségesek között

Videó mint WebGL textúra kell egy video element a weboldalba lehet láthatatlan lehet a webkamera a forrása minden frameben gl.texImage2D – a videóobjektum átadható image objektum helyett

Nem-kettő-hatvány textúra nem lehet mipmap szűrések bilineárisak (LINEAR), nem trilieárisak (LINEAR_MIPMAP_LINEAR) nincs generateMipmap nem ismétlődhet wrap: CLAMP_TO_EDGE

Videó beágyazása theScene.video = document.createElement("video"); theScene.video.width = 512; theScene.video.height = 512; theScene.video.autoplay = true; theScene.video.src = videoURL; theScene.video.addEventListener( "playing", function() { theScene.copyVideo = true; }, true );

Videóframe kinyerése nyers adatként kell egy video element a weboldalba lehet láthatatlan lehet a webkamera a forrása kell egy canvas (2d context) a weboldalra minden frameben videó rajzolása a vászonra vászonról

Videó beágyazása theScene.video = document.createElement("video"); theScene.video.width = 512; theScene.video.height = 512; theScene.video.autoplay = true; theScene.video.src = videoURL;

Webkamera képe videóként navigator.mediaDevices.getUserMedia({ audio:false, video:{ width: 512, height: 512 } }).then( function(mediaStream){ theScene.video.src = window.URL. createObjectURL(mediaStream); } );

Vászon theScene.video.addEventListener( "playing", function() { theScene.imageGrabberCanvas = document.createElement("canvas"); theScene.imageGrabberCanvas.width = theScene.video.videoWidth; theScene.imageGrabberCanvas.height = theScene.video.videoHeight; theScene.imageGrabberContext = theScene.imageGrabberCanvas.getContext("2d"); }, true );

Adatkinyerés this.imageGrabberContext.drawImage( this.video, 0, this.imageGrabberCanvas.width, this.imageGrabberCanvas.height); var imageData = this.imageGrabberContext.getImageData(

js-aruco detektálás this.detector = new AR.Detector(); var posit = new POS.Posit(40, this.imageGrabberCanvas.width); var markers = this.detector.detect(imageData);

js-aruco posit var corners = markers[0].corners; for (var i = 0; i < corners.length; i++){ var corner = corners[i]; corner.x -= (this.imageGrabberCanvas.width / 2); corner.y = (this.imageGrabberCanvas.height / 2) - corner.y; } var pose = posit.pose(corners);

avatar kövesse a markert this.avatar.position.set( pose.bestTranslation[0], pose.bestTranslation[1], -pose.bestTranslation[2] ).xyz1mul(this.camera.viewMatrixInverse); var m = pose.bestRotation; this.avatar.orientationMatrix.set( m[0][0], m[0][1], m[0][2], 0, m[1][0], m[1][1], m[1][2], 0, m[2][0], m[2][1], m[2][2], 0, 0, 0, 0, 1 ); this.avatar.updateModelTransformation();