转载:http://blog.csdn.NET/yvonnezju/article/details/40982192

这一篇,要搞清楚两个概念,Planar Homography (共面点成像)& Epipolar Geometry(对极几何)

Now,Start!

先补充Homography的概念,简单来说Homography(单应性),说的是投影的时候可以逆过来找,比如,一个物体可以通过旋转相机镜头获取两张不同的照片(这两张照片的内容不一定要完全对应,部分对应即可),我们可以把单应性设为一个二维矩阵M,那么照片1乘以M就是照片2. 这有着很多实际应用,比如图像校正、图像对齐或两幅图像之间的相机运动计算(旋转和平移)等。一旦旋转和平移从所估计的单应性矩阵中提取出来,那么该信息将可被用来导航或是把3D物体模型插入到图像或视频中,使其可根据正确的透视来渲染,并且成为原始场景的一部分(请见增强现实)。

具体的解释可以戳wiki。

一、共面点成像

思路:同一物理点,不同成像面之间的关系。

在前面已经讨论了三维物体成像过程,相比之下,还有一种稍简单的情况——平面成像,即所有的物点都处在同一个平面上,我们有理由相信,这种情况下的成像关系是一般立体成像的一种特例。

先回顾一下一般的单体成像过程

 

对于共面的物点,在恰当的世界坐标系中,可以令其中一个坐标值为0,不妨设第三维坐标为0,图示如下:

由于物点的第三维坐标为0,整个成像过程的矩阵表示会得到简化。

可以简化为一个3X3的矩阵,称之为Homography矩阵,该矩阵是可逆的!!

对于正前方的物体平面(垂直于光轴),成像关系将更进一步简化。

将共面物点经成像之后,再变换为数字图像(u,v)

研究共面点成像有什么意义呢?

原来是为了研究两幅图之间的关系!共面点成像过程总结如下:

应用之一:消除透视投影的失真

应用之二:图像拼接

在这些应用中,需要解决两个关键问题:

1. 如何确定两幅图像之间的变换关系(需要多少个已知点?如何计算?)

2. 如何生成新的像素点,即在拉伸或拼接之后,需要生成新的像素点。

选择第一种约束关系

可以写在线性方程组或矩阵的形式

在实际求解变换矩阵时,需要考虑数值计算的问题。

R.Hartley: “In Defense of the Eight Point Algorithm”
Observation: Linear estimation of projective transformation parameters from point correspondences often suffer from poor “conditioning” of the matrices involves. This means the solution is sensitive to noise in the points (even if there are no outliers).
To get better answers, precondition the matrices by performing a normalization of each point set by:
• translating center of mass to the origin
• scaling so that average distance of points from origin is sqrt(2).
• do this normalization to each point set independently

采用第二种约束关系

二、对极几何

  先思考一个问题:用两个相机在不同的位置拍摄同一物体,如果两张照片中的景物有重叠的部分,我们有理由相信,这两张照片之间存在一定的对应关系,本节的任务就是如何描述它们之间的对应关系,描述工具是对极几何 ,它是研究立体视觉的重要数学方法。

  要寻找两幅图像之间的对应关系,最直接的方法就是逐点匹配,如果加以一定的约束条件对极约束(epipolar constraint),搜索的范围可以大大减小。

  先回顾简单的立体成像系统

对极约束的图示

更一般的立体成像关系:两个相机的坐标无任何约束关系,相机的内部参数可能不同,甚至是未知的。要刻画这种情况下的两幅图像之间的对应关系,需要引入两个重要的概念——对极矩阵(Epipolar Matrix)和基本矩阵(Fundamental Matrix)。

对极几何中的重要概念(参考下图):

极点:极点el:右相机坐标原点在左像平面上的像;极点er:左相机坐标原点在右像平面上的像

极平面:由两个相机坐标原点Ol、Or和物点P组成的平面

级线:极平面与两个像平面的交线,即plel和prer

级线约束:两极线上点的对应关系

有点烦人,先转移一下话题:What would Pinhead’s eye look like close up?

 

如果两个人同时看这一景物,将是什么样的呢?

 

再回到对极几何图上来,通过上面几幅图示,利用对极几何的约束关系,我们可以:

1. 找到物点P在左像平面上的像点pl;

2. 画出极线plel;

3. 找到极平面Olplel与右像平面的交线,即得极线prer;

4. 像点pl的对应点一定在极一prer上。

两个相机坐标系之间的关系为

由于R是正交矩阵,因此可写为

三向量共面,它们的混合积为零(混合积对应于有向体积)

将向量乘(叉乘)写成矩阵的形式

通过进一步的改写,可以得到左像点和右像点之间约束关系(非常简单、漂亮)

显然,左像点pl和右像点pr是通过矩阵E=RS来约束的,我们称矩阵E为本质矩阵(Essential Matrix),它的基本性质有:

• has rank 2(秩为2)

• depends only on the EXTRINSIC Parameters (R & T)(仅依赖于外部参数R和T)

Planar Homography (共面点成像) Epipolar Geometry(对极几何)相关推荐

  1. 3D重构基础四--Planar Homography Epipolar Geometry

    上一篇,只要主要搞清楚透视的坐标变换. 这一篇,要搞清楚两个概念,Planar Homography (共面点成像)& Epipolar Geometry(对极几何) Now,Start! 先 ...

  2. 视觉SLAM14讲笔记04:ch7对极几何(epipolar geometry)

    2D-2D:对极几何(epipolar geometry) 对极约束 现在,假设我们从两张图像中,得到了一对配对好的特征点,像图7-7里显示的那样.如果我们有若干对这样的匹配点,就可以通过这些二维图像 ...

  3. 计算机视觉基础——对极几何(Epipolar Geometry)

    先思考一个问题:用两个相机在不同的位置拍摄同一物体,如果两张照片中的景物有重叠的部分,我们有理由相信,这两张照片之间存在一定的对应关系,本节的任务就是如何描述它们之间的对应关系,描述工具是对极几何 , ...

  4. Python+OpenCV:对极几何(Epipolar Geometry)

    Python+OpenCV:对极几何(Epipolar Geometry) 理论 When we take an image using pin-hole camera, we loose an im ...

  5. 极线几何[Epipolar Geometry]

    前段时间看过一篇文章Image-Based Visual Hulls[Matusik,siggraph2000],其中关于Epipolar Geometry(可以翻译为极线几何,也有人叫对极几何)的部 ...

  6. 极线几何(Epipolar Geometry)

    极线几何与本质矩阵 双目视觉对应关系--也可用于相邻二帧间的运动估计 为什么要两个相机:两个才能区分空间的不同点 极线几何 极平面:空间点,两相机光心决定的平面,在图中就是ppp和olo_{l}ol​ ...

  7. Boost.Geometry中的几何要素(Primitives)

    点(Point) 单个点(Point) 点是几何要素中最基本的要素.Boost.Geometry中点的设计考虑到三个概念: 坐标数据类型.坐标维度和坐标系 //点 template<typena ...

  8. 问题六十六:怎么用ray tracing画CSG(Constructive Solid Geometry 构造实体几何)图形

    66.1 概述 什么是CSG图形? 若干简单图形通过集合运算后得到的复杂图形,被称为"CSG图形". 其中"简单图形",包括:sphere, box, cyli ...

  9. Multiple View Geometry(多视图几何)学习笔记(23)—射影摄像机对二次曲面的作用摄像机中心的重要性

          射影摄像机对二次曲面的作用&摄像机中心的重要性 1.光滑曲面的图像 定义1:  轮廓生成元Γ\GammaΓ定义为影像射线与光滑曲面SSS的所有切点XXX的集合.在图像上,与它对应的 ...

最新文章

  1. SVD(奇异值分解)小结
  2. 微软推出提点神器动态ReLU,可能是最好的ReLU改进
  3. 高并发架构系列:MQ消息队列的12点核心原理总结
  4. Winhex添加文件头的方法
  5. centos 设置双网卡,双网关
  6. [MySQL] 事务的ACID特性
  7. Python 字符串操作基础
  8. gperftools mysql_利用 gperftools 对nginx mysql 内存管理 性能优化
  9. Delphi中destroy, free, freeAndNil, release用法和区别
  10. Hadoop完全分布式 小bug -no.1 为啥我的集群只显示一个datanode!
  11. const和define在值定义上的区别
  12. 【NFC】 NfcA/NfcB/NfcF/NfcV/IsoDep/Ndef/Mifare/Felica/Pboc/ISOxxxx 都是些什么鸟玩意?
  13. 第二届亚太应用经济学会博硕士论文研讨会长沙落幕
  14. linux 磁盘格式化xfs,大磁盘分区格式化XFS文件系统
  15. java bounds_Java Bounds.intBounds方法代码示例
  16. uniapp实现苹果支付流程
  17. VS2010的Ribbon怎样调用透明背景的图标
  18. 解决stm32下载错误 “Could not stop Cortex-M device.Please check the JTAG cable.“
  19. python读取word内容复制粘贴_如何复制word文档的内容?
  20. mysql 按拼音码查询,MySQL拼音首字母查询

热门文章

  1. 电脑显示没有被指定在上运行_游戏编年史:这也许是世界上第一款可运行的电脑游戏...
  2. ffmpeg编译gb28181_国标GB28181协议视频推流平台EasyGBD在Linux下编译报“UINT64_C在此作用领域中尚未声明”错误...
  3. 数据库备份DBS 新增Region支持:华北2、华东2和华南1
  4. Microsoft Hyper-V Server 2008 R2和SCVMM2012部署XenDesktop 5.6桌面虚拟化系列之二准备虚拟桌面模板...
  5. input 打开文件夹事件委托
  6. 联发科看上AMD“女友”GF:全新22nm处理器来了
  7. Python - 利用pip管理包
  8. COMBO--组合拳打穿回调地狱~
  9. Mysql基本用法-01
  10. 【JOURNAL】集花酒联