3D rekonstrukce a SLAM LUKÁŠ POLOK Zdroje: Pollefeys, přednášky MVG a VGE, hodní kolegové Viorela Ila, Marek Šolony a Broněk Přibyl
Motivace 3D rekonstrukce Vizuální navigace v robotice Zábava: výpočet pozice kamery je klíčem Rozšířená realita http://youtu.be/vrgwh1kudt4 http://9gag.com/gag/ad62g3n http://youtu.be/p6nnq3vab3w
Motivace
Motivace
Motivace
Motivace
Literatura
Homogenní souřadnice (opakování) Slide sprostě okopírován z přednášky VGE dobrého borce Broňka Přibyla (se svolením)
Maticové transformace (opakování) Slide sprostě okopírován z přednášky VGE dobrého borce Broňka Přibyla (se svolením)
Geometrické transformace (opakování) Slide sprostě okopírován z přednášky VGE dobrého borce Broňka Přibyla (se svolením)
x y 1 é ë ê ê ê ù û ú ú ú = f p x f p y 1 é ë ê ê ê ê ù û ú ú ú ú 1 1 1 é ë ê ê ê ù û ú ú ú R t 0 3 T 1 é ë ê ê ù û ú ú X Y Z 1 é ë ê ê ê ê ù û ú ú ú ú or x = P.X Jak kamera promítá reálný svět? střed projekce obrazová rovina osa projekce
Kalibrovaná kamera známá neznámá střed projekce obrazová rovina osa projekce.x λ x or 1 1 0 t 1 1 1 1 1 λ 3 P R Z Y X p f p f y x y x T
Jak funguje 3D rekonstrukce? 3D body leží někde na paprscích skrz zájmové body, detekované v obraze: p1 c1 p1 Slide sprostě okopírován z talku dobrého borce Marka Šolonyho (s tichým svolením)
Jak funguje 3D rekonstrukce? Ty samé 3D body P jdou vidět ze dvou různých pozic kamery. (p1,p2) P P c1 p1 p2 c2 Slide sprostě okopírován z talku dobrého borce Marka Šolonyho (s tichým svolením)
Jak funguje 3D rekonstrukce? Ty samé 3D body P jdou vidět ze tří různých pozic kamery. (p1,p2,p3) P P c1 p1 p2 c2 p3 c3 Slide sprostě okopírován z talku dobrého borce Marka Šolonyho (s tichým svolením)
Jak funguje stereo 3D rekonstrukce? Opačný problém známe pozice kamer a zajímají nás jen body.
Jak funguje stereo 3D rekonstrukce? Opačný problém známe pozice kamer a zajímají nás jen body. Disparita d = v 1 v 2 D = b f d
Jak funguje stereo 3D rekonstrukce? Opačný problém známe pozice kamer a zajímají nás jen body. Nutně nemusí jít o dvě kamery. Disparita d = v 1 v 2 D = b f d
Jak funguje stereo 3D rekonstrukce? Opačný problém známe pozice kamer a zajímají nás jen body. Nutně nemusí jít o dvě kamery. Disparita d = v 1 v 2 D = b f d
Structured light kamery Celá třída kamer, založená na promítání světelných vzorů a v principu stereo 3D rekonstrukci. http://youtu.be/gwm-ndihlwo, http://youtu.be/obvkf71u5p4
Structured light kamery
Structured light kamery
Párování zájmových bodů Detekce pomocí SIFT, SURF, Angl. feature matching, na základě vizuální podobnosti stanovíme korespondence bodů ve snímcích v čase t a t-1. Předpokládá se malý pohyb mezi snímky. c1 p1 p2 c2 Slide sprostě okopírován z talku dobrého borce Marka Šolonyho (s tichým svolením)
Odhad první pozice kamery Geometrie pohybu kamery: Při dané množině odpovídajících si bodů {x i x i }, i=1,,n, jaké jsou matice kamer P a P pro dva snímky? P c1 p1 p2 c2 Slide sprostě okopírován z talku dobrého borce Marka Šolonyho (s tichým svolením)
Epipolární geometrie x = PX x' = P' X X l' ( P' C) x' l' x'[ e] P' P P' P x x 0 Fundamentální matice Skew operátor, výsledkem je anti-symetrická matice, odpovídající levé části vektorovému součinu. Slide sprostě okopírován z talku dobrého borce Marka Šolonyho (s tichým svolením)
Fundamentální matice Algebraická reprezentace epipolární geometrie X Nezávislá na struktuře Výpočet pouze ze 2D korespondencí RANSAC (8 pt algorithm, existuje i 5 pt) F [ e] P' P x' T Fx = 0 x je bod na přímce l Slide sprostě okopírován z talku dobrého borce Marka Šolonyho (s tichým svolením)
Fundamentální matice Zjednodušuje hledání korespondencí X Můžeme vyřadit špatné korespondence Vyjadřuje vzájemnou polohu dvou kamer x' T Fx = 0 Slide sprostě okopírován z talku dobrého borce Marka Šolonyho (s tichým svolením)
Od fundamentální k esenciální matici Pokud známe kalibraci kamery a fundamentální matici, můžeme vypočítat esenciální matici P = K [ I 0] P' = K' [ R t] F [ e] P' P 1.895 10 22 úprav později: F K' T [ t] RK 1 P = K [R t] xˆ ' E T Exˆ -1 T -1 xˆ T t E K E R x; K' 0 T R[R xˆ' K' FK KFK t] x' xˆ ' T P = K[I 0] T Exˆ E 0 K' FK MVG, strana 244 Esenciální matice E K' T FK Slide sprostě okopírován z talku dobrého borce Marka Šolonyho (s tichým svolením)
Dekompozice esenciální matice E = [t] R = SR, kde S je anti-symetrická a R je rotační matice Hartley, Zisserman: MVG, strana 257, rozklad pomocí SVD Slide sprostě okopírován z talku dobrého borce Marka Šolonyho (s tichým svolením)
Rekapitulace stavu Známe P a P! c1 p1 p2 c2 Slide sprostě okopírován z talku dobrého borce Marka Šolonyho (s tichým svolením)
3D triangulace Geometrie scény (struktura): Pro korespondující obrazové body x i x i a kamery P, P, jaká je pozice X v prostoru? X x PX x' P' X Slide sprostě okopírován z talku dobrého borce Marka Šolonyho (s tichým svolením)
3D triangulace x PX x PX x' P' X 0 AX 0 x y x 3T 1T p X p X 0 3T 2T p X p X 0 2T 1T p X y p X 0 A xp yp x' p' y' p' 3T 3T p p p' p' 3T 3T 1T 2T 1T 2T Lineární metoda triangulace, MVG strana 312 Slide sprostě okopírován z talku dobrého borce Marka Šolonyho (s tichým svolením)
3D triangulace - demo
Odhad pozice kamery 2D - 3D P c1 p1 inicializace p2 c2 Slide sprostě okopírován z talku dobrého borce Marka Šolonyho (s tichým svolením)
Odhad pozice kamery 2D - 3D P další kamera c1 p1 inicializace p2 p Slide sprostě okopírován z talku dobrého borce Marka Šolonyho (s tichým svolením)
Pozice z 2D - 3D korespondencí 2D - 3D korespondence jsou známy z korespondencí zájmových bodů Pro odhad pozice kamery použijeme P3P algoritmus Slide sprostě okopírován z talku dobrého borce Marka Šolonyho (s tichým svolením)
P3P algoritmus ve zkratce Založeno na kosinové větě, vede na řešení rovnice 4. řádu. U PU 2 +PV 2 2. PU. PV. cos α u,v = UV 2 PU 2 +PW 2 2. PU. PW. cos α u,w = UW 2 PV 2 +PW 2 2. PV. PW. cos α v,w = VW 2 U V W α u,v P V NASA používá k výpočtu rotací pro dokování raketoplánů k ISS. Gao et al., Complete Solution Classification for the Perspective Three-Point Problem, 2003 Slide sprostě okopírován z talku dobrého borce Marka Šolonyho (s tichým svolením)
P3P algoritmus ve zkratce Když máme PU, PV, PW, můžeme prostě vypočítat rigidní [R t] transformaci mezi PU, PV, PW a odpovídajícími 3D body, které už jsme rekonstruovali V W U camera [R t] world Gao et al., Complete Solution Classification for the Perspective Three-Point Problem, 2003 Slide sprostě okopírován z talku dobrého borce Marka Šolonyho (s tichým svolením)
Kabschův algoritmus Výpočet rotace dvou množin bodů Vstupem jsou dvě odpovídající si množiny bodů, P a Q Translace je posun středů množin. Vypočteme 3 3 kovarianční matici Provedeme dekompozici Rotace je, ale směr rotace není zřejmý. Korekce pomocí Konečná rotace je potom Alternativně lze použít Hornovu metodu (podobná, ale používá 4 4 Eigen dekompozici, je tedy pomalejší, a výsledkem je quaternion).
Kabschův algoritmus - demo Zarovnání jedné množiny 3D bodů na druhou. Vstupem páry 3D bodů. Výstupem transformace [R t].
Postupné přidávání kamer
Postupné přidávání kamer Pokud pracujeme s náhodným souborem fotek, je potřeba je seřadit Tzv. camera tracks Matice počtu korespondencí BFS / DFS / Spanning tree
Optimalizace Bundle Adjustment Opraví chyby v odhadech pozic kamer a 3D bodů. l1 l3 l2 l4 l5 l6 c1 c3 c2 Slide sprostě okopírován z talku dobrého borce Marka Šolonyho (s tichým svolením)
Optimalizace Bundle Adjustment
Chyba reprojekce Minimalizujeme chybu reprojekce d( x ij, ˆP ( )) 2 j ˆXi Slide sprostě okopírován z talku dobrého borce Marka Šolonyho (s tichým svolením)
Proměnné a pozorování Proměnné: 7D pozice kamer c 1, c 2, c 3, c nc 3D body l 1, l 2, l 3, l 4, l 5, l 6, l np Pozorování: z 1, z 2, z 3, z 4, z 5, z 6, z m l1 l3 z1 z2 l2 z3 z4 l5 l4 z5 l6 z6 c1 c3 Slide sprostě okopírován z talku dobrého borce Marka Šolonyho (s tichým svolením) c2
Metoda nejmenších čtverců
Metoda nejmenších čtverců l1 nc np min l3 j1 i1 d ˆ ˆ 2 x P X ij j i z1 z2 l2 z3 z4 z5 l5 l4 l6 z6 c1 Slide sprostě okopírován z talku dobrého borce Marka Šolonyho (s tichým svolením) c2 c3
Metoda nejmenších čtverců stacionární bod Newtonova metoda jde použít k nalezení stacionárního bodu. Slide sprostě okopírován z talku dobrého borce Marka Šolonyho (s tichým svolením)
Newtonova metoda Hledá průsečík mezi tangentou funkce v daném bodě a osou x. x kořen Slide sprostě okopírován z talku dobrého borce Marka Šolonyho (s tichým svolením)
Newtonova metoda Hledá průsečík mezi tangentou funkce v daném bodě a osou x. x Newtonovská iterace kořen Slide sprostě okopírován z talku dobrého borce Marka Šolonyho (s tichým svolením)
Newtonova metoda a nejmenší čtverce V našem případě máme nelineární funkci, aplikujeme tedy Newtonovu metodu na její první derivaci. vyžaduje druhou derivaci Slide sprostě okopírován z talku dobrého borce Marka Šolonyho (s tichým svolením)
Nelineární reziduál * min m k 1 r k 2 m počet všech pozorování, jež máme r k = -d ( k x ij, ˆP ( )) j ˆXi Sada nelineárních chyb (reziduí): Linearizované: korekce Slide sprostě okopírován z talku dobrého borce Marka Šolonyho (s tichým svolením)
Lineární nejmenší čtverce 1. derivace: Jakobián Hesián 2. derivace: Slide sprostě okopírován z talku dobrého borce Marka Šolonyho (s tichým svolením)
Jakobiány a Hesiány Slide sprostě okopírován z talku dobrého borce Marka Šolonyho (s tichým svolením)
Jakobiány a Hesiány Každé pozorování ovlivňuje jen dvě proměnné: pozici kamery c j a promítaný 3D bod p i Slide sprostě okopírován z talku dobrého borce Marka Šolonyho (s tichým svolením)
Gauss-Newtonova metoda pro MNČ Minimum je v bodě, kde je první derivace nulová. dává while 1 linearizace F (θ) v θ 0 L(δ) řešením L(δ) = 0 dostaneme δ * if norm(δ * ) < limit done update θ i+1 = θ i + δ *
Šum v pozorování Naše dosavadní počínání předpokládá, že naměřená data jsou přesná. Bohužel, v praxi jsou zatížena chybou (šumem)! Slide sprostě okopírován z talku dobrého borce Marka Šolonyho (s tichým svolením)
Gaussovský předpoklad Pozorování jsou zatížené šumem, a budeme je tedy modelovat jako Gaussovské distribuce popsané průměrem a kovariancí. σ x μ x Ke každému pozorování tedy přidáme distribuci jeho pravděpodobnosti. Slide sprostě okopírován z talku dobrého borce Marka Šolonyho (s tichým svolením)
Metoda maximální věrohodnosti Angl. Maximum Likelihood Estimation l1 l3 V robotice použité v metodě SLAM a v počítačovém vidění metody BA, SfM l2 p(c1,l1) p(c1,l2) p(c1,l3) p(c1,l4) p(c1,l5) p(c1,l6) l5 l4 l6 c1 c3 Slide sprostě okopírován z talku dobrého borce Marka Šolonyho (s tichým svolením) c2
Metoda maximální věrohodnosti Angl. Maximum Likelihood Estimation Gaussovský předpoklad Metoda Nejmenších Čtverců Slide sprostě okopírován z talku dobrého borce Marka Šolonyho (s tichým svolením)
Řešení MNČ while 1 linearizace F (θ) in θ 0 L(δ) řešením L(δ) = 0 dostaneme δ * if norm(δ * ) < limit done update θ i+1 = θ i + δ *
Řešení Každou iteraci řešíme lineární systém Jakobiány! [Dellaert06ijrr] 63
Řešení Minimum je v nulové první derivaci! 64
Varianty Newtonovy Metody Levenberg-Marquardt Přidává tlumící argument α který ovlivňuje velikost kroku δ Kontroluje zda optimalizační krok nevedl ke zhoršení řešení Pokud ano, zvětší α (zmenší krok) a zkusí znova L δ = A T b + A T A + αi δ = 0 (Iteratively) Reweighted Least Squares (IRLS) Přidává váhy na každé pozorování, umožňuje odstranit outliery Umožňuje simulovat jinou loss funkci než čtverec chyby (např. L 1 chybu) L δ = A T Wb + A T WAδ = 0
IRLS s L 1 loss funkcí L 2 (least squares) L 1 (pěkná ale nepoužitelná) Huber loss
IRLS s L 1 loss funkcí - Demo
Složitost l1 l3 6DOF kamery (x, y, z, roll, pitch, yaw) 3DOF body (x, y, z) nc počet kamer nl počet 3D bodů z1 z2 l2 z3 z4 z5 z6 l5 l4 l6 z c1 y x A T A is of size (6 nc + 3 nl) x (6 nc + 3 nl) c2 c3 Slide sprostě okopírován z talku dobrého borce Marka Šolonyho (s tichým svolením) 68
Složitost 871 kamer 531176 3D bodů Systémová matice A T A má v paměti 522.53 MB
A T A Systémová matice Pro 30 kamer a cca 1000 bodů bude celkem velká: (30 6 + 3 1000) 2 = 10112400 Naštěstí je většina prvků nulových: matice je řídká. 70
A T A Systémová matice - řešení A T A δ -A T b x = 71
Maticové faktorizace A T A Choleského Factor chol( ) = Pak už je snadné řešit pomocí dvojího zpětného dosazení k získání δ 72
Schurův Komplement 73
Co když máme vyřešeno? Inkrement δ obsahuje posun ke správnému řešení prostě jej přičteme k pozicím bodů a kamer.
Co když máme vyřešeno?
Pipeline l1 l2 l3 l4 l5 l6 Camera Initialization c1 c2 c3 Matching Camera pose est. Structure comp. Refinement Input Images Feat.+Desc. Extraction Visualization Slide sprostě okopírován z talku dobrého borce Marka Šolonyho (s tichým svolením) 76
Závěr Prvotní odhad pozic 3D points a póz kamery vypočteny na základě modelu kamery, projektivní a epipolární geometrie. 3D rekonstrukce se dá zlepšit použitím optimizace Newtonovské metody se dají použít k řešení MNČ Gaussovský předpoklad nám to zjednodušuje () MLE se převede na obyčejné nejmenší čtverce Řídké matice jsou dobré matice! 77