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