课程的 YouTube 地址为:https://www.youtube.com/playlist?list=PLTBdjV_4f-EJn6udZ34tht9EVIW7lbeo4。视频评论区可以找到课程所使用课件与练习题的下载地址。

第3章介绍了透视投影、相机内参、畸变矫正、原像与余像的概念。

1. 数学表示

1.1 从相似三角形开始

用一张图表示相机成像的光学过程(小孔成像)。

图中 Fl F_l 与 Fr F_r 是焦点,焦点即垂直通过透镜的光线的汇集点。

图中蓝色标明的三角形与红色标明的三角形相似:

Yy=−Zf

{Y \over y} = - {Z \over f}

同理在像平面另一个方向 X X 轴上也有三角形相似:

Xx=−Zf

{X \over x} = - {Z \over f}

式子中存在负号是因为成的像是倒像,与原像是中心对称的关系。这样计算很不方便,于是将成像平面从焦点 Fr F_r 的后侧移动到焦点的前侧,并且翻转,于是有:

{x=fXZy=fYZ

\begin{cases} x = f{X \over Z} \\ y = f{Y \over Z} \end{cases}

翻转之后的成像如下所示:

总结一下,透视投影是将三维点坐标投影到平面形成二维点坐标:

π:ℝ3→ℝ2;X↦x=π(X)=⎡⎣⎢⎢⎢fXZfYZ⎤⎦⎥⎥⎥

\pi: \mathbb{R}^3 \rightarrow \mathbb{R}^2; \mathbf{X} \mapsto \mathbf{x} = \pi(\mathbf{X}) = \begin{bmatrix} f {X \over Z} \\ f {Y \over Z} \end{bmatrix}

以上是使用薄透镜时的透视原理,使用厚透镜时光线在透镜内部存在不可忽略不计的折射,需要进行变形纠正。

1.2 矩阵表示

将投影过程在齐次坐标下用矩阵表示:

Zx=Z⎡⎣⎢⎢xy1⎤⎦⎥⎥=⎡⎣⎢⎢f000f0001000⎤⎦⎥⎥⎡⎣⎢⎢⎢⎢XYZ1⎤⎦⎥⎥⎥⎥=KfΠ0X

Z \mathbf{x} = Z \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} = K_f \Pi_0\mathbf{X}

这里引入了两个新的矩阵 Kf,Π0 K_f, \Pi_0 :

Kf≡⎡⎣⎢⎢f000f0001⎤⎦⎥⎥;Π0≡⎡⎣⎢⎢100010001000⎤⎦⎥⎥

K_f \equiv \begin{bmatrix} f & 0 & 0 \\ 0 & f & 0 \\ 0 & 0 & 1 \end{bmatrix}; \Pi_0 \equiv \begin{bmatrix} 1 & 0 & 0 & 0 \\ 0 & 1 & 0 & 0 \\ 0 & 0 & 1 & 0 \end{bmatrix}

Π0 \Pi_0 被称作标准投影矩阵(Standard Projection Matrix),作用是将齐次坐标转化为非齐次坐标。

假设物体离相机很远,其景深 Z Z 为常数 λ\lambda。景深一定是正数,因为相机成像的物体在焦点(上图中的 Fl F_l )之前,所以有 λ>0 \lambda \gt 0 。我们得到投影过程的简洁形式:

λx=KfΠ0X

\lambda \mathbf{x} = K_f\Pi_0\mathbf{X}

其中 x \mathbf{x} 是相机投影平面坐标(单位m), X \mathbf{X} 是三维点在相机坐标系中的坐标。

1.3 从世界坐标系到相机投影平面

上式中的 X \mathbf{X} 是相机坐标系坐标,将相机的位姿加入考虑范围,求世界坐标系坐标到相机投影平面坐标系的坐标。

由上一章的内容可知,相机当前坐标系坐标与世界坐标系坐标之间的转换关系如下:

X=gX0=[R0T1]X0

\mathbf{X} = g\mathbf{X_0} = \begin{bmatrix} R & T \\ 0 & 1 \end{bmatrix}\mathbf{X_0}

所以从世界坐标系坐标到相机投影平面坐标系坐标的转换关系为

λx=KfΠ0gX0

\lambda \mathbf{x} = K_f\Pi_0g\mathbf{X_0}

还可以做进一步的简化,如果将相机投影平面坐标系的单位长度设置为焦距 f f,那么 KfK_f 为单位阵,公式可化简为

λx=Π0gX0

\lambda \mathbf{x} = \Pi_0g\mathbf{X_0}

2. 相机内参

上面的公式推导是世界坐标系坐标转化为相机投影平面坐标系坐标,相机投影平面坐标系坐标的单位是 m,但使用相机拍摄的影像时我们读取的是像素坐标,所以还需要进一步的坐标转换。进一步的坐标转换如下:

λ⎡⎣⎢⎢⎢x′y′1⎤⎦⎥⎥⎥=⎡⎣⎢⎢⎢sx00sθsy0oxoy1⎤⎦⎥⎥⎥⎡⎣⎢⎢f000f0001⎤⎦⎥⎥⎡⎣⎢⎢100010001000⎤⎦⎥⎥⎡⎣⎢⎢⎢⎢XYZ1⎤⎦⎥⎥⎥⎥

\lambda \begin{bmatrix} x' \\ y' \\ 1 \end{bmatrix} = \begin{bmatrix} s_x & s_{\theta} & o_x \\ 0 & s_y & o_y \\ 0 & 0 & 1 \end{bmatrix} \begin{bmatrix} f & 0 & 0 \\ 0 & f & 0 \\ 0 & 0 & 1 \end{bmatrix} \begin{bmatrix} 1 & 0 & 0 & 0 \\ 0 & 1 & 0 & 0 \\ 0 & 0 & 1 & 0 \end{bmatrix} \begin{bmatrix} X \\ Y \\ Z \\ 1 \end{bmatrix}

这里引入了新的矩阵 Ks K_s

Ks≡⎡⎣⎢⎢⎢sx00sθsy0oxoy1⎤⎦⎥⎥⎥

K_s \equiv \begin{bmatrix} s_x & s_{\theta} & o_x \\ 0 & s_y & o_y \\ 0 & 0 & 1 \end{bmatrix}

矩阵 Ks K_s 中各个参数的解释如下:

  1. ox,oy o_x, o_y 相机相主点在相机投影平面坐标系下的像素坐标,单位为 pixel;
  2. sx(sy) s_x (s_y) 在 x(y) x(y) 方向上单位长度包含的像素个数,单位为 pixel / m;
  3. sθ s_{\theta} 在像素形状为矩形时值为0,像素形状为平行四边形时值不为0,一般像素形状都为矩形,该值为0。

定义相机内参矩阵为

K≡KsKf=⎡⎣⎢⎢⎢fsx00fsθfsy0oxoy1⎤⎦⎥⎥⎥

K \equiv K_sK_f = \begin{bmatrix} fs_x & fs_{\theta} & o_x \\ 0 & fs_y & o_y \\ 0 & 0 & 1 \end{bmatrix}

将 K K 代入上面的公式

λx′=KΠ0X=KΠ0gX0≡ΠX0

\lambda \mathbf{x'} = K\Pi_0\mathbf{X} = K\Pi_0g\mathbf{X_0} \equiv \Pi \mathbf{X_0}

这里定义了一个新的矩阵 Π≡KΠ0g=[KRKT] \Pi \equiv K \Pi_0 g = \begin{bmatrix} KR & KT \end{bmatrix} ,称作一般投影矩阵(General Projection Matrix),可将世界坐标转化为像素坐标。

3. 球面投影

小孔相机的透视模型是将影像投影在平面上,同样的影像也可以投影在球面上。

将影像投影到单位球面

【多视图几何】TUM 课程 第3章 透视投影相关推荐

  1. 【多视图几何】TUM 课程 第6章 多视图重建

    课程的 YouTube 地址为:https://www.youtube.com/playlist?list=PLTBdjV_4f-EJn6udZ34tht9EVIW7lbeo4 .视频评论区可以找到课 ...

  2. 【多视图几何】TUM 课程 第2章 刚体运动

    课程的 YouTube 地址为:https://www.youtube.com/playlist?list=PLTBdjV_4f-EJn6udZ34tht9EVIW7lbeo4 .视频评论区可以找到课 ...

  3. Mysql系列课程--第三章 建表 插数据

    数据库模型图 /班级表/ CREATE TABLE `class` (`c_no` int(11) NOT NULL AUTO_INCREMENT,`c_name` varchar(45) NOT N ...

  4. 国内首个三维重建系列视频课程,涉及SFM、立体匹配、多视图几何、结构光、单目深度估计等...

    原文链接:国内首个三维重建系列视频课程,涉及SFM.立体匹配.多视图几何.结构光.单目深度估计等... 三维重建技术是计算机视觉的重要技术之一,基于视觉的三维重建技术通过深度数据获取.预处理.点云配准 ...

  5. 重磅!国内首个三维重建系列视频课程,涉及SFM、立体匹配、多视图几何、结构光、单目深度估计等(最新版)...

    写在前面 感谢大家的一路陪伴与支持,这里赠送一张「3D视觉从入门到精通」知识星球优惠券,有效期两天,有需要的可以使用. 三维重建技术是计算机视觉的重要技术之一,基于视觉的三维重建技术通过深度数据获取. ...

  6. 终于来了,国内首个三维重建系列视频课程,涉及SFM、多视图几何、结构光、单目深度估计等...

    三维重建技术是计算机视觉的重要技术之一,基于视觉的三维重建技术通过深度数据获取.预处理.点云配准与融合.生成物体表面等过程,把真实场景刻画成符合计算机逻辑表达的数学模型. 由于三维重建对图像.光学.成 ...

  7. 计算机视觉学习第5章——多视图几何

    目录 一. 外极几何 1.1 简单数据集 1.2 用Matplotlib绘制三维数据 1.3 计算F:八点法 1.4 外极点和外极线 二.照相机和三维结构的计算 2.1 三角部分 2.2 由三维点计算 ...

  8. 阿里云【7天实践训练营】进阶路线——Day3:阿里云云计算助理工程师认证(ACA)课程3 ~ 4章

    阿里云[7天实践训练营]进阶路线--Day3:阿里云云计算助理工程师认证(ACA)课程3 ~ 4章 第3章 : 掌握云数据库RDS 课时11:云数据RDS产品介绍 概要 基本信息 功能 RDS与自建数 ...

  9. 基于多视图几何方式的三维重建

    写在前面 感谢我们「3D视觉从入门到精通」知识星球嘉宾为我们带来的主题为基于多视图几何方式的三维重建视频讲解,星球成员可免费观看学习.备注:作者来自武汉大学在读博士,精通多视图几何算法. 什么是知识星 ...

最新文章

  1. MFC中快速应用OpenCV(转)
  2. Linux 帧缓存 数据,linux--帧缓存技术
  3. SAP MM 采购组与采购组织,岂能没有点关系?
  4. 中国机器人产业发展报告(2019)正式发布!
  5. R语言文件下载:谁来帮我把这个128个音频下载一下
  6. 【Paper】2016_Cooperative UAV-UGV modeled by Petri Net Plans specification
  7. 命令行切换到conda环境_Anaconda命令行常用操作
  8. 无法访问gcr.io的几种解决办法
  9. SAP CRM OData模型里的addressable为true的含义
  10. LoadRunner中Action的迭代次数的设置和运行场景中设置
  11. android基础知识之一
  12. (step4.3.1) hdu 1010(Tempter of the Bone——DFS)
  13. Linux 命令(125)—— vmstat 命令
  14. 【答辩问题】计算机专业本科毕业设计答辩自述2
  15. linux下svn常用命令集锦
  16. Facebook是如何支持80万并发视频流直播的?
  17. 桌面下雪软件测试工程师,Xsnow - 在Ubuntu 18.04及更高版本的桌面上下雪
  18. 137_STLink驱动安装以及调试器使用测试
  19. ARM ADS中的AXD 调试经验集锦
  20. 关于使用腾讯云HiFlow场景连接器每天提醒签到打卡

热门文章

  1. LCD工控液晶触摸屏贴合如何进行贴合工程?
  2. java wifidog_wifidog认证服务器家用环境下部署(java版)
  3. 9个月烧光1100亿,华为发布新型芯片专利,比尔盖茨说的很对
  4. Dirichlet Proscess
  5. SSM后台管理系统开发实战
  6. Python 学习笔记 类的封装 类的继承 多态继承 类方法和静态方法 单例设计模式
  7. 组策略1-密码策略和IE主页锁定
  8. 小清新人渣的本愿(莫队+bitset)
  9. 【前端面试知识题】- 2. 浏览器
  10. 【报告分享】2021中国新消费创新趋势发展分析-易观分析(附下载)