张正友相机标定算法详解
1.齐次表示法与一些基本结论
1.1 点与直线的齐次表示
在射影几何中,通常用齐次方式来表达点与直线。比如p=(u,v)p=(u,v)p=(u,v)被表示成p^=(x1,x2,x3)\hat{p}= (x_1,x_2,x_3)p^=(x1,x2,x3)其中u=x1x3,v=x2x3u=\frac{x_1}{x_3},v=\frac{x_2}{x_3}u=x3x1,v=x3x2。如此就将p^\hat{p}p^称为ppp的齐次表示。
同样的直线方程ax+by+c=0ax+by+c=0ax+by+c=0的齐次表示方式为I=(a,b,c)I=(a,b,c)I=(a,b,c);
1.2几个常用结论
两条直线的交点x=I×I′x=I\times I^{'}x=I×I′过两点的一条直线I=x×x′I=x\times x^{'}I=x×x′点xxx在直线III上xTI=0x^{T}I=0xTI=0具体证明如下图所示:
1.3理想点与无穷远直线
理想点p=(x1,x2,0)p=(x_1,x_2,0)p=(x1,x2,0)无穷远直线I=(a,b,0)I=(a,b,0)I=(a,b,0)2.张正友标定算法的数学推导
对于简单的相机模型有:
当把世界坐标系的XYXYXY平面选在与标定板平面重合时,这时便有:
当我们令:
根据
于是:h1TA−TA−1h2=0{h_1}^TA^{-T}A^{-1}h_2=0h1TA−TA−1h2=0且h1−TA−TA−1h1=h2TA−TA−1h2............(1){h_1}^{-T}A^{-T}A^{-1}h_1={h_2}^TA^{-T}A^{-1}h_2............(1)h1−TA−TA−1h1=h2TA−TA−1h2............(1)
此时令:
当我们令
于是有hiTA−TA−1hj=hiTBhj{h_i}^TA^{-T}A^{-1}h_j={h_i}^TBh_jhiTA−TA−1hj=hiTBhj,化简得到:
所以:hiTBhj=vijTb{h_i}^TBh_j={v_{ij}^T}bhiTBhj=vijTb
于是:
这样就可以解出bbb向量,于是则有:
r1=λA−1h1r_1=\lambda A^{-1}h_1r1=λA−1h1,r2=λA−1h2r_2=\lambda A^{-1}h_2r2=λA−1h2,r3=r1×r2r_3=r_1\times r_2r3=r1×r2,t=λA−1h3t=\lambda A^{-1}h_3t=λA−1h3其中λ\lambdaλ是归一化因子;
3.从绝对二次曲线的角度推导张正友标定算法
在本节主要讲解绝对二次曲线的概念、虚圆点的概念、绝对二次曲线与虚圆点的关系、绝对二次曲线的像与相机内参的关系以及从绝对二次曲线的角度去推导张正友的标定算法。
3.1 绝对二次曲线
二次曲线:ax12+bx1x2+cx22+dx1x2+ex2x3+fx32=0ax_1^2+bx_1x_2+cx_2^2+dx_1x_2+ex_2x_3+fx_3^2=0ax12+bx1x2+cx22+dx1x2+ex2x3+fx32=0写成矩阵的形式:
二次曲线的射影变换:x′=Hxx^{'}=Hxx′=Hx,那么二次曲线的变换为C′=H−TCH−1.....(2)C^{'}=H^{-T}CH^{-1}.....(2)C′=H−TCH−1.....(2),具体推导如下:
虚圆点:圆也是一种特殊的二次曲线,其中a=c=1,b=0a=c=1,b=0a=c=1,b=0,于是圆的方程为:
x12+x22+dx1x3+ex2x3+fx32=0x_1^2+x_2^2+dx_1x_3+ex_2x_3+fx_3^2=0x12+x22+dx1x3+ex2x3+fx32=0,圆与无穷远直线IooI_{oo}Ioo相交,则有x3=0x_3=0x3=0
因此x12+x22=0x_1^2+x_2^2=0x12+x22=0,显然I=[1,i,0]TI=[1,i,0]^TI=[1,i,0]T,J=[1,−i,0]TJ=[1,-i,0]^TJ=[1,−i,0]T是x12+x22=0x_1^2+x_2^2=0x12+x22=0的两个解。于是我们称I,JI,JI,J为虚圆点。
绝对二次曲线的概念-无穷远平面上的一条二次曲线
二次曲线方程:
写成矩阵形式:
显然I和JI和JI和J都经过上述方程。
### 3.2 绝对二次曲线的像
无穷远平面上的一点,可以写成:
相机矩阵为:
那么XooX_{oo}Xoo在图像平面上的投影为:
因此在H=KRH=KRH=KR的变换下,根据(1)式,绝对二次曲线的变换为:
这就给出了相机内参和绝对二次曲线的像的关系。
3.3 张正友标定算法的推导
具体推导过程如下:
对于每一个标定板有四个角点,其角点的坐标可以设置为(0,0)T,(1,0)T,(0,1)T,(1,1)T(0,0)^T,(1,0)^T,(0,1)^T,(1,1)^T(0,0)T,(1,0)T,(0,1)T,(1,1)T,通过这四个角点可以计算出标定板平面与图像平面的单应矩阵H=[h1,h2,h3]H=[h_1,h_2,h_3]H=[h1,h2,h3]。于是虚圆点I=[1,i,0]TI=[1,i,0]^TI=[1,i,0]T,J=[1,−i,0]TJ=[1,-i,0]^TJ=[1,−i,0]T被HHH映射到h1±ih2h_1\pm ih_2h1±ih2
又因这些被映射到图像平面上的点会被绝对二次曲线的像经过,于是:(h1±ih2)Tw(h1±ih2)=0(h_1\pm ih_2)^Tw(h_1\pm ih_2)=0(h1±ih2)Tw(h1±ih2)=0
于是有:(h1Twh1−h2Twh2)+i(h1Twh2+h2Twh1)=0(h_{1}^Twh_1-h_2^Twh_2)+i(h_1^Twh_2+h_2^Twh_1)=0(h1Twh1−h2Twh2)+i(h1Twh2+h2Twh1)=0
显然:(h1Twh1−h2Twh2)=0(h_{1}^Twh_1-h_2^Twh_2)=0(h1Twh1−h2Twh2)=0且(h1Twh2+h2Twh1)(h_1^Twh_2+h_2^Twh_1)(h1Twh2+h2Twh1)=0;
于是:h1Twh1=h2Twh2h_{1}^Twh_1=h_2^Twh_2h1Twh1=h2Twh2
又因为w=(KTK)−1w=(K^TK)^{-1}w=(KTK)−1,因此www是对称矩阵,所以h1Twh2=h2Twh1=0h_1^Twh_2=h_2^Twh_1=0h1Twh2=h2Twh1=0;
这就从绝对二次曲线的角度推出了与第二部分中**(1)式**相同的结论。
;
于是:h1Twh1=h2Twh2h_{1}^Twh_1=h_2^Twh_2h1Twh1=h2Twh2
又因为w=(KTK)−1w=(K^TK)^{-1}w=(KTK)−1,因此www是对称矩阵,所以h1Twh2=h2Twh1=0h_1^Twh_2=h_2^Twh_1=0h1Twh2=h2Twh1=0;
这就从绝对二次曲线的角度推出了与第二部分中**(1)式**相同的结论。