张氏相机标定心得体会——湖南泽塔{Zeta}
相机标定
\quad \quad 学习相机标定一年有余,发现当前网上资料或不详细,或有些有错误,虽感受不是特别好,但或多或少给我提供了很宝贵的线索。乘凉了这么久,也种棵树,让后面的朋友方便乘凉。
\quad \quad 第一次在CSDN发文,这次就以张正友的多张照片标定来展开讨论吧。
小孔成像原理
\quad \quad
在相机外为了测量标定板和标定物而建立的坐标系称为世界坐标系或物坐标系,记为
{
O
;
x
w
,
y
w
,
z
w
}
\{O;x_w,y_w,z_w\}
{O;xw,yw,zw},这里下标
w
w
w表示world。因相机凸镜较小,且接收感光屏幕在固定位置强制获取成像,所以不能用凸镜成像原理来分析,这里适合用小孔成像原理来进行分析,但需要考虑畸变因素,目前认为的畸变主要包括径向畸变、切向畸变和薄棱镜畸变,因目前的普通相机(区别于鱼眼镜头和超广角镜头这种畸变较大的镜头)拍照和视频畸变处理相对较好了,本文不展开讨论畸变。后文将相机凸镜中心称为小孔
O
′
O'
O′,小孔处凸镜中心轴线记为
z
′
z'
z′轴,将小孔作为原点,原点处垂直于
z
′
z'
z′轴的平面顺势建立
x
′
O
′
y
′
x'O'y'
x′O′y′平面,本文称该坐标系为小孔坐标系
{
O
′
;
x
′
,
y
′
,
z
′
}
\{O';x',y',z'\}
{O′;x′,y′,z′}。
对于相机外一点
P
P
P,设其世界坐标为
(
x
,
y
,
z
)
(x,y,z)
(x,y,z),其小孔坐标为
(
x
′
,
y
′
,
z
′
)
(x',y',z')
(x′,y′,z′),设
x
′
x'
x′轴上正方向单位向量
i
⃗
′
\vec i'
i′在世界坐标系下坐标为
(
l
1
,
m
1
,
n
1
)
T
(l_1,m_1,n_1)^T
(l1,m1,n1)T;
y
′
y'
y′轴上正方向单位向量
j
⃗
′
\vec j'
j′在世界坐标为
(
l
2
,
m
2
,
n
2
)
T
(l_2,m_2,n_2)^T
(l2,m2,n2)T;
z
′
z'
z′轴上正方向单位向量
k
⃗
′
\vec k'
k′在世界坐标为
(
l
3
,
m
3
,
n
3
)
T
(l_3,m_3,n_3)^T
(l3,m3,n3)T;设小孔的世界坐标为
(
x
0
,
y
0
,
z
0
)
(x_0,y_0,z_0)
(x0,y0,z0)。则根据空间解析几何相关知识有
(
x
y
z
)
=
(
l
1
l
2
l
3
m
1
m
2
m
3
n
1
n
2
n
3
)
(
x
′
y
′
z
′
)
+
(
x
0
y
0
z
0
)
,
\begin{gathered} \quad \begin{pmatrix} x \\y\\z \end{pmatrix}=\begin{pmatrix} l_1 & l_2&l_3 \\ m_1& m_2&m_3\\n_1&n_2&n_3 \end{pmatrix}\begin{pmatrix} x' \\y'\\z' \end{pmatrix}+\begin{pmatrix} x _0\\y_0\\z_0 \end{pmatrix} \end{gathered},
xyz
=
l1m1n1l2m2n2l3m3n3
x′y′z′
+
x0y0z0
,
这里
T
=
(
l
1
l
2
l
3
m
1
m
2
m
3
n
1
n
2
n
3
)
\begin{gathered} T=\begin{pmatrix} l_1 & l_2&l_3 \\ m_1& m_2&m_3\\n_1&n_2&n_3 \end{pmatrix} \end{gathered}
T=
l1m1n1l2m2n2l3m3n3
为过渡矩阵,是正交矩阵,所以
(
x
′
y
′
z
′
)
=
(
l
1
m
1
n
1
l
2
m
2
n
2
l
3
m
3
n
3
)
(
x
y
z
)
+
(
x
0
′
y
0
′
z
0
′
)
,
\begin{gathered} \quad \begin{pmatrix} x' \\y'\\z' \end{pmatrix}=\begin{pmatrix} l_1 & m_1&n_1 \\ l_2& m_2&n_2\\l_3&m_3&n_3 \end{pmatrix}\begin{pmatrix} x \\y\\z\end{pmatrix}+\begin{pmatrix} x' _0\\y'_0\\z'_0 \end{pmatrix} \end{gathered},
x′y′z′
=
l1l2l3m1m2m3n1n2n3
xyz
+
x0′y0′z0′
,
这里
(
x
0
′
y
0
′
z
0
′
)
=
−
(
l
1
m
1
n
1
l
2
m
2
n
2
l
3
m
3
n
3
)
(
x
0
y
0
z
0
)
。
\begin{gathered} \begin{pmatrix} x' _0\\y'_0\\z'_0 \end{pmatrix}=-\begin{pmatrix} l_1 & m_1&n_1 \\ l_2& m_2&n_2\\l_3&m_3&n_3 \end{pmatrix}\begin{pmatrix} x_0 \\y_0\\z_0\end{pmatrix} \end{gathered}。
x0′y0′z0′
=−
l1l2l3m1m2m3n1n2n3
x0y0z0
。
可以将旋转与平移写到一个矩阵运算,得如下形式:
(
x
′
y
′
z
′
)
=
(
l
1
m
1
n
1
x
0
′
l
2
m
2
n
2
y
0
′
l
3
m
3
n
3
z
0
′
)
(
x
y
z
1
)
,
\begin{gathered} \quad \begin{pmatrix} x' \\y'\\z' \end{pmatrix}=\begin{pmatrix} l_1 & m_1&n_1 &x' _0\\ l_2& m_2&n_2&y'_0\\l_3&m_3&n_3&z'_0 \end{pmatrix}\begin{pmatrix} x \\y\\z\\1\end{pmatrix} \end{gathered},
x′y′z′
=
l1l2l3m1m2m3n1n2n3x0′y0′z0′
xyz1
,
记
R
1
=
(
l
1
m
1
n
1
l
2
m
2
n
2
l
3
m
3
n
3
)
R_1=\begin{pmatrix} l_1 & m_1&n_1 \\ l_2& m_2&n_2\\l_3&m_3&n_3 \end{pmatrix}
R1=
l1l2l3m1m2m3n1n2n3
,记
t
1
=
(
x
0
′
y
0
′
z
0
′
)
t_1=\begin{pmatrix} x' _0\\y'_0\\z'_0 \end{pmatrix}
t1=
x0′y0′z0′
,则有
(
x
′
y
′
z
′
)
=
(
R
1
t
1
)
(
x
y
z
1
)
(
1.1
)
,
\begin{gathered} \quad \begin{pmatrix} x' \\y'\\z' \end{pmatrix}=\begin{pmatrix} R_1& t_1\end{pmatrix}\begin{pmatrix} x \\y\\z\\1\end{pmatrix}\quad {(1.1)} \end{gathered},
x′y′z′
=(R1t1)
xyz1
(1.1),
设接收屏幕与小孔坐标系的水平平面平行,设小孔到接收屏幕的距离为
f
f
f,设前面提到的物点
P
P
P的小孔成像为
P
1
P_1
P1,设
P
1
P_1
P1在小孔坐标系下坐标为
(
u
1
,
v
1
,
−
f
)
T
(u_1,v_1,-f)^T
(u1,v1,−f)T,则利用相似比有
u
1
x
′
=
v
1
y
′
=
−
f
z
′
\frac{u_1}{x'}=\frac{v_1}{y'}=\frac{-f}{z'}
x′u1=y′v1=z′−f,写成矩阵形式为
(
u
1
v
1
1
)
=
1
z
′
(
−
f
0
0
0
−
f
0
0
0
1
)
(
x
′
y
′
z
′
)
\begin{pmatrix} u _1\\v_1\\1\end{pmatrix}=\frac{1}{z'}\begin{pmatrix} -f &0&0 \\ 0& -f&0\\0&0&1 \end{pmatrix}\begin{pmatrix} x' \\y'\\z' \end{pmatrix}
u1v11
=z′1
−f000−f0001
x′y′z′
,
结合公式
(
1.1
)
(1.1)
(1.1),有
(
u
1
v
1
1
)
=
1
l
3
x
+
m
3
y
+
n
3
z
+
z
0
′
(
−
f
0
0
0
−
f
0
0
0
1
)
(
R
1
t
1
)
(
x
y
z
1
)
(
1.2
)
\begin{pmatrix} u _1\\v_1\\1\end{pmatrix}=\frac{1}{l_3x+m_3y+n_3z+z'_0}\begin{pmatrix} -f &0&0 \\ 0& -f&0\\0&0&1 \end{pmatrix}\begin{pmatrix} R_1& t_1\end{pmatrix}\begin{pmatrix} x \\y\\z\\1\end{pmatrix}\quad{(1.2)}
u1v11
=l3x+m3y+n3z+z0′1
−f000−f0001
(R1t1)
xyz1
(1.2),
因为小孔成像后再经过光电传感器生成矩阵形式的数字像素图像,忽略离散化,只考虑尺度拉伸与旋转和平移,设
P
P
P点小孔成像后对应到像素图像的点
P
2
P_2
P2的像素坐标为
(
u
,
v
)
T
(u,v)^T
(u,v)T则
(
u
v
1
)
=
(
α
1
γ
1
u
0
s
1
β
1
v
0
0
0
1
)
(
u
1
v
1
1
)
\begin{pmatrix} u \\v\\1\end{pmatrix}=\begin{pmatrix} \alpha_1&\gamma_1&u_0 \\ s_1& \beta_1&v_0\\0&0&1 \end{pmatrix}\begin{pmatrix} u _1\\v_1\\1\end{pmatrix}
uv1
=
α1s10γ1β10u0v01
u1v11
,
结合公式
(
1.2
)
(1.2)
(1.2),有
(
u
v
1
)
=
1
l
3
x
+
m
3
y
+
n
3
z
+
z
0
′
(
α
1
γ
1
u
0
s
1
β
1
v
0
0
0
1
)
(
−
f
0
0
0
−
f
0
0
0
1
)
(
R
1
t
1
)
(
x
y
z
1
)
(
1.3
)
\begin{pmatrix} u \\v\\1\end{pmatrix}=\frac{1}{l_3x+m_3y+n_3z+z'_0}\begin{pmatrix} \alpha_1&\gamma_1&u_0 \\ s_1& \beta_1&v_0\\0&0&1 \end{pmatrix}\begin{pmatrix} -f &0&0 \\ 0& -f&0\\0&0&1 \end{pmatrix}\begin{pmatrix} R_1& t_1\end{pmatrix}\begin{pmatrix} x \\y\\z\\1\end{pmatrix}\quad{(1.3)}
uv1
=l3x+m3y+n3z+z0′1
α1s10γ1β10u0v01
−f000−f0001
(R1t1)
xyz1
(1.3),
化简得
(
u
v
1
)
=
1
l
3
x
+
m
3
y
+
n
3
z
+
z
0
′
(
−
f
α
1
−
f
γ
1
u
0
−
f
s
1
−
f
β
1
v
0
0
0
1
)
(
R
1
t
1
)
(
x
y
z
1
)
(
1.4
)
\begin{pmatrix} u \\v\\1\end{pmatrix}=\frac{1}{l_3x+m_3y+n_3z+z'_0}\begin{pmatrix} -f\alpha_1&-f\gamma_1&u_0 \\-f s_1& -f\beta_1&v_0\\0&0&1 \end{pmatrix}\begin{pmatrix} R_1& t_1\end{pmatrix}\begin{pmatrix} x \\y\\z\\1\end{pmatrix}\quad{(1.4)}
uv1
=l3x+m3y+n3z+z0′1
−fα1−fs10−fγ1−fβ10u0v01
(R1t1)
xyz1
(1.4),
利用矩阵的正交分解(搜索QR分解可以找到相关信息,这里需要RQ分解)可以将矩阵
(
−
f
α
1
−
f
γ
1
−
f
s
1
−
f
β
1
)
\begin{pmatrix} -f\alpha_1&-f\gamma_1\\-f s_1& -f\beta_1 \end{pmatrix}
(−fα1−fs1−fγ1−fβ1)唯一分解为第一个对角线元素为正的上三角矩阵和一个行列式为1的正交矩阵的乘积,设
(
−
f
α
1
−
f
γ
1
−
f
s
1
−
f
β
1
)
=
(
α
γ
0
β
)
Q
\begin{pmatrix} -f\alpha_1&-f\gamma_1\\-f s_1& -f\beta_1 \end{pmatrix}=\begin{pmatrix} \alpha&\gamma\\0& \beta\end{pmatrix}Q
(−fα1−fs1−fγ1−fβ1)=(α0γβ)Q,则
(
−
f
α
1
−
f
γ
1
u
0
−
f
s
1
−
f
β
1
v
0
0
0
1
)
(
R
1
t
1
)
=
(
α
γ
u
0
0
β
v
0
0
0
1
)
(
Q
0
⃗
T
0
⃗
1
)
(
R
1
t
1
)
\begin{pmatrix} -f\alpha_1&-f\gamma_1&u_0 \\-f s_1& -f\beta_1&v_0\\0&0&1 \end{pmatrix}\begin{pmatrix} R_1& t_1\end{pmatrix}=\begin{pmatrix} \alpha&\gamma&u_0 \\0& \beta&v_0\\0&0&1 \end{pmatrix}\begin{pmatrix} Q&\vec{0}^T \\ \vec{0}& 1\end{pmatrix}\begin{pmatrix} R_1& t_1\end{pmatrix}
−fα1−fs10−fγ1−fβ10u0v01
(R1t1)=
α00γβ0u0v01
(Q00T1)(R1t1)
记
(
R
t
)
=
(
Q
0
⃗
0
⃗
T
1
)
(
R
1
t
1
)
,
\begin{pmatrix} R& t\end{pmatrix}=\begin{pmatrix} Q&\vec{0} \\ \vec{0}^T& 1\end{pmatrix}\begin{pmatrix} R_1& t_1\end{pmatrix},
(Rt)=(Q0T01)(R1t1),则
(
u
v
1
)
=
1
l
3
x
+
m
3
y
+
n
3
z
+
z
0
′
(
α
γ
u
0
0
β
v
0
0
0
1
)
(
R
t
)
(
x
y
z
1
)
\begin{pmatrix} u \\v\\1\end{pmatrix}=\frac{1}{l_3x+m_3y+n_3z+z'_0}\begin{pmatrix} \alpha&\gamma&u_0 \\0& \beta&v_0\\0&0&1 \end{pmatrix} \begin{pmatrix} R& t\end{pmatrix}\begin{pmatrix} x \\y\\z\\1\end{pmatrix}
uv1
=l3x+m3y+n3z+z0′1
α00γβ0u0v01
(Rt)
xyz1
此公式为相机的小孔成像原理对应的最终公式。
这里
z
′
=
l
3
x
+
m
3
y
+
n
3
z
+
z
0
′
z'=l_3x+m_3y+n_3z+z'_0
z′=l3x+m3y+n3z+z0′为
P
P
P点在小孔坐标系下的第三个分量,是
P
P
P点到小孔坐标系水平平面的距离,
R
R
R为水平坐标系选取恰当,使得内参数
α
\alpha
α为正且内参数矩阵为上三角情形下对应的行列式为1的正交矩阵。
多张照片的张氏标定法
\quad
设
z
a
z_a
za表示物点到小孔坐标系水平面距离,设内参数矩阵为
K
K
K,将上面成像公式简记为
z
a
(
u
v
1
)
=
K
(
R
t
)
(
x
y
z
1
)
z_a\begin{pmatrix} u \\v\\1\end{pmatrix}=K \begin{pmatrix} R& t\end{pmatrix}\begin{pmatrix} x \\y\\z\\1\end{pmatrix}
za
uv1
=K(Rt)
xyz1
考虑平面标定板的多张不同角度下的照片,设世界坐标的水平平面为标定板所在平面,此时成像公式为
z
a
(
u
v
1
)
=
K
(
l
1
m
1
n
1
x
0
′
l
2
m
2
n
2
y
0
′
l
3
m
3
n
3
z
0
′
)
(
x
y
0
1
)
,
z_a\begin{pmatrix} u \\v\\1\end{pmatrix}=K \begin{pmatrix} l_1&m_1&n_1&x'_0\\l_2&m_2&n_2&y'_0\\l_3&m_3&n_3&z'_0\end{pmatrix}\begin{pmatrix} x \\y\\0\\1\end{pmatrix},
za
uv1
=K
l1l2l3m1m2m3n1n2n3x0′y0′z0′
xy01
,
所以可以简化为
z
a
(
u
v
1
)
=
K
(
l
1
m
1
x
0
′
l
2
m
2
y
0
′
l
3
m
3
z
0
′
)
(
x
y
1
)
,
z_a\begin{pmatrix} u \\v\\1\end{pmatrix}=K \begin{pmatrix} l_1&m_1&x'_0\\l_2&m_2&y'_0\\l_3&m_3&z'_0\end{pmatrix}\begin{pmatrix} x \\y\\1\end{pmatrix},
za
uv1
=K
l1l2l3m1m2m3x0′y0′z0′
xy1
,
这里设
H
=
K
(
l
1
m
1
x
0
′
l
2
m
2
y
0
′
l
3
m
3
z
0
′
)
H=K \begin{pmatrix} l_1&m_1&x'_0\\l_2&m_2&y'_0\\l_3&m_3&z'_0\end{pmatrix}
H=K
l1l2l3m1m2m3x0′y0′z0′
,称之为单应性矩阵。
成像公式化为
z
a
(
u
v
1
)
=
H
(
x
y
1
)
,
{z_a}\begin{pmatrix} u \\v\\1\end{pmatrix}=H\begin{pmatrix} x \\y\\1\end{pmatrix},
za
uv1
=H
xy1
, 注意到
H
(
3
,
1
)
=
l
3
,
H
(
3
,
2
)
=
m
3
,
H
(
3
,
3
)
=
z
0
′
H(3,1)=l_3,H(3,2)=m_3,H(3,3)=z'_0
H(3,1)=l3,H(3,2)=m3,H(3,3)=z0′, 所以
z
a
=
H
(
3
,
1
)
∗
x
+
H
(
3
,
2
)
∗
y
+
H
(
3
,
3
)
{z_a}=H(3,1)*x+H(3,2)*y+H(3,3)
za=H(3,1)∗x+H(3,2)∗y+H(3,3),因此成像公式为与
H
H
H中变量有关的齐次线性方程,对于一张照片有4个及以上的物点坐标和匹配的像点坐标,可以构成出H中的9个量为未知数的齐次线性方程组,因
H
(
3
,
3
)
=
z
0
′
≠
0
H(3,3) =z'_0 \neq 0
H(3,3)=z0′=0,令
H
(
3
,
3
)
=
1
H(3,3) =1
H(3,3)=1,就可以计算出
H
H
H(相差常系数
λ
\lambda
λ,设
H
=
1
λ
K
(
l
1
m
1
x
0
′
l
2
m
2
y
0
′
l
3
m
3
z
0
′
)
H=\frac{1}{\lambda }K \begin{pmatrix} l_1&m_1&x'_0\\l_2&m_2&y'_0\\l_3&m_3&z'_0\end{pmatrix}
H=λ1K
l1l2l3m1m2m3x0′y0′z0′
)。设有列向量分块矩阵记号
H
=
(
h
1
,
h
2
,
h
3
)
H=( h_1,h_2,h_3)
H=(h1,h2,h3),则
λ
K
−
1
(
h
1
,
h
2
)
=
(
l
1
m
1
l
2
m
2
l
3
m
3
)
\lambda K^{-1}(h_1,h_2)= \begin{pmatrix} l_1&m_1\\l_2&m_2\\l_3&m_3\end{pmatrix}
λK−1(h1,h2)=
l1l2l3m1m2m3
所以将上式拆开成列向量的两个等式,用转置与之左乘可得
λ
2
h
1
T
K
−
T
K
−
1
h
2
=
(
l
1
,
l
2
,
l
3
)
(
m
1
m
2
m
3
)
=
0
\lambda ^2 h_1^T K^{-T}K^{-1}h_2=(l_1,l_2,l_3) \begin{pmatrix} m_1\\m_2\\m_3\end{pmatrix}=0
λ2h1TK−TK−1h2=(l1,l2,l3)
m1m2m3
=0
以及
λ
2
h
1
T
K
−
T
K
−
1
h
1
=
λ
2
h
2
T
K
−
T
K
−
1
h
2
=
1
\lambda ^2 h_1^TK^{-T}K^{-1}h_1=\lambda ^2 h_2^TK^{-T}K^{-1}h_2=1
λ2h1TK−TK−1h1=λ2h2TK−TK−1h2=1
因
λ
≠
0
\lambda \neq0
λ=0暂时未知,所以一张照片只能得到如下两个等式:
h
1
T
K
−
T
K
−
1
h
2
=
0
h_1^TK^{-T}K^{-1}h_2=0
h1TK−TK−1h2=0
和
h
1
T
K
−
T
K
−
1
h
1
=
h
2
T
K
−
T
K
−
1
h
2
h_1^TK^{-T}K^{-1}h_1=h_2^TK^{-T}K^{-1}h_2
h1TK−TK−1h1=h2TK−TK−1h2。
令
B
=
K
−
T
K
−
1
B=K^{-T}K^{-1}
B=K−TK−1,设
B
=
(
B
1
B
2
B
4
B
2
B
3
B
5
B
4
B
5
B
6
)
B=\begin{pmatrix} B_1&B_2&B_4\\B_2&B_3&B_5\\B_4&B_5&B_6\end{pmatrix}
B=
B1B2B4B2B3B5B4B5B6
,
h
1
=
(
h
11
,
h
21
,
h
31
)
T
,
h
2
=
(
h
12
,
h
22
,
h
32
)
T
h_1=(h_{11},h_{21},h_{31})^T,h_2=(h_{12},h_{22},h_{32})^T
h1=(h11,h21,h31)T,h2=(h12,h22,h32)T则展开矩阵运算,得
h
11
h
12
B
1
+
(
h
11
h
22
+
h
21
h
12
)
B
2
+
h
21
h
22
B
3
+
(
h
11
h
32
+
h
12
h
31
)
B
4
+
(
h
21
h
32
+
h
22
h
31
)
B
5
+
h
31
h
32
B
6
=
0
h_{11}h_{12}B_1+(h_{11}h_{22}+h_{21}h_{12})B_2+h_{21}h_{22}B_3+(h_{11}h_{32}+h_{12}h_{31})B_4+(h_{21}h_{32}+h_{22}h_{31})B_5+h_{31}h_{32}B_6=0
h11h12B1+(h11h22+h21h12)B2+h21h22B3+(h11h32+h12h31)B4+(h21h32+h22h31)B5+h31h32B6=0和
(
h
11
2
−
h
12
2
)
B
1
+
2
(
h
11
h
21
−
h
12
h
22
)
B
2
+
(
h
21
2
−
h
22
2
)
B
3
+
2
(
h
11
h
31
−
h
12
h
32
)
B
4
+
2
(
h
21
h
31
−
h
22
h
32
)
B
5
+
(
h
31
2
−
h
32
2
)
B
6
=
0
(h_{11}^2-h^2_{12})B_1+2(h_{11}h_{21}-h_{12}h_{22})B_2+(h_{21}^2-h_{22}^2)B_3+2(h_{11}h_{31}-h_{12}h_{32})B_4+2(h_{21}h_{31}-h_{22}h_{32})B_5+(h_{31}^2-h^2_{32})B_6=0
(h112−h122)B1+2(h11h21−h12h22)B2+(h212−h222)B3+2(h11h31−h12h32)B4+2(h21h31−h22h32)B5+(h312−h322)B6=0
所以当内参数不发生变化时,三张或更多的照片,每张照片至少匹配5点就可以获取六个或更多以上类型的线性齐次方程构成的方程组,因
B
=
K
−
T
K
−
1
=
(
1
α
2
−
γ
α
2
β
v
0
γ
−
u
0
β
α
2
β
−
γ
α
2
β
γ
2
α
2
β
2
+
1
β
2
−
γ
(
v
0
γ
−
u
0
β
)
α
2
β
2
−
v
0
β
2
v
0
γ
−
u
0
β
α
2
β
−
γ
(
v
0
γ
−
u
0
β
)
α
2
β
2
−
v
0
β
2
(
v
0
γ
−
u
0
β
)
2
α
2
β
2
+
v
0
2
β
2
+
1
)
B=K^{-T}K^{-1}=\begin{pmatrix} \frac{1}{\alpha^2}&-\frac{\gamma}{\alpha^2\beta}&\frac{v_0\gamma-u_0\beta}{\alpha^2\beta}\\ -\frac{\gamma}{\alpha^2\beta}&\frac{\gamma^2}{\alpha^2\beta^2}+\frac{1}{\beta^2}&-\frac{\gamma (v_0\gamma-u_0\beta)}{\alpha^2\beta^2}-\frac{v_0}{\beta^2}\\\frac{v_0\gamma-u_0\beta}{\alpha^2\beta}&-\frac{\gamma (v_0\gamma-u_0\beta)}{\alpha^2\beta^2}-\frac{v_0}{\beta^2}&\frac{(v_0\gamma-u_0\beta)^2}{\alpha^2\beta^2}+\frac{v^2_0}{\beta^2}+1\end{pmatrix}
B=K−TK−1=
α21−α2βγα2βv0γ−u0β−α2βγα2β2γ2+β21−α2β2γ(v0γ−u0β)−β2v0α2βv0γ−u0β−α2β2γ(v0γ−u0β)−β2v0α2β2(v0γ−u0β)2+β2v02+1
,
B
1
>
0
B_1>0
B1>0,所以可以求得齐次方程的一组非零解,也就是得到与
B
B
B相差一个正系数的解,设
1
λ
2
B
\frac{1}{\lambda^2 } B
λ21B为解,即
1
λ
2
K
−
T
K
−
1
\frac{1}{\lambda^2 }K^{-T}K^{-1}
λ21K−TK−1已知,通过cholesky分解,得到相机的内参数矩阵
λ
K
\lambda K
λK,因K的第三行第三列为1,所以可以求出
K
K
K。
也可以通过如下公式求得
v
0
=
B
2
∗
B
4
−
B
1
∗
B
5
B
1
∗
B
3
−
B
2
2
v_0=\frac{B_2*B_4-B_1*B_5}{B_1*B_3-B_2^2}
v0=B1∗B3−B22B2∗B4−B1∗B5
u
0
=
−
B
4
−
v
0
∗
B
2
B
1
u_0=-\frac{B_4-v_0*B_2}{B_1}
u0=−B1B4−v0∗B2
λ
1
=
B
6
−
B
4
2
+
v
0
∗
(
B
2
∗
B
4
−
B
1
∗
B
5
)
B
1
\lambda_1=B_6-\frac{B_4^2+v_0*(B_2*B_4-B_1*B_5)}{B_1}
λ1=B6−B1B42+v0∗(B2∗B4−B1∗B5)
α
=
λ
1
B
1
\alpha=\sqrt{\frac{\lambda_1}{B_1}}
α=B1λ1
β
=
λ
1
∗
B
1
B
1
B
3
−
B
2
2
\beta=\sqrt{\frac{\lambda_1*B_1}{B_1B_3-B_2^2}}
β=B1B3−B22λ1∗B1
γ
=
−
B
2
∗
α
2
∗
β
λ
1
\gamma=-\frac{B_2*\alpha^2*\beta}{\lambda_1}
γ=−λ1B2∗α2∗β
[1]Zhang, Zhengyou - 《IEEE Transactions on Pattern Analysis & Machine Intelligence》 - 2000