利用图像序列进行三维重建的过程,相当于把一张张由很多像素组成的二维图像还原到三维空间中的一个过程。通过了解整个投影的过程,就可以很容易理解如何利用图像进行三维重建,以及三维重建中的关键步骤是什么。该小节主要讲述单目相机的投影过程。

A. 小孔成像模型与坐标系

相机拍摄图像的过程可以简化成小孔成像的一种形式,利用这种形式可以很容易得到相机模型的数学表达式。通过相机的成像方式及其数学表达式,可以看出三维场景和图像中每一个像素之间的映射关系。通过这种映射关系,就可以将图像中的像素还原到三维空间中。若把一系列图像的所有像素全部还原到整个三维空间中,就可以将整个场景的表面进行还原。相机的小孔成像模型结构如图2-1所示,为了使其简单化,把成像的平面置于小孔前面,并且拍摄出来的图像也应该是正立的。

图1 小孔成像模型图

在小孔成像模型中,场景从三维空间投影到图片上的整个过程大致可以分解成三个步骤和四个坐标系。具体的流程为:从世界坐标系转换到相机坐标系,再从相机坐标系转换图像坐标系,最后从图像坐标系转换到像素坐标系。将相机镜头前方的场景投影至三维图像的过程,可以被看作是三维场景从世界坐标系到像素坐标系中的一个转化过程,四个坐标系的定义如下。

世界坐标系是一个客观的绝对存在。世界坐标系都需要预先确定,指定其原点与方向。在已经定义好的世界坐标系中,可以放置任意物体。在三维重建或计算机视觉中,通常把摄影相机打开的第一帧图像的相机坐标系预定义为世界坐标系。然后根据定义好的世界坐标系计算相机接下来的移动路径及姿态。世界坐标系下的坐标通常使用(Xw,Yw,Zw) 来进行表示。

相机的坐标系目前通用定义方法是以一台相机的光心或者主点作为坐标系的原点。X轴和Y轴在拍摄画面时分别平行于图像的横轴和纵轴。Z 轴为相机的焦距所指方向。相机坐标系下的坐标通常使用符号(Xc,Yc,Zc) 进行表示。

图像坐标系根据图像进行定义,以图像的中心作为原点,X 轴和Y 轴与相机坐标系的X 轴和Y 轴的方向一致。图像坐标系是使用米、厘米等物理学单位来表示的坐标系。图像坐标系只有两个维度,没有Z 轴。图像坐标系下的坐标通常使用符号(x, y) 来表示。

像素坐标系是以像素为单位的坐标系。像素坐标系也是二维坐标系,其X 轴和Y 轴的方向与图像坐标系一致,坐标系的原点位于二维图像的左上角。像素通用的表示形式为一个方块或者矩形,每个像素里面存放的信息为像素的强度或灰度值。

B. 坐标系转换

在A小节中,已经定义了各个坐标系以及坐标系中点的表示形式,在该小节,通过数学模型的形式,推导小孔成像的整个过程。整个过程分为三个步骤,其中世界坐标系到相机坐标系的变化过程涉及相机的外参,从相机的坐标系转换到图像坐标系再转换到像素坐标系的过程中都涉及到了相机的内参的使用。该小节通过相机内参以及外参的形式推导相机的投影过程。

(1) 相机外参

世界坐标系(Xw,Yw,Zw) 与相机坐标系(Xc,Yc,Zc) 的转换:相机坐标系是一个不稳定的坐标系,因为随着相机的移动会改变原点的位置以及各个坐标轴的方向。在三维重建或者相机定位的过程中需要一个稳定不变的世界坐标系。在世界坐标系中,可以将所有的坐标进行统一。

假设点P是一个三维空间中的点,其在相机坐标系下的位置为Pc ,在世界坐标系下的位置为PwPwPc 可以通过一个变换矩阵相互转换,该变换矩阵可以细分为旋转矩阵(R) 和平移矩阵(t) 。其数学表达形式为:

​                                                                                                    (1)

其中R有三个自由度,是一个3×3的矩阵,表示相机在世界坐标系下的旋转。t​ 表示相机的原点相对于世界坐标系或者说相机开始时的坐标系的原点变化,是一个3×1的矩阵。将上式展开为具体的形式为:

​                                                                               (2)

其齐次坐标的形式可以表示为:

​                                                                              (3)

可以将其简化为:

​                                                                                         (4)

其中​ 称为相机的外参矩阵,用T 来表示。

(2) 相机内参

相机坐标系(Xc,Yc,Zc) 与图像坐标系(x, y) 的转换:相机坐标系是一个三维坐标系,图像坐标系是二维坐标系,三维到二维有一个降维的过程,主要是丢掉了深度这一维度,坐标向量由三维转为二维。

如图2所示,相机坐标系下存在任意一点​ ,该点是任意的,图像上的坐标点​ 与该三维点对应。在A小节中可知,两个坐标系的X​ 轴、Y​ 轴一致,因此图像点p​ 可以增加一个维度f​ ,形成在相机坐标系的坐标​ ,其中f​ 是相机的焦距。

图2 相机坐标系与图像坐标系转换示意图

由三角形的相似关系,可以得到如下公式:

​                                                                                                  (5)

将上面公式整理后可以得到:

   ​                                                                                                (6)

将其转为齐次坐标系下为:

​                                                                               (7)

至此推导出了相机坐标系​ 与图像坐标系​ 的转换数学模型。

图像坐标系​ 与像素坐标系​ 的转换:这两个坐标系最核心的区别在于其单位不一致。图像坐标系和像素坐标系均为二维坐标系,其表示单位分别为以厘米、米等为代表物理单位以及以像素为基础的像素单位。如图3所示,根据A小节的定义,图像的中心​ 为图像坐标系的坐标原点,图像左上角​ 为像素坐标系的坐标原点。

图3图像坐标系与像素坐标系转换示意图

假设​ 为像素坐标系的坐标,表示整个图像的中心。像素的表示形式通常为矩形或者长方形,因此像素的长宽分别表示为​ 。那么根据上述已定义好的符号,可以实现图像坐标系中任意一点​ 与像素坐标系任意一点​ 一一对应。其数学转换形式为:

​                                                                                                  (8)

这种加法的形式不利于计算机的计算,因此类似于上文使用齐次坐标系进行计算,齐次坐标在增加向量维度的同时不改变向量的自由度,上式可以转换为:

​                                                                                          (9)

式(9)将向量中的加法运算转换成乘法运算,方便计算机的运行。通过式(2-9)得到了图像坐标系​ 与像素坐标系​ 的转换的数学模型。

通过式(7)与式(9),可以得到一个三维空间中的点从相机坐标系到像素坐标系的整个投影过程,其数学形式为:

​                                                                        (10)

通过对中间变换矩阵的整合可以得到:

​                                                                              (11)

其中​ 称为相机的内参矩阵,用​ 来表示。

通过上述式子的演绎推导,就可以得到一个相机的内参数矩阵​ ,相机的内参矩阵​ 有4个未知的数据,这四个数据与相机的构造相关。​ 为​ 的简写形式,​ 表示相机的焦距,​ 是单位像素的长和宽。​ 是像素坐标系下图像中间未知的坐标。通常相机的内部参数在相机出厂的时候已经做了标定,属于已知量。

(3) 内外参数组合

通过相机的内参和外参,可以将相机模型中的四个坐标系之间的变换全部联系起来,其数学形式为:

​                                                                   (12)

由式(12)可以知道通过相机的内参以及外参可以将三维的空间点投影到图像的像素空间中。相机的内参一般是已知的,同时可以知道通过相机的外参以及像素在图像坐标系下的深度就可以将图像中的场景还原到三维空间中。求解相机外参的过程其实是对相机定位的一个过程,通常称为视觉里程计。求解图像深度的称为深度估计。

相机与图像--小孔成像模型与坐标系--坐标系转换相关推荐

  1. 小孔成像模型中四个坐标系的转换:世界 相机光心 图像毫米 像素

    相机模型 数码相机图像拍摄的过程实际上是一个光学成像的过程.相机的成像过程涉及到四个坐标系:世界坐标系.相机坐标系.图像坐标系.像素坐标系以及这四个坐标系的转换. 理想透视模型--针孔成像模型 相机模 ...

  2. 相机标定----世界坐标系,相机坐标系,图像坐标系,像素坐标系的转换

    1.坐标系介绍 相机模型中,三维世界中的某一点  和  其对应的像素点是通过坐标系的转换得到的.这个过程中会涉及到四个坐标系,即世界坐标系.相机坐标系.图像坐标系.像素坐标系.下面将详细介绍四个坐标系 ...

  3. 世界坐标系,相机坐标系和图像坐标系的转换(Python)

    世界坐标系,相机坐标系和图像坐标系的转换(Python) 相机内参外参说明:相机内参外参_pan_jinquan的博客-CSDN博客_相机内参 计算机视觉:相机成像原理:世界坐标系.相机坐标系.图像坐 ...

  4. 相机小孔成像模型(逐步推导详解)

    先搞清楚为什么可以简化成小孔成像模型 相机小孔成像模型推导 原则:先简单后复杂,先理想后实际 [理想情况,相机无畸变] 一.明确四个坐标系:这个是推导的前提! 说明: 1.图像坐标系的坐标原点是成像平 ...

  5. 小孔成像中四个坐标系转换

    一.小孔成像基础知识: 1.1透镜成像原理 如图所示: 其中 u 为物距, f 为焦距,v 为相距.三者满足关系式: 相机的镜头是一组透镜,当平行于主光轴的光线穿过透镜时,会聚到一点上,这个点叫做焦点 ...

  6. OpenCV入门,相机参数的解析(小孔成像模型)

    废话引入: 使用OpenCV,一般来说都会接触到相机,本人目前主要在做图像测量,因此对相机要求较高,在此记录一下工业相机标定过程涉及的一些基础知识,如果以后忘记了还能回来看一下. 正式开始: 首先说一 ...

  7. 双目视觉(一)-相机标定及各坐标系间转换关系

    本篇文章用来记录近期学习双目视觉定位的收获,后续我将随着不断深入学习对文章进行补充 视觉是人类感知外界环境信息的重要途径,其中人类约有80%的环境信息是通过双眼获取的.双目视觉系统是典型的类人视觉模型 ...

  8. MATLAB 相机标定中标定板角点像素坐标系到世界坐标系的转换

    matlab 做相机标定后,想将第一张(任意一张都行)标定板角点所对应的像素坐标转换到世界坐标系下,标定板角点的像素坐标真值与世界坐标真值都非常容易获得,但是我通过内外参矩阵将像素坐标转换到世界坐标有 ...

  9. 相机标定01原理步骤(一)坐标系变换

    本人刚刚入手学习机器视觉,在CSDN记录自己的学习历程,欢迎各位朋友们批评指正! 此文是观看哔哩哔哩的学习笔记. 相机标定 计算机视觉的基本任务之一是从相机获取的图像信息出发计算三维空间中物体的几何信 ...

最新文章

  1. JavaScript 事件冒泡简介及应用(转)
  2. centos6.2部署jdk+tomcat+mysql总结
  3. poj1063 解题报告(poj 1063 analysis report)
  4. SAP CRM One Order框架里旧式的索引表设计原理
  5. kafka reassign 限速_RabbitMQ 七战 Kafka,差异立现!
  6. odbc spoon连接postgre_ado、odbc连接Postgre SQL
  7. rizomuv缩放排布_RizomUV
  8. mysql修改表结构例子_mysql修改表结构方法实例详解
  9. Intel® Nehalem/Westmere架构/微架构/流水线 (2) - 流水线概述
  10. php趣味编程 - php 余弦曲线
  11. PHPCrawl webcrawler library/framework
  12. URLClassLoader使用方法及事例程序
  13. 遗传算法C语言实现以及思路详解简单易懂
  14. jsp简单案例(供小白学习)
  15. 斐波那契数列的几种求解方法
  16. Lumiprobe丨Lumizol RNA 提取试剂解决方案
  17. 机器学习15-k-均值算法表述
  18. Python爬虫练习:爬取猫眼电影实时票房
  19. Android帧动画框架
  20. jQuery搜索高亮显示

热门文章

  1. unity 3分钟理解 批处理和drawcall有什么区别
  2. 甲苯二异氰酸酯(TDI)的全球与中国市场2022-2028年:技术、参与者、趋势、市场规模及占有率研究报告
  3. Visp系列学习二:visp显示和visp_ros获取图像
  4. java实验报告之Employee类的设计
  5. 【转】“执行力”问题的实质是“领导力”
  6. eacharts和eacharts-gl、3d饼图、3d柱状图加折线图、下载gl报错解决
  7. [hbase] hbase写操作时对wal和memstore的操作顺序
  8. 实验检测编译过程中的链接作用
  9. 遥感图像存储格式BSQ/BIL/BIP的理解
  10. C语言fgetc的使用