Ex3) Kamerakalibrering
Transcription
Ex3) Kamerakalibrering
Ex3) Kamerakalibrering Se nedanstående figur av en 3D värld, en kamera, ett idealt normaliserat bildplan och ett verkligt bildplan i kameran. Dessa samband gäller mellan koordinatsystemen: s(u, v, 1)T = A[R t] · (X, Y, Z, 1)T , (u, v, 1)T = A · (un , vn , 1)T . Matrisen A[R t] transformerar alltså från världskoordinater till bildkoordinater. kamera− koordinat− system U lins W V v idealt normaliserat bildplan u 1 un verkligt bildplan vn världs− koordinat− system Y X Z a) Antag att [R t]-matrisen blev ⎛ ⎞ 1 0 0 200 [R t] = ⎝ 0 0.985 −0.174 300 ⎠ . 0 0.174 0.985 400 Vilken vinkel är kameran roterad i förhållande till världskoordinat-systemet? Vilken axel är kameran roterad runt? Vilket avstånd är det mellan kameracentrum och världskoordinat-systemet? b) Kamerans uppgift är att följa ett objekt. Den kan vrida sig i två vinkelriktningar θu och θv (horizontellt och vertikalt). Bildens centrum ligger på koordinaten (u, v) = (250, 200). Antag att man har lokaliserat objektet på koordinaten (u, v) = (250 + 225, 200 + 175) = (475, 375) i bilden. Hur stora vinklar θu respektive θv ska kameran vrida sig för att få objektet att ligga i centrum av bilden? Antag att A-matrisen blev ⎛ ⎞ 500 0 250 A = ⎝ 0 450 200 ⎠ . 0 0 1 1 c) A-matrisen är ⎞ α γ u0 A = ⎝ 0 β v0 ⎠ , 0 0 1 ⎛ där γ som bekant beskriver skevningen. Detta innebär att v-axeln avviker från sin önskade lutningsvinkel. Vilken? Svar a) Svar: Kameran är roterad vinkeln 10 grader runt √ x-axeln. Avståndet mellan kameracentrum och världskoordinatsystem är 2002 + 3002 + 4002 = 538.5. b) Det verkar som att den ideala normaliserade koordinaten (un , vn ) = (0.450, 0.389) transformerar sig till bildpunkten (u, v) = (475, 375) enligt ⎛ ⎞ ⎛ ⎞ ⎛ ⎞ 475 500 0 250 0.450 ⎝ 375 ⎠ = ⎝ 0 450 200 ⎠ · ⎝ 0.389 ⎠ . 1 0 0 1 1 Då blir θu = arctan(0.450/1) = 0.423 = 24◦ och θv = arctan(0.389/1) = 0.371 = 21◦ , se figur. kamera− koordinat− system 1 W θv V 0.389 vn Svar: Kameran ska vrida sig 24◦ i u-led och 21◦ i v-led. c) Punkterna (0, 0), (1, 0) och (0, 1) i (un , vn )-planet bildar en rät-vinklig triangel. De transformeras till (u0 , v0 ), (α + u0 , v0 ) och (γ + u0 , β + v0 ) i (u, v)-planet. Svar: v-axeln avviker arctan(γ/β) från sin önskade lutningsvinkel. 2 Ex4) Kamerakalibrering Kamerakalibreringsmetoden som är beskriven av Zhang kräver ett antal kalibreringsbilder. Se figuren nedan som visar ett exempel på fyra st bilder av kalibreringsmönstret. Den första bilden, bild0, används som världskoordinatsystem då rotationsbild0 bild1 50 50 100 100 150 150 200 200 100 200 300 100 bild2 50 100 100 150 150 200 200 200 300 bild3 50 100 200 300 100 200 300 Figur 1: Fyra stycken bilder av kalibreringsmönstret. matrisen R och translationsvektorn t bestäms. X-axeln ligger på linjen ovanför de 3 punkterna, Y-axeln ligger på linjen till vänster om de två punkterna, och Z-axeln är följdaktligen ortogonal mot planet. Det gäller att ⎞ ⎛ α γ u0 A = ⎝ 0 β v0 ⎠ . 0 0 1 3 Resultatet av kalibreringen blev: A = 1.0e+03 * 1.0363 -0.0000 0.1831 0.0000 0.9399 0.1384 0.0000 0.0000 0.0010 R = 0.9134 0.4008 -0.0642 -0.4000 0.9155 0.0422 0.0758 -0.0130 0.9965 t = -29.4286 7.3564 569.9670 a) Beräkna avståndet mellan kameralins och världskoordinatsystemets origo. b) Avståndet mellan kameralins och världskoordinatsystems origo uppmättes till ca 560mm. Får du överensstämmelse mellan beräkning och mått? c) Rotationen mellan kamera och världskoordinatsystem har skett nästan enbart runt en axel. Vilken axel och hur stor rotation? d) Rotationen mellan kamera och världskoordinatsystem mättes mha gradskiva till 23.5◦ . Får du överensstämmelse mellan beräkning och mått? e) Bildstorleken är 352 × 240, vilket ger centrum vid (176, 120). Var är det korrekta centrum beläget, dvs där optiska axeln skär bildplanet? f) Hur stor är skevningen mellan bildens pixlar? g) Hur kvadratiska är pixlarna? Ge ett mått! h) Bestämning av de fyra bildernas homografier ingår som deluppgifter i Zhangs 4 metod. Då får man användning för nedanstående matris. D·c= ⎛ X1 Y1 ⎜ 0 0 ⎜ ⎜ X2 Y2 ⎜ ⎜ .. .. ⎝ . . 0 0 1 0 1 .. . 0 X1 0 .. . 0 XN 0 0 −u1 X1 −u1 Y1 Y1 1 −v1 X1 −v1 Y1 0 0 −u2 X2 −u2 Y2 .. .. .. .. . . . . YN 1 −vN XN −vN YN ⎞ ⎛ ⎞ ⎛ C11 ⎟ ⎜ C12 ⎟ ⎜ ⎟ ⎜ ⎟ ⎜ ⎟ ⎜ C13 ⎟ ⎜ ⎟·⎜ ⎟=⎜ ⎟ ⎜ .. ⎟ ⎜ ⎠ ⎝ . ⎠ ⎝ C32 (1) ⎞ u1 v1 ⎟ ⎟ u2 ⎟ ⎟=f .. ⎟ . ⎠ vn (2) Förklara ingående variabler! i) Antag att skevningen är 0. Hur många bilder behöver man då minst använda vid kalibreringen? Motivera! Svar: a) √ 29.432 + 7.362 + 569.972 b) Någorlunda. c) Z-axeln. arcsin(0.4) = 23.6◦ d) Ganska bra! e) (183, 138) f) 0 g) Förhållandet mellan pixlarnas storlek i u och v-led är 1.0363/0.9399. h) (Xi , Yi , Zi = 0) är en kalibreringspunkt i världen och (ui , vi ) är en kalibreringspunkt i bilden. Vektorn C11 , ..., C32 kan omformas till matrisen C och beskriver då sambandet mellan världskoordinater och bildkoordinater. i) Det räcker med två bilder. En bild ger en homografi med en C-matris med 8 st oberoende värden. En 3D-rotation har 3 frihetsgarder: en rotation runt vardera axeln. En 3D-translation har också 3 frihetsgrader: en translation längs vardera axeln. 8-3-3=2. En bild ger oss alltså möjlighet att bestämma två värden i A-matrisen. Två bilder ger oss möjlighet att bestämma alla de fyra okända värdena i A-matrisen. 5