计算机视觉中的多视图几何 --3D射影几何中的面与直线
3D射影几何与变换(1)
这篇主要介绍在3D射影几何中的基本元素,包括平面和直线,以及他们各自的性质。
3D射影几何的许多内容是2D射影几何的直接推广,但也有许多不一样的地方,比如这篇要介绍的一个重要不同:在IP3IP^3IP3中,点与平面对偶,而直线自对偶。
平面
平面方程
在3D空间中,平面方程写作:
π1X+π2Y+π3Z+π4=0\pi_1 X + \pi_2 Y + \pi_3 Z + \pi_4 = 0 π1X+π2Y+π3Z+π4=0
显然,该等式乘一个非0标量仍成立,所以只有3个自由度,可以写成齐次坐标:π=(π1,π2,π3,π4)T\pi = (\pi_1, \pi_2,\pi_3,\pi_4)^Tπ=(π1,π2,π3,π4)T,这就是IP3IP^3IP3中的平面齐次坐标表示。
这个齐次坐标形式对应于欧式几何中的写法:nX^+d=0n\hat{X}+d=0nX^+d=0,其中n=(π1,π2,π3)T,X^=(X,Y,Z)T,X4=1,π4=dn=(\pi_1,\pi_2,\pi_3)^T,\hat{X}=(X,Y,Z)^T,X_4=1,\pi_4=dn=(π1,π2,π3)T,X^=(X,Y,Z)T,X4=1,π4=d,其中d∣∣n∣∣\frac{d}{||n||}∣∣n∣∣d为平面到原点的距离。
对于在平面上的点X,有方程:πTX=0\pi^TX=0πTX=0。平面的代数确定
众所周知,三点确定一条平面。我们可以将三个点在平面上的方程堆叠成一个矩阵:
[X1TX2TX3T]π=0\left[ \begin{matrix} X_1^T \\ X_2^T \\ X_3^T \end{matrix} \right]\pi = 0 ⎣⎡X1TX2TX3T⎦⎤π=0
矩阵大小为3x4,则该平面由矩阵的一维右零空间确定。若该矩阵不满秩,则说明三点在一条直线上,此时由零空间确定以该直线为轴的平面束。
在具体计算中,我们可以从一个矩阵开始,它包含确定平面的三个点和一个任意点:
M=[X,X1,X2,X3]M = [X, X_1, X_2, X_3] M=[X,X1,X2,X3]
当X在平面上时,该矩阵的秩退化为3,于是行列式等于0,按点X=(x1,x2,x3,x4)TX=(x_1,x_2,x_3,x_4)^TX=(x1,x2,x3,x4)T展开行列式可得:
detM=x1D234−x2D134+x3D124−x4D123=0detM = x_1D_{234} - x_2 D_{134} + x_3 D_{124} - x_4D_{123}=0 detM=x1D234−x2D134+x3D124−x4D123=0
所以平面有以下表示:
π=(D234,−D134,D124,−D123)\pi = (D_{234}, -D_{134}, D_{124}, -D_{123}) π=(D234,−D134,D124,−D123)射影变换
对应于点变换:x′=Hxx'=Hxx′=Hx,平面的单应变换为π′=H−Tπ\pi' = H^{-T}\piπ′=H−Tπ,与2D中直线变换一样。平面上点的参数表示
平面上的点只有2个自由度,所以可以用三维向量来表示,这种三维向量表示称为平面上点的参数化表示。
给出平面上三个不共线的点X1,X2,X3X_1,X_2,X_3X1,X2,X3,则平面上任意一点可以写作这三个点的线性组合:
X=αX1+βX2+γX3X=\alpha X_1 + \beta X_2 + \gamma X_3X=αX1+βX2+γX3
这样就得到了平面上点的参数化表示:x=(α,β,γ)Tx=(\alpha, \beta, \gamma)^Tx=(α,β,γ)T。
直线
直线在三维射影空间中表示为两点的连接或者平面的交线,所以直线有4个自由度,也因为这个原因,在3维射影空间上难以表示直线(4个自由度需要5维的齐次坐标),所以就有以下两种并非直接的表示方式。
点表示法 - 生成子空间表示
假定点X1,X2X_1,X_2X1,X2不重合,连接成一条线,令W是这两个点的齐次坐标作为行构成的2x4的矩阵,有下述结论:1)点束L={X=WT(α,β)T∣(α,β)∈R2}L=\{X=W^T(\alpha , \beta )^T|(\alpha , \beta )\in R^2\}L={X=WT(α,β)T∣(α,β)∈R2}是连接两个空间点X1,X2X_1,X_2X1,X2的直线。2)矩阵W的二维右零空间是以L为轴的直线束。面表示法 - 零空间表示
根据IP3IP^3IP3中点与平面的对偶,同样可以由平面来表示直线:两个平面π1,π2\pi_1,\pi_2π1,π2,定义一个矩阵W=(π1T,π2T)TW=(\pi_1^T,\pi_2^T)^TW=(π1T,π2T)T,同样有以下两个结论:1)απ1+βπ2=WT(α,β)T,(α,β)∈R2\alpha \pi_1 + \beta \pi_2=W^T(\alpha , \beta )^T,(\alpha , \beta )\in R^2απ1+βπ2=WT(α,β)T,(α,β)∈R2。2)W的二维右零空间是直线L构成的点束。Plucker矩阵表示
连接两点A,B的直线可以用Plucker矩阵表示:
L=ABT−BATL=AB^T - BA^T L=ABT−BAT
这是一个4x4的反对称矩阵,有4个自由度,其二维生成子空间是以该直线为轴的平面束。根据点与直线的对偶,可以得到用平面表示的直线:
L∗=π1π2T−π2π1TL^*=\pi_1 \pi_2^T - \pi_2 \pi_1^T L∗=π1π2T−π2π1T
在plucker矩阵的表示下,有下述结论:
1)点与直线的关系:L∗X=0L^*X=0L∗X=0表示X在直线上,否则L∗X=πL^*X=\piL∗X=π是点与直线确定的平面。
2)面与直线的关系:Lπ=0L\pi=0Lπ=0表示l在平面上,否则Lπ=XL\pi=XLπ=X是直线与平面的交点。
计算机视觉中的多视图几何 --3D射影几何中的面与直线相关推荐
- 计算机视觉中的多视图几何 -- 2D射影几何与变换 --无穷远直线、虚圆点及其对偶以及恢复图像的仿射性质
2D射影几何与变换(3) 这篇主要介绍在2D射影几何中的无穷远直线.虚圆点及其对偶二次曲线,以及他们各自对应的图像的仿射和度量性质. 无穷远直线 定义 IP2IP^2IP2中的理想点(齐次坐标第三项为 ...
- 计算机视觉中的多视图几何 -- 2D射影几何与变换 -- 相似、仿射与射影变换的层次
2D射影几何与变换(2) 这篇主要介绍在2D射影空间中的变换,以及各种变换的层次. 几何研究的重点在于各种变换群下,不变的性质,对应于Gibson生态视觉中的环境不变量,是计算机视觉研究的重点. 射影 ...
- 《计算机视觉中的多视图几何》笔记(一)有限射影摄像机
目录 前言 1.二维射影几何与变换 1.1数学基础 1.2射影变换 2.有限射影摄像机 2.1有限摄像机模型 2.2射影摄像机的几何含义 2.3射影摄像机对点的作用 2.3.1点对射线的反向投影 2. ...
- 计算机视觉中的多视图几何<Part0—基础知识:射影几何、变换和估计>(1)
1. 2D射影几何和变换 射影几何的概念和表示法是多视图几何分析的核心,使用齐次坐标就能用线性矩阵方程来表示非线性映射(例如透视投影):主要目的是为了从透视图像中恢复仿射和度量性质. 1.1 平面几何 ...
- 计算机视觉中的多视图几何_基于深度学习的视觉三维重建研究总结
三维重建意义 三维重建作为环境感知的关键技术之一,可用于自动驾驶.虚拟现实.运动目标监测.行为分析.安防监控和重点人群监护等.现在每个人都在研究识别,但识别只是计算机视觉的一部分.真正意义上的计算机视 ...
- 计算机视觉中的多视图几何 pdf_多视图立体匹配论文解析:PVA-MVSNet
Date:2020-11-25 作者:Shelo 来源:3D视觉工坊 论文题目:Pyramid Multi-view Stereo Net with Self-adaptive View Aggreg ...
- 《计算机视觉中的多视图几何》学习笔记
困惑与解答: 问题:射影变换与仿射变换的区别 解答: 射影变换和仿射变换都是在平面几何中常用的变换.它们的区别在于是否保持直线的性质. 射影变换将一条直线映射为一条直线,但不保持线段的长度和角度大小. ...
- 计算机视觉学习7_多视图几何_基础矩阵
文章目录 对极几何 本质矩阵(Essentical Matrix) 基本矩阵(Fundamental Matrix) 8点算法估算基础矩阵F 实现代码 实现结果 三维重建 对极几何 多视图几何是利用在 ...
- 一般向量空间的基变换_向量几何--3-D空间中的基变换与坐标变换【转】 - 回到未来 - C++博客...
<6>3-D空间中的基变换与坐标变换-Twinsen编写 -本人水平有限,疏忽错误在所难免,还请各位数学高手.编程高手不吝赐教 -我的Email-address:popyy@netease ...
最新文章
- pandas计算特征与所有数值特征的相关性并排序可视化:包含pearson、spearman、kendall
- phalcon: 解决php7/phalcon3.2以上版本,不支持oracle数据库的方法
- linux内核启动后门,Linux下编写隐蔽的自启动回连后门
- rust油桶用什么打_选什么样的柜子才好用?别再选定制柜了,还是老手艺人打的柜子好...
- 台式计算机欢迎界面下不去,Win7系统开机不显示欢迎界面的方法
- python 定时任务系统_Python定时任务,实现自动化的方法
- Java Set接口详细讲解 TreeSet的定制排序和自然排序
- 物联网中使用的常见通信技术
- 2019年,区块链不得不知的 9 件大事!
- 汉诺塔问题的c语言实现
- java简历专业技能,附详细答案解析
- 编译原理学习笔记之上下文无关文法
- 【计量经济学导论】16. 面板数据模型
- k8s部署nacos2.0.3出现tried: server is DOWNnow, detailed error message: Optional[Distro protocol XXXX
- NOIP2018 复赛提高组一等奖获奖名单
- 有关结合律和优先规律
- android 多语言国家化对照表(超详细)
- UML软件建模技术-基于IBM RSA工具的基础实训
- Python全栈(九)Web前端基础之3.CSS常见样式和选择器
- 泛泰A900 刷4.4专用中文TWRP2.7.1.1版 支持自己主动识别手机版本号(全球首创)...