Előadást letölteni
Az előadás letöltése folymat van. Kérjük, várjon
KiadtaGyörgy Juhász Megváltozta több, mint 10 éve
1
Match Move Juhász Endre Muhi Kornél Urbán Szabolcs Számítógépes látás projekt
2
Feladat Feladatunk egy mesterséges 3D objektum behelyezése egy rövid videófelvételbe úgy, hogy az a kamera mozgásának megfelelően együtt mozogjon a felvétel színterével. A cél, hogy a tárgy geometriailag illeszkedjen a környezetébe, nem szükséges valóban élethű megjelenést készíteni.
3
Változások a projektben OpenCV 2.3 Matlab R2008a Az alkalmazás szeparálása 3 részre Tracking Kamera mátrixok, 3D pontok kiszámítása Matlabban Szintetikus objektum megjelenítése, vegyítése OpenGL-ben Próbálkozások: Bundle adjustment paraméterezése Előtér-szegmentációval történő takarás-kezelés
4
Algoritmus 1/3 Kamera kalibrációja (a kamera belső mátrixának meghatározása) Videó készítése a kalibrált kamerával Jellemzőpontok detektálása - most a Shi-Tomasi módszerrel történik, amelyet a KLT algoritmussal követünk frame-ről framre. Minden frame-re: a fundamentális mátrix meghatározása (Matlab-ban az előadáson vett módszerrel, illetve a Horn féle módszerrel) a kamera projekciós mátrix meghatározása az esszenciális mátrixból bundle adjustment alkalmazása (jelen projektben csak egy framenkénti LM-optimalizálás került be) háttér-előtér pontok szűrése: frame-en detektált jellemzőpontok 3D mélység értékeit előállítva a jellemzőpontok klaszterezése előtér ill. háttér pontokra (mélység érték alapján) a frame szegmentálása a [3] cikkben említett algoritmussal (az előző klaszterezés inputként történő felhasználásával) – mivel ehhez nem kaptunk implementációt, így a hasonló elven működő OpenCV-s GrabCut alg.-al
5
Algoritmus 2/3 Objektum példányosítása, és elhelyezése az 1. frame-en (OpenGL-ben) Első nekifutásra az objektum egyenes állású, a talapzata merőleges a képsíkra és egy fix Z mélységben van elhelyezve A videó minden frame-jére, amelyhez rendelkezésünkre áll a kamera projekciós mátrix, hajtsuk végre a következőket: Objektum kirajzolása OpenGL-ben a kamera megfelelő állása mellett Kalibrált kamera szimulálása OpenGL-ben: Az így kialakult kép kiolvasása: Pixel értékek kiolvasása – eltárolása a pixelBuffer-ben
6
Algoritmus 3/3 Minden frame-re készítsük el a frame és az objektum képének kompozitját - BlendedFrame A szegmentációs algoritmusból kapott eredmény alapján az összevegyített kép pixeleit másoljuk, ha háttér pontról van szó, illetve az eredeti videóból másoljuk a pixelt ha előtért pontot vizsgálunk. Tehát minden OpenGL frame-re hajtsuk végre a következőt: A BlendedFrame-t másoljuk az eredmény képre A videó aktuális frame-jét a szegmentációs eredménnyel maszkolva másoljuk az eredmény frame-re (ahol a maszk 1-es volt, ott vannak előtér pontok, amik takarást jelentenek) Az így kapott ResultFrame kép kimentése Végül a kimentett ResultFrame képeket rakjuk össze egy folyamatos mozgóképpé (AVI video)
7
3D jellemzőpontok előtér-háttér szeparációja
12
3D jellemzőpontok előtér-háttér szeparációja - konklúzió A 3D jellemzőpontok pontosabb kiszámítása szükséges (esetleg nagyobb mértékű mozgás esetén pontosabban kiszámítható a háromszögelés, mint frame-ről frame-re lépve), ekkor azonban csak X frame-enként állna rendelkezésünkre szegmentálási információ Ötlet: minden frame-re az ő és a 10-el rákövetkező közötti elmozdulás alapján számolni, pl: (1, 11) (2, 12) (3, 13) é.í.t. (viszont ekkor szükséges, hogy a 10 frammel későbbi képen is legyen párja a jellemzőpontnak, egyébként nem működik) Szofisztikáltabb küszöbölés szükséges (ha tudnánk a 3D objektum pontos helyzetét, ill. a térből nyert 3D pontok skálafaktorát) Nem biztos, hogy az efajta szimpla küszöbölés elég, lehet azt kellene figyelni, hogy mely pontok azok amelyek viszonylag elől vannak, de mögöttük nincsenek más jellemző pontok (lásd később)
13
3D jellemzőpontok Matlab-ban (nagyjából felülnézet)
14
3D jellemzőpontok Matlab-ban (felülnézet)
15
3D jellemzőpontok Matlab-ban
16
3D jellemzőpontok Matlab-ban (felülnézet)
17
Szegmentációs eredmények
25
Következtetések Helyes szegmentációs maszkokkal az ötlet életképesnek tűnik Ehhez azonban finomítani kell még az első lépésen (előtér pontok kiszűrése). A GrabCut algoritmus egyébként iteratív módon dolgozik, minél több iterációt engedünk meg neki, annál jobban finomítja az eredményt. Mivel ez az eljárás jelentősen lassítja az egész folyamatot (sokáig tart 1-1 frame szegmentálása), nagyobb teljesítményű számítógép sem ártana hozzá, illetve emiatt kénytelenek voltunk az iteráció számot minimálisra csökkenteni
26
Konklúzió a projektre Az idő rövidsége alatt sajnos csak kezdetleges eredményeket tudtunk elérni Sok gondunk volt a megfelelő részek integrációjával. Ennek ellenére megpróbáltuk a lehető legtöbbet kihozni a projektből, több vonalon elindulni, amennyiben egy megvalósítás nem bizonyult helyesnek Hosszú távon úgy gondoljuk, hogy a projektet egységesen át kellene mozgatni Matlab-ba, ugyanis az OpenGL-es és OpenCV-s megoldás nehezen integrálható, és működésének helyessége is kérdéseket vet fel Egyszerűbb lenne egy homogén rendszeren belül dolgozni Az alap ötletek helyt álltak a projekt megvalósítása szempontjából, viszont a már említett implementációs nehézségek hátráltatták az igazán jó eredmények elérését
27
Köszönjük a figyelmet!
Hasonló előadás
© 2024 SlidePlayer.hu Inc.
All rights reserved.