凡是接触过射影几何的人一定不会对交比(cross ratio)陌生,因为交比是射影变换(projectivity)最重要的不变量之一。在谈论交比之前,先回顾一下射影几何。射影变换是一种线性变换(实数矩阵 \(\pmb P\)),将 \(n\) 维实空间的向量 \(\pmb X\) 映射到 \(m\) 维实空间的向量 \(\pmb x\), 即 \(\pmb{x}=\pmb{PX}\) 。其中,\(\pmb P\) 为 \((m+1)\times(n+1)\) 的齐次变换矩阵,\(\pmb X\) 和 \(\pmb x\) 分别为维度 \(n+1\) 和 \(m+1\) 的齐次向量坐标。齐次坐标使用 \(n+1\) 个有序数表示 \(n\) 维空间的向量 \(\pmb X\), 具有缩放不变性,即 \(\pmb{X}=s\pmb{X}\), 其中 \(s\) 为非零实数。同样齐次变换矩阵 \(\pmb P\) 也满足缩放不变性,即 \(\pmb{P}=s\pmb{P}\) 。当 \(\pmb P\) 为方阵且满秩时,射影变换 \(\pmb{x}=\pmb{PX}\) 表示 \(n\) 维空间到自己的映射(非点点对应),变换可逆,\(\pmb x\) 和 \(\pmb X\) 在射影变换下等价。此时变换 \(\pmb P\) 也被称为单应性(Homography)。射影变换又被称为共线变换(collineation),即共线的点在射影变换下依然保持为共线点。一般意义下,射影变换、共线变换、单应变换说的是同一个意思。

下面在射影平面内引入交比。从二维平面到自己的射影变换 \(\pmb H\) 为 3 阶方阵,变换 \(\pmb{x}‘=\pmb{Hx}\) 将平面内的点按照共点直线投影的方式重新组织在一个平面内。在射影平面内,点和线均由三维齐次坐标表示,并且互为对偶元素(在三维空间中,点和面由四维齐次坐标表示,并互为对偶;线自对偶)。两个点确定一条直线,若直线 \(\pmb l\) 过 \(\pmb{p}_1\) 和 \(\pmb{p}_2\) 两点,则有 \(\pmb{l} = \pmb{p}_1 \times \pmb{p}_2\) 。在直线上的任何一点 \(\pmb{p}\) 都可以由 \(\pmb{p}_1\) 和 \(\pmb{p}_2\) 的线性组合表示,即 \(\pmb{p}=u\pmb{p}_1+v\pmb{p}_2\), \(u\) 和 \(v\) 为实数。这样就得到了直线上任意点的参数化坐标 \(\hat{\pmb{p}}=[u,v]^T\) ,因此参考点的坐标为 \(\hat{\pmb{p}}_1=[1,0]^T,\ \hat{\pmb{p}}_2=[0,1]^T\) 。

共线点的交比

设 \(\pmb{p}_1,\ \pmb{p}_2,\ \pmb{p}_3,\ \pmb{p}_4\) 是四个共线点,它们的参数化齐次坐标分别为 \(\hat{\pmb{p}}_i=[u_i,v_i]^T,\ i=1,2,3,4\) 。定义四点的交比为:

\begin{equation} \label{eqn.point_cross1} (\pmb{p}_1,\ \pmb{p}_2;\ \pmb{p}_3,\ \pmb{p}_4) = \frac{\det(\hat{\pmb{p}}_1,\ \hat{\pmb{p}}_3) \det(\hat{\pmb{p}}_2,\ \hat{\pmb{p}}_4)} {\det(\hat{\pmb{p}}_2,\ \hat{\pmb{p}}_3) \det(\hat{\pmb{p}}_1,\ \hat{\pmb{p}}_4)} \end{equation}

下面证明,共线点交比不依赖于参数化坐标(直线坐标系)的选择。

设直线上两个参考点的齐次坐标分别为 \(\pmb{a},\ \pmb{b}\) 。四个点 \(\pmb{p}_1,\ \pmb{p}_2,\ \pmb{p}_3,\ \pmb{p}_4\) 在给定点 \(\pmb a\) 和 \(\pmb b\) 的参数化坐标为 \(\hat{\pmb{p}}_i=[u_i,v_i]^T\) 。选择另外两个参考点 \(\pmb{a}'\) 和 \(\pmb{b}'\) ,以及四个点的参数化坐标 \(\hat{\pmb{p}}_i'=[u_i’,v_i’]^T\) 。令新的参考点 \(\pmb{a}'\) 和 \(\pmb{b}'\) 在旧坐标系 \(\pmb a\) 和 \(\pmb b\) 下的坐标分别为 \(\hat{\pmb{a}}‘=[\alpha_1,\beta_1]^T,\ \hat{\pmb{b}}‘=[\alpha_2,\beta_2]^T\) 。即 \(\pmb{a}‘=\alpha_1\pmb{a}+\beta_1\pmb{b},\ \pmb{b}‘=\alpha_2\pmb{a}+\beta_2\pmb{b}\) 。取 \(\pmb{H}=[\hat{\pmb{a}}',\ \hat{\pmb{b}}']\) ,显然 \(\det(\pmb{H})\neq 0\) ,否则 \(\hat{\pmb{a}}'\) 和 \(\hat{\pmb{b}}'\) 线性相关,从而 \(\pmb{a}'\) 和 \(\pmb{b}'\) 重合成一个点。另外有 \(\pmb{p}_i=u_i’\pmb{a}‘+v_i’\pmb{b}‘=(\alpha_1 u_i'+\alpha_2 v_i’)\pmb{a}+(\beta_1 u_i'+\beta_2 v_i’)\pmb{b}=u_i\pmb{a}+v_i\pmb{b}\) 。

得到坐标变换关系:\(u_i=\alpha_1 u_i'+\alpha_2 v_i’,\ v_i=\beta_1 u_i'+\beta_2 v_i’\) ;即 \(\hat{\pmb{p}}_i=\pmb{H}\hat{\pmb{p}}_i’\) 。代入交比定义式得到: \[ \frac{\det(\hat{\pmb{p}}_1,\ \hat{\pmb{p}}_3) \det(\hat{\pmb{p}}_2,\ \hat{\pmb{p}}_4)} {\det(\hat{\pmb{p}}_2,\ \hat{\pmb{p}}_3) \det(\hat{\pmb{p}}_1,\ \hat{\pmb{p}}_4)} =\frac{\det(\pmb{H}(\hat{\pmb{p}}_1’,\ \hat{\pmb{p}}_3’)) \det(\pmb{H}(\hat{\pmb{p}}_2’,\ \hat{\pmb{p}}_4’))} {\det(\pmb{H}(\hat{\pmb{p}}_2’,\ \hat{\pmb{p}}_3’)) \det(\pmb{H}(\hat{\pmb{p}}_1’,\ \hat{\pmb{p}}_4’))} =\frac{\det(\hat{\pmb{p}}_1’,\ \hat{\pmb{p}}_3’) \det(\hat{\pmb{p}}_2’,\ \hat{\pmb{p}}_4’)} {\det(\hat{\pmb{p}}_2’,\ \hat{\pmb{p}}_3’) \det(\hat{\pmb{p}}_1’,\ \hat{\pmb{p}}_4’)} \] 故四个共线点的交比不依赖于直线坐标系的选择。

由于交比不依赖于直线上的参考点,可以简化交比的计算。对于四个共线点 \(\pmb{p}_1,\ \pmb{p}_2,\ \pmb{p}_3,\ \pmb{p}_4\) ,可以将 \(\pmb{p}_1\) 和 \(\pmb{p}_2\) 选为参考点,\(\pmb{p}_3\) 和 \(\pmb{p}_4\) 的齐次坐标表示为:\(\pmb{p}_3=\pmb{p}_1+\lambda_1\pmb{p}_2,\ \pmb{p}_4=\pmb{p}_1+\lambda_2\pmb{p}_2\) 。则有参数化坐标:\(\hat{\pmb{p}}_1=[1,0]^T,\ \hat{\pmb{p}}_2=[0,1]^T,\ \hat{\pmb{p}}_3=[1,\lambda_1]^T,\ \hat{\pmb{p}}_4=[1,\lambda_2]^T\) 。于是由 \eqref{eqn.point_cross1} 得:

\begin{equation} \label{eqn.point_cross2} (\pmb{p}_1,\ \pmb{p}_2;\ \pmb{p}_3,\ \pmb{p}_4) = \frac{\lambda_1}{\lambda_2} \end{equation}

这是常用的交比计算公式。

在直线上,点的自由度为 1,因此可以简化如下。选择直线上任意两个参考点 \(\pmb a\) 和 \(\pmb b\) ,按照统一的方式对四个共线点 \(\pmb{p}_1,\ \pmb{p}_2,\ \pmb{p}_3,\ \pmb{p}_4\) 进行参数化。即 \(\pmb{p}_i=\pmb{a}+\lambda_i\pmb{b}\), 其中 \(i=1,2,3,4\) 。因此 \(\hat{\pmb{p}}_i=[1,\lambda_i]^T\) ,\(\lambda_i\) 成为 \(\pmb{p}_i\) 的一维坐标(同时 \(\hat{\pmb{a}}=[1,0]^T,\ \hat{\pmb{b}}=[1,\infty]^T\))。于是有:

\begin{equation} \begin{aligned} \label{eqn.point_cross3} (\pmb{p}_1,\ \pmb{p}_2;\ \pmb{p}_3,\ \pmb{p}_4) &= \frac{\det(\hat{\pmb{p}}_1,\ \hat{\pmb{p}}_3)\det(\hat{\pmb{p}}_2,\ \hat{\pmb{p}}_4)}{\det(\hat{\pmb{p}}_2,\ \hat{\pmb{p}}_3)\det(\hat{\pmb{p}}_1,\ \hat{\pmb{p}}_4)} \\\
&=\frac{(\lambda_3-\lambda_1)(\lambda_4-\lambda_2)}{(\lambda_3-\lambda_2)(\lambda_4-\lambda_1)} \end{aligned} \end{equation}

在一维的直线上建立坐标轴,取 \(\pmb a\) 和 \(\pmb b\) 点分别为原点和无穷远点。则齐次坐标为 \(\pmb{a}=[0,1]^T,\ \pmb{b}=[1,0]^T\) 。同上,直线上任一点 \(\pmb{p}=\pmb{a}+\lambda\pmb{b}\) ,\(\lambda\) 为 \(\pmb p\) 的一维笛卡尔坐标。四个共线点的交比为 \((\pmb{p}_1,\ \pmb{p}_2;\ \pmb{p}_3,\ \pmb{p}_4)=\frac{(\lambda_3-\lambda_1)(\lambda_4-\lambda_2)}{(\lambda_3-\lambda_2)(\lambda_4-\lambda_1)}\) 。其中包含了明显的几何意义,如 \(\lambda_3-\lambda_1\) 表示点 \(\pmb{p}_1\) 到 \(\pmb{p}_3\) 的有向线段的长度。如图 1 所示,令 \(\overline{\pmb{p}_1\pmb{p}_3}\) 表示从 \(\pmb{p}_1\) 到 \(\pmb{p}_3\) 的有向线段长度,则交比化为:

\begin{equation} \label{eqn.point_cross4} (\pmb{p}_1,\ \pmb{p}_2;\ \pmb{p}_3,\ \pmb{p}_4) = \frac{\overline{\pmb{p}_1\pmb{p}_3} \cdot \overline{\pmb{p}_2\pmb{p}_4}}{\overline{\pmb{p}_2\pmb{p}_3} \cdot \overline{\pmb{p}_1\pmb{p}_4}} \end{equation}

Figure 1: 共线点与共点线束

Figure 1: 共线点与共点线束

共点直线的交比

根据对偶关系,若两条直线 \(\pmb{l}_1\) 和 \(\pmb{l}_2\) 交于一点 \(\pmb p\) ,则 \(\pmb{p} = \pmb{l}_1 \times \pmb{l}_2\) 。经过定点 \(\pmb p\) 的任何一条直线都可以由 \(\pmb{l}_1\) 和 \(\pmb{l}_2\) 的线性组合表示,即 \(\pmb{l} = u\pmb{l}_1+v\pmb{l}_2\) ,记为参数化坐标 \(\hat{\pmb{l}}=[u,v]^T\) 。与定义共线点的交比一样,也可以定义四条共点直线的交比。设 \(\pmb{l}_1,\ \pmb{l}_2,\ \pmb{l}_3,\ \pmb{l}_4\) 是过定点的直线束中四条不同直线。它们在某两条参考直线下的参数化齐次坐标为 \(\hat{\pmb{l}}_i=[u_i,v_i]^T\) 。定义四条共点直线的交比为:

\begin{equation} \label{eqn.line_cross1} (\pmb{l}_1,\ \pmb{l}_2;\ \pmb{l}_3,\ \pmb{l}_4) = \frac{\det(\hat{\pmb{l}}_1,\ \hat{\pmb{l}}_3)\det(\hat{\pmb{l}}_2,\ \hat{\pmb{l}}_4)}{\det(\hat{\pmb{l}}_2,\ \hat{\pmb{l}}_3)\det(\hat{\pmb{l}}_1,\ \hat{\pmb{l}}_4)} \end{equation}

类似的,四条共点直线的交比也不依赖于直线束的参数化选择。对于四条共点直线 \(\pmb{l}_1,\ \pmb{l}_2,\ \pmb{l}_3,\ \pmb{l}_4\), 将 \(\pmb{l}_1\) 和 \(\pmb{l}_2\) 选为参考直线,\(\pmb{l}_3\) 和 \(\pmb{l}_4\) 的齐次坐标表示为:\(\pmb{l}_3=\pmb{l}_1+\lambda_1\pmb{l}_2,\ \pmb{l}_4=\pmb{l}_1+\lambda_2\pmb{l}_2\) 。则共点直线的交比也可以简化为:

\begin{equation} \label{eqn.line_cross2} (\pmb{l}_1,\ \pmb{l}_2;\ \pmb{l}_3,\ \pmb{l}_4) = \frac{\lambda_1}{\lambda_2} \end{equation}

如图 1 所示,设 \(\pmb O\) 点的齐次坐标为 \([x_0,y_0,1]^T\) ;过 \(\pmb O\) 点平行于 \(x\) 轴的直线 \(\pmb m\) 的方程为 \(y=y_0\), 即 \(\pmb{m}=[0,1,-y_0]^T\); 过 \(\pmb O\) 点平行于 \(y\) 轴的直线 \(\pmb n\) 的方程为 \(x=x_0\), 即 \(\pmb{n}=[1,0,-x_0]^T\) 。令四条共点直线 \(\pmb{l}_1,\ \pmb{l}_2,\ \pmb{l}_3,\ \pmb{l}_4\) 的斜率分别为 \(\pmb{k}_1,\ \pmb{k}_2,\ \pmb{k}_3,\ \pmb{k}_4\), 则直线 \(\pmb{l}_1\) 的方程为 \(y-y_0=k_1(x-x_0)\), 因此 \(\pmb{l}_1=[-k_1,1,k_1x_0-y_0]^T=\pmb{m}-k_1\pmb{n}\), 参数化坐标 \(\pmb{l}_1=[1,-k_1]^T\) 。同理 \(\pmb{l}_2=[1,-k_2]^T,\ \pmb{l}_3=[1,-k_3]^T,\ \pmb{l}_4=[1,-k_4]^T\) 。代入直线的交比定义式得:

\begin{equation} \label{eqn.line_cross3} (\pmb{l}_1,\ \pmb{l}_2;\ \pmb{l}_3,\ \pmb{l}_4) = \frac{(\pmb{k}_1-\pmb{k}_3)(\pmb{k}_2-\pmb{k}_4)}{(\pmb{k}_2-\pmb{k}_3)(\pmb{k}_1-\pmb{k}_4)} \end{equation}

由上式可知,共点直线的交比由其夹角决定。令 \(\widehat{\pmb{l}_1\pmb{l}_3}\) 表示直线 \(\pmb{l}_1\) 到 \(\pmb{l}_3\) 的有向夹角,根据 \eqref{eqn.line_cross3} 可以证明:

\begin{equation} \label{eqn.line_cross4} (\pmb{l}_1,\ \pmb{l}_2;\ \pmb{l}_3,\ \pmb{l}_4) = \frac{\sin(\widehat{\pmb{l}_1\pmb{l}_3})\sin(\widehat{\pmb{l}_2\pmb{l}_4})}{\sin(\widehat{\pmb{l}_2\pmb{l}_3})\sin(\widehat{\pmb{l}_1\pmb{l}_4})} \end{equation}

共线点的交比等价于共点直线的交比

如图 1,选择 \(\pmb{l}_1\) 和 \(\pmb{l}_2\) 为参考直线,取 \(\pmb{l}_3=\pmb{l}_1+\lambda_1\pmb{l}_2,\ \pmb{l}_4=\pmb{l}_1+\lambda_2\pmb{l}_2\) 。则有 \(\pmb{p}_1=\pmb{l}\times\pmb{l}_1,\ \pmb{p}_2=\pmb{l}\times\pmb{l}_2\), \(\pmb{p}_3=\pmb{l}\times\pmb{l}_3=\pmb{l}\times(\pmb{l}_1+\lambda_1\pmb{l}_2)=\pmb{p}_1+\lambda_1\pmb{p}_2\), \(\pmb{p}_4=\pmb{l}\times\pmb{l}_4=\pmb{l}\times(\pmb{l}_1+\lambda_2\pmb{l}_2)=\pmb{p}_1+\lambda_2\pmb{p}_2\) 。由 \eqref{eqn.point_cross2} 和 \eqref{eqn.line_cross2} 可知:

\begin{equation} \label{eqn.line_point} (\pmb{l}_1,\ \pmb{l}_2;\ \pmb{l}_3,\ \pmb{l}_4) = \frac{\lambda_1}{\lambda_2} = (\pmb{p}_1,\ \pmb{p}_2;\ \pmb{p}_3,\ \pmb{p}_4) \end{equation}

此式验证了共线点交比与共点直线交比等价。

射影变换下的交比不变性

假设有射影变换 \(\pmb H\) 将空间点 \(\pmb x\) 映射为 \(\pmb{x}'\), 即 \(\pmb{x}‘=\pmb{Hx}\) 。直线 \(\pmb l\) 上的四个点 \(\pmb{p}_1,\ \pmb{p}_2,\ \pmb{p}_3,\ \pmb{p}_4\) 被映射为直线 l'上的四个点 \(\pmb{p}_1’,\ \pmb{p}_2’,\ \pmb{p}_3’,\ \pmb{p}_4’\) 。其中 \(\pmb{p}_i'=\pmb{Hp}_i,\ i=1,2,3,4\) 。在直线 \(\pmb{l}'\) 上选择 \(\pmb{p}_1’\) 和 \(\pmb{p}_2’\) 为参考点,取 \(\pmb{p}_3'=\pmb{p}_1'+\lambda_1\pmb{p}_2’,\ \pmb{p}_4'=\pmb{p}_1'+\lambda_2\pmb{p}_2’\), 则经过射影变换后四个共线点的交比为: \[ (\pmb{p}_1’,\ \pmb{p}_2’;\ \pmb{p}_3’,\ \pmb{p}_4’) = \frac{\lambda_1}{\lambda_2} \] 又因为 \(\pmb{p}_3'=\pmb{p}_1'+\lambda_1\pmb{p}_2'=\pmb{H}(\pmb{p}_1+\lambda_1\pmb{p}_2)=\pmb{Hp}_3\), \(\pmb{p}_4'=\pmb{p}_1'+\lambda_2\pmb{p}_2'=\pmb{H}(\pmb{p}_1+\lambda_2\pmb{p}_2)=\pmb{Hp}_4\) 。单应变换 \(\pmb H\) 可逆,所以得到 \(\pmb{p}_3=\pmb{p}_1+\lambda_1\pmb{p}_2,\ \pmb{p}_4=\pmb{p}_1+\lambda_2\pmb{p}_2\) 。相应的,在 \(\pmb l\) 上取 \(\pmb{p}_1\) 和 \(\pmb{p}_2\) 为参考点,则变换前四个共线点的交比:

\begin{equation} \label{eqn.cross_invar} (\pmb{p}_1,\ \pmb{p}_2;\ \pmb{p}_3,\ \pmb{p}_4) = \frac{\lambda_1}{\lambda_2} = (\pmb{p}_1’,\ \pmb{p}_2’;\ \pmb{p}_3’,\ \pmb{p}_4’) \end{equation}

故交比是射影变换的不变量。

参考书

Richard Hartley, Andrew Zisserman. Multiple view geometry in computer vision (second edition)[M]. New York: Cambridge University Press, 2004:25-46.

吴福朝. 计算机视觉中的数学方法[M]. 北京:科学出版社, 2008:5-7.