《计算机视觉中的多视图几何》笔记(3)

3 Projective Geometry and Transformations of 3D

这章主要讲的是3D的射影几何,与2D的射影几何差不多。主要区别是:

  1. 3D射影几何对偶的是点和平面,直线是自对偶的。
  2. 3D空间中直线有4个自由度,这一现象并不是那么容易直接得出。一种方法是把直线用正交平面两个交点表示。
    在这里插入图片描述

    文章目录

    • 3 Projective Geometry and Transformations of 3D
      • 3.1 Points and projective transformations
      • 3.2 Representing and transforming planes, lines and quadrics
        • 3.2.1 Planes
        • 3.2.2 Lines
        • 3.2.3 Quadrics and dual quadrics
        • 3.2.4 Classification of quadrics
      • 3.4 The hierarchy of transformations
      • 3.5 The plane at infinity
      • 3.6 The absolute conic
      • 3.7 The absolute dual quadric

3.1 Points and projective transformations

三维空间的齐次坐标就是 x 1 , x 2 , x 3 , x 4 x_1,x_2,x_3,x_4 x1,x2,x3,x4,比二维空间多一个。 x 4 x_4 x4一般是1,如果是0那就代表无穷远的点。

三维空间投影矩阵 H H H 4 × 4 4 \times 4 4×4的,有15个自由度。

3.2 Representing and transforming planes, lines and quadrics

三维投影空间中点和面是对偶的。也就是说它们可以互相交换运算中的位置。

3.2.1 Planes

三维空间面就是:
π 1 X + π 2 Y + π 3 Z + π 4 = 0 \pi_1 X + \pi_2 Y +\pi_3 Z + \pi_4 = 0 π1X+π2Y+π3Z+π4=0

π 1 , π 2 , π 3 \pi_1,\pi_2,\pi_3 π1π2π3就是平面的法向量。

相交关系

  1. 三点确定一个平面
  2. 两个相交平面确定一个线
  3. 三个相交平面确定一个点

下面来讨论这几个关系的代数表述。

三个点确定一平面 我们假设点是 X i X_i Xi, 平面式 π \pi π
确定平面需要解以下方程:
[ X 1 T X 2 T X 3 T ] π = 0 \left[ \begin{matrix} X_1^T \\ X_2^T \\ X_3^T \\ \end{matrix} \right] \pi = 0 X1TX2TX3T π=0
书中p67 3.4式给了一个解析解。

三个平面确定一个点 把上述方程点和面的位置换一下就行。
[ π 1 T π 2 T π 3 T ] X = 0 \left[ \begin{matrix} \pi_1^T \\ \pi_2^T \\ \pi_3^T \\ \end{matrix} \right] X = 0 π1Tπ2Tπ3T X=0

3.2.2 Lines

线段在三维空间中表示比较尴尬,因为点和面是对偶的,如果要表示线,那就需要5维向量。本节介绍了3种方法,我们掌握一种就可以了。

零空间理论 我们假设 A , B A,B A,B是两个点,经过这两个点的直线除了叉乘,还可以表示为:
W = [ A T B T ] W= \left[ \begin{matrix} A^T\\ B^T \end{matrix} \right] W=[ATBT]

那么把 A , B A,B A,B换成平面,上式就是两个平面相交形成的点。

3.2.3 Quadrics and dual quadrics

三维空间中的二次曲面定义如下:
X T Q X = 0 X^T Q X = 0 XTQX=0

Q是一个 4 × 4 4 \times 4 4×4的对称矩阵,主要有以下性质:

  1. Q有9个自由度
  2. 8个点确定一个二次曲面
  3. Q如果是奇异矩阵,那么二次曲面退化了
  4. 二次曲面可以确定一个点和一个极平面 π = Q X \pi=QX π=QX
  5. 平面 π \pi π和Q的交线就是圆锥
  6. 如果点变换是 X ′ = H X X'=HX X=HX,那么Q上的点就会被变换成 Q ′ = H − T Q H − 1 Q'=H^{-T} Q H^{-1} Q=HTQH1
  7. Q Q Q的对偶定义为 Q ∗ Q^* Q,是由与Q相切的面组成的

3.2.4 Classification of quadrics

在这里插入图片描述

3.4 The hierarchy of transformations

  1. 投影变换15个自由度,不变量是相交的平面、垂直的平面
  2. 仿射变换12个自由度,不变量是平行的平面、体积之间的比例、无穷远处的平面.
  3. 相似变换7个自由度,不变量是无穷远处的圆锥
  4. 刚体变换6个自由度,不变量是体积
    在这里插入图片描述

3.5 The plane at infinity

我们记得在二维投影空间中有一个无穷远的直线 l ∞ l_{\infty} l,那么类似地,在三维投影空间就有一个无穷远平面 π ∞ \pi_{\infty} π,在该平面上还有一个绝对圆锥 Ω ∞ \Omega_{\infty} Ω

  1. π ∞ \pi_{\infty} π是两个平行平面的交点
  2. 平行线的交点在 π ∞ \pi_{\infty} π上,与平面平行的直线也在 π ∞ \pi_{\infty} π

结论3.7 无穷远平面在投影变换下保持不变当且仅当该变换是仿射变换。

3.6 The absolute conic

绝对圆锥 Ω ∞ \Omega_{\infty} Ω π ∞ = ( 0 , 0 , 0 , 1 ) \pi_{\infty}=(0,0,0,1) π=(0,0,0,1) 上的圆锥,满足:
X 1 2 + X 2 2 + X 3 2 = 0 X 4 2 = 0 X_1^2 + X_2^2 + X_3^2 = 0 \\ X_4^2=0 X12+X22+X32=0X42=0

写成圆锥表达式就是:
( X 1 , X 2 , X 3 ) I ( X 1 , X 2 , X 3 ) T = 0 (X_1,X_2,X_3)I(X_1,X_2,X_3)^T = 0 (X1,X2,X3)I(X1,X2,X3)T=0

结论3.9 绝对圆锥在投影变换下保持不变,当且仅当该变换是相似变换。

所有的圆都和绝对圆锥相交于两点,所有的球都和绝对圆椎相交于 π ∞ \pi_{\infty} π

度量性质 当我们知道了绝对圆锥,我们就可以恢复度量性质,比如直线之间的夹角:

cos ⁡ θ = d 1 T Ω ∞ d 2 ( d 1 T Ω ∞ d 2 ) ( d 1 T Ω ∞ d 2 ) \cos \theta = \frac{d_1^T \Omega_{\infty} d_2}{\sqrt{(d_1^T \Omega_{\infty} d_2)(d_1^T \Omega_{\infty} d_2)} } cosθ=(d1TΩd2)(d1TΩd2) d1TΩd2

3.7 The absolute dual quadric

就是由与绝对圆锥相切的平面组成的圆锥,记为 Q ∞ ∗ Q_{\infty}^* Q,对偶圆锥也在相似变换下保持不变。 π ∞ \pi_{\infty} π Q ∞ ∗ Q_{\infty}^* Q的零向量。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/83099.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

SBCS、DBCS、ASCII、MBCS(ANSI)、Unicode

1.三种编码方式和三种字符类型。 第一种编码方式是单字节字符集,称之为 SBCS,它的所有字符可用一个字节存储。ASCII 码就是SBCS。SBCS字符串由一个零字节结尾。第二种编码方式是多字节字符集,称之为 MBCS,它包含的字符中有单字节…

实现注册手机号用户

1、使用Post异步发送请求&#xff08;发送短信&#xff09;&#xff0c;离焦事件触发时判断 <script src"layer/layer.js"></script><!--离焦事件--><script type"text/javascript" th:inline"javascript">$("#use…

HCS 基本概念(三)

一、定义 HCS采用FusionSphere OpenStack作为云平台&#xff0c;对各个物理数据中心资源做整合&#xff0c;采用ManageOne作为数据中心管理软件对多个数据中心提供统一管理&#xff0c;通过云平台和数据中心管理软件协同运作&#xff0c;达到多数据中心融合、提升企业整体IT效率…

2023最新安装微信小程序开发软件安装教程

一&#xff0c;安装开发者工具 我们在开发小程序之前&#xff0c;首先需要安装小程序开发者工具&#xff0c;今天就来教大家安装小程序开发者工具。 微信开放文档 (qq.com)https://developers.weixin.qq.com/miniprogram/dev/framework/ 官网工具下载地址&#xff1a; 微信…

在windows下持续ping ip,将返回结果及时间记录到文件中

在纯英文路径下创建文件ping.txt 在txt中写入 Dim args, flag, unsuccOut args"" otherout"" flag0If WScript.Arguments.count 0 Then WScript.Echo "Usage: cscript tping.vbs [-t] [-a] [-n count] [-l size] [-f] [-i TTL] [-v TOS]" WScr…

NDK (ndk)报错 Unity requires NDK r19 (64-bit)(19.0.05232133)

一、介绍 在 Android 添加 NDK ndk 的时候&#xff0c;出现 Unity requires NDK r19 (64-bit)(19.0.05232133)。 二、环境 1、Unity 2020.3.48f1c1 2、Android NDK 配置 三、报错信息 NDK (ndk)报错 Unity requires NDK r19 (64-bit)(19.0.05232133) 四、解决方法 1、下…

uniapp 在父组件中使用ref属性调用子组件中的方法 报错undefined

项目背景&#xff1a; 项目是自定义底部tabBar&#xff0c;所以这个页面是index(首页的一个子组件ref"pageC") 现在要求是不管页面滚动到第几页数据&#xff0c;或者每次从详情页以及其他页面回到这个页面时&#xff08;子组件pageC)内容都要回到顶部 所以我在index的…

「提效脚本 redis」 使用Lua批量删除key

在redis里面可以使用keys aa* 进行匹配所有的key&#xff0c;却没办法直接删除所有匹配的key。 所以可以使用lua脚本进行增强。 以删除 suggest* 开头的key为例。 eval "local keys redis.call(keys, suggest*) for _, key in ipairs(keys) do redis.call(del, key) …

华为OD机试 - 求最多可以派出多少支团队 - 双指针(Java 2023 B卷 100分)

目录 专栏导读一、题目描述二、输入描述三、输出描述四、解题思路五、Java算法源码六、效果展示1、输入2、输出3、说明 华为OD机试 2023B卷题库疯狂收录中&#xff0c;刷题点这里 专栏导读 本专栏收录于《华为OD机试&#xff08;JAVA&#xff09;真题&#xff08;A卷B卷&#…

【 Tkinter界面-练习05】 event和bind

一、说明 事件和动作有关&#xff1b;所有的界面都与运动有关&#xff0c;本篇将对事件、事件触发、绑定回调函数等&#xff0c;其实是一系列部件配合的复杂的过程&#xff0c;这些过程牵扯到系统如何设计&#xff0c;线程、消息队列循环等。本篇将详细介绍各种因素的关系。 二…

python经典百题之求分数前N项和

题目&#xff1a;有一分数序列&#xff1a;2/1&#xff0c;3/2&#xff0c;5/3&#xff0c;8/5&#xff0c;13/8&#xff0c;21/13…求出这个数列的前20项之和。 1. 方法一&#xff1a;普通循环 思路&#xff1a;利用循环计算每一项的值&#xff0c;并累加求和。 优点&#x…

vue3创建的官网提示方法

创建: npm create vuelatest 或许会出现提示: 根据官网提示: 意味着我们需要安装或者更新create-vue的版本 后面就可以跟随提示了

【2023年11月第四版教材】第13章《资源管理》(第三部分)

第13章《资源管理》&#xff08;第部分&#xff09; 4 规划资源管理4.1 数据表现★★★4.2 资源管理计划★★★4.2 团队章程★★★ 5 估算活动资源 4 规划资源管理 组过程输入工具和技术输出规划1.规划资源管理1.项目章程2.项目管理计划&#xff08;质量管理计划、范围基准&am…

C++中返回类型与return语句

C中返回类型与return语句 有、无返回值的函数及其return语句 无返回值&#xff08;函数声明中&#xff0c;返回值类型为void&#xff09;的函数&#xff0c;如果其中没有任何return语句也是正确的&#xff0c;编译器会自动在函数结束处补上隐式的return;语句。如果这种void函数…

VOP —— Noise

目录 Turbulent Noise —— 计算1D/3D类型的Noise Anti-Aliased Flow Noise —— 生成抗锯齿噪波 Anti-Aliased Noise —— 生成抗锯齿噪波 Curl Noise —— 创建divergence-free 3D噪波 Curl Noise 2D —— 创建divergence-free 2D噪波 Flow Noise —— 生成1D/3D Perli…

理解Kruskal算法的前提----深入理解并查集【超简单~】

并查集的实现思路 并查集主要分为两个部分&#xff1a;第一部分就是需要找到点对应的祖宗节点&#xff0c;第二部分&#xff0c;是要将属于同一个集合节点的祖宗节点进行统一&#xff0c;也就是结合操作。 Find函数实现 // parent数组用来存储下标值所对应的父节点值 // 比如…

下载安装nvm教程(附带下载切换node.js版本实操)

目录 一、介绍 二、下载 三、安装步骤 四、配置淘宝源 五、测试 六、常用的nvm命令 七、下载切换node版本实操 node版本参考 一、介绍 node版本管理&#xff1a;nvm就是可以切换你的node版本&#xff0c;特别是当node版本过高或者过低时候&#xff0c;就可以用nvm进行…

036:vue导出页面生成pdf文件

第036个 查看专栏目录: VUE ------ element UI 专栏目标 在vue和element UI联合技术栈的操控下&#xff0c;本专栏提供行之有效的源代码示例和信息点介绍&#xff0c;做到灵活运用。 &#xff08;1&#xff09;提供vue2的一些基本操作&#xff1a;安装、引用&#xff0c;模板使…

GIF动图怎么变成jpg动图?一键分解GIF动画

GIF格式图片怎么转换成jpg格式图片&#xff1f;在日常生活中jpg、png转GIF格式非常的常见&#xff0c;那么gif转换成jpg格式应该怎么操作呢&#xff1f;很简单&#xff0c;给大家分享一款gif动态图片制作&#xff08;https://www.gif.cn/giffenjie&#xff09;工具&#xff0c;…

Oracle Schema Only账户

概念 Schema Only Accounts是Oracle 18c的新安全功能&#xff0c;19c进一步增强。 19c的增强其实就是允许此账户有管理权限&#xff1a;Ability to Grant or Revoke Administrative Privileges to and from Schema-Only Accounts A schema only account cannot log in to the…