张正友相机标定论文笔记
精读张正友论文之后把主要步骤概括为:
Print a pattern 并把它attach 到一个平面上,通常这个pattern是个棋盘图
从不同角度对平面拍照,可以变换棋盘的位置,也可以变换棋盘的位置。
检测Image中的特征点
求解利用三维坐标和四组图像坐标,求解单应性矩阵,并根据矩阵分解理论求解外部参数与内部参数。
求解distort的系数
利用系数修正迭代模型,不断修改初始求出的内部参数和外部参数。
求单应性矩阵
目前正在实现求解单应性矩阵。因为求特征点是后边考虑的内容,因此简化模型,特征点是自己选取的角点,之后深入学习了特征提取方面的知识后,回来修改这里的程序。
张的模型是对拍摄的平面做恢复,修改上一节提出的坐标变换公式
把上式写成更紧凑的格式
写成具体的坐标形式为
对平面标定时,可以假定平面位于世界坐标系中的Z=0,从而问题简化为
记 H=K[r1,r2,t] ,上式化简为
利用四个对应点可以求出H,已经通过编程实现求单应性矩阵(12月4日修改)。
解决相机标定问题
相机标定问题是为了求解相机的内外参数我们设内参数矩阵为
A
,令
其中
由于B是hermitian的,所以需要求解B中上(下)对角的六个元素。利用H矩阵的定义:
把求B的六个元素化简成等价的线性方程组
其中:
找出图像与三维平面之间任意三个以上的对应点就可以求解出B的六个参数,如果只有两个对应点则需要假设内参矩阵A中的c为0。求解出H与A之后,利用以下公式可以找出外部参数中的旋转矩阵与平移向量:
再利用以下公式可以求出内部参数:
求解出的相机参数(外部+内部)只是初始值,仍有很大的误差,我们需要把distort考虑进去,然后使用求最优化的方法反复迭代求解出误差最小的参数。具体步骤如下:
考虑radial distortion为多项式模型,即与半径r有关,令
(u,v)
为像素在理想情况(没有误差)下的图像坐标,令
(u˘,v˘)
为实际的图像坐标,同样的
(x,y)
和
(x˘,y˘)
为标准化的坐标:利用两个坐标的变换公式
得到distortion模型
为了估计多项式中的两个参数
需要求解以上线性方程组,上式中的系数矩阵都是已知的,很容易得到两个参数
注意考虑到distortion之后要直接把原来坐标经过distortion变换即
最后就是求解一个非线性最优化模型
其中 是空间中的点M投影到图像上,同时考虑扭曲(也就是 DK[R|t]M )使用LM算法可以求出最优解。
Zhang Z. Flexible camera calibration by viewing a plane from unknown orientations[C]// IEEE International Conference on Computer Vision. IEEE, 1999:666.