1.1简介—无处不在的投影几何

我们都熟悉射影变换。当我们看一幅图,我们看到的方形不是方形,或圆形不是圆形。平面立体映射到图片上的变换是一个投影变换的例子。

因此投影变换时保留的几何属性是什么呢?当然,不是形状,例如圆形可能呈现出椭圆形。长度也不是,一个圆的两个垂直半径通过投影变换被不同程度的被拉伸。角度、距离、距离比率——都不被保留,通过投影变换几乎保留了极少的几何特征。然而,投影变换保留了平直度(笔直straightness)属性。事实证明,这是映射最基本的要求,我们可以定义一个平面的投影变换正如任意点在平面上的映射都将保留直线。

为了明白我们为什么需要投影变换,我们从熟悉的欧式几何开始。欧式几何描述了目标物体的角度和形状,有时欧式几何在一些主要方面比较麻烦,我们需要创造出一个例外来推出一些基本几何概念——如交叉线。任意两条直线(在此我们认为是二维几何平面)几乎会相交于一点,但有一对直线不会相交,我们称之为平行线。通常人们说平行线将会相交于无穷远处。然而,这并不能令人完全信服,因为它与“无穷并不存在,这只是一个方便的假设”这一说法冲突。我们可以通过增加在无穷远处平行线相交的点(称之为“理想点ideal points”)优化欧式几何平面从而绕开这些冲突并解决无穷远的问题。

通过在无穷远处增加这些点,熟悉的欧式几何空间被转换为一种新类型的几何对象,投影空间。这是非常有用的思维方式,因为我们熟悉欧式几何空间的属性,例如相关的距离、角度、点、线和入射(incidence)概念。因此投影空间就没什么神秘的,它仅仅是欧式几何空间的扩展,表示两条直线总会相交于一点,尽管有时神秘点在无穷远处。

坐标:在欧式几何的二维空间中,一个点被表示为实数的有序对偶(x,y),我们增加了另外坐标扩展成新的三元组坐标(x,y,1),用该三元组坐标代表该点原来的坐标(x,y)。这样做是没关系的,因为我们可以通过这种坐标表示方法表示出另一种坐标表示方法,只需要添加或者删除最后一个坐标。现在我们需要重点说明为什么最后一个坐标必须标为1——毕竟,其余两个坐标并不是很受约束。如果坐标是(x,y,2)呢?在这里,我们做一个定义,认为(x,y,1) 与(2x,2y,2)代表同一个点,同时对于非零值k,(kx,ky,k)也代表同一个点。点可以用等价的坐标来表示,即两个等价三元组坐标相差公倍数,它们被称为点的齐次坐标。给定一个三元组坐标(kx,ky,k),可以通过除以k值得到原始的二维坐标(x,y)。

读者也许明白尽管(x,y,1)代表点(x,y),但是没有点对应三元组坐标(x,y,0)。如果我们尝试除以最后一个坐标0,将得到在无穷远的点(x/0,y/0)。这解释了点如何在无穷远处出现,齐次坐标的最后一个坐标为0表示无穷远点。

我们知道了如何将二维欧式几何空间扩展为用齐次向量表示投影空间,便可以很清楚的知道在任意维度都可以做相同的扩展。欧式空间IRn可以被扩展到通过齐次向量表示点的投影空间IPn。无穷远的点在二维投影空间中形成线,通常称为无穷远直线,在三维空间中形成无穷平面。

齐次性:在传统的欧式几何中所有的点是一样的,是没有区别的,整个空间是齐次的。当坐标被增加,表面上看是挑选了一个点作为原点。然而,意识到这仅仅是一种特别的坐标表示框架被选择是非常重要的。我们也可以找到不同的方法表示以不同点作为原点的平面坐标。实际上,我们也可以考虑通过坐标轴平移或旋转到不同位置从而在欧式几何空间中改变坐标。我们也可以认为这是空间本身变换和旋转到不同位置的另一种方式,由此产生的操作被称为欧氏变换。

一种更为普遍的变换是IRn空间的线性变换,之后通过欧氏几何变换移动空间原点起源。我们可能认为这是空间平移、旋转,最后在不同的方向以不同的比例进行线性拉伸。这种变换结果被称为仿射变换(affine transformation)。

原创,转发请注明https://home.cnblogs.com/u/nannan-yhx/

有问题的地方欢迎指正~在此分享给大家。

Multiple View Geometry in Computer vision 1.1节部分翻译的更多相关文章

  1. Multiple View Geometry in Computer Vision Second Edition by Richard Hartley 读书笔记(二)

    // Chapter 2介绍的是2d下的投影变换,摘录下了以下定理 Result 2.1. The point x lies on the line l if and only if xTl = 0. ...

  2. Multiple View Geometry in Computer Vision Second Edition by Richard Hartley 读书笔记(一)

    var bdots = "../" var sequence = [ 'l1', 'l2', 'l3', 'l4' ]; Chapter1是个总览,引出了射影几何的概念,通过在欧式 ...

  3. Computer Vision Algorithm Implementations

    Participate in Reproducible Research General Image Processing OpenCV (C/C++ code, BSD lic) Image man ...

  4. Computer Vision Resources

    Computer Vision Resources Softwares Topic Resources References Feature Extraction SIFT [1] [Demo pro ...

  5. Computer Vision Tutorials from Conferences (3) -- CVPR

    CVPR 2013 (http://www.pamitc.org/cvpr13/tutorials.php) Foundations of Spatial SpectroscopyJames Cogg ...

  6. paper 156:专家主页汇总-计算机视觉-computer vision

    持续更新ing~ all *.files come from the author:http://www.cnblogs.com/findumars/p/5009003.html 1 牛人Homepa ...

  7. Analyzing The Papers Behind Facebook's Computer Vision Approach

    Analyzing The Papers Behind Facebook's Computer Vision Approach Introduction You know that company c ...

  8. Computer Vision Tutorials from Conferences (2) -- ECCV

    ECCV 2012 (http://eccv2012.unifi.it/program/tutorials/) Vision Applications on Mobile using OpenCVGa ...

  9. Computer Vision Tutorials from Conferences (1) -- ICCV

    ICCV 2013 (http://www.iccv2013.org/tutorials.php) Don't Relax: Why Non-Convex Algorithms are Often N ...

随机推荐

  1. appium 等待方法 转

    前些日子,配置好了appium测试环境,至于环境怎么搭建,参考:http://www.cnblogs.com/tobecrazy/p/4562199.html   知乎Android客户端登陆:htt ...

  2. MySQL自定义函数例子

    -- 根据ID查询对应行的name CREATE FUNCTION function_first (id INT) --创建 BEGIN --开始 ); --声明变量,必须写在第一行,每一个变量最好单 ...

  3. Jquery实现账单全部选中和部分选中管理

    在做购物车系统是我们往往会遇到这样一个需求,在点击全选框时我们要将全部的单个账单都选中;在单个选中账单时,如果账单全部被选中则需要全选框处于选中状态,若没有全部被选中则全选框处于没选中状态; 以下是在 ...

  4. Linux压缩与解压常用命令

    欢迎和大家交流技术相关问题: 邮箱: jiangxinnju@163.com 博客园地址: http://www.cnblogs.com/jiangxinnju GitHub地址: https://g ...

  5. javascript中this指针

    看完此片文章豁然开朗,非常感谢.javascript技术难点(三)之this.new.apply和call详解 下面说一说自己的理解: this指针总是指向调用他的对象,其实我更愿意理解为:this指 ...

  6. SpringMVC拦截器(资源和权限管理)

    1.DispatcherServlet SpringMVC具有统一的入口DispatcherServlet,所有的请求都通过DispatcherServlet.    DispatcherServle ...

  7. 关于classList的API

    <body class="a b c"> ...... </body> document.body.classList可以取得body的classList属 ...

  8. jquery.fullPage.js全屏滚动插件教程演示

    css部分(此处需要导入jquery.fullPage.css) <style> .section { text-align: center; font: 50px "Micro ...

  9. Groovy中文教程(链接收藏)

    学习Gradle前,需要有一个Groovy语言的基础,以免被Groovy的语法困扰,反而忽略了Gradle的知识.这里有一个Groovy的简明中文教程文档,可以快速学习Groovy的一些语法:http ...

  10. 为Node.js编写组件的几种方式

    本文主要备忘为Node.js编写组件的三种实现:纯js实现.v8 API实现(同步&异步).借助swig框架实现. 关键字:Node.js.C++.v8.swig.异步.回调. 简介 首先介绍 ...