张正友标定法

张正友标定法介绍

张正友标定法是基于针孔相机模型的,张正友标定法利用如下图所示的棋盘格标定板,在得到一张标定板的图像之后,可以利用相应的图像检测算法得到每一个角点的像素坐标 ( u , v ) (u,v) (u,v)

张正友标定法_第1张图片

张正友标定法将世界坐标系固定于棋盘格上,则棋盘格上任一点的物理坐标 Z = 0 Z=0 Z=0,由于标定板的世界坐标系是人为事先定义好的,标定板上每一个格子的大小是已知的,我们可以计算得到每一个角点在世界坐标系下的物理坐标 ( X , Y , Z = 0 ) (X,Y,Z=0) (X,Y,Z=0)

我们将利用这些信息:每一个角点的像素坐标 ( u , v = 0 ) (u,v=0) (u,v=0) 、每一个角点在世界坐标系下的物理坐标 ( X , Y , Z = 0 ) (X,Y,Z=0) (X,Y,Z=0),来进行相机的标定,获得相机的内外参矩阵、畸变参数。

标定相机的内参矩阵和外参矩阵

张正友标定法标定相机的内外参数的思路如下:

1)求解内参矩阵与外参矩阵的积;

2)求解内参矩阵;

3)求解外参矩阵。

1、求解内参矩阵与外参矩阵的积
将世界坐标系固定于棋盘格上,则棋盘格上任一点的物理坐标 Z = 0 Z=0 Z=0 ,因此,原单点无畸变的成像模型可以化为下式。其中, R 1 , R 2 R_{1},R_{2} R1,R2 为旋转矩阵 R R R前两列。为了简便,将内参矩阵记为 A A A

Z ( u v 1 ) = ( f d X − f cot ⁡ θ d X u 0 0 f d Y sin ⁡ θ v 0 0 0 1 ) ( R 1 R 2 Z\left(\begin{array}{c}u \\ v \\ 1\end{array}\right)=\left(\begin{array}{ccc}\frac{f}{d X} & -\frac{f \cot \theta}{d X} & u_{0} \\ 0 & \frac{f}{d Y \sin \theta} & v_{0} \\ 0 & 0 & 1\end{array}\right)\left(\begin{array}{ll}R 1 & R 2\end{array}\right. Zuv1=dXf00dXfcotθdYsinθf0u0v01(R1R2
T ) ( X Y 1 ) = A ( R 1 R 2 T ) ( X Y 1 ) T)\left(\begin{array}{l}X \\ Y \\ 1\end{array}\right)=A\left(\begin{array}{lll}R 1 & R 2 & T\end{array}\right)\left(\begin{array}{l}X \\ Y \\ 1\end{array}\right) T)XY1=A(R1R2T)XY1

我们对于上式做一定的说明。
对于不同的图片,内参矩阵 A A A 为定值;
对于同一张图片,内参矩阵 A A A,外参矩阵 ( R 1 , R 2 , T ) (R_{1},R_{2},T) (R1,R2,T) 为定值;
对于同一张图片上的单点,内参矩阵 A A A,外参矩阵 ( R 1 , R 2 , T ) (R_{1},R_{2},T) (R1,R2,T) ,尺度因子 Z Z Z为定值。

我们将 A ( R 1 , R 2 , T ) A(R_{1},R_{2},T) A(R1,R2,T) 记为矩阵 H H H H H H 即为内参矩阵和外参矩阵的积,记矩阵 H H H三列 ( H 1 , H 2 , H 3 ) (H_{1},H_{2},H_{3}) (H1,H2,H3) ,则有:

( u v 1 ) = 1 Z H ( X Y 1 ) = 1 Z [ H 11 H 12 H 13 H 21 H 22 H 23 H 31 H 32 H 33 ] ( X Y 1 ) \left(\begin{array}{c}u \\ v \\ 1\end{array}\right)=\frac{1}{Z} H\left(\begin{array}{l}X \\ Y \\ 1\end{array}\right)=\frac{1}{Z}\left[\begin{array}{lll}H_{11} & H_{12} & H_{13} \\ H_{21} & H_{22} & H_{23} \\ H_{31} & H_{32} & H_{33}\end{array}\right]\left(\begin{array}{c}X \\ Y \\ 1\end{array}\right) uv1=Z1HXY1=Z1H11H21H31H12H22H32H13H23H33XY1

利用上式,消去尺度因子 Z Z Z,可得:

u = H 11 U + H 12 V + H 13 H 31 U + H 32 V + H 33 v = H 21 U + H 22 V + H 23 H 31 U + H 32 V + H 33 \begin{aligned} u &=\frac{H_{11} U+H_{12} V+H_{13}}{H_{31} U+H_{32} V+H_{33}} \\ v &=\frac{H_{21} U+H_{22} V+H_{23}}{H_{31} U+H_{32} V+H_{33}} \end{aligned} uv=H31U+H32V+H33H11U+H12V+H13=H31U+H32V+H33H21U+H22V+H23

此时,尺度因子 Z Z Z 已经被消去,因此上式对于同一张图片上所有的角点均成立。 ( u , v ) (u,v) (u,v) 是像素坐标系下的标定板角点的坐标, ( U , V ) (U,V) (U,V) 是世界坐标系下的标定板角点的坐标。通过图像识别算法,我们可以得到标定板角点的像素坐标 ( u , v ) (u,v) (u,v) ,又由于标定板的世界坐标系是人为定义好的,标定板上每一个格子的大小是已知的,我们可以计算得到世界坐标系下的 ( U , V ) (U,V) (U,V)

由这里的 H H H 是齐次矩阵,有8个独立未知元素。每一个标定板角点可以提供两个约束方程( u , U , V u,U,V u,U,V 的对应关系、 u , U , V u,U,V u,U,V 的对应关系提供了两个约束方程),因此,当一张图片上的标定板角点数量等于4时,即可求得该图片对应的矩阵 H H H

当一张图片上的标定板角点数量大于4时,利用最小二乘法回归最佳的矩阵 H H H

此时 H H H矩阵已知,

2、求解内参矩阵

我们已知了矩阵 H = A ( R 1 , R 2 , T ) H=A(R_{1},R_{2},T) H=A(R1,R2,T) ,接下来需要求解相机的内参矩阵 A A A
我们利用 R 1 , R 2 R_{1},R_{2} R1,R2作为旋转矩阵 R R R 的两列,存在单位正交的关系,即:
R 1 T R 2 = 0 R 1^{T} R 2=0 R1TR2=0
R 1 T R 1 = R 2 T R 2 = 1 R 1^{T} R 1=R 2^{T} R 2=1 R1TR1=R2TR2=1

则由 H H H R 1 , R 2 R_{1},R_{2} R1,R2 的关系,可知:
R 1 = A − 1 H 1 R 1=A^{-1} H 1 R1=A1H1
R 2 = A − 1 H 2 R 2=A^{-1} H 2 R2=A1H2

代入可得:
H 1 T A − T A − 1 H 2 = 0 H 1^{T} A^{-T} A^{-1} H 2=0 H1TATA1H2=0
H 1 T A − T A − 1 H 1 = H 2 T A − T A − 1 H 2 = 1 H 1^{T} A^{-T} A^{-1} H 1=H 2^{T} A^{-T} A^{-1} H 2=1 H1TATA1H1=H2TATA1H2=1

另外,我们发现,上述两个约束方程中均存在矩阵 A − T A − 1 A^{-T} A^{-1} ATA1 。因此,我们记 B = A − T A − 1 B=A^{-T} A^{-1} B=ATA1。我们试图先求解出矩阵 B B B ,通过矩阵 B B B 再求解相机的内参矩阵 A A A

同时,为了简便,我们记相机内参矩阵 A A A 为:

A = ( f d X − f cot ⁡ θ d X u 0 0 0 f d Y sin ⁡ θ v 0 0 0 0 1 0 ) = [ α γ u 0 0 β v 0 0 0 1 ] A=\left(\begin{array}{cccc}\frac{f}{d X} & -\frac{f \cot \theta}{d X} & u_{0} & 0 \\ 0 & \frac{f}{d Y \sin \theta} & v_{0} & 0 \\ 0 & 0 & 1 & 0\end{array}\right)=\left[\begin{array}{ccc}\alpha & \gamma & u_{0} \\ 0 & \beta & v_{0} \\ 0 & 0 & 1\end{array}\right] A=dXf00dXfcotθdYsinθf0u0v01000=α00γβ0u0v01

A − 1 = [ 1 α − γ α β γ v 0 − β u 0 α β 0 1 β − v 0 β 0 0 1 ] A^{-1}=\left[\begin{array}{ccc}\frac{1}{\alpha} & -\frac{\gamma}{\alpha \beta} & \frac{\gamma v_{0}-\beta u_{0}}{\alpha \beta} \\ 0 & \frac{1}{\beta} & -\frac{v_{0}}{\beta} \\ 0 & 0 & 1\end{array}\right] A1=α100αβγβ10αβγv0βu0βv01

则用矩阵 A A A 表示矩阵 B B B 得:
B = A − T A − 1 = [ 1 α 2 − γ α 2 β γ v 0 − β u 0 α 2 β − γ α 2 β 1 β 2 + γ 2 α 2 β 2 γ ( β u 0 − γ v 0 ) α 2 β 2 − v 0 β 2 γ v 0 − β u 0 α 2 β γ ( β u 0 − γ v 0 ) α 2 β 2 − v 0 β 2 ( β u 0 − γ v 0 ) 2 α 2 β 2 + v 0 2 β 2 + 1 ] = [ B 11 B 12 B 13 B 12 B 22 B 23 B 13 B 23 B 33 ] B=A^{-T} A^{-1}=\left[\begin{array}{ccc}\frac{1}{\alpha^{2}} & -\frac{\gamma}{\alpha^{2} \beta} & \frac{\gamma v_{0}-\beta u_{0}}{\alpha^{2} \beta} \\ -\frac{\gamma}{\alpha^{2} \beta} & \frac{1}{\beta^{2}}+\frac{\gamma^{2}}{\alpha^{2} \beta^{2}} & \frac{\gamma\left(\beta u_{0}-\gamma v_{0}\right)}{\alpha^{2} \beta^{2}}-\frac{v_{0}}{\beta^{2}} \\ \frac{\gamma v_{0}-\beta u_{0}}{\alpha^{2} \beta} & \frac{\gamma\left(\beta u_{0}-\gamma v_{0}\right)}{\alpha^{2} \beta^{2}}-\frac{v_{0}}{\beta^{2}} & \frac{\left(\beta u_{0}-\gamma v_{0}\right)^{2}}{\alpha^{2} \beta^{2}}+\frac{v_{0}^{2}}{\beta^{2}}+1\end{array}\right]=\left[\begin{array}{ccc}B_{11} & B_{12} & B_{13} \\ B_{12} & B_{22} & B_{23} \\ B_{13} & B_{23} & B_{33}\end{array}\right] B=ATA1=α21α2βγα2βγv0βu0α2βγβ21+α2β2γ2α2β2γ(βu0γv0)β2v0α2βγv0βu0α2β2γ(βu0γv0)β2v0α2β2(βu0γv0)2+β2v02+1=B11B12B13B12B22B23B13B23B33

注意:由于 B B B对称阵,上式出现了两次 B 12 , B 13 , B 23 B_{12},B{13},B{23} B12,B13,B23

这里,我们可以使用 B = A − T A − 1 B=A^{-T} A^{-1} B=ATA1 将前面通过 R 1 , R 2 R_{1},R_{2} R1,R2 单位正交得到的约束方程化为:
H 1 T B H 2 = 0 H 1^{T} B H 2=0 H1TBH2=0
H 1 T B H 1 = H 2 T B H 2 = 1 H 1^{T} B H 1=H 2^{T} B H 2=1 H1TBH1=H2TBH2=1

因此,为了求解矩阵 B B B ,我们必须计算 H i T B H j = 0 H i^{T} B H j=0 HiTBHj=0 。则:
H i T B H j = [ H 1 i H 2 i H 3 i ] [ B 11 B 12 B 13 B 12 B 22 B 23 B 13 B 23 B 33 ] [ H 1 j H 2 j H 3 j ] H_{i}^{T} B H_{j}=\left[\begin{array}{lll}H_{1 i} & H_{2 i} & H_{3 i}\end{array}\right]\left[\begin{array}{lll}B_{11} & B_{12} & B_{13} \\ B_{12} & B_{22} & B_{23} \\ B_{13} & B_{23} & B_{33}\end{array}\right]\left[\begin{array}{c}H_{1 j} \\ H_{2 j} \\ H_{3 j}\end{array}\right] HiTBHj=[H1iH2iH3i]B11B12B13B12B22B23B13B23B33H1jH2jH3j
= [ H 1 i H 1 j H 1 i H 2 j + H 2 i H 1 j H 2 i H 2 j H 1 i H 3 j + H 3 i H 1 j H 2 i H 3 j + H 3 i H 2 j H 3 i H 3 j ] [ B 11 B 12 B 22 B 13 B 23 B 33 ] =\left[\begin{array}{lllll}H_{1 i} H_{1 j} & H_{1 i} H_{2 j}+H_{2 i} H_{1 j} & H_{2 i} H_{2 j} & H_{1 i} H_{3 j} & +H_{3 i} H_{1 j} \quad H_{2 i} H_{3 j}+H_{3 i} H_{2 j} & H_{3 i} H_{3 j}\end{array}\right]\left[\begin{array}{l}B_{11} \\ B_{12} \\ B_{22} \\ B_{13} \\ B_{23} \\ B_{33}\end{array}\right] =[H1iH1jH1iH2j+H2iH1jH2iH2jH1iH3j+H3iH1jH2iH3j+H3iH2jH3iH3j]B11B12B22B13B23B33

上述方程看起来有点复杂,但是其实不然,我们可以记:
v i j = [ H 1 i H 1 j H 1 i H 2 j + H 2 i H 1 j H 2 i H 2 j H 1 i H 3 j + H 3 i H 1 j H 2 i H 3 j + H 3 i H 2 j H 3 i H 3 j ] T b = [ B 11 B 12 B 22 B 13 B 23 B 33 ] T \begin{array}{cccccc}v_{i j}=\left[\begin{array}{lllll}H_{1 i} H_{1 j} & H_{1 i} H_{2 j}+H_{2 i} H_{1 j} & H_{2 i} H_{2 j} & H_{1 i} H_{3 j}+H_{3 i} H_{1 j} & H_{2 i} H_{3 j}+H_{3 i} H_{2 j} & H_{3 i} H_{3 j}\end{array}\right]^{T} \\ b=\left[\begin{array}{llllll}B_{11} & B_{12} & B_{22} & B_{13} & B_{23} & B_{33}\end{array}\right]^{T} & \end{array} vij=[H1iH1jH1iH2j+H2iH1jH2iH2jH1iH3j+H3iH1jH2iH3j+H3iH2jH3iH3j]Tb=[B11B12B22B13B23B33]T

则上述方程化为: H i T B H j = v i j b H_{i}^{T} B H_{j}=v_{i j} b HiTBHj=vijb

此时,通过 R 1 , R 2 R_{1},R_{2} R1,R2 单位正交得到的约束方程可化为:

v 12 T b = 0 v_{12}^{T} b=0 v12Tb=0
v 11 T b = v 22 T b = 1 v_{11}^{T} b=v_{22}^{T} b=1 v11Tb=v22Tb=1

即:

[ v 12 T v 11 T − v 22 T ] b = v b = 0 \left[\begin{array}{c}v_{12}^{T} \\ v_{11}^{T}-v_{22}^{T}\end{array}\right] b=v b=0 [v12Tv11Tv22T]b=vb=0

其中: v = [ v 12 T v 11 T − v 22 T ] v=\left[\begin{array}{c}v_{12}^{T} \\ v_{11}^{T}-v_{22}^{T}\end{array}\right] v=[v12Tv11Tv22T]

由于矩阵 H H H 已知,矩阵 v v v 又全部由矩阵 H H H 的元素构成,因此矩阵 v v v已知。

此时,我们只要求解出向量 b b b ,即可得到矩阵 B B B。每张标定板图片可以提供一个 v b = 0 vb=0 vb=0 的约束关系,该约束关系含有两个约束方程。但是,向量 b b b 有6个未知元素。因此,单张图片提供的两个约束方程是不足以解出来向量 b b b。因此,我们只要取3张标定板照片,得到3个 v b = 0 vb=0 vb=0 的约束关系,即6个方程,即可求解向量 b b b。当标定板图片的个数大于3时(事实上一般需要15到20张标定板图片),可采用最小二乘拟合最佳的向量 b b b,并得到矩阵 B B B。( B B B只与内参有关)

B = [ 1 α 2 − γ α 2 β γ v 0 − β u 0 α 2 β − γ α 2 β 1 β 2 + γ 2 α 2 β 2 γ ( β u 0 − γ v 0 ) α 2 β 2 − v 0 β 2 γ v 0 − β u 0 α 2 β γ ( β u 0 − γ v 0 ) α 2 β 2 − v 0 β 2 ( β u 0 − γ v 0 ) 2 α 2 β 2 + v 0 2 β 2 + 1 ] = [ B 11 B 21 B 13 B 21 B 22 B 23 B 13 B 23 B 33 ] B=\left[\begin{array}{ccc}\frac{1}{\alpha^{2}} & -\frac{\gamma}{\alpha^{2} \beta} & \frac{\gamma v_{0}-\beta u_{0}}{\alpha^{2} \beta} \\ -\frac{\gamma}{\alpha^{2} \beta} & \frac{1}{\beta^{2}}+\frac{\gamma^{2}}{\alpha^{2} \beta^{2}} & \frac{\gamma\left(\beta u_{0}-\gamma v_{0}\right)}{\alpha^{2} \beta^{2}}-\frac{v_{0}}{\beta^{2}} \\ \frac{\gamma v_{0}-\beta u_{0}}{\alpha^{2} \beta} & \frac{\gamma\left(\beta u_{0}-\gamma v_{0}\right)}{\alpha^{2} \beta^{2}}-\frac{v_{0}}{\beta^{2}} & \frac{\left(\beta u_{0}-\gamma v_{0}\right)^{2}}{\alpha^{2} \beta^{2}}+\frac{v_{0}^{2}}{\beta^{2}}+1\end{array}\right]=\left[\begin{array}{ccc}B_{11} & B_{21} & B_{13} \\ B_{21} & B_{22} & B_{23} \\ B_{13} & B_{23} & B_{33}\end{array}\right] B=α21α2βγα2βγv0βu0α2βγβ21+α2β2γ2α2β2γ(βu0γv0)β2v0α2βγv0βu0α2β2γ(βu0γv0)β2v0α2β2(βu0γv0)2+β2v02+1=B11B21B13B21B22B23B13B23B33

根据矩阵 B B B 的元素和相机内参 α , β , γ , u 0 , v 0 \alpha, \beta, \gamma, u_{0}, v_{0} α,β,γ,u0,v0 的对应关系(如上式),可得到:

v 0 = B 12 B 13 − B 11 B 23 B 11 B 22 − B 12 2 α = 1 B 11 β = B 11 B 11 B 22 − B 12 2 γ = − B 12 α 2 β u 0 = γ v 0 β − B 13 α 2 \begin{aligned} v_{0} &=\frac{B_{12} B_{13}-B_{11} B_{23}}{B_{11} B_{22}-B_{12}^{2}} \\ & \alpha=\sqrt{\frac{1}{B_{11}}} \\ \beta &=\sqrt{\frac{B_{11}}{B_{11} B_{22}-B_{12}^{2}}} \\ \gamma &=-B_{12} \alpha^{2} \beta \\ u_{0} &=\frac{\gamma v_{0}}{\beta}-B_{13} \alpha^{2} \end{aligned} v0βγu0=B11B22B122B12B13B11B23α=B111 =B11B22B122B11 =B12α2β=βγv0B13α2

即可求得相机的内参矩阵 :
A = ( f d X − f cot ⁡ θ d X u 0 0 0 f d Y sin ⁡ θ v 0 0 0 0 1 0 ) = [ α γ u 0 0 β v 0 0 0 1 ] A=\left(\begin{array}{cccc}\frac{f}{d X} & -\frac{f \cot \theta}{d X} & u_{0} & 0 \\ 0 & \frac{f}{d Y \sin \theta} & v_{0} & 0 \\ 0 & 0 & 1 & 0\end{array}\right)=\left[\begin{array}{ccc}\alpha & \gamma & u_{0} \\ 0 & \beta & v_{0} \\ 0 & 0 & 1\end{array}\right] A=dXf00dXfcotθdYsinθf0u0v01000=α00γβ0u0v01

3、求解外参矩阵

这里再次强调一下,对于同一个相机,相机的内参矩阵取决于相机的内部参数,无论标定板和相机的位置关系是怎么样的,相机的内参矩阵不变。这也正是在第2部分“求解内参矩阵”中,我们可以利用不同的图片(标定板和相机位置关系不同)获取的矩阵 H H H ,共同求解相机内参矩阵 A A A 的原因。

但是,外参矩阵反映的是标定板和相机的位置关系。对于不同的图片,标定板和相机的位置关系已经改变,此时每一张图片对应的外参矩阵都是不同的

在关系: A ( R 1 R 2 T ) = H A(R 1 \quad R 2 \quad T)=H A(R1R2T)=H 中,我们已经求解得到了矩阵 H H H(对于同一张图片相同,对于不同的图片不同)、矩阵 A A A (对于不同的图片都相同)。通过公式: ( R 1 R 2 T ) = A − 1 H \left(\begin{array}{lll}R 1 & R 2 & T\end{array}\right)=A^{-1} H (R1R2T)=A1H ,即可求得每一张图片对应的外参矩阵 A ( R 1 R 2 T ) A(R 1 \quad R 2 \quad T) A(R1R2T)

注意,这里值得指出,完整的外参矩阵为 ( R T 0 1 ) \left(\begin{array}{ll}R & T \\ 0 & 1\end{array}\right) (R0T1)。但是,由于张正友标定板将世界坐标系的原点选取在棋盘格上,则棋盘格上任一点的物理坐标 W = 0 W=0 W=0,将旋转矩阵的 R R R 的第三列 R 3 R3 R3 消掉,因此, R 3 R3 R3 在坐标转化中并没有作用。但是 R 3 R3 R3 要使得 R R R 满足旋转矩阵的性质,即列与列之间单位正交,因此可以通过向量 R 1 , R 2 R1,R2 R1,R2 的叉乘,即 R 3 = R 1 × R 2 R3=R1×R2 R3=R1×R2 ,计算得到 R 3 R3 R3

此时,相机的内参矩阵和外参矩阵均已得到。

注:以上推导都是假设不存在畸变参数的情况下成立的。但是事实上,相机是存在畸变参数的,因此,张正友标定法还需要通过L-M算法对于参数进行迭代优化。

4、标定相机的畸变参数

张正友标定法仅仅考虑了畸变模型中影响较大的径向畸变。

径向畸变公式(2阶)如下:

x ^ = x ( 1 + k 1 r 2 + k 2 r 4 ) \hat{x}=x\left(1+k_{1} r^{2}+k_{2} r^{4}\right) x^=x(1+k1r2+k2r4)
y ^ = y ( 1 + k 1 r 2 + k 2 r 4 ) \hat{y}=y\left(1+k_{1} r^{2}+k_{2} r^{4}\right) y^=y(1+k1r2+k2r4)

其中, ( x , y ) ( x ^ , y ^ ) (x,y)(\hat{x},\hat{y}) (x,y)(x^,y^)分别为理想的无畸变的归一化的图像坐标、畸变后的归一化图像坐标, r r r 为图像像素点到图像中心点的距离,即 r 2 = x 2 + y 2 r^{2}=x^{2}+y^{2} r2=x2+y2

图像坐标和像素坐标的转化关系为:
( u v 1 ) = ( 1 d X − cot ⁡ θ d X u 0 0 1 d Y sin ⁡ θ v 0 0 0 1 ) ( x y 1 ) \left(\begin{array}{c}u \\ v \\ 1\end{array}\right)=\left(\begin{array}{ccc}\frac{1}{d X} & -\frac{\cot \theta}{d X} & u_{0} \\ 0 & \frac{1}{d Y \sin \theta} & v_{0} \\ 0 & 0 & 1\end{array}\right)\left(\begin{array}{l}x \\ y \\ 1\end{array}\right) uv1=dX100dXcotθdYsinθ10u0v01xy1

其中, ( u , v ) (u,v) (u,v)为理想的无畸变的像素坐标。由于 θ \theta θ 接近于 90 ° 90° 90° ,则上式近似为:
u = x d X + u 0 u=\frac{x}{d X}+u_{0} u=dXx+u0
v = y d Y + v 0 v=\frac{y}{d Y}+v_{0} v=dYy+v0

同理可得畸变后的像素坐标 ( u ^ , v ^ ) (\hat{u}, \hat{v}) (u^,v^)的表达式为:

u ^ = x ^ d X + u 0 \hat{u}=\frac{\hat{x}}{d X}+u_{0} u^=dXx^+u0
v ^ = y ^ d Y + v 0 \hat{v}=\frac{\hat{y}}{d Y}+v_{0} v^=dYy^+v0

代入径向畸变公式(2阶)则有:

u ^ − u 0 = ( u − u 0 ) ( 1 + k 1 r 2 + k 2 r 4 ) \hat{u}-u_{0}=\left(u-u_{0}\right)\left(1+k_{1} r^{2}+k_{2} r^{4}\right) u^u0=(uu0)(1+k1r2+k2r4)
v ^ − v 0 = ( v − v 0 ) ( 1 + k 1 r 2 + k 2 r 4 ) \hat{v}-v_{0}=\left(v-v_{0}\right)\left(1+k_{1} r^{2}+k_{2} r^{4}\right) v^v0=(vv0)(1+k1r2+k2r4)

可化简得:
u ^ = u + ( u − u 0 ) ( k 1 r 2 + k 2 r 4 ) \hat{u}=u+\left(u-u_{0}\right)\left(k_{1} r^{2}+k_{2} r^{4}\right) u^=u+(uu0)(k1r2+k2r4)
v ^ = v + ( v − v 0 ) ( k 1 r 2 + k 2 r 4 ) \hat{v}=v+\left(v-v_{0}\right)\left(k_{1} r^{2}+k_{2} r^{4}\right) v^=v+(vv0)(k1r2+k2r4)

即为:
[ ( u − u 0 ) r 2 ( u − u 0 ) r 4 ( v − v 0 ) r 2 ( v − v 0 ) r 4 ] [ k 1 k 2 ] = [ u ^ − u v ^ − v ] \left[\begin{array}{cc}\left(u-u_{0}\right) r^{2} & \left(u-u_{0}\right) r^{4} \\ \left(v-v_{0}\right) r^{2} & \left(v-v_{0}\right) r^{4}\end{array}\right]\left[\begin{array}{l}k_{1} \\ k_{2}\end{array}\right]=\left[\begin{array}{c}\hat{u}-u \\ \hat{v}-v\end{array}\right] [(uu0)r2(vv0)r2(uu0)r4(vv0)r4][k1k2]=[u^uv^v]

每一个角点,只要知道畸变后的像素坐标 ( u ^ , v ^ ) (\hat{u}, \hat{v}) (u^,v^)、理想的无畸变的像素坐标 ( u , v ) ({u}, {v}) (u,v) ,就可以构造两个上述等式。那么,有 m m m 幅图像,每幅图像上有 n n n 个标定板角点,则将得到的所有等式组合起来,可以得到 m n mn mn 个未知数为 k = [ k 1 , k 2 ] T k=\left[k_{1}, k_{2}\right]^{T} k=[k1,k2]T 的约束方程,将约束方程系数矩阵记为 D D D ,等式右端非齐次项记为 d d d,可将其记成矩阵形式:

D k = d D k=d Dk=d

之后,利用最小二乘法可得:

k = [ k 1 k 2 ] = ( D T D ) − 1 D T d k=\left[\begin{array}{c}k_{1} \\ k_{2}\end{array}\right]=\left(D^{T} D\right)^{-1} D^{T} d k=[k1k2]=(DTD)1DTd

此时,相机的畸变矫正参数已经标定好。

那么,如何获得畸变后的像素坐标 ( u ^ , v ^ ) (\hat{u}, \hat{v}) (u^,v^) 和理想的无畸变的像素坐标 ( u , v ) ({u}, {v}) (u,v) 呢?

( u ^ , v ^ ) (\hat{u}, \hat{v}) (u^,v^) 可以通过识别标定板的角点获得, ( u , v ) ({u}, {v}) (u,v)可以通过如下方法近似求得。世界坐标系下每一个角点的坐标 ( X , Y ) ({X}, {Y}) (X,Y)是可以计算得到的,我们利用已经求得的外参矩阵 ( R 1 , R 2 , T ) (R1,R2,T) (R1,R2,T) 和内参矩阵 A A A 进行反投影。

Z ( u v 1 ) = A ( R 1 R 2 T ) ( X Y 1 ) = H ( X Y 1 ) Z\left(\begin{array}{l}u \\ v \\ 1\end{array}\right)=A\left(\begin{array}{lll}R 1 & R 2 & T\end{array}\right)\left(\begin{array}{l}X \\ Y \\ 1\end{array}\right)=H\left(\begin{array}{c}X \\ Y \\ 1\end{array}\right) Zuv1=A(R1R2T)XY1=HXY1

利用上式,消去尺度因子 Z Z Z,可得:

u = H 11 U + H 12 V + H 13 H 31 U + H 32 V + H 33 v = H 21 U + H 22 V + H 23 H 31 U + H 32 V + H 33 \begin{aligned} u &=\frac{H_{11} U+H_{12} V+H_{13}}{H_{31} U+H_{32} V+H_{33}} \\ v &=\frac{H_{21} U+H_{22} V+H_{23}}{H_{31} U+H_{32} V+H_{33}} \end{aligned} uv=H31U+H32V+H33H11U+H12V+H13=H31U+H32V+H33H21U+H22V+H23

即可得到理想的、无畸变的像素坐标 ( u , v ) ({u}, {v}) (u,v) 。当然,由于外参矩阵 ( R 1 , R 2 , T ) (R1,R2,T) (R1,R2,T) 和内参矩阵 A A A是在有畸变的情况下获得的,这里得到的像素坐标 ( u , v ) ({u}, {v}) (u,v)并不是完全理想的、无畸变的。

我们的总逻辑是,
1 在进行内参矩阵和外参矩阵的求解的时候,我们假设不存在畸变;
2 在进行畸变系数的求解的时候,我们假设求得的内参矩阵和外参矩阵是无误差的。
3 我们再通过L-M算法对于参数进行迭代优化。

https://zhuanlan.zhihu.com/p/94244568

你可能感兴趣的:(相机,线性代数)