相机成像的过程实际是将真实的三维空间中的三维点映射到成像平面(二维空间)过程,可以简单的使用小孔成像模型来描述该过程,以了解成像过程中三维空间到二位图像空间的变换过程。
本文包含两部分内容,首先介绍小孔成像模型的各种几何关系;接着描述了成像过程中的四种坐标系(像素坐标,图像坐标,相机坐标,世界坐标)的变换关系。

小孔成像模型

相机可以抽象为最简单的形式:一个小孔和一个成像平面,小孔位于成像平面和真实的三维场景之间,任何来自真实世界的光只有通过小孔才能到达成像平面。因此,在成像平面和通过小孔看到的真实三维场景存在着一种对应关系,也就是图像中的二维像点和真实三维世界的三维点存在某种变换关系。找到了这种变换关系,就可以利用图像中的二维点信息来恢复场景的三维信息。

下图是小孔成像的模型,为了简化模型,将成像平面放在了小孔的前面,并且成的像也是正立的

在描述小孔的成像过程前,首先来定义两个坐标系:

  • 相机坐标系(三维坐标系)
    相机的中心被称为焦点或者光心,以焦点OcOc 为原点和坐标轴Xc,Yc,ZcXc,Yc,Zc 组成了相机坐标系
  • 图像坐标系(二维坐标系)
    成像平面中,以成像平面的中心O′O′ 为原点和坐标轴x′,y′x′,y′ 组成了图像坐标系

小孔成像实际就是将相机坐标系中的三维点变换到成像平面中的图像坐标系中的二维点。

假设,三维空间中点PP ,其在相机坐标系中的坐标是Pc=[X,Y,Z]TPc=[X,Y,Z]T ;其像点pp ,在图像坐标系的中的坐标是p=[x,y]Tp=[x,y]T ,由于光轴垂直与成像平面,那么可以知道像点pp 在相机坐标系中的坐标是p=[x,y,z]T,其中z=f(f是焦点到成像平面之间的距离,被称为焦距)p=[x,y,z]T,其中z=f(f是焦点到成像平面之间的距离,被称为焦距) 。

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

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

上面的公式就是小孔相机模型的基础公式了,有了此公式可以推导出更详细的小孔相机模型的参数:

  • 内参数
  • 外参数

在推导相机的内参数和外参数前,需要先了解下齐次坐标的概念。

齐次坐标

相机的成像过程实际是将三维空间的点P=(X,Y,Z)P=(X,Y,Z)变换到成像平面的过程,这个过程也可以被称为射影变换(更多关于射影变换的内容可参考《计算机视觉中的多视图几何》)。如上面描述的,设射影变换的中心OO作为相机坐标系的原点,该点到成像平面的距离为ff,PP在成像平面的投影点为p=(x,y)p=(x,y),根据相似三角形原理,可以得到公式:

上面的公式就描述了三位空间到二维平面的映射,但是该映射对于坐标ZZ来说却是非线性(作为分母),通过上面的公式方便的统一处理X,Y,ZX,Y,Z这三个坐标轴的数据。就需要引入新的坐标(扩展坐标的维度)将其线性化,如下:

这样,可以使用矩阵的乘法统一的处理X,Y,ZX,Y,Z这三个坐标。
          坐标(x^,y^,z^)(x^,y^,z^)就是像点p=(x,y)p=(x,y)的齐次坐标,其中

通过上面的公式可以很容易的推导出,怎么通过扩展坐标维度构建齐次坐标。具体步骤就是将x和y同时除以一个不为0的z,并且将z作为其添加维度的坐标,通常可以选择z=1z=1。

这就可以发现其次坐标的一个重要性质,齐次坐标缩放一个常量因子是不变

内参数

相机的内参数由下面的两部分组成:

  • 射影变换本身的参数,相机的焦点到成像平面的距离,也就是焦距ff。
  • 成像平面坐标系像素坐标系的变换。上面推导中使用的像点坐标p=(x,y)p=(x,y)是成像平面坐标系下,以成像平面的中心为原点。而实际像素点的表示方法是以像素来描述,坐标原点通常是图像的左上角,X轴沿着水平方向向左,Y轴竖直向下。像素是一个矩形块,这里假设其在水平和竖直方向的长度分别为:αα和ββ。所以像素坐标和成像平面坐标之间,相差了一个缩放原点的平移

假设像素坐标的水平方向的轴为μμ,竖直方向的轴为νν,那么将一个成像平面的坐标(x,y)(x,y)在水平方向上缩放αα倍,在竖直方向上缩放ββ倍,同时平移(cx,cy)(cx,cy),就可以得到像素坐标系的坐标(μ,ν)(μ,ν),其公式如下:

将上面求得的(x,y)(x,y)带入上面公式可得到:

将上面的公式写为齐次坐标的形式:

上面提到对于齐次坐标,缩放一个常量因子仍然是相等的,将ZZ挪到左边

通过过上面的的推导,就得到了相机的内参数矩阵(Camera Intrinsics)K

K有4个未知数和相机的构造相关,fx,fyfx,fy和相机的焦距,像素的大小有关;cx,cycx,cy是平移的距离,和相机成像平面的大小有关。

求解相机内参数的过程被称为标定,在SLAM中可以假定相机的内参是已知的,而在三维重建中内参数则是未知的,需要手动的标定(比如使用标定板),也有自标定的方法,不过精度较低。

外参数

通过上面的推导,知道了相机成像的过程

其中,pp是图像中像点的像素坐标,KK是相机的内参数矩阵,PP是相机坐标系下的三维点坐标。

上面推导使用的三维点坐标是在相机坐标系下的,相机坐标系并不是一个“稳定”的坐标系,其会随着相机的移动而改变坐标的原点和各个坐标轴的方向,用该坐标系下坐标进行计算,显然不是一个明智的选择。需要引进一个稳定不变坐标系:世界坐标系,该坐标系是绝对不变,SLAM中的视觉里程计就是求解相机在世界坐标系下的运动轨迹。

设PcPc是PP在相机坐标系坐标,PwPw是其在世界坐标系下的坐标,可以使用一个旋转矩阵RR和一个平移向量tt,将PcPc变换为Pw

其中,RR是一个3×33×3的旋转矩阵,tt是3×13×1的平移向量,上面运算的过程还需要做加法运算,为了方便计算,现将其改写为齐次坐标的形式

其齐次坐标的形式

将旋转矩阵R和平移向量t带入

上面就推导得到相机的外参数(Camera Extrinsics)T

其中,RR是旋转矩阵,tt是平移向量.

内外参数组合到一起

p=(μ,ν)p=(μ,ν)是图像中的像点,其坐标系是像素坐标系;Pc=(Xc,Yc,Zc)Pc=(Xc,Yc,Zc)是场景中的三维店,其坐标系是相机坐标系

为了能够和外参数联合,需要将上式齐次化

这里使用的三维点坐标PcPc是相机坐标系下的,带入外参数,将其该坐标变换为世界坐标系Pw=(Xw,Yw,Zw)

可以将内外参数组合到一起称为相机矩阵,其作用是将真实场景中的三维点投影到二维的成像平

总结

本文总结了将场景中的三维点投影到二维成像平面变为像点的过程,下面对本文再作个总结。

设有一像点p=(x,y)p=(x,y)其对应的场景中的三维点为Pc=(Xc,Yc,Zc)Pc=(Xc,Yc,Zc),成像平面距离相机中心的距离为ff,依据小孔成像的原理,得到下面的变换公式

上式左边的像点坐标是成像平面坐标系下的坐标,需要将其变换到像素坐标系下。成像平面坐标系和像素坐标系间相差一个缩放和一个原点的平移

其中,dx,dydx,dy为一个像素的长和高,在前面的描述中使用α=1dx,β=1dyα=1dx,β=1dy表示;cx,cycx,cy表示原点的平移量。

在上式的右边三维点的坐标PcPc使用的是相机坐标系,而相机位置却不是固定不变的,需要将其变换到世界坐标系下;从相机坐标系变换到世界坐标系下需要一个旋转平移

一个相机矩阵就由上面三个矩阵组成。

相机模型(内参数,外参数)相关推荐

  1. 鱼眼相机标定_鱼眼相机模型(二)

    前言 在介绍其他相机模型之前,可以先看一下kalibr支持标定的相机模型(kalibr可以标定的相机模型),这里的相机模型一共有4种,针孔相机模型,全景相机模型,Double sphere相机模型还有 ...

  2. 机器视觉-相机内参数和外参数

    点击上方"小白学视觉",选择加"星标"或"置顶" 重磅干货,第一时间送达 1.相机内参数是与相机自身特性相关的参数,比如相机的焦距.像素大小 ...

  3. 相机的针孔模型及其内参数,外参数的理解

    相机的针孔模型及其内参数,外参数的理解 2019.10.18 FesianXu 文章目录 @[toc] 前言 相机的针孔模型 坐标系的改变 考虑更多因素 总结 更新说明 Reference 前言 在相 ...

  4. 计算机视觉-相机内参数和外参数

    1.相机内参数是与相机自身特性相关的参数,比如相机的焦距.像素大小等: 相机外参数是在世界坐标系中的参数,比如相机的位置.旋转方向等. 相机标定(或摄像机标定): 一句话就是世界坐标到像素坐标的映射, ...

  5. 计算机视觉学习6_棋盘格_相机模型与参数标定

    文章目录 为什么要进行相机参数标定 相机内参矩阵原理 相机标定方法--Recap: 相机标定 张正友标定法 相机模型 计算单应性矩阵H 计算内参数矩阵 计算外部参数 实验(matlab实现) 为什么要 ...

  6. 相机参数和相机模型各个坐标系(世界坐标系、相机坐标系、图像坐标系、像素坐标系之间变换)

    坐标系变换 1. 几个坐标系: 世界坐标系(world coordinate system): 用户定义的三维世界的坐标系,为了描述目标物在真实世界里的位置而被引入.单位为m. 相机坐标系(camer ...

  7. python计算机视觉- 相机模型与参数标定

    文章目录 相机投影模型 针孔相机模型 像主点偏移 内参矩阵 畸变现象 畸变矫正 外参矩阵 两类参数 相机标定 线性回归 (最小二乘) 非线性优化 标定过程 实验过程 MATLAB进行标定 相机投影模型 ...

  8. 计算机视觉:相机模型与参数标定

    目录 一.针孔照相机模型 1.像主点偏移 2.内参矩阵 3.畸变现象 4.畸变校正 二.照相机标定 1.标定原理 2.实验流程 三.代码实现(python+opencv) 1.数据准备 2.代码实现 ...

  9. matlab相机标定 外参数,相机外参数的标定.doc

    相机外参数的标定 本 科 毕 业 设 计 (论 文) 题 目 __________________________________ 指导教师__________________________ 辅导教 ...

最新文章

  1. 数据中心机房供电需求有哪些?存在哪些电能质量问题?
  2. The J2EE Architect's Handbook
  3. [译] APT分析报告:04.Kraken - 新型无文件APT攻击利用Windows错误报告服务逃避检测
  4. git 解决远程和本地冲突
  5. 前端,到底什么来路?
  6. 自动化wms仓储系统发展五个阶段?
  7. __attribute__((visibility(default)))
  8. 通过字符串方法创建新字符串如何打出反斜杠、单引号、双引号、响铃、换行符、水平制表符
  9. 【面经】深度学习算法岗(京东)
  10. 用RDA方式同步SQLCE与SQL SERVER数据库
  11. html5 星际摩托,HTML5 星际陨石环绕动效
  12. arduino:废旧光驱DIY激光雕刻机(完善中……)
  13. 教妹学Java:深入浅出之美团技术团队解析过的 String.intern
  14. DICOM医学图像处理:浅析SWF、WML、SPS、MPPS
  15. ASCII码表及键盘码表。
  16. 开源直播美颜SDK工具算法分析
  17. 斗罗大陆壁纸图片高清小舞146集八段摔杨无敌
  18. 【java】org.xml.sax.SAXParseException;在实体引用中, 实体名称必须紧跟在 '' 后面。解决方法
  19. EXCEL校验身份证号码和银行卡号
  20. stm32f767的fft

热门文章

  1. 分享很不错的10个UI图标资源站
  2. android 日文键盘,搜狗输入法安卓多语言升级:小语种键盘数增至90+ 日语假名九键上线...
  3. canopen服务器协议,CANOpen协议如何保证通讯不丢帧?-通信/网络-与非网
  4. 降噪测试过程中,测试语音选择的思考
  5. 沉浸声场体验:华硕无畏二合一OLED触屏笔记本影音新姿态
  6. rk3288 mipi 调试步骤
  7. Exe4j破解_Exe4j注册码
  8. 交互式视频风格化 水记
  9. 天下数据分析IDC行业微信自媒体营销的技巧
  10. csgo跳跃只能改一个键位吗_csgo跳扔投掷物指令设置方法 怎么绑定鼠标跳扔投掷物...