计算机视觉中,相机标定的重要性不言而喻,前面在公众号【3D视觉工坊】中写过有多篇文章是关于相机标定的,包括一分钟详解OpenCV之相机标定函数calibrateCamera(),从零开始学习「张氏相机标定法」,可是,今天还想再次聊一聊相机标定,进一步加深对其基本方法与概念的理解。函数
相机内外参数标定步骤主要包括以下:工具
考虑相机线性模型: 学习
解算项;优化
分解内、外参数;3d
考虑非线性项。cdn
Zhang方法:由张正友提出,OpenCV等普遍使用。在Zhang方法以前,通常都是使用立体靶标,对于立体靶标,很难计算其特征点的三维坐标。blog
Zhang方法特色:使用平面靶标摆多个pose(可未知)。get
Zhang方法标定步骤: (1)对一个pose,计算单应性矩阵; (2)有三个以上pose,根据各单应矩阵计算线性相机参数; (3)使用非线性优化方法计算非线性参数。it
因为特征点在平面上,咱们此处令Z=0,则有上图中的表达式,也可看出:单应矩阵H为3x3的矩阵。io
那么如何求解单应矩阵,创建内参数方程呢?
注:因为Z=0,故而上图中一项没有,也即为0。
对应每个pose,可获得上述两个方程。
**注:**具体的详细步骤,可参考《Learning OpenCV3》。
第三步:求解外参数
第四步(最后一步):非线性畸变参数求解
注:Zhang方法呢,只考虑了径向畸变,对于OpenCV等工具包里,考虑了其余畸变。简单来讲,计算畸变参数,主要是利用了重投影方法。