每张图片有m个棋盘格角点,m≥4.----------->用于获得单应矩阵
需要拍摄n张标定图片,n≥3------------------->用于从单应矩阵中分离得到内参和外参
根据《单应矩阵与四点标定》,
H = K ⋅ [ r 1 r 2 T ] = [ f x 0 u 0 0 f y v 0 0 0 1 ] [ r 1 r 2 T ] = [ h 1 h 2 h 3 ] H=K·\begin{bmatrix} r_1&r_2&T \end{bmatrix}= \begin{bmatrix}f_x&0&u_0\\0& f_y&v_0\\0&0&1 \end{bmatrix} \begin{bmatrix}r_1&r_2&T \end{bmatrix} =\begin{bmatrix} \mathbf{ h_1}&\mathbf{ h_2}&\mathbf{ h_3} \end{bmatrix} H=K⋅[r1r2T]=⎣⎡fx000fy0u0v01⎦⎤[r1r2T]=[h1h2h3]
其中 h 1 , h 2 , h 3 \mathbf{ h_1,h_2,h_3} h1,h2,h3表示单应矩阵的列向量。矩阵运算得到
r 1 = λ M − 1 h 1 r 2 = λ M − 1 h 2 t = λ M − 1 h 3 \mathbf{ r_1}=\lambda M^{-1}h_1\\ \mathbf{ r_2}=\lambda M^{-1}h_2\\ \mathbf{ t}=\lambda M^{-1}h_3 r1=λM−1h1r2=λM−1h2t=λM−1h3
根据 r 1 , r 2 r_1,r_2 r1,r2的正交,一个单应矩阵H得到两个约束条件:
对于内参矩阵,令 B = ( K − 1 ) T K − 1 B=(K^{-1})^TK^{-1} B=(K−1)TK−1,分析得B为3*3对称矩阵,真正有用的元素为6,带入约束条件得:
定义第i列列向量:
h i = [ h i 1 h i 2 h i 3 ] T \mathbf{ h_i}=\begin{bmatrix} h_{i1}&h_{i2}&h_{i3} \end{bmatrix}^T hi=[hi1hi2hi3]T
则
h i T B h j = v i j T b \mathbf{ h_i}^TB\mathbf{ h_j}=v_{ij}^Tb hiTBhj=vijTb
其中
v i j = [ h i 1 h j 1 h i 1 h j 2 + h i 2 h j 1 h i 2 h j 2 h i 3 h j 1 + h i 1 h j 3 h i 3 h j 2 + h i 2 h j 3 h i 3 h j 3 ] , b = [ B 11 B 12 B 22 B 13 B 23 B 33 ] v_{ij}=\begin{bmatrix} h_{i1}h_{j1}\\h_{i1}h_{j2}+h_{i2}h_{j1} \\ h_{i2}h_{j2}\\h_{i3}h_{j1}+h_{i1}h_{j3}\\ h_{i3}h_{j2}+h_{i2}h_{j3}\\ h_{i3}h_{j3} \end{bmatrix} ,b= \begin{bmatrix}B_{11}\\B_{12}\\B_{22}\\ B_{13}\\B_{23}\\B_{33}\\ \end{bmatrix} vij=⎣⎢⎢⎢⎢⎢⎢⎡hi1hj1hi1hj2+hi2hj1hi2hj2hi3hj1+hi1hj3hi3hj2+hi2hj3hi3hj3⎦⎥⎥⎥⎥⎥⎥⎤,b=⎣⎢⎢⎢⎢⎢⎢⎡B11B12B22B13B23B33⎦⎥⎥⎥⎥⎥⎥⎤
则约束条件可以表示为:
[ v 12 T v 11 T − v 22 T ] b = 0 \begin{bmatrix}v_{12}^T\\v_{11}^T-v_{22}^T \end{bmatrix}b=0 [v12Tv11T−v22T]b=0
如果n张不同角度的标定图片,每张图片得到2个等式,矩阵vij可以通过单应矩阵得到,b中有6个位置元素,所以至少需要图片数n>=3
得到矩阵B之后,容易得到内参 f x , f y , u 0 , v 0 , γ , λ f_x,f_y,u_0,v_0,\gamma,\lambda fx,fy,u0,v0,γ,λ,从而得到外参 r 1 , r 2 , r 3 , t r_1,r_2,r_3,t r1,r2,r3,t
每张图片有m个棋盘格角点,m≥4.----------->用于获得单应矩阵
需要拍摄n张标定图片,n≥3------------------>用于从单应矩阵中分离得到内参和外参
计算机视觉life公众号,作者:sixgod《从零开始学习 【张氏相机标定法】》系列