相机成像模型

相机成像过程就是将真实世界中的物体映射到成像平面,其背后的原理可以简化成小孔成像模型,更进一步地,小孔成像模型可以简化成数学中的几何问题,今天我们来看一下相机模型的原理以及应用。

小孔成像:
相机成像模型_第1张图片

将成像过程进一步简化,只考虑现实世界中的一个点P,P点折射或者反射或者自身发的光通过相机的光心投影到成像平面内的p’点,这个过程也叫作投影变换或者射影变换,我们的目标是要求解p’的坐标。

说到坐标,那就肯定离不开坐标系,脱离坐标系的坐标毫无意义,相机成像模型中主要涉及到三个坐标系:
图像坐标系:
我们要求解的p’点坐标对应的坐标系就是图像坐标系,它在相机成像平面内,这也是图像处理过程中最常使用的坐标系,例如,我们使用opencv加载的图像,就是默认图像左上角为坐标系原点,水平向右为X轴,垂直向下为Y轴;有的也以图像中心为坐标系原点,使用不同的坐标系,图像中同一个点的坐标不同,但图像各点的相对坐标不变,另外,图像坐标系与其他坐标系相比是2维的。
像素坐标系:
加粗样式图像坐标系的单位是mm,像素坐标系没有单位,我们常说的1024*768就是像素坐标,像素坐标乘以每个像素的物理尺寸就是图像坐标了。
相机坐标系:
当我们固定好相机位置和方向,准备拍照时,此时相机坐标系就已经形成了,它是以相机的光心为坐标系原点,相机坐标系是三维的,其各个轴的方向见上图。
世界坐标系:
它描述的是物体在真实世界中位置,以WGS-84坐标系为例,坐标原点为地球质心,其Z轴指向BIH (国际时间服务机构),X轴指向BIH 1984.0的零子午面和CTP赤道的交点,Y轴与Z轴、X轴垂直构成右手坐标系。
世界坐标系选择与其使用场景有关,在相机成像模型中,需要知道现实世界中的点在相机坐标系下的坐标,其经纬度信息对于成像模型意义不大,最简单的,假设世界坐标系与相机坐标系是重合的,也就是说在相机成像过程中相机坐标系就是世界坐标系,在导航应用中,就需要返回经纬度信息,该信息是以WGS-84为坐标系计算的,另外,在自动驾驶领域,自动驾驶汽车上有很多传感器,相机,雷达等,每个传感器都有自己的坐标系,在车辆行驶过程中,除了需要计算现实世界中的一个点在各个传感器坐标系下的坐标外,还需要计算不同坐标系的转换关系,也就是已知这个点在某个传感器坐标系下的坐标,通过转换也能计算该点在其他传感器坐标系下的坐标。

成像过程可以简化成下面的几何问题,f为相机焦距,X,Y,Z为相机坐标系坐标,x,y为图像坐标系坐标。
相机成像模型_第2张图片

根据相似三角形定理:
相机成像模型_第3张图片

整理后可得:
相机成像模型_第4张图片

使用齐次坐标,然后转换成矩阵的形式:
相机成像模型_第5张图片

上面的x,y是假定坐标系原点为成像平面中心,其单位为mm;但实际使用更多的是以成像平面左上角为坐标系原点,且使用像素坐标,因此像素和长度之间需要转换,且水平和垂直方向的转换是不同的,上式经过变换后如下:
相机成像模型_第6张图片

fu和fv为焦距f在横纵轴的长度和像素的转换,K就是相机内参矩阵,与由相机的物理参数决定的。
有了内参矩阵,那存在外参矩阵的说法吗?答案是还真有这么一个东西,上面我们讲世界坐标系的时候,为了简化模型,假定世界坐标系和相机坐标系是重合的,但现实中,这两个坐标系可能不是重合的,既然不重合,成像过程还必须知道点在相机坐标系下的坐标,那就一定存在一个转换过程,将世界坐标系下的物体坐标转换到相机坐标系下,这个过程可以用矩阵来表示,这就是外参矩阵。
相机成像模型_第7张图片

将其与上面的内参矩阵合并:
相机成像模型_第8张图片

式中,[R|t]称为相机外参矩阵,K为内参矩阵,前面我们说过,成像过程可以称为投影映射,M就是投影矩阵。
上面就是相机成像原理,下面我们看一下针对成像原理,有何应用!

相机测距:
可以用来测距的相机也有好几种,分别是单目相机测距,双目相机测距,RGB-D深度相机测距。
单目相机测距:
相机成像模型_第9张图片

根据上面的成像原理可知:Z=f*X/x;f是焦距,X这里代表目标物体的宽度,x代表目标物体在图像中的宽度,其中f分为f x和fy,fx和fy是相机内存数,是已知的,也可以opencv或者matlab相机标定程序进行计算得到;这种方式有个明显的缺点是需要事先知道目标物体的宽度,这就限制了应用范围,但优点是计算速度快。

双目相机测距:
双目相机利用视差来进行测距,其原理优点类似人的双耳效应,优点是不需要直到物体的宽度信息。
相机成像模型_第10张图片

RGB-D深度相机测距并不是利用相机成像模型进行测距,而是利用光的传播速度和时间来进行测距,精确度高,但设备相比普通相机更为昂贵,除了上述方式测距外,还有深度学习的方法进行测距,本文不过多展开。

相机标定:
相机标定的目标就是计算相机内参和相机外参,对于相机内参,我们前面假定是随相机出厂已知的,但实际在使用过程中出现损耗等外力因素,相机内参矩阵可能改变,另外,除了fx,fy外,还存在叫做径向畸变和切向畸变的内参数,这两个参数描述的是现实中的直线在图像上内凹或者外凸的畸变系数。
目前比较熟知的是张正友标定法,其原理就是,使用相机按照不同的角度对着标定板(棋盘)拍照,那么真实棋盘上的一个角点,在不同的拍摄照片上分别对应一个图像点,标定过程,就是找到这些图像点的坐标。
相机成像模型_第11张图片
相机成像模型_第12张图片

在这里插入图片描述
(1)
H称为单应矩阵,就是图像一经过H的变换后,达到相同的棋盘角点会重合,具体推到过程就不说了,说下结论,根据矩阵的性质,只要找到4个点就能算出H。

得到H后,我们接下来计算相机内参和相机外参:
江式(1)展开后得到:
相机成像模型_第13张图片
(2)
由式(2)我们就可以得到焦距f0和f1:观察矩阵R10可知,R10前两行一定有相同的范数,并且是正交的,因此
相机成像模型_第14张图片
(3)
在这里插入图片描述
(4)
由式(3)可得:
相机成像模型_第15张图片

由式(4)可得:
在这里插入图片描述

最终求得相机内参中的焦距:
在这里插入图片描述

同理可得外参矩阵参数:
相机成像模型_第16张图片

图像拼接和配准,也是先寻找特征点,然后进行特征点匹配,通过匹配的特征点对来计算单应矩阵H,通过H计算相机内参和相机外参,最后根据相机参数合成最终拼接图像;得到了相机参数后,也就得到了相机的位姿,这也是SLAM中用于计算相机位姿的过程。

你可能感兴趣的:(计算机视觉,计算机视觉,opencv,图像处理)