阅读《计算机视觉中的多视图集合》

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的区别:

  1. 透视变换可以用于把3D变成2D,而仿射变换都是2D平面
  2. 透视变换可以有切变shareing
  3. 仿射变换的右下角必须为1,而透视不会
  4. 如果是两个平面的投射,且都是Euclidean坐标,那么透视变换也只有6个自由度

透视变换与射影变换的区别:

  1. 多个透视变换的组合还会是射影变换,但一般不会是透视变换
  2. 透视变换中,连接原始点和透视点的所有连线交于一点,这也即是中心投影的含义。

从图线恢复仿射和度量性质

重要概念

  • 理想点:在齐次表示法中,最后坐标为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

  1. 假设有任意射影变换H
  2. 根据书中结论1.23,找到五组世界平面中相互正交的直线对,找到他们在变换之后的图像中的对应像直线,即可以求得经过变换H之后的\(C^*_{\infty}\)的像\(C^{*'}_{\infty}\)
  3. 根据结论1.24,对\(C^{*'}_{\infty}\)进行SVD分解,即可得到一个变换U,用这个U对像进行校正,就会得到一个与H变换之前只相差一个相似变换的结果。这样我们就可以根据相似变换的不动量特性来测量某些数据。

    分层法恢复

  4. 在世界平面中平行的两组平行线,找到他们在像中的对应线,然后找到他们的交点,两组平行线就会有两组交点,根据平行线交于无穷远点的理论,这两个交点的连线就是消影线。然后根据公式1.18就可以得到一个变换H,可以把像变换到和世界平面只差一个仿射变换
  5. 在已经只存在仿射变换的图像中,找到两对在世界平面中正交的直线的像,然后根据结论1.23就可以求出仿射变换矩阵K。这个K把一个与世界平面只差一个相似变换的平面变换到当前仿射变换图像。

2D射影几何和变换的更多相关文章

  1. transform的2D和3D变换

    transform取值 none:默认值,即是无转换 matrix(,,,,,): 以一个含六值的(a,b,c,d,e,f)变换矩阵的形式指定一个2D变换,相当于直接应用一个[a,b,c,d,e,f] ...

  2. CSS3 2D Transform

    在 一个二维或三维空间,元素可以被扭曲.移位或旋转.只不过2D变形工作在X轴和Y轴,也就是大家常说的水平轴和垂直轴:而3D变形工作在X轴和Y轴之外, 还有一个Z轴.这些3D变换不仅可以定义元素的长度和 ...

  3. SVG坐标系统及图形变换

    前面的话 前面介绍过SVG视野后,本文将开始介绍SVG坐标系统及图形变换 坐标定位 对于所有元素,SVG使用的坐标系统或者说网格系统,和Canvas用的差不多(所有计算机绘图都差不多).这种坐标系统是 ...

  4. CSS3总结七:变换(transform)

    2D视图模型解析 3D视图模型解析 平移 旋转 伸缩 扭曲 z轴方向平移与perspective的神秘关系 matrix()终极变幻的方法 一.2D视图 2D视图就是默认平面上的每个点都与视线垂直,图 ...

  5. CS(计算机科学)知识体

    附 录 A                   CS( 计算机科学)知识体 计算教程 2001 报告的这篇附录定义了计算机科学本科教学计划中可能讲授的知识领域.该分类方案的依据及其历史.结构和应用的其 ...

  6. CSS3变形记(上):千变万化的Div

    传统上,css就是用来对网页进行布局和渲染网页样式的.然而,css3的出现彻底打破了这一格局.了解过css3的人都知道,css3不但可以对网页进行布局和渲染样式,还可以绘制一些图形.对元素进行2D和3 ...

  7. 优化IPOL网站中基于DCT(离散余弦变换)的图像去噪算法(附源代码)。

    在您阅读本文前,先需要告诉你的是:即使是本文优化过的算法,DCT去噪的计算量依旧很大,请不要向这个算法提出实时运行的苛刻要求. 言归正传,在IPOL网站中有一篇基于DCT的图像去噪文章,具体的链接地址 ...

  8. 《zw版·Halcon-delphi系列原创教程》 Halcon分类函数017·point点函数

    <zw版·Halcon-delphi系列原创教程> Halcon分类函数017·point点函数 为方便阅读,在不影响说明的前提下,笔者对函数进行了简化: :: 用符号“**”,替换:“p ...

  9. 《zw版·Halcon-delphi系列原创教程》 Halcon分类函数015,vector矢量

    <zw版·Halcon-delphi系列原创教程> Halcon分类函数015,vector矢量 为方便阅读,在不影响说明的前提下,笔者对函数进行了简化: :: 用符号“**”,替换:“p ...

随机推荐

  1. 关于 JavaScript 中的继承

    ES5 之前,继续是这样实现的 function Parent() { this.foo = function() { console.log('foo'); }; } Parent.prototyp ...

  2. Python中的那些“坑”

    1.哪个是True,哪个是False? 这里要看三组代码: # 第一组: >>>a=256 >>>b = 256 >>>a is b # 第二组: ...

  3. javaScript设计模式之----工厂模式

    什么是工厂模式?我们通过一个例子了解一下: 比如我们想要弹出几个字符串 function funA(){ alert('a'); } function funB(){ alert('b'); } fu ...

  4. rocketMQ安装中遇到的坑

    安装步骤是这些: Prerequisite The following softwares are assumed installed: 64bit OS, Linux/Unix/Mac is rec ...

  5. maven下载及安装最详解

    maven的下载及安装 1.maven下载地址:https://maven.apache.org/download.cgi 2.将下载的安装包解压到自定义目录 3.配置环境变量 此电脑->右键属 ...

  6. Windows Server 安装后无法使用无线与音频

    1.无线 运行powershell,输入命令: install-windowsfeature Wireless-Networking 之后重启. 运行cmd输入: sc config WlanSvc ...

  7. 技能提升丨Seacms 8.7版本SQL注入分析

    有些小伙伴刚刚接触SQL编程,对SQL注入表示不太了解.其实在Web攻防中,SQL注入就是一个技能繁杂项,为了帮助大家能更好的理解和掌握,今天小编将要跟大家分享一下关于Seacms 8.7版本SQL注 ...

  8. Amqp整合com.rabbitmq.client.ShutdownSignalException: channel error; protocol method异常处理

    java.io.IOException at com.rabbitmq.client.impl.AMQChannel.wrap(AMQChannel.java:126) at com.rabbitmq ...

  9. 内核ring buffer -- kfifo

    目前kernel的kfifo根据版本有两种形式, 早期的函数形式和现在的宏定义形式 1. 早期的(linux-3.0.56/kernel/kfifo.c) 感兴趣读者可以自己看, 源码如下: /* * ...

  10. RIpng配置(GNS3)(第九组)

    一.拓扑图 二.路由器配置 路由器R1的配置(配置RIP静态路由协议,路由器对应接口配置相对应的ipv6地址,并给每个接口配置RIP 1 enable) 路由器R2的配置(配置RIP静态路由协议,路由 ...