这里主要讲解的不是如何标定,而是为什么需要标定?标定会涉及到那些变量?更好地理解摄像机原理。
为什么要标定?
在摄像机模型小节中,我们讲到了摄像机模型:
此处X是世界坐标系下的位置。
这里面的为摄像机的内部参数。
其中 、 ,为摄像机焦距,m分别表示在x和y方向上图像坐标单位距离的像素数, 表示像素量纲上图像的原点。
标定的一项工作就是确定这些内部参数.
非线性相机模型
在实际的成像过程中,考虑镜头的失真,一般都会存在非线性畸变,所以线性针孔模型是不能准确描述成像几何关系的.畸变可以由下列公式描述:
其中,是由线性模型计算出来的图像点坐标的理想值,而则是实际图像中的坐标,为非线性畸变,其数学表达式为:
其中,是径向畸变,是离心畸变,而是薄棱镜畸变.
式中为非线性畸变参数.
有研究表明引入过多的非线性参入,不仅不能提高精度,还可能导致解的不稳定性(而且现在相机中一般有自校正模块).一般比较常见的是径向畸变:
为径向半径,所以图像边缘处畸变较大.
径向畸变
在制作上讲,制作一个"球形"的透镜比一个数学上的理想透镜要容易,这产生了径向畸变.径向畸变在成像仪中心的畸变为0,随着向边缘移动,畸变也越严重,一般成像仪某点的径向位置按下式调节:
对于普通的网络相机,通常只使用前两项;对于畸变严重的相机,如鱼眼透镜,我们也使用第三个畸变项.
切向畸变
由于机械方面,很难将透镜和成像仪保持完全平行,会产生切向畸变.
因此,我们共需要5个畸变参数,在OpenCV中成为畸变向量,是一个5*1的矩阵,按照顺序依次是k1,k2,p1,p2,k3.
至此,那为什么要做相机标定呢?
由于每个镜头的畸变程度各不相同,通过相机标定可以校正这种镜头畸变。
总结通过标定的方式来求解相机内参和畸变参数,相当于一种相机校准,然后这些参数就可以用于后面的三维重建了。
具体到如何标定,可以参考:http://blog.csdn.net/dcrmg/article/details/52939318
附上其代码,写的很有条理。