多视图几何笔记

多视图几何笔记(精读1、2、5、6)

Chapter 0射影几何、变换和估计

第一章 2D射影几何和变换

1.1 2D射影平面

在了解射影平面之前他有一些需要交代和定义的东西

  • 直线和点的齐次表示

设直线l = (a,b,c)T(a, b, c)^T代表ax+by+c=0ax + by + c = 0,而点x = (x,y)T(x, y)^T

表示点在线上为

\begin{equation} x^Tl=l^Tx=0 \end{equation}

在上面这个式子中可以很清晰的发现,两个向量的维度是对不上的,这里齐次表示就有用了。

齐次表示:按照我自己的理解,就是增加一个维度,同时这个维度不会影响结果的表达。

比如这里就是应该把点x = (x,y,1)T(x, y, 1)^T,这样就满足上面那个点在线上的表达式了对吧哈哈哈

进一步再想想,把 x 随便操作一下变成(x1,x2,x3)T(x_1, x_2, x_3)^T的形式,按照前面的定义这还是x的齐次表达式吗?

当然是!只要我们保证

\begin{equation} \begin{cases} \begin{aligned} x &= \frac{x_1}{x_3} \\ y &= \frac{x_2}{x_3} \end{aligned} \end{cases} \end{equation}

就没问题!这个(x1,x2,x3)T(x_1, x_2, x_3)^T还是我们的齐次表达式,只不过多了一个尺度因子,大白话就是多一个倍数关系而已。

这里再列举一个例子进一步体会一下齐次表达的美丽

两个平行的直线他们的交点应该在无穷远对吧?

那这里添加在第三个维度上的数值应该是多少呢?还是1?不对吧,咱们从上一个那个(x1,x2,x3)T(x_1, x_2, x_3)^T知道,所谓齐次其实就是在多加了一个维度,然后保证能够通过多加的那个维度上的尺度因子恢复到原来的向量,没问题!

进一步想一下,两个平行线的交点在无穷远,也就是上面的x和y都要无穷大,如果现在是(x1,x2,x3)T(x_1, x_2, x_3)^T的形式,这个x3x_3要等于什么才可以使得前面两个东西无穷大?

对!就是0!x10\frac{x_1}{0}一定是无穷大!所以我们进而也提前得到了另一个重要结论,就是在当前空间内的无穷远点可以用齐次项为0的方式去表达,也就是(x,y,0)T(x, y, 0)^T

这里继续列举一些常用的结论,不加证明了

  • 结论1.1:点x在直线l上的表达式为xTl=0x^Tl=0

  • 结论1.2:两个直线l和**l’**上交点的表达式为x=l×lx=l \times l'

  • 结论1.3:过两点的直线l的表达式为l=x×xl = x \times x'(用到了对偶定理)

  • 定义:理想点表示为(x1,x2,0)T(x_1, x_2, 0)^T,无穷远直线表示为l=(0,0,1)Tl_{\infty}=(0 , 0, 1)^T

  • 结论1.4:点在二次曲线上为xTCx=0x^TCx=0,其中

    \begin{equation} \begin{aligned} ax^2 & + bxy + cy^2 + dx +ey + f = 0 \\ C & = \begin{Bmatrix} a & b/2 & d/2 \\ b/2 & c & e/2 \\ d/2 & e/2 & f \end{Bmatrix} \end{aligned} \end{equation}

  • 结论1.5:二次曲线在点 x处的切线由l=Cxl = Cx确定(就一个交点)

补充一个知识,交比(通常来描述直线):

这里是1D射影,所以直线是l=(x1,x2)Tl=(x_1, x_2)^T

来吧!正式进入到射影平面中!

上面这个东西就是射影平面在三维齐次坐标系帮助下的模型表示。看吧,是不是有了齐次坐标,这个东西更加具体了。

我们的射影平面(不如叫射影空间)就相当于由多条过原点射线的集合(这里为啥过原点可以想一想在Linear Algebra中关于Space和subspace哪里讲的东西)。

想要获取上面的点,那就是射线与x3=1x_3 = 1平面的交点,想要获取线,那就是两条射线形成的交点连线。

1.2 射影变换

定义:平丽射影变换是关于齐次 3 维矢量的一种线性变换,并可用一个非奇异矩阵H表示为

\begin{equation} \begin{Bmatrix} x_1' \\ x_2' \\ x_3' \end{Bmatrix} = H_{3 \times 3} \cdot \begin{Bmatrix} x_1 \\ x_2 \\ x_3 \end{Bmatrix} \end{equation}

注意:此方程中的矩阵H乘以任意一个非零比例因子不会使射影变换改变,换句话说H是一个具有齐次性质的矩阵哦!所有H矩阵的自由度也是8。

射影变换将每个图形投影为射影等价的图形,保持所有的射影性质不变。显然这种点到点的映射保持直线不变,只是其中一张平面上的直线被映射到另一张平面上的直线。

注意:如果在两平面上建立的都是欧氏(直角)坐标系,那么这样一种由中心投影定义的映射比一般射影变换有更多的约束,我们称它为透视映射,而不是完全的射影映射。

而且上面说的这种透视映射会造成形状失真,虽然直线还是直线,但是原图中的平行线在图像上会变得不平行并会聚到一个有限点,就像下面两个图所表示。

右边这个是通过逆变换还原实现一个去失真操作,放到后面去讨论。

这里还有一些H矩阵的应用示例。除了对点有H矩阵,其实线、二次曲线H矩阵都有变换公式,在x=Hxx' = Hx的变换下有

\begin{equation} \begin{aligned} l' &= H^{-T}l \\ C' &= H^{-T}CH^{-1} \end{aligned} \end{equation}

接下来要谈一谈几种射影变换的特殊情况以及对应几何性质

  • 射影线性群:PL(3),这里3是指平面射影变换,这个群包含了各种各样的射影变换矩阵,并且他们都满足H矩阵所有的齐次线性性,PL(3)的重要子群包括仿射群和欧氏群
    • 仿射群:最后一行为(0, 0, 1)
    • 欧氏群:左上角2×22 \times 2为正交矩阵,特别地,如果还有行列式为1,则是定向欧式群
  1. 等距变换(Isometric Transformation)

    不要误会,里面那个小e不是1就是-1,用来决定变换的时候要不要保证方向不变。注意,经过变换后长度、面积、角度都不变

  2. 相似变换

    可以看到这里有一个缩放因子s,所有长度、面积都会受到影响,不变的是夹角、平行关系这些,注意还有就是长度、面积虽然被影响,但是他们的比率不变,因为这个因子会被抵消。

  3. 仿射变换

    而且仿射变换总能被分解为

    这个变换过程就是先转,然后按照轴进行缩放,再转回来,然后再转一个新的角度

    线段的长度、角度肯定会变化,因为勾股定理。其中不变的是平行关系、平行线的长度比以及面积比值

  4. 射影变换:就是之前最一般地H矩阵,没有花里胡哨的性质

    通常射影变换是可以分解的

    分别对应着相似变换、仿射变换、射影变换,书上很善良地给我们一个例子