本章主要讲述除了点以外的几何体, 在投影变换下的性质.这些几何体包括:平面, 线, 圆锥曲线, 二次曲线.
讲到这里就明白了, 为啥投影几何这么重要, 因为摄像机就是一个投影几何模型. 为啥无穷远平面$\pi_{\infty}$重要, 因为它在投影变换下保持不变. 它只和摄像机内参有关系.
同时,
对于空间中的平面$x_{\pi}$, 我们可以先考虑一个特殊的, 也就是$xy$平面, 没有$z$坐标. 所以,
空间中的线和摄像机中心定义了一个平面, 该平面和成像平面交于一点. 所以说, 如果空间里有两个点A,B, 他们在图像上的坐标是a,b, 那么由A,B构成的直线$X(\mu)=A+\mu B$就被转换到$a+\mu b$.
如果我们反过来, 图像上一个线$l$, 反投影回去, 就会形成一个平面, 可以表示为$P^T l$
首先我们明确为啥不是圆锥曲线的投影,而是反投影? 因为圆锥曲线投影到图像上是不变的.
其次我们说, 一个圆锥曲线C反投影到空间中, 就成了圆锥Q.
光滑曲面上的点投影到图像上, 其轨迹是一条射线, 该射线于光滑曲面相切. 如果一个线和该点在图像上相切, 反投影回去也会和曲面相切.
二次曲线Q在P的作用下就会变成圆锥曲线:
为什么重要, 因为通过同一个相机中心获取的多个图像之间存在平面变换关系.
比如说我们做一个纯旋转, 没有平移, 那么同一个点在两个不同图像之间的关系可以表达为以下:
如果我们做个纯平移,对物体缩放一个k, 那么就相当于给内参矩阵$K$乘以一个对角矩阵右乘一个$diag(k,k,1)$
我们首先来讨论一个问题, 如果已知内参K, 那么图像点x反映射回去就是一个射线, 该射线的方向就是$d=K^{-1} x$. 那么我们如果考虑两条射线间的角度$\cos \theta$ ,它其实就可以用相机内参来表示.
接下来我们考虑绝对圆锥在图像上的投影. 我们先看$\pi_{\infty}$,
所以说无穷远处平面投影到图像上的矩阵就是$H=KR$, 那么利用这么结果, 我们可以考虑$\pi_{\infty}$上的圆锥C. 我们知道点x被H投影到可以表示为$x \rightarrow Hx$, 那么C就会变成$H^{-T} C H^{-1}$, 我们把H 替换成KR, 就会得到$C=(KK^T)^{-1}$
由此我们可以看出绝对圆锥曲线只依赖于相机内参, 所以知道了绝对圆锥曲线的表达式, 就可以恢复出相机内参.
然后图像上两点形成的射线之间的角度也可以通过绝对圆锥计算出来.
那么问题来了, 如果知道绝对圆锥曲线的表达式呢? 我们可以找三个正方形, 然后拍一个图像. 每个正方形世界坐标的四个点可以认为是$(0,0),(1,0),(0,1),(1,1)$, 然后我们再找出正方形在图像坐标系下的四个点, 计算一个$H$.
然后, 绝对圆锥曲线上还有两个虚点,分别是$(1,i,0),(1,-i,0)$, 我们也给他乘上H, 得到$H(1,\pm i,0)$, 这样一个H提供2个虚点, 三个H就是6个虚点, 用这6个虚点去拟合一个方程
上文提到绝对圆锥曲线是可以用来计算线段之间角度的. 那么我们有这样一个结论, 一个点x反投影成了一条射线, 一个线l反投影成了一个平面. 射线如果与平面相切, 那么有如下等式存在$l=\omega x$
消失点是怎么形成的? 可以说消失点是两个平行线交点形成的. 我们也可以说, 消失线是图像平面与一个和地平面平行的射线相交形成的. 所以消失点的方向是重要的, 位置不重要,因为他在无穷远处.
我们假设三维空间有一点A, 他的方向是$D=(d^T,0)^T$, 那么该点和方向形成的线就表示成$X(\lambda)=A+\lambda D$, 如果我们再乘上P, 就有 $$ x(\lambda) = PX(\lambda)=PA+\lambda PD=a + \lambda Kd $$
令$\lambda \rightarrow \infty$, 上式的极限就是Kd, 这个极限记为$v$,
那么具体给一个图像, 我们怎么找出$v$? 很简单, 从图中找到若干条平行线, 把他们延长, 交点就是$v$
平行的平面与$\pi_{\infty}$ 相较于一条直线, 这就是消失线. 消失线同样只取决平行平面的方向, 而不是位置. 消失线有一些性质:
- 一个通过相机中心的平面, 其法向量是$n$, 那么消失线就是$l=K^{-T} n$
- 两个平面之间的夹角可以由他们对应的消失线来计算. 见书中式8.14
具体一点, 我们怎么找消失线? 很简单, 找两个消失点, 然后连起来就行了, 因为消失点都落在消失线上
- 如果两个线垂直, 那么他们的消失点满足$v_1^T \omega v_2=0$
- 如果一个线和平面垂直, 那么他们对应的消失点和消失线满足$l= \omega v$
- 两个垂直的平面, 他们对应的消失线满足$l_i^T \omega l_2=0$
比方说我们已知一个消失线l,还有图像中的两个点, 我们可以只用图像就测出来两点之间线段的长度,具体细节参见p222页的算法
前文我们说过, 求出绝对圆锥曲线$\omega$, 我们就知道了内参$K$. 除了前文所述的用点拟合, 我们还可以用消失点和消失线来提供一些约束, 在书中224页提供了6种约束, 每一种约束都可以表达成一个方程, 所以我们可以这样求解$\omega$
我们先把$\omega$写成一个向量$w=(w_i),i=1,2,3,4,5,6$, 然后224页的6种约束, 每一个都可以写成$a^T w = 0$, 这样就有6个方程组, 6个未知数, 用SVD分解就可以求出$\omega$, 知道了$\omega$ 再把它用cholesky 分解就求出了内参
略
绝对圆锥曲线是一个想象出来的东西, 所以我们看不见. 但是非要把它画出来的话, 应该怎么办呢?
我们找一个他的替代品, 叫标定圆锥曲线, 它的图像是一个与x轴成45度的圆锥. 他的方程就是 $$ C= K^{-T} \left[ \begin{matrix} 1& & \ & 1& \ & &-1 \end{matrix} \right] K^{-1} $$