相机模型-计算机视觉

摄像机的基本成像模型, 通常称为针孔模型(pinhole model), 由三维空间到像平面的中心投影变换给出.

如上图(a)所示, 空间点Oc是投影中心, 它到平面π的距离为f. 空间点Xc在平面π上的投影(像)是以点Oc为端点并经过Xc的射线与平面π的交点.

平面π称为摄像机的像平面(image plane), 点Oc称为摄像机的光心(optical center), f称为摄像机的焦距(focus),
以点Oc为端点且垂直于像平面的射线称为光轴主轴(principal axis), 主轴与像平面的交点p称为摄像机的主点(principal
point).

为了从代数上描述这种投影关系, 需要建立摄像机坐标系图像平面坐标系. 如上图(b)所示, 在图像平面上, 以主点p为图像平面坐标系的原点o, 以水平线和铅直线分别为x轴和y轴, 建立图像坐标系o-xy;
在空间中, 以摄像机光心Oc为摄像机坐标系的原点, 以主轴为zc轴, 以平行于x轴且通过光心Oc的直线为xc轴,
以平行于y轴且通过光心Oc的直线为yc轴,建立摄像机坐标系Oc-xcyczc.

空间点Xc在摄像机坐标系中的欧氏坐标记为,
它的像点m在图像坐标系中的坐标记为. 从上图(b)中, 根据三角形相似原理, 可推知空间点Xc与它的像点m满足下列关系:

 (1)

上式可表达为下列矩阵形式:

 (2)

其中, 分别为空间点和图像点的齐次坐标.
它是从空间到像平面的一个齐次线性变换. 如果记

 (3)

则这个齐次线性变换可表示为更为简洁的形式:

 (4)

其中, 矩阵P是一个3x4矩阵, 通常称为摄像机矩阵(camera matrix). 这就是基本成像模型的代数表示.

注意, (4)是一个齐次等式, 表示在相差一个非零常数因子(zc)的意义下相等.

考虑到主点偏离图像中心的情况

在实际应用中, 事先不知道主点的确切位置, 因此通常都是以图像中心或者图像左上角作为图像坐标系原点来建立图像坐标系(在本文中, 除非特别说明, 都以图像中心作为图像坐标系原点). 在此坐标系下, 由于主点可能不是图像坐标系的原点, 因此摄像机矩阵不再可能具有(3)的形式.

若主点在图像坐标系下的坐标p=(x0y0z0)T, 则摄像机的投影关系变为(可自行证明):

 (5)

摄像机矩阵的形式为P=K(I, 0), 其中,

 (6)

并称它为摄像机内参数矩阵(intrinsic parameters matrix).

考虑到像素不是正方形的情况

用于计算机处理的图像通常都是用CCD摄像机获取的数字图像, 或者由模拟信号摄像机获取的图像再经过特别设备进行数字离散化的数字图像. 一般地, CCD内参数矩阵不再具有(6)的形式. 为了得到CCD摄像机的模型, 必须刻划CCD摄像机的数字离散化过程.

假定CCD摄像机数字离散化后的像素是一个矩形, 矩形的长和宽分别是dxdy. 设图像点(xy, 1)T在离散化后的坐标为(uv, 1)T,
则必有:

 (7)

如果离散化后的图像坐标仍用m表示, 则摄像机的投影关系可以写成:

 (8)

其中

 (9)

矩阵K称为CCD摄像机的内参数矩阵fx=f/dxfy=f/dy,
称为CCD摄像机在u轴和v轴上方向上的尺度因子, (u0v0)T=(x0/dxy0/dy)T,
称为CCD摄像机的主点.

考虑到像素是平行四边形的情况

由于制造工艺的限制, 一般情况下, CCD摄像机数字离散化后的像素不是一个矩形, 而是一个平行四边形. 平行四边形的一边平行于u轴, 而另一边与u轴形成一个θ角(见下图).

令平行四边形两边长分别为dxdy, 图像点(xy, 1)T离散化后的坐标为(uv, 1)T,
则必有

 (10)

结合(5)式, 可得到:

 (11)

如果离散化后的图像坐标仍然用m表示, 则上式可写成:

 (12)

其中,

 (13)

是摄像机内参数矩阵fx=f/dxfyf/sinθdy,
称为一般CCD摄像机在u轴和v轴方向上的尺度因子, (u0v0)T =(( x0-y0cotθ)/dxy0/sinθdy)T称为一般CCD摄像机的主点,
s=-fcotθ/dx称为一般CCD摄像机的倾斜因子(skew factor).

考虑到世界坐标系的情况

上面介绍的摄像机矩阵是在摄像机坐标系下的结果. 由于摄像机的中心和主轴等事先都是未知的, 因此在这个坐标系下不能给出空间点的准确坐标值; 另外摄像机可安放在环境中的任何位置, 所以需要一个基准坐标系来描述空间点和摄像机的位置. 这个基准坐标系通常称为世界坐标系(world coordinate system)或者物体坐标系(object coordinate system).

世界坐标系与摄像机坐标系之间的关系可以用旋转矩阵和平移向量来描述, 如下图所示.

令空间点在世界坐标系和摄像机的坐标分别为X=(xyz, 1)TXc=(xcyczc,
1)T, 则它们之间的关系为:

 (14)

其中, 表示光心在世界坐标系中的非齐次坐标. 以后, 点X的非齐次坐标总用表示.
将(14)式代入(12)式, 则有:

 (15)

这样, 得到摄像机矩阵的一般形式:

 (16)

矩阵称为摄像机的外参数矩阵(extrinsic parameters matrix). 有时, 也用来描述世界坐标系和摄像机坐标系之间的关系,
此时摄像机矩阵为:

 (17)

其中, .

摄像机矩阵是一个秩为3的3x4矩阵. 因为它的前三列所构成的子矩阵是一个可逆矩阵. 另外, 由于摄像机矩阵的齐次性, 所以它仅有11个独立元素.

在经典立体视觉中, 需要在欧氏坐标系下估计摄像机矩阵(camera matrix), 才能完成立体视觉系统的标定. 常用的方法是根据一些空间点在欧氏坐标系下的坐标与其图像坐标之间的对应关系, 建立关于摄像机矩阵的约束方程, 从而确定摄像机矩阵. 在实践中, 为了得到一些空间点的欧氏坐标, 需要制作一个标定参考物, 在标定参考物上经过精确测量的特征点作为估计摄像机矩阵时所需要的空间点.

记摄像机矩阵为

 (1)

其中为矩阵P的第j行向量. 令Xj=(xjyjzj,
1)T是特征点在世界坐标系下的坐标, 对应的图像点坐标为mj=(ujvj,
1)T, 于是根据摄像机的投影关系, 得到

 (2)

因此, 消去上式中常数因子sj后, 可得到下述方程:

 (3)

在这个方程组中, 第三个方程可由前两个方程线性表示, 因此只有两个方程是线性独立的. 因此, 给定N≥6个以上的特征点与其图像点的对应, 可线性求解摄像机矩阵P.

最小二乘解

当图像数据存在测量误差时, 方程组(3)一般不存在非零解. 此时, 通常以它的最小二乘解作为摄像机矩阵的估计. 对每一个点对应, 记

 (4)

它是一个3x12的矩阵Aj. 给定n个点对应, 得到n个形如这样的矩阵, 再将这n个矩阵组合起来得到一个3nx12的矩阵,
A做奇异值分解(SVD), A=UDVT, 则V的最后一个列向量p=v12是方程Ap=0的最小二乘解,
再将p写成矩阵的形式就得到摄像机矩阵P.

注: 由于摄像机矩阵是齐次的, 所以我们只能在相差一个非零常数因子的意义下求解, 即所得到的摄像机矩阵P与它的标准形式K(Rt)相差一个非零常数因子.

正向投影

空间点X通过摄像机P投影到图像平面的图像点m=PX, 这种投影关系称为摄像机的正向投影, 简称投影(projection).

反向投影

反向投影是针对图像平面的基本几何元素而言的. 图像平面点m反投影(back projection)是指在摄像机P的作用下具有像点m的所有空间点的集合, 即

 (1)

在几何上, 不难看出图像点m的反投影是从摄像机中心(光心)出发并通过图像点m的一条射线, 如下图所示.

下面考虑图像点m的反投影lb在在世界坐标系下的方程. 这是非常重要的, 因为在计算机视觉中, 从多幅图像的对应点的反投影射线可以恢复空间点的三维坐标. 由于两点确定一条直线, 所以如果能够确定摄像机中心C和射线lb上另一点的空间坐标,
就可以得到射线lb在空间中的方程. 下边先来计算摄像机中心C在世界坐标系中的坐标. 令C是摄像机中心在世界坐标系中的齐次坐标, 是非齐次坐标,
, 则

 (2)

可知, 摄像机中心C是方程PC=0的一个解. 另一方面, P仅有一维右零空间, 因为它的秩等于3. 于是, 摄像机中心的齐次坐标构成了P的右零空间. 在已知摄像机矩阵P的情况下, 可以通过求解PX=0得到摄像机中心在世界坐标系中的坐标.
事实上, 如果令P=(Hp4), 其中HP的前三列所构成的3x3矩阵, p4P的第4个列向量,
则从方程PX=0可得到摄像机中心的世界坐标为

 (3)

再考虑射线lb上的另一个空间点. 令P(3x4矩阵)的广义逆P+=PT(PPT)-1,
看看空间点P+m的情况. 将其代入投影公式,P(P+m)= (PPT)(PPT)-1m=m,
因此可以断定P+m必定在射线lb上. 于是, 根据lb上的两个点CP+m,
就能得到lb的下述参数方程:

 (4)

时间: 2024-10-24 18:07:58

相机模型-计算机视觉的相关文章

相机模型详解

相机模型 数码相机图像拍摄的过程实际上是一个光学成像的过程.相机的成像过程涉及到四个坐标系:世界坐标系.相机坐标系.图像坐标系.像素坐标系以及这四个坐标系的转换. 理想透视模型--针孔成像模型 相机模型是光学成像模型的简化,目前有线性模型和非线性模型两种.实际的成像系统是透镜成像的非线性模型.最基本的透镜成像原理如图所示: 其中 u 为物距, f 为焦距,v 为相距.三者满足关系式: 相机的镜头是一组透镜,当平行于主光轴的光线穿过透镜时,会聚到一点上,这个点叫做焦点,焦点到透镜中心的距离叫做焦距

新型无镜头相机助力计算机视觉

计算机视觉处理高分辨率的图像需要非常多的计算量,因此很多数据集的图像分辨率都非常小.而近日,工程师们用一块玻璃.一个光电探测器和一些软件,开发了一种「透视」相机,这种不带镜头的相机能拍摄分辨率非常小的图像,并抽象出物体的主要轮廓.因此使用这种相机拍摄的图像能大量降低计算机视觉所需要的计算力.同时,他们也在开发用机器学习算法处理更复杂图像的技术. 以前的相机配备自己的专门设备,如镜头和胶卷,而且照相得去照相馆.后来,手机.平板电脑.笔记本电脑和视频游戏机都有了自己的照相功能.现在,相机似乎会在某天

COLMAP已知相机内外参数重建稀疏/稠密模型

COLMAP已知相机内外参数重建稀疏/稠密模型 Reconstruct sparse/dense model from known camera poses 参考官方Faq链接:https://colmap.github.io/faq.html#reconstruct-sparse-dense-model-from-known-camera-poses 1. 手动指定相机Pose和注册图像 在目录下手动新建cameras.txt, images.txt, 和 points3D.txt三个文本文件

计算机视觉整理库

本文章有转载自其它博文,也有自己发现的新库添加进来的,如果发现有新的库,可以推荐我加进来 转自:http://www.cnblogs.com/tornadomeet/archive/2012/05/24/2515980.html Deep Learning(深度学习): ufldl的2个教程(这个没得说,入门绝对的好教程,Ng的,逻辑清晰有练习):一 ufldl的2个教程(这个没得说,入门绝对的好教程,Ng的,逻辑清晰有练习):二 Bengio团队的deep learning教程,用的thean

相机标定究竟在标定什么?[转]

相机标定可以说是计算机视觉/机器视觉的基础,但是初学者不易上手,本文将给读者整理一遍相机标定的逻辑,并在文末回答评论区提出的问题.分为以下内容: 相机标定的目的和意义 相机成像过程的简化与建模 针孔相机模型的数学描述 标定针孔相机模型的参数 相机标定的目的和意义 我们所处的世界是三维的,而照片是二维的,这样我们可以把相机认为是一个函数,输入量是一个场景,输出量是一幅灰度图.这个从三维到二维的过程的函数是不可逆的. 相机标定的目标是我们找一个合适的数学模型,求出这个模型的参数,这样我们能够近似这个

【转载】推导相机变换矩阵

原文:推导相机变换矩阵 一些网友写信给我希望能够了解固定流水线中世界空间到相机空间变换矩阵的具体推导过程.其实之前我在<向量几何在游戏编程中的使用6>中已经简单的把相机变换作为一个使用基理论的例子进行了说明,但可能仍然不够具体.这篇文章中,我会尽力阐述相机变换的整个来龙去脉.希望能够对正在学习固定流水线的朋友们有所帮助.这里我们仍然会在推导相机变换之前介绍几个理论知识,目的是为了更好的理解推导过程.我们马上开始! 什么是相机变换? 在流水线中,当物体从模型坐标通过世界矩阵变换到世界空间之后,它

世界坐标系、相机坐标系、图像坐标系之间的关系

一.四个坐标系简介和相互转换 相机模型为以后一切标定算法的关键,只有透彻的理解了,对以后的标定算法才有更好的理解. 首先要理解相机模型中的四个平面坐标系的关系:像素平面坐标系(u,v).像平面坐标系(图像物理坐标系(x,y)).相机坐标系(xc,yc,zc)和世界坐标系(Xw,Yw,Zw). 我们通过假设一些参数,使上面四个坐标系之间的坐标联系起来,这样我们就可以把拍摄的图片上的一个点坐标反推导出世界坐标系中的那个点坐标,这样就达到了三维重建的目的.而那些我们假设的参数,就是我们要标定的内外参数

OpenCV相机标定

相机标定 相机标定:简单的说,就是获得相机参数的过程.参数如:相机内参数矩阵,投影矩阵,旋转矩阵和平移矩阵等 什么叫相机参数? 简单的说,将现实世界中的人.物,拍成一张图像(二维).人或物在世界中的三维坐标,和图像上对应的二维坐标间的关系.表达两种不同维度坐标间的关系用啥表示?用相机参数. 相机的成像原理 先来看一下,相机的成像原理: 如图所示,这是一个相机模型.将物体简化看成一个点.来自物体的光,通过镜头,击中图像平面(图像传感器),以此成像.d0是物体到镜头的距离,di时镜头到图像平面的距离

OpenGL边用边学------2 经典照相机模型

实际照相步骤 1 布置场景和调整照相机位置 3 选择镜头对焦Focus 4 按下快门 5 在电脑窗体中赞赏图片 OpenGL的相机模型 0 确定胶片位置 1 确立场景世界坐标系 2 在世界坐标系中确定相机位置与方向 3 在世界坐标系中建立物理世界模型 4 视图变换与模型变换的抉择 5 在照相机坐标系中确定可视范围对焦投影变换 6 调用glBegin glEnd拍照 OpenGL相机模型与实际相机的不同 1 物体和相机都能够随意移动 2 终于的照片能够是多次拍摄合成的 3 特殊的投影方式正投影 相