摄像机通过成像透镜将三维场景投影到摄像机二维像平面上,这个投影可用成像变换描述,即摄像机成像模型。摄像机成像模型有不同描述方式,本节首先介绍机器视觉中的常用坐标系,然后介绍摄像机的线性模型和非线性模型。

  1. 图像坐标系、摄像机坐标系和世界坐标系
  2. 针孔成像模型
  3. 非线性模型

1,图像坐标系、摄像机坐标系和世界坐标系

摄像机采集的图像在计算机内为MxN数组,M行N列的图像中的每一个像素的数值即是图像点的亮度。如下图所示,在图像上定义直角坐标系u、v,每一像素的坐标\((u,v)\)分别是该像素在数组中的列数与行数。所以,\((u,v)\)是以像素为单位的图像坐标系

由于\((u,v)\)只表示像素位于数组中的列数与行数,并没有用物理单位表示出该像素在图像中的位置。因此需要再建立以物理单位(如毫米)表示的图像坐标系。该坐标系以图像内某一点\(O_1\)为原点,X轴和Y轴分别与u、v轴平行,如上图所示。其中\((u,v)\)表示以像素为单位的图像坐标系的坐标,\((X,Y)\)表示以毫米为单位的图像坐标系的坐标。在X、Y坐标系中,原点\(O_1\)定义在摄像机光轴与图像平面的交点,该点一般位于图像中心处,但由于某些原因,也会有些偏离,若\(O_1\)在u、v坐标系中坐标为\((u_0, v_0)\),每一个像素在X轴与Y轴方向上的物理尺寸为dX、dY,则图像中的任意一个像素在两个坐标系下的坐标有如下关系:

\( \left\{\begin{matrix} u = \frac{X}{dX} + u_0 \\ v = \frac{Y}{dY} + v_0 \end{matrix}\right. \)

为以后使用方便,用齐次坐标与矩阵形式将上式表示为

\(\begin{bmatrix} u \\ v \\ 1 \end{bmatrix} = \begin{bmatrix} \frac{1}{dX} \ 0 \ u_0 \\ 0 \ \frac{1}{dY} \ v_0 \\ 0 \ 0 \ 1 \end{bmatrix} \begin{bmatrix} X \\ Y \\ 1 \end{bmatrix} \)

摄像机成像几何关系可下图表示,其中O点成为摄像机光心,x轴和y轴与图像的X轴和Y轴平行,z轴为摄像机光轴,它与图像平面垂直。光轴与图像平面的交点即为图像坐标系的原点,由点O与x、y、z轴组成的直角坐标系称为摄像机坐标系。\(OO_1\)为摄像机焦距。

由于摄像机可安放在环境中的任意位置,在环境中选择一个基准坐标系来描述摄像机的位置,并用它描述环境中任何物体的位置,该坐标系称为世界坐标系。它由\(X_w\)、\(Y_w\)、\(Z_w\)轴组成。摄像机坐标系与世界坐标系之间的关系可以用旋转矩阵R和平移向量t来描述。因此,空间中某一点P在世界坐标系与摄像机坐标系的齐次坐标如果分别是\(X_w=(X_w, Y_w, Z_w, 1)^T\)与\(x = (x, y, z, 1)^T\),则存在如下关系:

\(\begin{bmatrix} x \\ y \\ z \\ 1 \end{bmatrix} = \begin{bmatrix} R \ t \\ 0^T \ 1 \end{bmatrix} \begin{bmatrix} X_w \\ Y_w \\ Z_w \\ 1 \end{bmatrix} = M_2\begin{bmatrix} X_w \\ Y_w \\ Z_w \\ 1 \end{bmatrix} \)

其中,\(R \)为\(3 \times 3\)正交单位矩阵;\(t\)为三维平移向量;\(0 = (0, 0, 0)^T\);\(M_2\)为\(4 \times4 \)矩阵

2,针孔成像模型

针孔成像模型又称为线性摄像机模型。空间任何一点P在图像中的成像位置可以用针孔成像模型近似表示,即任何点P在图像中的投影位置p,为光心O与P点的连线OP与图像平面的交点。这种关系也称为中心射影或透视投影(perspective projection)。由比例关系有如下关系式:

\(\left\{\begin{matrix} X = \frac{fx}{z} \\ Y = \frac{fy}{z} \end{matrix}\right. \)

其中,\((X,Y)\)为p点的图像坐标;\((x, y, z)\)为空间点P在摄像机坐标系下的坐标,\(f\)为\(xy\)平面与图像平面的距离,一般称为摄像机的焦距。用齐次坐标和矩阵表示上述透视投影关系

\(s\begin{bmatrix} X \\ Y \\ 1 \end{bmatrix} = \begin{bmatrix} f \ 0 \ 0 \ 0 \\ 0 \ f \ 0 \ 0 \\ 0 \ 0 \ 1 \ 0 \end{bmatrix} \begin{bmatrix} x \\ y \\ z \\ 1 \end{bmatrix} = P \begin{bmatrix} x \\ y \\ z \\ 1 \end{bmatrix} \)

其中,s为一比例因子,P为透视投影矩阵。将第一节中的矩阵公式代入上式,得到以世界坐标系表示的P点坐标与其投影点p的坐标\((u,v)\)的关系

\(s\begin{bmatrix} u \\ v \\ 1 \end{bmatrix} = \begin{bmatrix} \frac{1}{dX} \ 0 \ u_0 \\ 0 \ \frac{1}{dY} \ v_0 \\ 0 \ 0 \ 1 \end{bmatrix} \begin{bmatrix} f \ 0 \ 0 \ 0 \\ 0 \ f \ 0 \ 0 \\ 0 \ 0 \ 1 \ 0 \end{bmatrix} \begin{bmatrix} R \ t \\ 0^T \ 1 \end{bmatrix} \begin{bmatrix} X_w \\ Y_w \\ Z_w \\ 1 \end{bmatrix} = \begin{bmatrix} a_x \ 0 \ u_0 \ 0 \\ 0 \ a_y \ v_0 \ 0 \\ 0 \ 0 \ 1 \ 0 \end{bmatrix} \begin{bmatrix} R \ t \\ 0^T \ 1 \end{bmatrix} \begin{bmatrix} X_w \\ Y_w \\ Z_w \\ 1 \end{bmatrix} = M_1 M_2 X_w = MX_w \)

其中,\(a_x = f / dX\)为u轴上尺度因子,或称为u轴上归一化焦距;\(a_y=f / dY\)为v轴上的尺度因子,或成为v轴上归一化焦距;\(M\)为\(3 \times 3\)矩阵,成为投影矩阵;\(M_1\)由\(a_x\)、\(a_y\)、\(u_0\)、\(v_0\)决定,由于这四个参数只与摄像机内部参数有关,称这些参数为摄像机内部参数;\(M_2\)由摄像机相对于世界坐标系的方位决定,称为摄像机外部参数。确定某一摄像机的内外参数,称为摄像机标定

由上式可知,如果已知某空间点P的图像点p的位置\((u,v)\),即使已知摄像机的内外参数,\(X_w\)也是不确定的。事实上,由于\(M\)是\(3 \times 4 \)不可逆矩阵,当已知\(M\)和\((u,v)\)时,消去z只可得到关于\(X_w\)、\(Y_w\)、\(Z_w\)的两个线性方程,由着两个线性方程组成的方程组即为射线OP的方程,也就是说,投影点为p的所有点均在该射线上。当已知图像点p时,由针孔成像模型,任何位于射线OP上的空间点的图像都是p点。因此,该空间点是不能唯一确定的。

3,非线性模型

实际上,由于实际的镜头并不是理想的透视成像,而是带有不同程度的畸变,使得空间点所成的像并不在线性模型所描述的位置(X, Y),而是在受到镜头失真影响而偏移的实际像平面坐标(X', Y')

\( \left\{\begin{matrix} X=X'+\delta x \\ Y = Y' +\delta y \end{matrix}\right. \)

其中,\( \delta x\)和\(\delta y\)是非线性畸变值,它与图像点再图像中的位置有关。理论上镜头会同时存在径向畸变和切向畸变。但一般来讲切向畸变比较小,径向畸变的修正量由距图像中心的径向距离的偶次幂多项式模型来表示

\(\left\{\begin{matrix} \delta x = (X'-u_0)(k_1 r^2+k_2 r^4 + \cdots \\ \delta y = (Y'-v_0)(k_1 r^2 + k_2 r^4 + \cdots \end{matrix}\right. \)

其中,\(u_0, v_0\)是主点位置坐标的精确值,而

\(r^2 = (X'-u_0)^2 + (Y'-v_0)^2 \)

表明X方向和Y方向的畸变相对值\(\delta x / X, \delta y / Y\)与径向半径的平方成正比,即在图像边缘处的畸变较大。对一般机器视觉,一阶径向畸变已足够描述非线性畸变,即省略上式中大于等于4的高次项。

线性模型参数\(\alpha _x\)、\(\alpha _y\)、\(u_0\)、\(v_0\)与非线性畸变参数\(k_1\)和\(k_2\)一起构成了摄像机非线性模型的内部参数。

摄像机模型 (Camera Model)的更多相关文章

  1. thinkphp模型层Model、Logic、Service讲解

    thinkphp模型层Model.Logic.Service讲解 时间:2014-08-24 15:54:56   编辑:一切随缘   文章来源:php教程网 已阅读:771 次       js特效 ...

  2. Scikit-learn:模型评估Model evaluation

    http://blog.csdn.net/pipisorry/article/details/52250760 模型评估Model evaluation: quantifying the qualit ...

  3. 图标跟着摄像机(Camera)orthographicSize的值改变大小

    默认摄像机(Camera)orthographicSize默认大小为51 #region //滚轮滑动,大地图放大缩小 ) { if (screenView_1Main.myEquipSearch.i ...

  4. 盒子模型(Box Model)

    盒子模型(Box Model) ■ 盒子模型——概念 在网页设计中常用的属性名:内容(content),填充(padding),边框(border),边界(margin),CSS 盒子模式都具备这些属 ...

  5. 使用 Jackson 树模型(tree model) API 处理 JSON

    http://blog.csdn.net/gao1440156051/article/details/54091702 http://blog.csdn.net/u010003835/article/ ...

  6. css盒模型(Box Model)

    所有HTML元素可以看作盒子,在CSS中,"box model"这一术语是用来设计和布局时使用. CSS盒模型本质上是一个盒子,封装周围的HTML元素,它包括:边距,边框,填充,和 ...

  7. HTML和CSS的盒子模型(Box model)

    本文作为属性篇的最后一篇文章, 将讲述HTML和CSS的关键—盒子模型(Box model). 理解Box model的关键便是margin和padding属性, 而正确理解这两个属性也是学习用css ...

  8. OpenCV —— 摄像机模型与标定

    这种理论看的已经够多了,感觉应用价值不大(矫正畸变图像还凑合,用摄像机测距神马的...) 有始有终吧,简单把内容梳理一下 针孔  摄像机模型 —— 过于理想(不能为快速曝光收集足够的光线) 透镜可以聚 ...

  9. ORM之模型对象Model

    模型对象Model Odoo的模型对象在odoo模块的models.py文件中,最基础的对象是BaseModel; Odoo的模型对象有三个:AbstractModel.Model.Transient ...

随机推荐

  1. static的功能

    static : 翻译成中文是静态的意思.  使用内部函数的好处是:不同的人编写不同的函数时,不用担心自己定义的函数,是否会与其它文件中的函数同名,因为同名也没有关系.   在C语言中,static的 ...

  2. 罗技K380连接Win10(MacBookPro双系统)系统失败

    问题描述: MacBook Pro 双系统,先连接MacOS使用没问题,切换至Win10系统,连接失败. 解决方案: 进入MacOS,打开蓝牙设置,将已经连接的键盘删除,重新进入Win10系统,再连接 ...

  3. 手机APP测试

    注:以下内容来自网络: 一.手机APP测试类型 1.1 接口协议测试 在APP客户端开发设计时,一般服务端会提供相应的接口协议文档,接口协议文档的质量,决定了APP的开发进度.此部分的测试,应首先检测 ...

  4. 正经学C#_布尔运算[布尔值与其布尔运算符]:《c#入门经典》

    前面几个章节简述了 C#中得常用得算术运算符.这一章节说布尔值与其布尔运算符. 布尔值在c#中表示方式是 bool类型,这个类型可以储存两个值,true或者false,或者真或者假,可以说0或者1. ...

  5. 为什么使用docker

    为什么要使用Docker? 作为一种新兴的虚拟化方式,Docker跟传统的虚拟化方式相比具有众多的优势. 更高效的利用系统资源 由于容器不需要进行硬件虚拟及运行完整操作系统等额外开销,Docker对系 ...

  6. mysql查询不区分大小写

    摘自:http://www.jb51.net/article/70884.htm 当我们输入不管大小写都能查询到数据,例如:输入 aaa 或者aaA ,AAA都能查询同样的结果,说明查询条件对大小写不 ...

  7. 洛谷P3709 大爷的字符串题(莫队)

    题目背景 在那遥远的西南有一所学校 /*被和谐部分*/ 然后去参加该省省选虐场 然后某蒟蒻不会做,所以也出了一个字符串题: 题目描述 给你一个字符串a,每次询问一段区间的贡献 贡献定义: 每次从这个区 ...

  8. Linux之sshkey密钥认证实战

    在实际的生产环境中,经常会用到sshkey密钥认证实行数据分发数据等操作,还可以批量操作内网服务器,实行免密认证进行推送分发数据. 1.环境查看 分发服务器 节点服务器 2.服务器添加系统账号 3.生 ...

  9. 背包 DP【洛谷P4158】 [SCOI2009]粉刷匠

    P4158 [SCOI2009]粉刷匠 windy有 N 条木板需要被粉刷. 每条木板被分为 M 个格子. 每个格子要被刷成红色或蓝色. windy每次粉刷,只能选择一条木板上一段连续的格子,然后涂上 ...

  10. [比赛|考试]nowcoder NOIPpj组第二场

    nowcoder NOIPpj组第二场 370pts/400pts(100,100,100,70) rank3 给自己的反思:前3题都A了,T4O(N^2)不会就是不会(没准是我懒得推了),DP了70 ...