Bootstrap

张正友标定算法原理详解

张正友标定算法原理详解

本人邮箱:[email protected],欢迎交流讨论,
欢迎转载,转载请注明网址http://blog.csdn.net/u010128736/


一、背景

  ”张正友标定”是指张正友教授1998年提出的单平面棋盘格的摄像机标定方法[1]。文中提出的方法介于传统标定法和自标定法之间,但克服了传统标定法需要的高精度标定物的缺点,而仅需使用一个打印出来的棋盘格就可以。同时也相对于自标定而言,提高了精度,便于操作。因此张氏标定法被广泛应用于计算机视觉方面。

二、计算内参和外参的初值

1、计算单应性矩阵H

  根据之前博客介绍的摄像机模型,设三维世界坐标的点为 X=[X,Y,Z,1]T ,二维相机平面像素坐标为 m=[u,v,1]T ,所以标定用的棋盘格平面到图像平面的单应性关系为:

s0m=K[R,T]X

其中s为尺度因子,K为摄像机内参数,R为旋转矩阵,T为平移向量。令
K=α00γβ0u0v01

注意,s对于齐次坐标来说,不会改变齐次坐标值。张氏标定法中,将世界坐标系狗仔在棋盘格平面上,令棋盘格平面为Z=0的平面。则可得
suv1=K[r1r2r3t]XY01=K[r1r2t]XY1

我们把K[r1, r2, t]叫做单应性矩阵H,即
suv1=HXY1H=[h1 h2 h3]=λK[r1 r2 t]

H是一个齐次矩阵,所以有8个未知数,至少需要8个方程,每对对应点能提供两个方程,所以至少需要四个对应点,就可以算出世界平面到图像平面的单应性矩阵H。

2、计算内参数矩阵

由上式可得

λ=1sr1=1λK1h1r2=1λK1h2

  由于旋转矩阵是个酉矩阵,r1和r2正交,可得
rT1r2=0||r1||=||r2||=1

代入可得:
hT1KTK1h2=0hT1KTK1h1=hT2KTK1h2

即每个单应性矩阵能提供两个方程,而内参数矩阵包含5个参数,要求解,至少需要3个单应性矩阵。为了得到三个不同的单应性矩阵,我们使用至少三幅棋盘格平面的图片进行标定。通过改变相机与标定板之间的相对位置来得到三个不同的图片。为了方便计算,定义如下:
B=KTK1=B11B21B31B12B22B32B13B23B33=1α2γα2βv0γu0βα2βγα2βγ2α2β2+1β2γ(v0γu0β)α2β2v0β2v0γu0βα2βγ(v0γu0β)α2β2v0β2(v0γu0β)2α2β2+v0β2+1

可以看到,B是一个对称阵,所以B的有效元素为六个,让这六个元素写成向量b,即
b=[B11B12B22B13B23B33]T

可以推导得到
hTiBhj=vTijbvij=[hi1hj1hi1hj2+hi2hj1hi2hj2hi3hj1+hi1hj3hi3hj2+hi2hj3hi3hj3]T

利用约束条件可以得到:
[vT12(v11v22)T]b=0

  通过上式,我们至少需要三幅包含棋盘格的图像,可以计算得到B,然后通过cholesky分解,得到相机的内参数矩阵K。

3、计算外参数矩阵

  由之前的推导,可得

λ=1s=1A1h1=1A1h2r1=1λK1h1r2=1λK1h2r3=r1×r2t=λK1h3

三、最大似然估计

  上述的推导结果是基于理想情况下的解,但由于可能存在高斯噪声,所以使用最大似然估计进行优化。设我们采集了n副包含棋盘格的图像进行定标,每个图像里有棋盘格角点m个。令第i副图像上的角点Mj在上述计算得到的摄像机矩阵下图像上的投影点为:

m^(K,Ri,ti,Mij)=K[R|t]Mij

其中Ri和ti是第i副图对应的旋转矩阵和平移向量,K是内参数矩阵。则角点mij的概率密度函数为:
f(mij)=12πe(m^(K,Ri,ti,Mij)mij)2σ2

构造似然函数:
L(A,Ri,ti,Mij)=i=1,j=1n,mf(mij)=12πeni=1mj=1(m^(K,Ri,ti,Mij)mij)2σ2

让L取得最大值,即让下面式子最小。这里使用的是多参数非线性系统优化问题的Levenberg-Marquardt算法[2]进行迭代求最优解。
i=1nj=1mm^(K,Ri,ti,Mij)mij2

四、径向畸变估计

  张氏标定法只关注了影响最大的径向畸变。则数学表达式为:

u^=u+(uu0)[k1(x2+y2)+k2(x2+y2)2]v^=v+(vv0)[k1(x2+y2)+k2(x2+y2)2]

其中,(u,v)是理想无畸变的像素坐标, (u^,v^) 是实际畸变后的像素坐标。(u0,v0)代表主点,(x,y)是理想无畸变的连续图像坐标, (x^,y^) 是实际畸变后的连续图像坐标。k1和k2为前两阶的畸变参数。
u^=u0+αx^+γy^v^=v0+βy^

化作矩阵形式:
[(uu0)(x2+y2)(vv0)(x2+y2)(uu0)(x2+y2)2(vv0)(x2+y2)2][k1k2]=[u^uv^v]

记做:
Dk=d

则可得:
k=[k1 k2]T=(DTD)1DTd

计算得到畸变系数k。

  使用最大似然的思想优化得到的结果,即像上一步一样,LM法计算下列函数值最小的参数值:

i=1nj=1mm^(K,k1,k2,Ri,ti,Mij)mij2

到此,张氏标定法介绍完毕。我们也得到了相机内参、外参和畸变系数。

参考

1、Zhang, Zhengyou - 《IEEE Transactions on Pattern Analysis & Machine Intelligence》 - 2000
2、J.More.Thelevenberg-marquardtalgorithm,implementationandtheory.InG.A.Watson,
editor,NumericalAnalysis,LectureNotesinMathematics630.Springer-Verlag,1977.

;