1 / 27

Match Move

Számítógépes látás projekt. Match Move. Juhász Endre Muhi Kornél Urbán Szabolcs. Feladat.

royce
Download Presentation

Match Move

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Számítógépes látás projekt Match Move Juhász Endre Muhi Kornél Urbán Szabolcs

  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: • Bundleadjustment 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őlframre. • 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 • bundleadjustmentalkalmazása (jelen projektben csak egy framenkéntiLM-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-sGrabCutalg.-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 ResultFrameképeket rakjuk össze egy folyamatos mozgóképpé (AVI video)

  7. 3D jellemzőpontok előtér-háttér szeparációja

  8. 3D jellemzőpontok előtér-háttér szeparációja

  9. 3D jellemzőpontok előtér-háttér szeparációja

  10. 3D jellemzőpontok előtér-háttér szeparációja

  11. 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őlframe-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

  18. Szegmentációs eredmények

  19. Szegmentációs eredmények

  20. Szegmentációs eredmények

  21. Szegmentációs eredmények

  22. Szegmentációs eredmények

  23. Szegmentációs eredmények

  24. 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!

More Related