本章主要介绍本书必要的几何知识与符号
行向量与列向量 本书默认所有向量的都是列向量, 比如$x$, 那么$x^T$就是行向量. 对于一个行向量$(x,y)$, 我们就有$x=(x,y)^T$.
线段的齐次坐标 线是由方程$ax+by+c=0$组成的, 所以我们就用$(a,b,c)^T$来表示线段. 但是$(a,b,c)^T$不能唯一表示一条线段, 因为$(a,b,c)^T$与$k(a,b,c)^T$表示一样的线段 (
点的其次坐标 直线方程是$ax+by+c=0$, 那么可以写成$(x,y,1)(a,b,c)^T$, 那么这个$(x,y,1)$就是点的齐次坐标.
结论2.1 点在直线上当且仅当$x^T l = 0$
自由度 自由度就是这个几何体可以由几个自由变化的变量来表达, 比如点的自由度就是2, 因为指定$x,y$就够了, 线的自由度也是2, 这是因为虽然线有三个变量, 但是他们之间的比例是$a:b:c$. 类似线性无关的变量的个数.
直线的交点 两个直线$l=(a,b,c), l'=(a',b',c')$, 他们的交点就是$l \times l'$
两个点确定的直线 两个点$x,x'$, 他们确定的直线就是$x \times x'$
平行线的交点 如果我们考虑两个平行线的交点$ax+by+c=0,ax+by+c'=$, 做叉乘, 我们会得到$(c'-c)(b,-a,0)$, 如果我们忽略尺度因子$(c'-c)$, 那么平行线的交点就在$(b,-a,0)$, 我们再把这个齐次坐标变成非齐次, 那么就得到$(b/0,-a/0)$, 这点就在无穷远处, 所以我们说平行线就是在无穷远处相交.
理想点与无穷远的直线 我们考虑任一个点$(x_1,x_2,x_3)$, 把$x_3=0$, 那么$(x_1,x_2,0)$就是无穷远处的所有点, 这些点都落在一个直线上, 那就是$l_{\infty}=(0,0,1)$.
我们紧接着考虑任意一条直线$l=(a,b,c)$,
二维投影平面的几何模型 (可以先把书翻到p29 看fig2.1) 投影平面可以想象为三维空间中射线的集合. 可以从三个射线上挑出三个点, 并且让他们共面, 那么其他的射线都与该平面有交点. 所以该平面就是由射线上的点组成的. 射影平面上的线就是过原点的平面和射影平面的交点. 任意两个不同射线处于同一平面上, 任意两个不同的平面相较于一个射线. 可以类比两直线交于一点,两点确定一直线.
最后一点, 无穷远处的理想点和直线平行于平面$x_3=1$
线段与点的对偶性 点与线段的角色其实可以是互换的. 比如说$l^T x=0$ 可以写成$x^T l = 0$
圆锥描述了平面上的二次方程. 欧氏几何主要三种:抛物线, 双曲线, 椭圆. 在二维摄影几何里, 这三种都是等价的.
我们首先把圆锥写成其次表达式
圆锥就可以写成$x^TCx=0$ 圆锥有五个自由度
五个点确定一个圆锥 我们把圆锥换一个方式写,用$x=x_1/x_3,y=x_2/x_3$, 可以得到: $$ (x_i^2, x_i y_i y_i^2 x_i y_i 1)c=0\ c=(a,b,c,e,d,f) $$
需要五个方程解出$c$,因为$c$的自由度是5
和椭圆相切的直线, 直线就是$l=cx$
对偶圆锥 在前文中$c$定义的圆锥是点组成的圆锥. 我们可以定义一个由直线组成的圆锥$c^$, 这个圆锥就是由所有和$c$相切的直线组成的. $c^=c^{-1}$
定义2.9 投影变换$h$是一个从二维投影空间到二维投影空间的变换, 它满足一个性质: 如果$x_1,x_2,x_3$变换前在一条直线上当且仅当变换后的他们$(h(x_1),h(x_2),h(x_3))$还在一条直线上.
根据这个定义, 投影变换也叫共线性. 投影变换和单应性是同一个意思
书中还介绍了另外一种从代数角度来定义的办法. 我觉得原书中写的比较拗口, 通俗来说就是任何一个$3 \times 3$的非奇异矩阵$H$都定义了一个投影变换
从几何角度来解释, 投影变换其实定义了一个平面到平面的映射, 因为我们知道,投影几何的就是由平面定义的. 而且前文也说了, 投影变换保持了共线性. 如果说这两个平面上的坐标系都是欧式坐标系. 那么这个投影变换就变成了6个自由度的透视变换.
我们直接上结果: 一个点有如下变换$x'=Hx$,那么线变换就是$l'=H^{-T} l$, 圆锥变换就是$x^TCx = x'^T H^{-T}CH^{-1}x'$, 所以$C=H^{-T}CH^{-1}$, 其对偶圆变换就是$C*'=HC^{*}H^T$
本节时一个重点章节
\left[ \begin{matrix} \epsilon \cos \theta & -\sin & t_x \ \epsilon \sin \theta & -\cos & t_y \ 0 & 0 & 1 \end{matrix}
\right]
\left( \begin{matrix} x\ y\ 1 \end{matrix}
\right)
$$
\left[ \begin{matrix} R & t \ 0^T & 1 \ \end{matrix} \right] x $$
其形式如下:
\left[ \begin{matrix} s \cos \theta & -s \sin & t_x \ s \sin \theta & s \cos & t_y \ 0 & 0 & 1 \end{matrix}
\right]
\left( \begin{matrix} x\ y\ 1 \end{matrix}
\right) $$
\left[ \begin{matrix} sR & t \ 0^T & 1 \ \end{matrix} \right] x $$
整个矩阵四个自由度:缩放因子一个,旋转一个,平移两个. 其不变量是: 线段之间角度, 平行线还是平行的, 线段之间的比例不变, 因为是对整个图形进行缩放. 不同区域之间的面积也不变.
\left[ \begin{matrix} a_{11} & a_{12} & t_x \ a_{21} & a_{22} & t_y \ 0 & 0 & 1 \end{matrix}
\right]
\left( \begin{matrix} x\ y\ 1 \end{matrix}
\right) $$
\left[ \begin{matrix} A & t \ 0^T & 1 \ \end{matrix} \right] x $$ 整个矩阵六个自由度. 左上角$A$四个, 平移两个.
所以$A$可以被解释为先旋转一个角度$\phi$, 再从$x,y$两个方向进行缩放,其比例因子为$\lambda_1, \lambda_2$, 再按$-\phi$旋转回去, 再转一个$\theta$
由于进行了压缩, 那么线段之间的角度就变了, 只能是保持直线之间的平行性, 直线之间比例, 面积的比例.
\left[ \begin{matrix} A & t \ v^T & v \ \end{matrix} \right] x $$
整个大矩阵8个自由度. 其不变量只能是直线变换以后还是直线.
整个投影变换矩阵可以分解成三个小矩阵的乘机 $$ H = H_S H_A H_P \ = \left[ \begin{matrix} sR & t \ 0^T & 1 \ \end{matrix} \right]
\left[ \begin{matrix} K & 0 \ 0^T & 1 \ \end{matrix} \right]
\left[ \begin{matrix} I & 0 \ v^T & v \ \end{matrix} \right]
\left[ \begin{matrix} A & t \ v^T & v \ \end{matrix} \right] $$
前文我们讨论了在某某变换下, 几何体有多少不变量. 那么这个不变量到底怎么计算? 我们有以下结论
结论2.16 几何体的不变量大于等于几何体的自由度减去变换的自由度.
举个例子, 空间中四个点,有8个自由度, 因为每个点2个. 那么几何体的不变量就是: 几何体的自由度8, 减去变换的自由度. 如果我们假设变换是相似变换, 那么答案就是8-4=4 (相似变换4个自由度). 假设变换时仿射变换, 答案就是8-6=2 (仿射变换6个自由度)
一维空间投影几何那就是点$bar{x}=(x_1,x_2)$,其中$x_2=0$, 一维空间单应矩阵就是 $$ \bar{x}'=H_{2 \times x} \bar{x} $$
\frac{|\bar{x_1} \bar{x_2}| |\bar{x_3} \bar{x_4}|} {|\bar{x_1} \bar{x_3}| |\bar{x_2} \bar{x_4}|} $$
其中 $$ |\bar{x_i} \bar{x_j}|= \det \left[ \begin{matrix} x_{i1} & x_{j1} \ x_{i2} & x_{j2} \end{matrix} \right] $$
交叉比有这么几个性质:
- 交叉比和用什么坐标系表示无关
- 交叉比中的点都是$x_2=1$, 他们不是无穷远处的点
- 交叉比对理想点也成立
- 交叉比在任何投影变换下都是不变的
共点线
共点线就是有共同起点的线,然后多找一条线, 和所有共点线相交, 这样就可以的定义交叉比了
本节主要是为了移除投影变换带来的性质丢失, 把图像从投影变换恢复到相似变换, 所以平行线, 线段和面积的比例等等性质得以保留.
因为我们知道投影变换只比相似变换多4个自由度, 那么我们只需要恢复4个自由度就好了. 这四个自由度从哪里来? 无穷远处的线提供2个, 还有两个无穷远处的绝对点, 因为在相似变换下他们是不变的. 也可以叫圆锥点, 因为任何一个圆锥都和无穷远处的线相交于这两点
在投影变换下, 无穷远处的线会被投影到非无穷远处. 无穷远处的线在仿射变换下是不变的, 也就是说经过仿射变换, 它还在无穷远处. 但是线上点的位置变了, 只不过点都在无穷远处.
经过上一节, 我们知道要恢复仿射性质就要找出无穷远处的线. 那么, 我们首先明确, 摄像机是一个投影变换, 那么该线就会被映射到图像坐标系的某一个地方. 我们先找到这个地方, 然后利用2.7.1的性质, 建立一个方程.
假设无穷远处的线被映射到了$l=(l_1,l_2,l_3)$, 我们已知无穷远处线的坐标是$(0,0,1)$ 而且该线在仿射变换下不变, 那么我们就构造一个矩阵 $$ H=H_A \left[ \begin{matrix} 1 & 0 & 0 \ 0 & 1 & 0 \ l_1 & l_2 & l_3 \end{matrix} \right] $$
那么接下来的问题就是说怎么找$l$, 我们从图像中找出两个平行线, 将其延长, 他们肯定相交,这样就是一个点. 再重复一遍.这样就有两个点, 这两个点就确定了$l$. 书上还有另外一个办法, 在P51, Example 2.20
什么是椭圆点我们已经介绍了, 所以现在我们来看一下它长什么样 我们用$I,J$来表示,$I=(1,i,0),J=(1,-i,0)$, 这个点为啥不变呢? 因为有如下式子 $$ I' = H_s I \
\left[ \begin{matrix} s \cos \theta & -s \sin \theta & t_x \ s \sin \theta & s \cos \theta & t_x \ s 0 & 0 & 1 \ \end{matrix} \right]
\left( \begin{matrix} 1 \ i \ 0 \end{matrix} \right) \ = s e^{-i \theta} \left( \begin{matrix} 1 \ i \ 0 \end{matrix} \right) \ = I $$
根据上式 我们有如下结论: 结论2.21 椭圆点$I,J$在投影变换下保持不变当且仅当投影变换是相似变换.
这两个点是怎么找出来的? 是圆锥方程与$l_{\infty}$的交点
由圆锥点定义的对偶圆锥 我们可以利用$I,J$来定义一个圆锥 $$ C^_{\infty} = IJ^T+JI^T $$
这个$C^*_{\infty}$是由直线组成的圆锥, 是2.2.3节线圆锥的退化情况. 那么它关于谁对偶呢? 它是圆锥点的对偶.
$C^_{\infty}$在相似变换下也是不变的. 所以我们可以有以下结论: 结论2.22 圆锥点$C^_{\infty}$在投影变换下保持不变当且仅当投影变换是相似变换.
$C^{\infty}$还有两个性质, 第一, 他有四个自由度, 第二,$l{\infty}$是$C^_{\infty}$的零向量
假设有两条直线$l=(l_1,l_2,l_3)^T$,
如果对$l,m$施加投影变换, 上式就不适用了, 为了在投影变换之后还可以计算角度, 我们有以下式子存在 $$ \cos \theta = \frac{l^T C^_{\infty} m}{\sqrt{(l^T C^{\infty} l)(m^T C^*{\infty} m)}} $$
所以说我们知道了$C^*_{\infty}$就可以计算出线段或者平面之间的角度 (结论2.23).
书中还有一个很明显的结论: 如果$l^T C^*_{\infty} m=0$,那么
度量性质就是指角度, 线段之间的比例等等. 主要是用$C^_{\infty}$, 这是因为在投影变换之下, 有下式存在 $$ C^{'}{\infty} = (H_P H_A H_S) C^*{\infty} (H_P H_A H_S)^T \
\left[ \begin{matrix} KK^T & KK^Tv \ v^TKK^T & v^TKK^Tv \end{matrix} \right] $$
具体细节可以参考p56, 例子2.26
本章是重点章节, 介绍了点,线,圆锥之间的关系, 是对极几何的基础.
一个点$x$ 和一个圆锥$C$ 可以确定一条直线$l=Cx$, 这条$l$就叫极线. 注意, 这个点$x$并不在圆锥$C$上,而是在$C$的外边. 过$x$可以向$C$做出两条线 (注意,这个线不是极线,为了区分我把它叫切线). 每一条切线都和圆锥相切. 可以参见书中图p58, 图2.19. 我们可以想象$x$逐渐向圆锥移动, 所以两条切线之间的角度逐渐增大, 当$x$位于圆锥之上, 两条切线就变成了一条切线.
下面介绍另一个概念:点和线的相关性 定义2.29 相关性是从二维投影空间中的点, 到二维投影空间中的线的一个可逆映射. 它是一个$3 \times 3$的非奇异矩阵(非奇异所以可逆), 我们把它表示为$A$, 那么整个相关性就可以表示为$l=Ax$.
这个$A$提供了点和线的关系, 但是$A$不是对称的. 那么如果$A$是对称的, 会是什么情况? 这就引出了共轭点的概念:
共轭点 点$y$在由$x$确定的极线上, 那么$y$和$x$就是共轭点, 表示为$y^T l = y^T Cx=0$,
所以$C$描述的就是点和线之间的关系.
另外共轭点有一个性质:$x$如果在$y$的极线上,
我们先从欧氏几何开始回忆, 圆锥可以确定双曲线, 抛物线, 椭圆这三种类别. 他们分别是用平面和圆锥相交形成的. 那么我们如果从投影几何的角度考虑, 用无穷远处的直线来和一个椭圆相交, 如果没有实交点, 那就形成了椭圆, 如果有一个交点, 那就是抛物线, 如果有两个交点, 那就是抛物线.
如果我们从代数的角度考虑, 将$C$用SVD分解,得到$C=U^TDU$,其中$D$就是矩阵的特征值, 把$D$再次SVD分解, 保证$D$的特征值是-1 或1或0, 这样根据$D$特征值的不同, 就得到不同类型的圆锥, 详见P60 表2.2
前文我们知道$l_{\infty}$和椭圆点在投影变换下是不变的. 本章我们来详细讨论一下. 如果把一个变换看成矩阵, 点和线看成向量. 那么什么样的向量在矩阵的作用下不变? 特征值对应的向量. 所以说那些不变的点和线就是投影矩阵的特征向量.
下面分别介绍不同变换中的固定点
欧式变换(刚体变换) 其特征值是{$e^{i \theta}, e^{-i \theta}$}, 固定点是前文提到的椭圆点.
相似变换 其特征值是{1, $e^{i \theta}, e^{-i \theta}$} 固定点是前文提到的椭圆点.
仿射变换固定点可以是实点或者复数点, 但是固定线经过的点$l_{\infty}$是实点