2D射影几何和变换
阅读《计算机视觉中的多视图集合》
2D射影几何和变换
2D射影平面
本章的关键是理解线和点的对偶性。从射影平面模型出发,IP^2^内的点(a, b ,c)由IP^3^空间中一条过原点的射线k(x1, x2, x3)^T^表示。点采用的是齐次坐标表示,具有相同比例,不同缩放因子的表示都是同一个点,就像射线也可以用同比例,不同缩放因子的向量表示一样。
射影变换projectivity
- 射影映射,也叫保线变换,或者射影变换,或者单应(homography),都是同义词,其性质是保线性,即直线变换之后还是直线。 可以用一个8自由度的三维非奇异矩阵H表示。
- 只需要4个任意三点不共线的点即可以求得射影变换H,然后求得逆矩阵H^-1^即可以消除射影变换H带来的变化。
- 透视变换,也即中心投影,是射影变换的一种,它的特点是:连接对应的直线共点。透视变换的复合不再是透视变换,但还会是射影变换。
如果有一个射影变换H,点x变换之后为Hx,那么在同样的变换下,直线I变换为H^-T^I。我们称点的变换为逆变,线的变换为协变。
变换的层次
如下表,下层的都是上层变化的特例。

另外还有一个透视变换perspectivity,它是射影变换的一个特例,与仿射变换affine的区别:
- 透视变换可以用于把3D变成2D,而仿射变换都是2D平面
- 透视变换可以有切变shareing
- 仿射变换的右下角必须为1,而透视不会
- 如果是两个平面的投射,且都是Euclidean坐标,那么透视变换也只有6个自由度
透视变换与射影变换的区别:
- 多个透视变换的组合还会是射影变换,但一般不会是透视变换
- 透视变换中,连接原始点和透视点的所有连线交于一点,这也即是中心投影的含义。
从图线恢复仿射和度量性质
重要概念
- 理想点:在齐次表示法中,最后坐标为0,比如二维坐标中的\(x_3=0\),的点即为理想点,也即无穷远点,通用表达为\((x_1, x_2, 0)^T\)
- 无穷远线:用符号\(I_{\infty}\)表示,\(I_{\infty}=(0,0,1)^T\),显然,\((0,0,1)(x_1, x_2, 0)^T=0\),即理想点和无穷远线相交
- 消影线:无穷远线被影像到像平面的直线
- 虚圆点:在\(I_{\infty}\)上有两个不动点\(I=(1,i,0)\)和\(J=(1,-i,0)\),这两个点是不动点的冲要条件为相似变换,\(I'=H_SI=I\),\(J'=H_SJ=J\),\(H_S\)表示相似变换矩阵, 即经过相似变换,他们的坐标不变。
与虚圆点对偶的二次曲线:记为\(C^*_{\infty}\),\(C^*_{\infty}=IJ^T+JI^T=\begin{bmatrix} 1 & 0 &0 \\ 0 & 1 & 0\\ 0& 0 & 0 \end{bmatrix}\)。同理,根据对偶定理,二次曲线\(C^*_{\infty}\)为不动曲线的冲要条件为变换为相似变换。
直接从透视图像恢复
对应的书本中的例 1.26。
- 假设有任意射影变换H
- 根据书中结论1.23,找到五组世界平面中相互正交的直线对,找到他们在变换之后的图像中的对应像直线,即可以求得经过变换H之后的\(C^*_{\infty}\)的像\(C^{*'}_{\infty}\)
根据结论1.24,对\(C^{*'}_{\infty}\)进行SVD分解,即可得到一个变换U,用这个U对像进行校正,就会得到一个与H变换之前只相差一个相似变换的结果。这样我们就可以根据相似变换的不动量特性来测量某些数据。
分层法恢复
- 在世界平面中平行的两组平行线,找到他们在像中的对应线,然后找到他们的交点,两组平行线就会有两组交点,根据平行线交于无穷远点的理论,这两个交点的连线就是消影线。然后根据公式1.18就可以得到一个变换H,可以把像变换到和世界平面只差一个仿射变换
在已经只存在仿射变换的图像中,找到两对在世界平面中正交的直线的像,然后根据结论1.23就可以求出仿射变换矩阵K。这个K把一个与世界平面只差一个相似变换的平面变换到当前仿射变换图像。
2D射影几何和变换的更多相关文章
- transform的2D和3D变换
transform取值 none:默认值,即是无转换 matrix(,,,,,): 以一个含六值的(a,b,c,d,e,f)变换矩阵的形式指定一个2D变换,相当于直接应用一个[a,b,c,d,e,f] ...
- CSS3 2D Transform
在 一个二维或三维空间,元素可以被扭曲.移位或旋转.只不过2D变形工作在X轴和Y轴,也就是大家常说的水平轴和垂直轴:而3D变形工作在X轴和Y轴之外, 还有一个Z轴.这些3D变换不仅可以定义元素的长度和 ...
- SVG坐标系统及图形变换
前面的话 前面介绍过SVG视野后,本文将开始介绍SVG坐标系统及图形变换 坐标定位 对于所有元素,SVG使用的坐标系统或者说网格系统,和Canvas用的差不多(所有计算机绘图都差不多).这种坐标系统是 ...
- CSS3总结七:变换(transform)
2D视图模型解析 3D视图模型解析 平移 旋转 伸缩 扭曲 z轴方向平移与perspective的神秘关系 matrix()终极变幻的方法 一.2D视图 2D视图就是默认平面上的每个点都与视线垂直,图 ...
- CS(计算机科学)知识体
附 录 A CS( 计算机科学)知识体 计算教程 2001 报告的这篇附录定义了计算机科学本科教学计划中可能讲授的知识领域.该分类方案的依据及其历史.结构和应用的其 ...
- CSS3变形记(上):千变万化的Div
传统上,css就是用来对网页进行布局和渲染网页样式的.然而,css3的出现彻底打破了这一格局.了解过css3的人都知道,css3不但可以对网页进行布局和渲染样式,还可以绘制一些图形.对元素进行2D和3 ...
- 优化IPOL网站中基于DCT(离散余弦变换)的图像去噪算法(附源代码)。
在您阅读本文前,先需要告诉你的是:即使是本文优化过的算法,DCT去噪的计算量依旧很大,请不要向这个算法提出实时运行的苛刻要求. 言归正传,在IPOL网站中有一篇基于DCT的图像去噪文章,具体的链接地址 ...
- 《zw版·Halcon-delphi系列原创教程》 Halcon分类函数017·point点函数
<zw版·Halcon-delphi系列原创教程> Halcon分类函数017·point点函数 为方便阅读,在不影响说明的前提下,笔者对函数进行了简化: :: 用符号“**”,替换:“p ...
- 《zw版·Halcon-delphi系列原创教程》 Halcon分类函数015,vector矢量
<zw版·Halcon-delphi系列原创教程> Halcon分类函数015,vector矢量 为方便阅读,在不影响说明的前提下,笔者对函数进行了简化: :: 用符号“**”,替换:“p ...
随机推荐
- JPA中自定义的插入、更新、删除方法为什么要添加@Modifying注解和@Transactional注解?
前几天,有个同事在使用JPA的自定义SQL方法时,程序一直报异常,捣鼓了半天也没能解决,咨询我的时候,我看了一眼他的程序,差不多是这个样子的: @Repository public interface ...
- Python库的安装
window下python2.python3安装包的方法 一.在线安装 安装好python.设置好环境变量后,在python安装目录下Script文件夹内会存在pip.exe和easy_install ...
- Java虚拟机二:使用jvisualvm工具远程监控tomcat内存
jdk中自带了很多工具可以用于性能分析,位于jdk的bin目录下,jvisualvm工具可以以图形化的方式更加直观的监控本地以及远程的java进程的内存占用,线程状态等信息. 一.配置tomcat 在 ...
- PageHelper分页异常(java.base/java.util.ArrayList cannot be cast to com.github.pagehelper.Page)
在SqlMapConfig.xml里面配置分页插件 applicationContext-service.xml里面的配置,我出现问题谁因为,在salSessionFactory里没注入全局配置文件
- vivo机器如何无需root激活XPOSED框架的流程
在大多运行室的引流或者业务操作中,理论上需要使用安卓的神一般的Xposed框架,上周我们运行室购来了一批新的vivo机器,理论上都是基于7.0以上系统版本,理论上不能够获得root的su权限,虽然一部 ...
- Android注解框架实战-ButterKnife
文章大纲 Android注解框架介绍 ButterKnife实战 项目源码下载 一.框架介绍 为什么要用注解框架? 在Android开发过程中,我们经常性地需要操作组件,操作方法有findVie ...
- mssql sqlserver 三种数据表数据去重方法分享
摘要: 下文将分享三种不同的数据去重方法数据去重:需根据某一字段来界定,当此字段出现大于一行记录时,我们就界定为此行数据存在重复. 数据去重方法1: 当表中最在最大流水号时候,我们可以通过关联的方式为 ...
- Taurus.MVC 2.3 开源发布:增强属性Require验证功能,自带WebAPI文档生成功能
背景: 上周,把 Taurus.MVC 在 Linux (CentOS7) 上部署任务完成后. 也不知怎么的,忽然就想给框架集成一下WebAPI文档功能,所以就动手了. 以为一天能搞完,结果,好几天过 ...
- zabbix安装及简单使用备注
1.安装mysql yum install -y mariadb mariadb-server systemctl start mariadb 2.安装apache yum -y install ht ...
- linux shell 备注(一)
1.特殊字符 #!/bin/bash # $表示当前PID ID echo $$ # $n是shell脚本的参数,当0是第一个参数,即文件名 # $#是shell当前脚本的参数个数 # 例如:sh03 ...