相机模型
文章目录
1. 基本成像原理
1.1 相机
1.1.1 相机简介
1.1.2 传感器
传感器(英文名称:transducer/sensor)是一种检测装置,能感受到被测量的信息,并能将感受到的信息,按一定规律变换成为电信号或其他所需形式的信息输出,以满足信息的传输、处理、存储、显示、记录和控制等要求。对于相机,采用的是图像传感器,是组成数字摄像头的重要组成部分可分为CCD(Charge Coupled Device,电荷耦合元件)、CMOS(Complementary Metal-Oxide Semiconductor,金属氧化物半导体元件)和CIS(Contact Image Sensor,接触式图像传感器)。
CCD是应用在摄影摄像方面的高端技术元件,CMOS则应用于较低影像品质的产品中,它的优点是制造成本较CCD更低,功耗也低得多,这也是市场很多采用USB接口的产品无须外接电源且价格便宜的原因。尽管在技术上有较大的不同,但CCD和CMOS两者性能差距不是很大,只是CMOS摄像头对光源的要求要高一些,但该问题已经基本得到解决。CCD元件的尺寸多为1/3英寸或者1/4英寸,在相同的分辨率下,宜选择元件尺寸较大的为好。图像传感器又叫感光元件。
1.2 小孔成像原理
中学时我们都学过小孔成像,还记得吧。像下面这个图,就是小孔成像示例。你看三维空间的蜡烛在带有小孔的黑箱子里成像一个倒立是像,这个是实像. 由于实像是倒立的,所以为了推导的方便,我们一般在数学公式推导的时候采用虚拟图像平面来进行推导,并且大多数的相机在输出图像的时候也会采用虚拟图像平面的坐标,方便使用.
1.3 相机成像相关坐标系的建立
维度 | 含义 | |
---|---|---|
世界坐标系(world coordinate) | 3D, ( X , Y , Z ) T (X,Y,Z)^T (X,Y,Z)T单位为m | 世界坐标系可以由用户任意给定,表示在真实的3D物理世界中给定一个坐标系以描述物理世界中的3D点,世界坐标系通常以所感兴趣的物体object为中心建立(意味着所感兴趣的物体不同,建立的世界坐标系位置也不一样) |
相机坐标系(camera coordinate) | 3D, ( x , y , z ) T (x,y,z)^T (x,y,z)T单位为m | 相机坐标系由相机的位置唯一确定,一旦相机的光轴和光心确定后,相机坐标系的3个轴就给定了,它也是用来描述真是物理世界中的点在相机坐标系下的坐标 |
成像坐标系/感光器件坐标系(film coordinate) | 2D , ( x , y ) T (x,y)^T (x,y)T 单位为mm | 成像坐标系由相机的成像平面唯一确定,表示将相机坐标系中的点(3D)投影到感光器件上成像得到2D坐标点 |
像素坐标系(pixel coordinate) | 2D , ( u , v ) T (u,v)^T (u,v)T 单位为像素 | 进行图像处理算法时用到的图像所在的2D像素坐标系 |
1.4 相机成像过程
在将世界坐标系中的3D真实点转换到通常进行图像处理时所使用的以像素为单位的2D图像上,通常的前向投影过程如下:
- 通过外参矩阵(包括旋转矩阵 R R R和平移矩阵 T T T)将世界坐标系中的点转换到相机坐标系中
- 通过相机内参 f f f:相机的焦距(成像平面到光心的距离,在相机主轴上计算)参数,将相机坐标系中的点转换到成像坐标系上
- 利用成像坐标系上的坐标和单个像素的尺寸,获取成像点在图像中心坐标系中的像素坐标,之后再利用相机内参 c x , c y c_x,c_y cx,cy把坐标原点从图像中心移动到图像左上角.
2. 相机模型数学描述
2.1 世界坐标系到相机坐标系
在变换前后,坐标的单位不会变化.
2.2 相机坐标系到传感器坐标系
从相机坐标系变换到传感器坐标系得到的是点在传感器平面上的二维坐标,可以利用相似三角形的几何关系得到:
在这一步中,利用相似三角形的关系,把相机坐标下的三维点,变换到了传感器平面上的一个点,坐标单位由m-> mm,因为物理焦距 f f f一般单位是毫米.
2.3 传感器坐标到像素坐标
从传感器坐标变换到像素坐标需要考虑把实际的长度换算成像素的个数.由于传感器长度和宽度不一定相等,图像一般也是一个矩形,所以可以假设:
{ d x = W s e n s o r W i m a g e d y = H s e n s o r H i m a g e \begin{cases} dx = \frac{W_{sensor}}{W_{image}} \\ dy = \frac{H_{sensor}}{H_{image}} \end{cases} {
dx=WimageWsensordy=HimageHsensor
单位为 m m / p i x e l mm/pixel mm/pixel
另外由于传感器坐标系原点在其中心,所以在获取到像素坐标后还需要进行平移,使其坐标原点在左上角,于是:
{ u = 1 d x ⋅ x + c x v = 1 d y ⋅ y + c y \begin{cases} u = \frac{1}{dx} \cdot x+ c_x \\ v = \frac{1}{dy} \cdot y + c_y \\ \end{cases} {
u=dx1⋅x+cxv=dy