一、摄像机标定
为方便区分,
P
w
P_w
Pw写为
P
i
P_i
Pi,
P
′
P'
P′写为
p
i
p_i
pi。
在这里,
p
i
p_i
pi是欧氏坐标形式,
P
i
P_i
Pi仍是齐次坐标形式
投影矩阵
M
(
3
×
4
)
M(3\times4)
M(3×4)有11个未知量。
u
i
=
m
1
P
i
m
3
P
i
u_i=\frac{m_1P_i}{m_3P_i}
ui=m3Pim1Pi
v
i
=
m
2
P
i
m
3
P
i
v_i=\frac{m_2P_i}{m_3P_i}
vi=m3Pim2Pi
可见,一对对应点可以获得两个方程,需要求解11个未知量的话,至少需要6对对应点。但在实际过程中,为了鲁棒性,通常使用多于六对对应点。
二、齐次线性方程组
当方程组是超定方程组时,0总是一个解,但不存在非零解。而我们需要求的是非零解m,所以通过使
∣
∣
P
m
∣
∣
||Pm||
∣∣Pm∣∣最小从而逼近0,但若不添加约束的话,m可以趋于无限小,因此添加约束
∣
∣
m
∣
∣
=
1
||m||=1
∣∣m∣∣=1,求得此时的m。
三、标定过程
实际上就是在满足
s
.
t
.
∣
∣
m
∣
∣
=
1
s.t.||m||=1
s.t.∣∣m∣∣=1的约束条件下,求出使
∣
∣
P
m
∣
∣
||Pm||
∣∣Pm∣∣最小的矩阵
m
m
m。
满足条件的 m m m:对 P P P矩阵进行奇异值分解, m m m为 P P P矩阵最小奇异值的右奇异向量,且 ∣ ∣ m ∣ ∣ = 1 ||m||=1 ∣∣m∣∣=1
此时
m
m
m是(12×1)的向量,转成矩阵形式
M
M
M(3×4),得到投影矩阵
M
M
M
四、提取摄像机参数
但
M
M
M是摄像机内外参数共同乘积的结果,
M
=
K
[
R
T
]
M=K\left[\begin{matrix}R&T\end{matrix}\right]
M=K[RT],而我们更想单独提取出摄像机的内参数和外参数。
K
中
u
0
,
v
0
K中u_0,v_0
K中u0,v0是之前的
c
x
,
c
y
c_x,c_y
cx,cy。
求解得到的
M
M
M离真实的摄像机投影矩阵
M
M
M之间会有一个系数
ρ
\rho
ρ的差异,在齐次坐标系下,这个系数是无法确定的。
(一)内参数
(1)偏置量 u 0 , v 0 u_0,v_0 u0,v0
ρ A = K R \rho A=KR ρA=KR,得到A与KR之间的关系,K是摄像机内参数,R是摄像机外参数的旋转矩阵(摄像机坐标系与世界坐标系之间的旋转矩阵)。
r
3
r_3
r3是旋转矩阵R内的向量,应当是单位向量,所以
∣
r
3
∣
=
1
|r_3|=1
∣r3∣=1。
∣ ρ a 3 ∣ = ∣ r 3 ∣ = 1 |\rho a_3|=|r_3|=1 ∣ρa3∣=∣r3∣=1,所以 ρ = ± 1 ∣ a 3 ∣ \rho=\frac{\pm1}{|a_3|} ρ=∣a3∣±1
得到系数 ρ \rho ρ
ρ a 3 ⋅ ρ a 1 = r 3 ( α r 1 − α c o t θ r 2 + u 0 r 3 ) \rho a_3 · \rho a_1=r_3(\alpha r_1-\alpha cot\theta r_2+u_0r_3) ρa3⋅ρa1=r3(αr1−αcotθr2+u0r3),由于 r 1 , r 2 , r 3 r_1,r_2,r_3 r1,r2,r3互相垂直,
r 1 ⋅ r 2 T = 0 r_1·r_2^T=0 r1⋅r2T=0, r 3 ⋅ r 3 T = 1 r_3·r_3^T=1 r3⋅r3T=1
最终, ρ 2 ( a 1 ⋅ a 3 ) = u 0 \rho ^2(a_1·a_3)=u_0 ρ2(a1⋅a3)=u0
同理, ρ 2 ( a 2 ⋅ a 3 ) = v 0 \rho ^2(a_2·a_3)=v_0 ρ2(a2⋅a3)=v0
得到摄像机内参数的偏置量 u 0 , v 0 u_0,v_0 u0,v0。
(2)像素坐标系偏斜量
θ
\theta
θ
ρ
a
1
×
ρ
a
3
=
(
α
r
1
α
c
o
t
θ
r
2
+
u
0
r
3
)
×
r
3
\rho a_1 \times \rho a_3=(\alpha r_1\alpha cot\theta r_2+u_0r_3)\times r_3
ρa1×ρa3=(αr1αcotθr2+u0r3)×r3,由于
r
1
×
r
3
r_1 \times r_3
r1×r3得到的是同时垂直于
r
1
和
r
3
r_1和r_3
r1和r3的向量,即
r
2
r_2
r2。
最终, ρ 2 ( a 1 × a 3 ) = α r 2 − α c o t θ r 1 \rho^2(a_1 \times a_3)=\alpha r_2-\alpha cot\theta r_1 ρ2(a1×a3)=αr2−αcotθr1,等号两边取模,得 ρ 2 ∣ a 1 × a 3 ∣ = ∣ α ∣ s i n θ \rho^2|a_1\times a_3|=\frac{|\alpha|}{sin\theta} ρ2∣a1×a3∣=sinθ∣α∣
同理, ρ 2 ( a 2 × a 3 ) = β s i n θ r 1 \rho^2(a_2 \times a_3)=\frac{\beta}{sin\theta}r_1 ρ2(a2×a3)=sinθβr1,取模,得 ρ 2 ∣ a 2 × a 3 ∣ = ∣ β ∣ s i n θ \rho^2|a_2\times a_3|=\frac{|\beta|}{sin\theta} ρ2∣a2×a3∣=sinθ∣β∣
最终,
c
o
s
θ
=
−
(
a
1
×
a
3
)
⋅
(
a
2
×
a
3
)
∣
a
1
×
a
3
∣
⋅
∣
a
2
×
a
3
∣
cos\theta=-\frac{(a_1\times a_3)·(a_2\times a_3)}{|a_1\times a_3|·|a_2\times a_3|}
cosθ=−∣a1×a3∣⋅∣a2×a3∣(a1×a3)⋅(a2×a3)
得到摄像机内参数的偏斜量 θ \theta θ
若
(
a
1
×
a
3
)
⋅
(
a
2
×
a
3
)
=
0
(a_1\times a_3)·(a_2\times a_3)=0
(a1×a3)⋅(a2×a3)=0,则表示像素坐标系是垂直的。即空间中长方形投影到像素平面后,仍是长方形,而非平行四边形。
(3)物体真实长度与图像像素点个数的比例,
α
,
β
\alpha,\beta
α,β
∣
α
∣
=
ρ
2
∣
a
1
×
a
3
∣
s
i
n
θ
|\alpha|=\rho^2|a_1\times a_3|sin\theta
∣α∣=ρ2∣a1×a3∣sinθ,由于
ρ
2
≥
0
,
∣
a
1
×
a
3
∣
≥
0
,
θ
在
0
°
90
°
,
s
i
n
θ
≥
0
\rho^2≥0,|a_1\times a_3|≥0,\theta在 0°~90°,sin\theta≥0
ρ2≥0,∣a1×a3∣≥0,θ在0° 90°,sinθ≥0,所以
∣
α
∣
|\alpha|
∣α∣的绝对值可以去掉,
α = ρ 2 ∣ a 1 × a 3 ∣ s i n θ \alpha=\rho^2|a_1\times a_3|sin\theta α=ρ2∣a1×a3∣sinθ
同理, β = ρ 2 ∣ a 2 × a 3 ∣ s i n θ \beta=\rho^2|a_2\times a_3|sin\theta β=ρ2∣a2×a3∣sinθ
得到摄像机内参数的物体真实长度与图像像素点个数的比例, α , β \alpha,\beta α,β
在像素坐标系垂直的情况下,
若 α = β \alpha=\beta α=β,
即 ∣ a 1 × a 3 ∣ = ∣ a 2 × a 3 ∣ |a_1\times a_3|=|a_2\times a_3| ∣a1×a3∣=∣a2×a3∣,
即 ∣ a 1 × a 3 ∣ 2 = ∣ a 2 × a 3 ∣ 2 |a_1\times a_3|^2=|a_2\times a_3|^2 ∣a1×a3∣2=∣a2×a3∣2,
即 ( a 1 × a 3 ) ⋅ ( a 1 × a 3 ) = ( a 2 × a 3 ) ⋅ ( a 2 × a 3 ) (a_1\times a_3)·(a_1\times a_3)=(a_2\times a_3)·(a_2\times a_3) (a1×a3)⋅(a1×a3)=(a2×a3)⋅(a2×a3)
此时像素是方形的像素。
(二)外参数
(1)旋转矩阵R
r
1
r_1
r1是单位向量,
ρ
,
β
s
i
n
θ
\rho,\frac{\beta}{sin\theta}
ρ,sinθβ都是实数,因此
r
1
r_1
r1的方向仅与同为向量的
(
a
1
×
a
3
)
(a_1\times a_3)
(a1×a3)有关,
所以, r 1 = ( a 2 × a 3 ) ∣ a 2 × a 3 ∣ r_1=\frac{(a_2\times a_3)}{|a_2\times a_3|} r1=∣a2×a3∣(a2×a3)
同理, ρ a 3 = r 3 \rho a_3=r_3 ρa3=r3,且由之前已知, ρ = ± 1 ∣ a 3 ∣ \rho=\frac{\pm 1}{|a_3|} ρ=∣a3∣±1,
所以, r 3 = ± a 3 ∣ a 3 ∣ r_3=\frac{\pm a_3}{|a_3|} r3=∣a3∣±a3
既然求得 r 1 , r 3 r_1,r_3 r1,r3,则 r 3 = r 3 × r 1 r_3=r_3\times r_1 r3=r3×r1
得到摄像机外参数的旋转矩阵R
(2)平移矩阵T
ρ
b
=
K
T
K
−
1
ρ
b
=
T
ρ
K
−
1
b
=
T
\rho b=KT\\K^{-1}\rho b=T\\\rho K^{-1}b=T
ρb=KTK−1ρb=TρK−1b=T
得到摄像机外参数的平移矩阵T
(三)总结
六个点不能来自于同一个平面
五、径向畸变摄像机标定
[
u
i
v
i
]
\left[\begin{matrix}u_i\\v_i\end{matrix}\right]
[uivi]是像素平面中实际观测到的点的坐标,
M P i MP_i MPi是理想中,世界坐标投影到像素平面时的坐标,
理想中的值,需要经过 S λ S_\lambda Sλ的处理(即畸变),得到实际观测到的值。
并不是线性方程组,
u
i
和
P
i
u_i和P_i
ui和Pi的关系是一直在改变的,于此前不同,此前的矩阵M是固定不变的,但此时的矩阵Q中的
λ
\lambda
λ会随着
u
i
,
v
i
u_i,v_i
ui,vi的变化而变化,所以并不是线性方程组,因此不能用此前的解线性方程组的方法求解。
[
u
i
v
i
]
\left[\begin{matrix}u_i\\v_i\end{matrix}\right]
[uivi]是实际观测值,设为X
[ q 1 P i q 3 P i q 2 P i q 3 P i ] \left[\begin{matrix}\frac{q_1P_i}{q_3P_i}\\\\\frac{q_2P_i}{q_3P_i}\end{matrix}\right] ⎣⎢⎡q3Piq1Piq3Piq2Pi⎦⎥⎤是与矩阵Q有关的理想值,设为 f ( Q ) f(Q) f(Q)
问题变成,取到最好的Q值,使X与 f ( Q ) f(Q) f(Q)越接近越好。
即非线性优化问题:找到使
∣
∣
f
(
Q
)
−
X
∣
∣
2
||f(Q)-X||^2
∣∣f(Q)−X∣∣2最小的矩阵Q