射影变换的初步了解
2D射影几何研究的是关于射影平面 I P 2 {\rm IP}^2 IP2在所谓射影映射的变换群下保持不变的性质。
定义1 射影映射是把 I P 2 {\rm IP}^2 IP2到自身的一种满足下列条件的可逆映射 h h h:三点 x 1 , x 2 , x 3 {\rm x}_1,{\rm x}_2,{\rm x}_3 x1,x2,x3共线当且仅当 h ( x 1 ) , h ( x 2 ) , h ( x 3 ) h({\rm x}_1),h({\rm x}_2),h({\rm x}_3) h(x1),h(x2),h(x3)也共线。
射影映射组成一个群,因为其逆和复合运算符合群性质。又称为保线变换,射影变换或单应(homography)。下面给出其等价代数定义。
定理1 映射 h : I P 2 → I P 3 h:{\rm IP^2 \rightarrow IP^3} h:IP2→IP3是射影映射的充要条件是:存在一个 3 × 3 3\times 3 3×3非奇异矩阵 H H H,使得 I P 2 {\rm IP}^2 IP2的任何一个用矢量 x \rm x x表示的点都满足 h ( x ) = H x h({\rm x})={\rm H}{\rm x} h(x)=Hx。
定理表明射影映射都是以这样一次齐次坐标的线性变换出现,反之这样的映射是射影映射。
使用 x {\rm x} x表示 I P 2 {\rm IP}^2 IP2中的点,而用 H x {\rm Hx} Hx表示齐次坐标的线性映射。我们证明下面的命题成立,用来不全面证明定理1。
齐次坐标的任何可逆线性变换是射影映射
证明
令 x 1 , x 2 {\rm x}_1,{\rm x_2} x1,x2和 x 3 {\rm x}_3 x3都在同一条直线 l {\rm l} l 上。因此
l T x i = 0 , i = 1 , ⋯   , 3 {\rm l}^T{\rm x}_i=0,i=1,\cdots,3 lTxi=0,i=1,⋯,3
令 H \rm H H是非奇异 3 × 3 3\times 3 3×3的矩阵,又上面式子可以得到
l T H − 1 H x i = 0 → ( H − T l ) T ( H x i ) = 0 {\rm l^TH^{-1}Hx}_i=0 \rightarrow ({\rm H}^{-T}{\rm l})^T({\rm Hx}_i)=0 lTH−1Hxi=0→(H−Tl)T(Hxi)=0
因此点 H x i {\rm Hx}_i Hxi都在直线 H − T l \rm H^{-T}l H−Tl上。因而该变换保持共线性。
逆命题
每个射影映射都以这种方式出现。
给出另一个射影变换(保线变换)的定义。
定义2 射影变换。平面射影变换是关于齐次三维矢量的一种线性变换,并可用一个非奇异 3 × 3 3\times 3 3×3矩阵 H {\rm H} H表示为:
(1) ( x 1 ′ x 2 ′ x 3 ′ ) = [ h 11 h 12 h 13 h 21 h 22 h 23 h 31 h 32 h 33 ] ( x 1 x 2 x 3 ) \begin{pmatrix}x^\prime_1\\x^\prime_2\\x^\prime_3\end{pmatrix}=\begin{bmatrix}h_{11}&h_{12}&h_{13}\\h_{21}&h_{22}&h_{23}\\h_{31}&h_{32}&h_{33}\end{bmatrix}\begin{pmatrix}x_1\\x_2\\x_3\end{pmatrix}\tag{1} ⎝⎛x1′x2′x3′⎠⎞=⎣⎡h11h21h31h12h22h32h13h23h33⎦⎤⎝⎛x1x2x3⎠⎞(1)
或更简洁表示为 x ′ = H x \rm x^\prime=Hx x′=Hx。
注意,可以通过乘以任意非零比例因子来改变在该等式中出现的矩阵 H H H而不改变射影变换。 因此,我们说 H H H是一个齐次矩阵,因为在点的齐次表示中,只有矩阵元素的比例是有意义的。 在 H H H的九个元素中有八个独立的比率,因此射影变换具有八个自由度(减掉一个比例因子)。
射影变换将每个图形投影为射影等价的图形中,使其所有射影属性保持不变。 在前一篇博文中我们描述的射线模型中,射影变换仅仅是 I R 3 {\rm IR}^3 IR3的线性变换。
平面间的映射
图1给出了定理1的一个例子。

图1。 中心投影将一个平面上的点映射到另一个平面上的点。 过投影中心作一张与两平面 π \pi π和 π ′ \pi^\prime π′相交的平面,可以看到中心投影也将线映射到线。 由于线被映射到线,因此中心投影是射影的,并且可以通过齐次坐标的线性映射 x ′ = H x \rm x^\prime=Hx x′=Hx来表示。
沿着通过公共点(投影中心)的射线的投影定义了从一个平面到另一个平面的映射。 很明显,这种点到点的映射保留了直线不变,其中一个平面中的线被映射到另一个平面中的线。
如果在每个平面中定义坐标系并且以齐次坐标表示点,则中心投影映射可以用 x ′ = H x \rm x^\prime=Hx x′=Hx表示,其中 H H H是非奇异 3 × 3 3\times3 3×3矩阵。 实际上,如果在两个平面中定义的两个坐标系都是欧氏(直角)坐标系,那么由中心投影定义的映射比一般射影变换更受限制。 它被称为透视映射而不是完全的射影映射,并且可以用具有六个自由度的变换来表示。
消除平面透视图像的射影失真
在透视成像下形状会失真(变形)。 例如,在图2中,窗口在图像中不是矩形,尽管原有窗子是。 通常,场景平面上的平行线在图像中不平行,而是收敛到有限点。 我们已经看到平面(或平面的一部分)的中心投影图像通过投影变换与原始平面相关,因此图像是原始的射影失真。 通过计算逆变换并将其应用于图像,可以“撤销”该投影变换。 结果将是一个新的合成图像,其中平面中的物体以其正确的几何形状显示。 这将在图2 a的建筑物的前墙解释。 注意,由于地面和大楼的前墙不在同一平面上,因此必须用于矫正前墙的投影变换与用于地面的投影变换不同。

图2.消除透视失真。 (a)具有透视失真的原始图像 - 窗口的线明显地收敛于有限点(延长后相交)。(b)合成得到的前墙的正视图。 墙的图像(a)通过射影变换与墙的真实几何形状相关联。 通过将四个成像窗口角点映射到适当大小的矩形顶点来计算逆变换。 由四点对应确定变换。 然后将变换应用于整个图像。 注意,地面图像的部分受到进一步的射影失真。 这也可以通过射影变换来消除。
首先,选择平面与图像想对应的部分。然后选择图像平面的2D局部坐标和景物的世界坐标,如图1所示。
设世界与图像平面上一对匹配点 x \rm x x和 x ′ \rm x^\prime x′。 我们在这里使用点的非齐次坐标而不是齐次坐标,因为这些非齐次坐标可以直接从图像和世界平面得到。式(1)的射影变换可以用非齐次形式写成
x ′ = x 1 ′ x 3 ′ = h 11 x + h 12 y + h 13 h 31 x + h 32 y + h 33 , y ′ = x 2 ′ x 3 ′ = h 21 x + h 22 y + h 23 h 31 x + h 32 y + h 33 x^\prime=\frac{x_1^\prime}{x^\prime_3}=\frac{h_{11}x+h_{12}y+h_{13}}{h_{31}x+h_{32}y+h_{33}},y^\prime=\frac{x_2^\prime}{x^\prime_3}=\frac{h_{21}x+h_{22}y+h_{23}}{h_{31}x+h_{32}y+h_{33}} x′=x3′x1′=h31x+h32y+h33h11x+h12y+h13,y′=x3′x2′=h31x+h32y+h33h21x+h22y+h23
每个点对应关系为 H H H元素的两个方程,将其乘出简化后是
x ′ ( h 31 x + h 32 y + h 33 ) = h 11 x + h 12 y + h 13 x^\prime(h_{31}x + h_{32}y + h_{33}) = h_{11}x + h_{12}y + h_{13} x′(h31x+h32y+h33)=h11x+h12y+h13
y ′ ( h 31 x + h 32 y + h 33 ) = h 21 x + h 22 y + h 23 y^\prime(h_{31}x + h_{32}y + h_{33}) = h_{21}x + h_{22}y + h_{23} y′(h31x+h32y+h33)=h21x+h22y+h23
这些方程在 H H H的元素中是线性的。四点对应在H的元素中导致八个这样的线性方程,这足以求出 H H H,只差不重要的乘法因子。 唯一的限制是四个点必须处于“一般位置”,这意味着没有三个点是共线的。 然后将以这种方式计算的变换 H H H的逆应用于整个图像,以消除透视失真对所选平面的影响。 结果如图2 b所示。
说明:首先,以这种方式计算矫正变换 H H H不需要知道任何相机的参数或平面的位姿; 第二,并不总是需要知道四点的坐标以消除投影失真。
射影变换是代表比世界平面的透视成像更多情况的重要映射。 许多其他例子如图3所示。

图3.在透视图像中射影变换 x ′ = H x \rm x^\prime=Hx x′=Hx的例子。 (a)由世界平面引起的两个图像之间的射影变换(两个射影变换的复合是射影变换); (b)具有相同摄像机中心的两个图像之间的射影变换(例如,摄像机围绕其中心旋转或变焦其焦距); (c)平面图像(建筑物的后墙)与其阴影图像到另一个平面(地平面)之间的射影变换。
直线与二次曲线的变换
直线的变换
在定理1的证明中指出,如果点 x i {\rm x}_i xi位于线 l \rm l l 上,那么变换点 x ′ = H x \rm x^\prime=Hx x′=Hx在射影变换下位于线 l ′ = H − T l \rm l^\prime=H^{-T}l l′=H−Tl。 通过这种方式保持了点在线上的性质,因为 l ′ T x i ′ = l T H − 1 H x i {\rm l^{\prime T}x}^\prime_i={\rm l^TH^{-1}Hx}_i l′Txi′=lTH−1Hxi。这给出了线的变换规则:在点变换 x ′ = H x \rm x^\prime=Hx x′=Hx下,直线 l \rm l l 变换为
l ′ = H − T l \rm l^\prime=H^{- T}l l′=H−Tl
或者可以写 l ′ T = l T H − 1 \rm l^{\prime T}=l^TH^{-1} l′T=lTH−1。
注意线和点变换的根本区别。 点根据 H H H变换,而线(作为行向量)根据 H − 1 H^{-1} H−1变换。 这可以用“协变”或“逆变”行为来解释。 有人说,点变换是逆变,线变换是协变。
二次曲线的变换
我们知道在前面博文讲述二次曲线和对偶二次曲线时,说过点在二次曲线上的方程为 x T C x = 0 x^TCx=0 xTCx=0,那么射影变换中,即在点变换 x ′ = H x \rm x^\prime=Hx x′=Hx下,该式变为:
x T C x = x ′ T [ H − 1 ] T C H − 1 x ′ = x ′ T H − T C H − 1 x ′ \begin{aligned}\rm x^TCx&=\rm x^{\prime T}[H^{-1}]^TCH^{-1}x^\prime\\&=\rm x^{\prime T}H^{-T}CH^{-1}x^\prime\end{aligned} xTCx=x′T[H−1]TCH−1x′=x′TH−TCH−1x′
这是二次形式 x ′ T C ′ x ′ \rm x^{\prime T}C^\prime x^\prime x′TC′x′,其中 C ′ = H − T C H − 1 \rm C^\prime=H^{-T}CH^{-1} C′=H−TCH−1。 这给出了二次曲线的变换规则:
结论1 在点变换 x ′ = H x \rm x^\prime=Hx x′=Hx下,二次曲线 C \rm C C变换为 C ′ = H − T C H − 1 \rm C^\prime=H^{-T}CH^{-1} C′=H−TCH−1
H − 1 \rm H^{-1} H−1在方程中,所以二次曲线变换称为协变。
结论2 在点变换 x ′ = H x \rm x^\prime=Hx x′=Hx下,对偶二次曲线 C ∗ \rm C^* C∗变换为 C ′ ∗ = H C ∗ H T \rm C^{\prime*}=HC^*H^{T} C′∗=HC∗HT
我们知道在前面博文讲述二次曲线和对偶二次曲线时,说过对偶二次曲线的方程为 l T C ∗ l = 0 \rm l^TC^*l=0 lTC∗l=0。
在点变换 x ′ = H x \rm x^\prime=Hx x′=Hx下,我们得到 l ′ = H − T l \rm l^\prime=H^{-T}l l′=H−Tl,可以得到:
l = H T l ′ \rm l=H^Tl^\prime l=HTl′
所以我们可以得到
l T C ∗ l = ( H T l ) T C ∗ H T l ′ = l ′ T H C ∗ H T l ′ = l ′ T C ′ ∗ l ′ \begin{aligned}\rm l^TC^*l&=\rm (H^Tl)^TC^*H^Tl^\prime\\&=\rm l^{\prime T}HC^*H^Tl^\prime \\&=\rm l^{\prime T}C^{\prime*}l^\prime\end{aligned} lTC∗l=(HTl)TC∗HTl′=l′THC∗HTl′=l′TC′∗l′
所以 C ′ ∗ = H C ∗ H T \rm C^{\prime*}=HC^*H^T C′∗=HC∗HT
博文内容总结和概览
知识
概念 | 定义 |
---|---|
射影映射(保线变换,射影变换或单应(homography)) | 射影映射是把 I P 2 {\rm IP}^2 IP2到自身的一种满足下列条件的可逆映射 h h h:三点 x 1 , x 2 , x 3 {\rm x}_1,{\rm x}_2,{\rm x}_3 x1,x2,x3共线当且仅当 h ( x 1 ) , h ( x 2 ) , h ( x 3 ) h({\rm x}_1),h({\rm x}_2),h({\rm x}_3) h(x1),h(x2),h(x3)也共线。 |
射影变换另一定义 | 平面射影变换是关于齐次三维矢量的一种线性变换,并可用一个非奇异 3 × 3 3\times 3 3×3矩阵 H {\rm H} H表示为 x ′ = H x \rm x^\prime=Hx x′=Hx |
平面间映射 | 点对点映射且保持直线不变。若是两平面建立都是欧氏直角坐标系,则为透视映射。 |
消除透视失真 | 简单使用四个对应点关系求解出 H H H,然后将逆变换应用到失真图像中以消除射影失真。 |
直线的变换 | 如果点 x i {\rm x}_i xi位于线 l \rm l l 上,那么变换点 x ′ = H x \rm x^\prime=Hx x′=Hx在射影变换下位于线 l ′ = H − T l \rm l^\prime=H^{-T}l l′=H−Tl或 l ′ T = l T H − 1 \rm l^{\prime T}=l^TH^{-1} l′T=lTH−1。 |
二次曲线变换 | 在点变换 x ′ = H x \rm x^\prime=Hx x′=Hx下,二次曲线 C \rm C C变换为 C ′ = H − T C H − 1 \rm C^\prime=H^{-T}CH^{-1} C′=H−TCH−1 |
对偶二次曲线变换 | 在点变换 x ′ = H x \rm x^\prime=Hx x′=Hx下,对偶二次曲线 C ∗ \rm C^* C∗变换为 C ′ ∗ = H C ∗ H T \rm C^{\prime*}=HC^*H^{T} C′∗=HC∗HT |
定理
概念 | 内容 |
---|---|
射影映射等价代数定义 | 映射 h : I P 2 → I P 3 h:{\rm IP^2 \rightarrow IP^3} h:IP2→IP3是射影映射的充要条件是:存在一个 3 × 3 3\times 3 3×3非奇异矩阵 H H H,使得 I P 2 {\rm IP}^2 IP2的任何一个用矢量 x \rm x x表示的点都满足 h ( x ) = H x h({\rm x})={\rm H}{\rm x} h(x)=Hx |