MatLab相机标定为什么有两个焦距?
当我们用matlab相机标定函数去标定相机时,我们能得到一个相机的内部参数,简称“内参”。内参是一个3x3的矩阵
其中Cx和Cy表示相机光轴在图像坐标系中的偏移量,是以像素为单位。但对于焦距fx和fy就不是很直观了。在我们使用的相机针孔模型中,一个透镜的焦距通常只有一个,那为什么一个相机会出现两个焦距呢?这就要从针孔相机成像的模型来解释。
由于相机拍摄图像是线性透视的,一个物体的宽度和高度随舞台与相机的距离增加而按比例变小,也就是说近大远小,对一个经校准的镜头,拍摄正方形物体物体沿着光轴进行移动,长宽按比例放大和缩小,但对于矩形物体,会根据物体与相机的距离按不同比例变大或变小,而这个比例是由相机的焦距得到的,根据公式:
fx/d=x/w 或 fy/d = y/h
其中fx,fy为焦距,单位像素;d为物体到相机镜头的距离,单位为毫米;x,y为物体在图像的宽度或高度,单位像素;w为物体的实际宽度,h为物体的实际高度,单位为毫米;就是我们计算相机的焦距时可以根据相机成像的宽度和高度分别计算,由于镜头制作安装过程中不能保证与相机感光芯片完全平行,另外由于透镜精度和工艺会引入畸变,不能保证镜头在所有角度都聚焦到一点从而导致失真,造成矩形物体通过长/高不同的焦距计算方法,会得出不同的值,这就是相机内参有两个焦距的原因了。