说明:转发请注明作者和出处;以下文章内容为精简版,详细版以pdf格式的幻灯片形式呈现,请见链接:视觉SLAM_07_相机模型.pdf

0.目录

  • 0.目录
  • 1.针孔相机模型
  • 2.畸变模型
  • 3.双目相机模型
  • 4.RGB-D相机模型
  • 5.参考文献

1.针孔相机模型

图1-1 针孔相机模型(摘自参考文献)

  OOO为摄像机光心,也是针孔模型中的针孔。现实世界的空间点P=[X,Y,Z]TP=[X,Y,Z]^TP=[X,Y,Z]T,经过小孔OOO投影后,落在物理成像平面O′−x′−y′O^{'}-x^{'}-y^{'}O′−x′−y′上,成像点为P′=[X′,Y′,Z′]TP^{'} = [X^{'},Y^{'},Z^{'}]^TP′=[X′,Y′,Z′]T,物理成像平面到小孔的距离为焦距fff。
{X′=fXZY′=fYZ(1)\begin{cases} {} X^{'} = f \frac{X}{Z} & \\ Y^{'} = f \frac{Y}{Z} \tag{1} \end{cases} {X′=fZX​Y′=fZY​​(1)

图1-2 针孔相机模型(摘自参考文献)

像素坐标系通常的定义方式是:原点o′o^{'}o′位于图像的左上角,uuu轴向右与xxx轴平行,vvv轴向下与yyy轴平行。像素坐标系和成像平面之间,相差了一个缩放和一个原点平移。设像素坐标在uuu轴上缩放了α\alphaα倍,在vvv轴上缩放了β\betaβ倍,同时,原点平移了[cx,cy]T[c_x, c_y]^T[cx​,cy​]T,那么:
{u=αX′+cxv=βY′+cy(2)\begin{cases} {} u = \alpha X^{'} + c_x & \\ v = \beta Y^{'} + c_y \tag{2} \end{cases} {u=αX′+cx​v=βY′+cy​​(2) 即: {u=fxXZ+cxv=fyYZ+cy(3)\begin{cases} {} u = f_x \frac{X}{Z} + c_x & \\ v = f_y \frac{Y}{Z} + c_y \tag{3} \end{cases} {u=fx​ZX​+cx​v=fy​ZY​+cy​​(3)写成矩阵形式:
Z[uv1]=[fx0cx0fycy001][XYZ]=defKP(4)Z \begin{bmatrix} u \\ v \\ 1 \end{bmatrix} = \begin{bmatrix} f_x & 0 & c_x \\ 0 & f_y & c_y \\ 0 & 0 & 1 \end{bmatrix} \begin{bmatrix} X \\ Y \\ Z \end{bmatrix} \overset{def}{=} \boldsymbol K \boldsymbol P \tag{4} Z⎣⎡​uv1​⎦⎤​=⎣⎡​fx​00​0fy​0​cx​cy​1​⎦⎤​⎣⎡​XYZ​⎦⎤​=defKP(4)矩阵K\boldsymbol KK为相机内参数,相机内参出厂之后是固定的,不会在使用过程中发生变化。
  公式(4)中PPP是在相机坐标系下的坐标,变换到世界坐标系下(记为Pw\boldsymbol P_wPw​):
ZPuv=Z[uv1]=K(RPw+t)=KTPw(5)Z \boldsymbol P_{uv} = Z \begin{bmatrix} u \\ v \\ 1 \end{bmatrix} = \boldsymbol{K} (\boldsymbol{R} \boldsymbol P_w + \boldsymbol t) = \boldsymbol{K} \boldsymbol{T} \boldsymbol P_w \tag{5} ZPuv​=Z⎣⎡​uv1​⎦⎤​=K(RPw​+t)=KTPw​(5) 相机的位姿R,t\boldsymbol R, \boldsymbol{t}R,t又称为相机的外参数,外参会随着相机运动而改变,也是SLAM中待估计的目标,代表着机器人的轨迹。

2.畸变模型

  为了获得好的成像效果,在相机前方加了透镜,透镜的加入会对成像过程中光线的传播产生新的影响:一是透镜自身的形状对光线传播的影响;二是在机械组装过程中,透镜和成像平面不可能完全平行,这也会使光线穿过透镜投影到成像平面时的位置发生变化。

  由透镜形状引起的畸变(Distortion, 也叫失真)称为径向畸变,主要分为两大类:桶形畸变和枕形畸变,如图2-1所示。

  桶形畸变图像放大率随若与光轴之间的距离增加而减小,而枕形畸变则恰好相反。在这两种畸变中,穿过图像中心和光轴有交点的直线还能保持形状不变。

  除了透镜的形状会引入径向畸变,由于在相机的组装过程中不能使透镜和成像面严格平行,所以也会引入切向畸变,如图2-2所示。

2-1 径向畸变的两种类型(摘自参考文献)

2-2 切向畸变来源示意图(摘自参考文献)

  考虑归一化平面上的任意一点p\boldsymbol pp, 它的坐标为[x,y]T[x,y]^T[x,y]T,也可写成极坐标的形式[r,0]T[r,0]^T[r,0]T。可以通过5个畸变系数找到这个点在像素平面上的正确位置:

  • 将三维空间点投影到归一化图像平面。设它的归一化坐标为[x,y]T[x,y]^T[x,y]T。
  • 对归一化平面上的点计算径向畸变和切向畸变。
    {xdistorted=x(1+k1r2+k2r4+k3r6)+2p1xy+p2(r2+2x2)ydistorted=y(1+k1r2+k2r4+k3r6)+p1(r2+2x2)+2p2xy\begin{cases} {} x_{distorted} = x (1 + k_1 r^2 + k_2 r^4 + k_3 r^6) + 2 p_1 x y + p_2 (r^2 + 2 x^2)& \\ y_{distorted} = y (1 + k_1 r^2 + k_2 r^4 + k_3 r^6) + p_1 (r^2 + 2 x^2) + 2 p_2 x y \end{cases} {xdistorted​=x(1+k1​r2+k2​r4+k3​r6)+2p1​xy+p2​(r2+2x2)ydistorted​=y(1+k1​r2+k2​r4+k3​r6)+p1​(r2+2x2)+2p2​xy​
  • 将畸变后的点通过内参数矩阵投影到像素平面,得到该点在图像上的正确位置。
    {u=fx⋅xdistorted+cxv=fy⋅ydistorted+cy\begin{cases} {} u = f_x \cdot x_{distorted} + c_x & \\ v = f_y \cdot y_{distorted} + c_y \end{cases} {u=fx​⋅xdistorted​+cx​v=fy​⋅ydistorted​+cy​​   单目相机的成像过程总结:
  • 世界坐标系下有一个固定的点P, 世界坐标为Pw\boldsymbol P_wPw​。
  • 由于相机在运动,它的运动由R\boldsymbol RR,t\boldsymbol tt或变换矩阵T∈SE(3)\boldsymbol T \in SE(3)T∈SE(3)描述。P的相机坐标为Pc=RPw+t\boldsymbol P_c =\boldsymbol R \boldsymbol P_w + \boldsymbol tPc​=RPw​+t。
  • 这时的Pc\boldsymbol P_cPc​的分量为X,Y,ZX,Y,ZX,Y,Z, 把它们投影到归一化平面Z=lZ = lZ=l上,得到P的归一化坐标:
    Pc=[X/Z,Y/Z,1]\boldsymbol P_c = [X/Z, Y/Z, 1]Pc​=[X/Z,Y/Z,1]。
  • 有畸变时,根据畸变参数计算Pc\boldsymbol P_cPc​发生畸变后的坐标。
  • P的归一化坐标经过内参后,对应到它的像素坐标:Puv=KPc\boldsymbol P_{uv} = \boldsymbol K \boldsymbol P_cPuv​=KPc​

3.双目相机模型

  仅根据一个像素,我们无法确定这个空间点的具体位置。这是因为,从相机光心到归一化平面连线上的所有点,都可以投影至该像素上。只有当P的深度确定时,我们才能确切地知道它的空间位置,如图3-1所示:

图3-1 像素点可能存在的位置(摘自参考文献)

  测显像素距离(或深度)的方式有很多种,下面简单介绍双目相机的成像原理,如图3-2所示:

图3-2 双目相机的成像模型(摘自参考文献)

OL,ORO_L, O_ROL​,OR​为左右光圈中心, 方框为成像平面,fff为焦距。uLu_LuL​和uRu_RuR​为成像平面的坐标。请注意, 按照图中坐标定义,和uRu_RuR​应该是负数, 所以图中标出的距离为和−uR-u_R−uR​。

根据图3-2,有:
z−fz=b−uL+uRb\frac{z-f}{z} = \frac{b - u_L + u_R}{b} zz−f​=bb−uL​+uR​​ 整理得:
z=fbuL−uR=fbdz = \frac{fb}{u_L - u_R} = \frac{fb}{d} z=uL​−uR​fb​=dfb​ 其中ddd定义为左右图的横坐标之差,称为视差。

  • 由千视差最小为一个像素,于是双目的深度存在一个理论上的最大值,由fbfbfb确定。
  • 基线越长,双目能测到的最大距离就越远,反之,小型双目器件则只能测量很近的距离。

4.RGB-D相机模型

  目前的RGB-D相机按原理可分为两大类,如图4-1 所示:

  • 通过红外结构光(Structured Light) 原理测量像素距离。
  • 通过飞行时间(Time-of-Flight, ToF) 原理测批像素距离。

  无论是哪种类型, RGB-D相机都需要向探测目标发射一束光线(通常是红外光)。在红外结构光原理中,相机根据返回的结构光图案,计算物体与自身之间的距离。而在ToF原理中,相机向目标发射脉冲光,然后根据发送到返回之间的光束飞行时间,确定物体与自身的距离。

图4-1 RGB-D相机原理示意图(摘自参考文献)

5.参考文献

  • 高翔等. 视觉SLAM十四讲:从理论到实践第二版. 北京:电子工业出版社,2019.8.

视觉SLAM_07_相机模型相关推荐

  1. 视觉SLAM笔记(21) 双目相机模型

    视觉SLAM笔记(21) 双目相机模型 1. 深度确定 2. 景物差异 3. 成像原理 4. 计算困难 1. 深度确定 针孔相机模型描述了单个相机的成像模型 然而,仅根据一个像素,是无法确定这个空间点 ...

  2. 视觉SLAM十四讲学习笔记-第五讲-相机模型

    专栏系列文章如下: 视觉SLAM十四讲学习笔记-第一讲_goldqiu的博客-CSDN博客 视觉SLAM十四讲学习笔记-第二讲-初识SLAM_goldqiu的博客-CSDN博客 视觉SLAM十四讲学习 ...

  3. 视觉SLAM——针孔相机模型 相机标定原理 双目相机模型 深度相机对比

    前言 本博客为主要学习<视觉SLAM十四讲>第5讲.<机器人学的状态估计>第6章6.4.1透视相机.<多视图几何>第5章摄像头模型等SLAM内容的总结与整理. 主要 ...

  4. 视觉SLAM之鱼眼相机模型

    最近研究了视觉SLAM中不同的鱼眼相机模型,其中包括: Scaramuzza的鱼眼相机模型 代表性的SLAM工作为MultiCo-SLAM,是一个以ORB-SLAM为基础的扩展的多鱼眼相机视觉SLAM ...

  5. 基于图像的三维模型重建——相机模型与对极几何

    点击上方"3D视觉工坊",选择"星标" 干货第一时间送达 作者:梦寐mayshine https://zhuanlan.zhihu.com/p/12968108 ...

  6. 相机模型和双目立体匹配

    个人博客:http://www.chenjianqu.com/ 原文链接:http://www.chenjianqu.com/show-80.html 本文是读高翔大佬的<视觉SLAM14讲&g ...

  7. 相机模型与标定(一)--相机标定概述

    以下内容来自: http://baike.baidu.com/link?url=RAjUg33ftcbDDjE_tFKS80p_azC9REyLOzBTbqqSq5iIIXo0sp20NJk28RW- ...

  8. 一文尽览 | 计算机视觉中的鱼眼相机模型及环视感知任务汇总!

    点击下方卡片,关注"自动驾驶之心"公众号 ADAS巨卷干货,即可获取 点击进入→自动驾驶之心技术交流群 后台回复[ECCV2022]获取ECCV2022所有自动驾驶方向论文! 论文 ...

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

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

最新文章

  1. BZOJ4766: 文艺计算姬
  2. oracle元字符,oracle中正则表达式的基本元字符
  3. liunx 在虚拟机(VMware)下挂载光驱命令
  4. php 执行时间 参数,PHP调用时间格式的参数实现方法
  5. 分享《组播技术白皮书》
  6. mysql二级封锁协议_MySQL 行锁、两阶段锁协议、死锁以及死锁检测
  7. python哲学翻译_Python
  8. json-server的使用
  9. 使用pandas进行量化回测(akshare)
  10. 计算机产品创新设计实践,基于TRIZ的计算机辅助机械产品创新设计研究
  11. Java迷宫代码,深度优先遍历
  12. IQA+不懂︱图像清洗:图像质量评估(评估指标、传统检测方法)
  13. iphone怎么换手机铃声?原来方法这么简单,只需要一招 iRingg
  14. 5天学会jaxws-webservice编程第一天
  15. 超详细MySQL安装及基本使用教程
  16. win7系统服务器停止,win7系统即将停止服务,你的电脑准备好换win10 了吗?
  17. 计算机四级网络工程师
  18. AD之Via尺寸和盖油规则设置
  19. PGPool-II 4.2.1+PostgreSQL 13高可用
  20. 织梦迁移服务器修改文件,织梦dedecms更换服务器搬家教程

热门文章

  1. Nginx虚拟目录设置
  2. vs2013 连接 海马玩模拟器
  3. win10关闭防火墙的方法
  4. 安利几个软件教你多人朗读配音怎么制作的
  5. FlowJo 视频 3.6G 中英文字幕教程教学资料 流式细胞数据分析
  6. 国际安全领域顶会NDSS 2023录稿整理 (下)
  7. C#_摄像头图像转换为Bitmap格式及绘制十字线
  8. GoLang 编译exe添加ICO图标
  9. 精密压接之曲柄连杆模型计算(含MATLAB仿真+博途SCL源代码)
  10. html页面动态生成二维码