本文作者蔡量力,公众号:计算机视觉life成员,由于格式原因,公式显示可能出问题,建议阅读原文链接:综述 | 相机标定方法另外推荐几个原创的号 计算机视觉,Python,自然语言处理、数据挖掘相关,汇总最新资源,学习更高效!
在图像测量过程以及机器视觉应用中,为确定空间物体表面某点的三维几何位置与其在图像中对应点之间的相互关系,必须建立相机成像的几何模型,这些几何模型参数就是相机参数。在大多数条件下这些参数(内参、外参、畸变参数)必须通过实验与计算才能得到,这个求解参数的过程就称之为相机标定(或摄像机标定)。无论是在图像测量或者机器视觉应用中,相机参数的标定都是非常关键的环节,其标定结果的精度及算法的稳定性直接影响相机工作产生结果的准确性。因此,做好相机标定是做好后续工作的前提,提高标定精度是科研工作的重点所在。
标定的目的主要为解决两个问题:
a、确定世界坐标系下三维空间点与像素平面像素点间的转换关系(内外参);
b、确定相机成像过程中的畸变系,用于图像矫正。
针孔相机模型
相机将三维世界中的坐标点(单位:米)映射到二维图像平面(单位:像素)的过程能够用一个几何模型来描述,其中最简单的称为针孔相机模型 (pinhole camera model),其框架如下图所示:
其中,涉及到相机标定涉及到了四大坐标系,分别为:
像素坐标系:为了描述物体成像后的像点在数字图像上(相片)的坐标而引入,是我们真正从相机内读取到的信息所在的坐标系。单位为个(像素数目)。
成像平面坐标系:为了描述成像过程中物体从相机坐标系到图像坐标系的投影透射关系而引入,方便进一步得到像素坐标系下的坐标。 单位为m。
相机坐标系:在相机上建立的坐标系,为了从相机的角度描述物体位置而定义,作为沟通世界坐标系和图像/像素坐标系的中间一环。单位为m。
世界坐标系:用户定义的三维世界的坐标系,为了描述目标物在真实世界里的位置而被引入。单位为m。
下面,我们来详细推导从世界坐标系到像素坐标的过程。
世界坐标系到相机坐标系
从世界坐标系到相机坐标系, 这是一个刚体变换,只需对世界坐标系的三维点作用一个旋转R和平移t(R,t即为相机的外参),变换过程可以通过一下公式完成:
相机坐标系到成像平面坐标系
这一过程进行了从三维坐标到二维坐标的转换,也即投影透视过程(用中心投影法将物体投射到投影面上,从而获得的一种较为接近视觉效果的单面投影图,也就是使我们人眼看到景物近大远小的一种成像方式)。
成像过程如下图所示:针孔面(相机坐标系)在图像平面(图像坐标系)和物点平面(棋盘平面)之间,所成图像为倒立实像。
但是为了在数学上更方便描述,我们将相机坐标系和图像坐标系位置对调,变成下图所示的布置方式(没有实际的物理意义,只是方便计算):
此时,假设相机坐标系中有一点M,则在理想图像坐标系下(无畸变)的成像点P的坐标为(可由相似三角形原则得出):
f为焦距,整理,得:
成像平面坐标系到像素坐标系
如上图,成平面坐标系和像素坐标系之间存在一个缩放和平移
整理得:
以fx、fy的方式表示为: