内外参标定,FOV、焦距、检测距离等关系公式
1.针孔相机模型——几何建模
数码相机,手机镜头可以简单看作是一组透镜和图像传感器构成的整个光学成像系统。透镜用于约束进入的光线,而传感器则用于对光进行感受、采样和量化。相机模型是对光学成像系统的简化,目前相机模型有线性模型和非线性模型两种。实际的成像系统是透镜成像的非线性模型。在这里,我们简要描述一下小孔成像模型,如下图所示:
由上图可以看到,小孔成像成的是倒立的图像,随着成像平面距离小孔的远近不同,像的大小也不一样,通常的相机其成像平面,一般放置在焦平面的位置。
2.世界坐标系
世界坐标系,也就是真实世界的立体空间坐标,是一个三维坐标系,点在世界坐标系中的坐标通常用
来表示,世界坐标系可以任意选取。单位:m
3.相机坐标系
设相机坐标系用来表示,如下图所示,在相机坐标系中,Z 轴指向相机前方,X 向右,Y 向下,O 为摄像机的光心,也是针孔模型中的针孔。单位:m
4.图像坐标系(物理)
设图像坐标系为,现实世界的空间点 P ,经过小孔O投影之后,落在物理成像平面
上,成像点为 P ′。图像坐标系的原点落在了光心在成像平面上的投影,X指向右,Y指向下。单位:m
5.像素坐标系
像素坐标系一般用来表示,其原点在图像的左上角,u指向右边,v指向左边,像素坐标是整数。单位:pixel
6.内参:从相机坐标系到图像坐标系到像素坐标系
把世界坐标系定为相机坐标系,设空间中一点P在相机坐标系下的坐标为[X,Y,Z],在图像坐标系下的坐标为[x,y],那么这两个坐标之间满足什么样的关系呢?
如上图所示,设相机的焦距为f,根据小孔成像模型,利用三角相似性原理可以得到:
其中负号表示成的像是倒立的。为了简化模型,我们把可以成像平面对称到相机前方,和三维空间点一起放在摄像机坐标系的同一侧,如下图样子所示。
这样做可以把公式中的负号去掉,使式子更加简洁:
经过整理可得:
上式描述了点 P 和它的像之间的空间关系。不过,在相机中,我们最终获得的是一个个的像素,这需要在成像平面上对像进行采样和量化。为了描述传感器将感受到的光线转换成图像像素的过程,我们设在物理成像平面上固定着一个像素平面。我们假设在像素平面得到了
的像素坐标:
,像素坐标系通常的定义方式是:原点
位于图像的左上角,u 轴向右与 x 轴平行,v轴向下与 y 轴平行。像素坐标系与成像平面之间,相差了一个缩放和一个原点的平移。我们设像素坐标在 u 轴上缩放了 α 倍,在 v 上缩放了 β 倍。同时原点平移了
。那么
的坐标与像素坐标
的关系为:
将该式与上式合并整理得到:
其中,的单位为米,
,
的单位为像素每米,所以
,
的单位为像素。把该式写成矩阵形式,会更加简洁,不过左侧需要用到齐次坐标:
该式中,我们把中间的量组成的矩阵称为相机的内参数矩阵K(Camera Intrinsics)。通常认为相机的内参在出厂之后是固定的,不会在使用过程中发生变化。有的相机生产厂商会告诉你相机的内参,而有时需要你自己确定相机的内参,也就是所谓的标定。
7.外参:从世界坐标系到相机坐标系
除了内参之外,自然还有相对的外参。内参表达了从相机坐标系到像素坐标系下的坐标转换,而外参则表达了从世界坐标系到相机坐标系下的坐标转换。假设P的世界坐标记为,相机的当前位姿由它的旋转矩阵 R 和平移向量 t 来描述,那么有:
上式中P的坐标都采用了齐次坐标(注意后一个式子隐含了一次齐次坐标到非齐次坐标的转换),其中T称为外参矩阵:
8.畸变
为了获得好的成像效果,我们在相机的前方加了透镜。透镜的加入对成像过程中光线的传播会产生新的影响: 一是透镜自身的形状对光线传播的影响,二是在机械组装过程中,透镜和成像平面不可能完全平行,这也会使得光线穿过透镜投影到成像面时的位置发生变化。由透镜形状引起的畸变称之为径向畸变。在针孔模型中,一条直线投影到像素平面上还是一条直线。可是,在实际拍摄的照片中,摄像机的透镜往往使得真实环境中的一条直线在图片中变成了曲线 。越靠近图像的边缘,这种现象越明显。由于实际加工制作的透镜往往是中心对称的,这使得不规则的畸变通常径向对称。它们主要分为两大类,桶形畸变和枕形畸变,如下图所示:
桶形畸变是由于图像放大率随着离光轴的距离增加而减小,而枕形畸变却恰好相反。在这两种畸变中,穿过图像中心和光轴有交点的直线还能保持形状不变。除了透镜的形状会引入径向畸变外,在相机的组装过程中由于不能使得透镜和成像面严格平行也会引入切向畸变,如下图所示:
对于径向畸变,无论是桶形畸变还是枕形畸变,由于它们都是随着离中心的距离增加而增加。我们可以用一个多项式函数来描述畸变前后的坐标变化,这类畸变可以用和距中心距离有关的二次及高次多项式函数进行纠正:
在上式描述的纠正模型中,对于畸变较小的图像中心区域,畸变纠正主要是 k1起作用。而对于畸变较大的边缘区域主要是 k2 起作用。普通摄像头用这两个系数就能很好的纠正径向畸变。对畸变很大的摄像头,比如鱼眼镜头,可以加入 k3 畸变项对畸变进行纠正。
另一方面,对于切向畸变,可以使用另外的两个参数 p1 ,p2 来进行纠正:
故得到:
9.相机标定
前面已经说明,相机标定是获取相机内参的方法。对于针孔模型相机最为常用的相机标定方法是张正友标定法,使用Matlab的标定工具箱可以轻松实现相机标定。
参考:内参、外参、畸变参数三种参数与相机的标定方法与相机坐标系的理解
10. FOV、焦距、检测距离等关系公式
(1)tan(FOV/ 2) = (实际视场宽度 / 2) / 实际视距 = (底片宽度 / 2) / 焦距;
(2)图像坐标系和相机坐标系:底片视场 / 像素宽度 = 底片上目标宽度 / 目标像素宽度;
(3)相机坐标系和世界坐标系:(目标实际宽度 / 2) / 实际视距 = (底片上目标宽度 / 2) / 焦距;