相机成像模型分析

相机对于机器人来说就相当于人的眼睛,景物在相机中呈现的样子就是机器看到的世界的样子。当我们理解了相机的成像原理,才能理解图像中的景物与实际世界中景物的对应关系。

相机成像模型

相机模型是光学成像模型的简化,目前有线性模型和非线性模型两种。实际的成像系统是透镜成像的非线性模型。最基本的透镜成像原理如图所示:

其中 u 为物距, f 为焦距,v 为相距。根据透镜成像原理,三者满足关系式:

相机的镜头是一组透镜,当平行于主光轴的光线穿过透镜时,会聚到一点上,这个点叫做焦点,焦点到透镜中心的距离叫做焦距 f。数字相机的镜头相当于一个凸透镜,感光元件就处在这个凸透镜的焦点附近,将焦距近似为凸透镜中心到感光元件的距离时就成为小孔成像模型。小孔成像模型如图所示:

基于上图,当s和f相等的时候,便是相机的成像模型。小孔成像模型是相机成像采用最多的模型。在此模型下,物体的空间坐标和图像坐标之间是线性的关系,因而对相机参数的求解就归结到求解线性方程组上。

这里为了计算方便,保持方向的一致性,我们往往将图像以光心为坐标原点,进行中心对称旋转,也就是将图像映射到光心和物体的中间,而物体在图像中的映射点,正好为物体与光心的连线和图像平面的交点。

四个常用坐标系

无论求解线性方程组还是非线性方程组,重要的是用方程描绘出物理模型。那么就需要选取参考坐标系,而在机器视觉中最常用的参考坐标系有四个:世界坐标系、相机坐标系、图像坐标系、和像素坐标系。

为了清楚的说明各种坐标系之间的联系,我们首先看下面一个图片,图片中包括了世界坐标系、相机坐标系和图像坐标系的关系。接下来小白为大家详细介绍一下每个坐标系的用处。

世界坐标系:是客观三维世界的绝对坐标系,也称客观坐标系。因为数码相机安放在三维空间中,我们需要世界坐标系这个基准坐标系来描述相机的位置,并且用它来描述在此三维环境中的其它任何物体的位置,用(Xw, Yw, Zw)表示其坐标值。

图像坐标系:以CCD 图像平面的中心为坐标原点,X轴和Y 轴分别平行于图像平面的两条垂直边,用( x , y )表示其坐标值。图像坐标系是用物理单位(例如毫米)表示像素在图像中的位置。

相机坐标系(光心坐标系):以相机的光心为坐标原点,X 轴和Y 轴分别平行于图像坐标系的 X 轴和Y 轴,相机的光轴为Z 轴,用(Xc, Yc, Zc)表示其坐标值。

像素坐标系:以 CCD 图像平面的左上角顶点为原点,X 轴和Y 轴分别平行于图像坐标系的 X 轴和Y 轴,用(u , v )表示其坐标值。数字相机采集的图像首先是形成标准电信号的形式,然后再通过模数转换变换为数字图像。每幅图像的存储形式是M × N的数组,M 行 N 列的图像中的每一个元素的数值代表的是图像点的灰度。这样的每个元素叫像素,像素坐标系就是以像素为单位的图像坐标系。

由于图像坐标系和像素坐标系联系比较紧密,可能有很多小伙伴也容易弄错,这里在给出两个坐标系的关系图。

通过上图我们可以看出来,两个坐标的原点有一定的偏差,往往就是图像的长宽的一半。

相机内参与外参

在介绍完坐标系后,我们需要来描述相机成像的数学过程。根据像素坐标系和图像坐标系的定义,我们可以得到如下关系:

采用齐次坐标再用矩阵形式将上式表示为:

其中(u0, v0)是图像坐标系原点在像素坐标系中的坐标,dx 和 dy分别是每个像素在图像平面x和 y方向上的物理尺寸。

图像坐标系与相机坐标系的转换为:

其中 f 为焦距(像平面与相机坐标系原点的距离)。用齐次坐标系和矩阵表示上述关系:

相机坐标系与世界坐标系的变换为:

其中 R 为3 × 3正交旋转矩阵,t 为三维平移向量。

我们将上述所有的变换关系整合起来可以得到:

其中:

上面等式中ax, ay分别是图像水平轴和垂直轴的尺度因子。K的参数中只包含焦距、主点坐标等只由相机的内部结构决定,因此称 K 为内部参数矩阵,ax, ay , u0, v0叫做内部参数。Mt中包含的旋转矩阵和平移向量是由相机坐标系相对于世界坐标系的位置决定的,因此称Mt为相机的外部参数矩阵,R和t叫做外部参数,KMt叫投影矩阵。相机标定就是确定相机的内部参数和外部参数。

相机畸变模型

上面推导了相机投影成像的数学模型,但是上面是在理想状况下推导的,实际上由于相机光学系统存在加工和装配的误差,透镜就并不能满足物和像成相似三角形的关系,所以相机图像平面上实际所成的像与理想成像之间会存在畸变。畸变属于成像的几何失真,是由于焦平面上不同区域对图像的放大率不同形成的画面扭曲变形的现象,这种变形的程度从画面中心至画面边缘依次递增,主要在画面边缘反映比较明显。为了减小畸变,拍摄图片时应尽量避免用镜头焦距的最广角端或最远端拍摄。实际的相机成像模型如下图所示:

其中 mr(xr,yr)表示实际投影点的像平面坐标系下的物理坐标,mi(xi,yi)表示理想投影点的像平面坐标系下的物理坐标。

对于相机的畸变,可以包括径向畸变和偏心畸变和薄棱镜畸变等。

理论上来说镜头都存在径向和切向畸变,但是通常径向畸变较大,切向畸变较小。

偏心畸变模型是由于多个光学镜头的光轴不能完全共线产生的,这种畸变是由径向和切向畸变共同构成的。

薄棱镜畸变是由于镜头设计制造缺陷和加工安装所造成的,如镜头与相机成像平面有一个很小的倾角等。因为薄棱镜畸变非常小,通常不考虑。

相机的畸变可以由非线性模型来表示,由于公式比较复杂,而且多数应用只在相机的标定中使用,因此这里小白只给出最后化简后的畸变模型:

其中k和p都是畸变系数,可以在标定的过程中求出该系数矫正相机模型。

总结

如果你只是想简单了解一下相机的原理,不需要知道其数学公式,那么只需要知道小孔成像原理就可以啦~对于相机各种参数,小白觉得可以用一种更容易理解的方式来解读。

内参数矩阵:告诉你上述那个点在1的基础上,是如何继续经过摄像机的镜头、并通过针孔成像和电子转化而成为像素点的。

外参数矩阵:告诉你现实世界点(世界坐标)是怎样经过旋转和平移,然后落到另一个现实世界点(摄像机坐标)上。

畸变矩阵:告诉你为什么上面那个像素点并没有落在理论计算该落在的位置上,还产生了一定的偏移和变形

本文分享自微信公众号 - 小白学视觉(NoobCV)

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2018-06-12

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 综述 | 相机标定方法

    在图像测量过程以及机器视觉应用中,为确定空间物体表面某点的三维几何位置与其在图像中对应点之间的相互关系,必须建立相机成像的几何模型,这些几何模型参数就是相机参数...

    小白学视觉
  • 原来CNN是这样提取图像特征的

    假设有一个5*5的图像,使用一个3*3的卷积核(filter)进行卷积,得到一个3*3的矩阵(其实是Feature Map,后面会讲),如下所示:

    小白学视觉
  • 小白见过的最通俗易懂的卷积解释

    作者:palet https://www.zhihu.com/question/22298352/answer/637156871

    小白学视觉
  • 来聊聊双目视觉的基础知识(视察深度、标定、立体匹配)

    人类具有一双眼睛,对同一目标可以形成视差,因而能清晰地感知到三维世界。因此,计算机的一双眼睛通常用双目视觉来实现,双目视觉就是通过两个摄像头获得图像信息,计算出...

    AI算法修炼营
  • Mathematica带您一起迎接五一

    WolframChina
  • 一种端到端可训练周期CNN模型:根据自然语言陈述进行图像分割

    【新智元导读】基于自然语言陈述进行语义图像分割是图像分割领域里的一个重要议题。本论文提出了一种端到端可训练周期卷积网络模型,这一模型可同时学习处理视觉与语言信息...

    新智元
  • SLAM初探(二)

    相机标定 相机的内参矩阵 在OpenCV的3D重建中(opencv中文网站中:照相机定标与三维场景重建),对摄像机的内参外参有讲解: 外参:摄像机的旋转平移属于...

    Pulsar-V
  • Golang必备技巧:接口型函数

    接口型函数,指的是用函数实现接口,这样在调用的时候就会非常简便,我称这种函数,为接口型函数,这种方式使用于只有一个函数的接口。

    飞雪无情
  • Windows下查看端口占用情况

    编程的时候经常发现我们需要使用的端口被别的程序占用,这个时候需要清楚查看是哪个程序占用了端口,用且清除了这个进程!

    浩Coding
  • async.js在Cocos Creator中的应用

    有网友在公众号上提问题,使用async.js在微信小游戏环境报错,由于Shawn这段时间有点懒癌发作,没有即时回复留言,已经超过48小时回复不了,在此表示歉意,...

    张晓衡

扫码关注云+社区

领取腾讯云代金券