视觉SLAM_07_相机模型
说明:转发请注明作者和出处;以下文章内容为精简版,详细版以pdf格式的幻灯片形式呈现,请见链接:视觉SLAM_07_相机模型.pdf
0.目录
- 0.目录
- 1.针孔相机模型
- 2.畸变模型
- 3.双目相机模型
- 4.RGB-D相机模型
- 5.参考文献
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′=fZXY′=fZY(1)
像素坐标系通常的定义方式是:原点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′+cxv=β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=fxZX+cxv=fyZY+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⎦⎤=⎣⎡fx000fy0cxcy1⎦⎤⎣⎡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所示。
考虑归一化平面上的任意一点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+k1r2+k2r4+k3r6)+2p1xy+p2(r2+2x2)ydistorted=y(1+k1r2+k2r4+k3r6)+p1(r2+2x2)+2p2xy - 将畸变后的点通过内参数矩阵投影到像素平面,得到该点在图像上的正确位置。
{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+cxv=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-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−uRfb=dfb 其中ddd定义为左右图的横坐标之差,称为视差。
- 由千视差最小为一个像素,于是双目的深度存在一个理论上的最大值,由fbfbfb确定。
- 基线越长,双目能测到的最大距离就越远,反之,小型双目器件则只能测量很近的距离。
4.RGB-D相机模型
目前的RGB-D相机按原理可分为两大类,如图4-1 所示:
- 通过红外结构光(Structured Light) 原理测量像素距离。
- 通过飞行时间(Time-of-Flight, ToF) 原理测批像素距离。
无论是哪种类型, RGB-D相机都需要向探测目标发射一束光线(通常是红外光)。在红外结构光原理中,相机根据返回的结构光图案,计算物体与自身之间的距离。而在ToF原理中,相机向目标发射脉冲光,然后根据发送到返回之间的光束飞行时间,确定物体与自身的距离。
5.参考文献
- 高翔等. 视觉SLAM十四讲:从理论到实践第二版. 北京:电子工业出版社,2019.8.
视觉SLAM_07_相机模型相关推荐
- 视觉SLAM笔记(21) 双目相机模型
视觉SLAM笔记(21) 双目相机模型 1. 深度确定 2. 景物差异 3. 成像原理 4. 计算困难 1. 深度确定 针孔相机模型描述了单个相机的成像模型 然而,仅根据一个像素,是无法确定这个空间点 ...
- 视觉SLAM十四讲学习笔记-第五讲-相机模型
专栏系列文章如下: 视觉SLAM十四讲学习笔记-第一讲_goldqiu的博客-CSDN博客 视觉SLAM十四讲学习笔记-第二讲-初识SLAM_goldqiu的博客-CSDN博客 视觉SLAM十四讲学习 ...
- 视觉SLAM——针孔相机模型 相机标定原理 双目相机模型 深度相机对比
前言 本博客为主要学习<视觉SLAM十四讲>第5讲.<机器人学的状态估计>第6章6.4.1透视相机.<多视图几何>第5章摄像头模型等SLAM内容的总结与整理. 主要 ...
- 视觉SLAM之鱼眼相机模型
最近研究了视觉SLAM中不同的鱼眼相机模型,其中包括: Scaramuzza的鱼眼相机模型 代表性的SLAM工作为MultiCo-SLAM,是一个以ORB-SLAM为基础的扩展的多鱼眼相机视觉SLAM ...
- 基于图像的三维模型重建——相机模型与对极几何
点击上方"3D视觉工坊",选择"星标" 干货第一时间送达 作者:梦寐mayshine https://zhuanlan.zhihu.com/p/12968108 ...
- 相机模型和双目立体匹配
个人博客:http://www.chenjianqu.com/ 原文链接:http://www.chenjianqu.com/show-80.html 本文是读高翔大佬的<视觉SLAM14讲&g ...
- 相机模型与标定(一)--相机标定概述
以下内容来自: http://baike.baidu.com/link?url=RAjUg33ftcbDDjE_tFKS80p_azC9REyLOzBTbqqSq5iIIXo0sp20NJk28RW- ...
- 一文尽览 | 计算机视觉中的鱼眼相机模型及环视感知任务汇总!
点击下方卡片,关注"自动驾驶之心"公众号 ADAS巨卷干货,即可获取 点击进入→自动驾驶之心技术交流群 后台回复[ECCV2022]获取ECCV2022所有自动驾驶方向论文! 论文 ...
- 相机参数和相机模型各个坐标系(世界坐标系、相机坐标系、图像坐标系、像素坐标系之间变换)
坐标系变换 1. 几个坐标系: 世界坐标系(world coordinate system): 用户定义的三维世界的坐标系,为了描述目标物在真实世界里的位置而被引入.单位为m. 相机坐标系(camer ...
最新文章
- BZOJ4766: 文艺计算姬
- oracle元字符,oracle中正则表达式的基本元字符
- liunx 在虚拟机(VMware)下挂载光驱命令
- php 执行时间 参数,PHP调用时间格式的参数实现方法
- 分享《组播技术白皮书》
- mysql二级封锁协议_MySQL 行锁、两阶段锁协议、死锁以及死锁检测
- python哲学翻译_Python
- json-server的使用
- 使用pandas进行量化回测(akshare)
- 计算机产品创新设计实践,基于TRIZ的计算机辅助机械产品创新设计研究
- Java迷宫代码,深度优先遍历
- IQA+不懂︱图像清洗:图像质量评估(评估指标、传统检测方法)
- iphone怎么换手机铃声?原来方法这么简单,只需要一招 iRingg
- 5天学会jaxws-webservice编程第一天
- 超详细MySQL安装及基本使用教程
- win7系统服务器停止,win7系统即将停止服务,你的电脑准备好换win10 了吗?
- 计算机四级网络工程师
- AD之Via尺寸和盖油规则设置
- PGPool-II 4.2.1+PostgreSQL 13高可用
- 织梦迁移服务器修改文件,织梦dedecms更换服务器搬家教程