2D射影几何与变换
2D射影平面
点和直线
此处介绍了将二维标准欧式几何空间中的点和直线 I R 2 \rm IR^2 IR2使用 I R 3 \rm IR^3 IR3中的表达方式,映射到射影空间 I P 2 \rm IP^2 IP2中
-
直线的齐次表示: I = ( a , b , c ) T \pmb I=(a,b,c)^T I=(a,b,c)T代表直线 a x + b y + c = 0 ax+by+c=0 ax+by+c=0
-
点的齐次表示: x = ( x 1 , x 2 , x 3 ) T \pmb x=(x_1,x_2,x_3)^T x=(x1,x2,x3)T代表点 ( x 1 / x 3 , x 2 / x 3 ) (x_1/x_3,x_2/x_3) (x1/x3,x2/x3)
-
向量等价类: k I k\pmb I kI与 I \pmb I I代表同一条直线, k x k \pmb x kx与 x \pmb x x代表同一个点,它们属于一个向量等价类
-
I R 3 − ( 0 , 0 , 0 ) T \rm IR^3 -(0,0,0)^T IR3−(0,0,0)T中的向量等价类的集合组成射影空间 I P 2 \rm IP^2 IP2, − ( 0 , 0 , 0 ) T -(0,0,0)^T −(0,0,0)T表示将不与任何直线对应的向量 ( 0 , 0 , 0 ) T (0,0,0)^T (0,0,0)T排除在外
-
公式 点在直线上 x T I = x ⋅ I = 0 \pmb x^T \pmb I= \pmb x \cdot \pmb I=0 xTI=x⋅I=0 两直线的交点 x = I 1 × I 2 \pmb x = \pmb I_1 \times \pmb I_2 x=I1×I2 过两点的直线 I = x 1 × x 2 \pmb I = \pmb x_1 \times \pmb x_2 I=x1×x2
理想点和无穷远直线
- 平行线的交点:平行线 I 1 = ( a , b , c 1 ) T , I 2 = ( a , b , c 2 ) T \pmb I_1 = (a,b,c_1)^T,\pmb I_2 = (a,b,c_2)^T I1=(a,b,c1)T,I2=(a,b,c2)T的交点为齐次坐标 ( a , b , 0 ) T (a,b,0)^T (a,b,0)T,代表该交点具有无穷大坐标,不与 I R 2 \rm IR^2 IR2中的任何有限点对应
- 理想点:由于 I P 2 IP^2 IP2中的点 x = ( x 1 , x 2 , x 3 ) T , x 3 = 0 \pmb x=(x_1,x_2,x_3)^T,x_3 =0 x=(x1,x2,x3)T,x3=0不与 I R 2 IR^2 IR2中的有限点对应,我们将 x 3 = 0 x_3=0 x3=0的点加入 I R 2 IR^2 IR2中,所扩展的空间是所有齐次3维向量的集合,称为射影空间 I P 2 IP^2 IP2, x 3 = 0 x_3=0 x3=0的点称为理想点,或无穷远点。
- 无穷远直线:所有的理想点都在无穷远直线 I ∞ = ( 0 , 0 , 1 ) T \pmb I_\infty=(0,0,1)^T I∞=(0,0,1)T上。
- 直线 I = ( a , b , c ) \pmb I=(a,b,c) I=(a,b,c)与无穷远直线 I ∞ = ( 0 , 0 , 1 ) T \pmb I_\infty=(0,0,1)^T I∞=(0,0,1)T相交于理想点 ( b , − a , 0 ) T (b,-a,0)^T (b,−a,0)T,该理想点代表了直线的方向,因而无穷远直线可以看做平面上所有直线方向的集合
- 射影平面模型:
- 对偶原理:2维射影集合中的任何定理都有一个相应的对偶定理,它可以通过互换原定理中点和直线的作用而导出
二次曲线与对偶二次曲线
-
二次曲线系数矩阵
a x 2 + b x y + c y 2 + d x + e y + f = 0 ⟹ ( x : = x 1 / x 3 , y = x 2 / x 3 ) a x 1 2 + b x 1 x 2 + c x 2 2 + d x 1 x 3 + e x 2 x 3 + f x 3 2 = 0 x T C x = 0 ax^2+bxy+cy^2+dx+ey+f=0 \Longrightarrow(x:=x_1/x_3,y=x_2/x_3)\\ ax_1^2+bx_1x_2+cx_2^2+dx_1x_3+ex_2x_3+fx_3^2=0\\ \pmb x ^T \pmb C \pmb x = 0 ax2+bxy+cy2+dx+ey+f=0⟹(x:=x1/x3,y=x2/x3)ax12+bx1x2+cx22+dx1x3+ex2x3+fx32=0xTCx=0
其中二次曲线系数矩阵是对称的
C = [ a b / 2 d / 2 b / 2 c e / 2 d / 2 e / 2 f ] C = \begin{bmatrix} a&b/2 &d/2 \\ b/2 &c &e/2 \\ d/2 &e/2 &f \end{bmatrix} C= ab/2d/2b/2ce/2d/2e/2f
二次曲线与点和直线的齐次表示一样,只与变量的比率有关,二次曲线有五个自由度,由 a : b : c : d : e : f {a:b:c:d:e:f} a:b:c:d:e:f唯一确定 -
二次曲线在某点处的切线: I = C x \pmb I = \pmb C\pmb x I=Cx
-
对偶二次曲线 C ∗ \pmb C^* C∗:是二次曲线关于直线的表达,二次曲线 C \pmb C C的切线 I \pmb I I满足 I T C ∗ I = 0 \pmb I^T \pmb C^* \pmb I=0 ITC∗I=0,其中 C ∗ \pmb C^* C∗表示 C \pmb C C的伴随矩阵。对于一个非奇异对称矩阵 C \pmb C C有 C ∗ = k C − 1 \pmb C^* = k \pmb C^{-1} C∗=kC−1
-
退化二次曲线:矩阵 C \pmb C C不是满秩的。 退化的二次曲线有两条直线 r = 2 r=2 r=2或一条重线 r = 1 r=1 r=1
射影变换
-
射影映射是 I P 2 IP^2 IP2到它自身的一种满足下列条件的可逆映射 h h h:三点 x 1 , x 2 , x 3 \pmb x_1,\pmb x_2,\pmb x_3 x1,x2,x3共线 ⟺ h ( x 1 ) , h ( x 2 ) , h ( x 3 ) \iff h(\pmb x_1),h(\pmb x_2),h(\pmb x_3) ⟺h(x1),h(x2),h(x3)共线。射影映射组成一个群,射影映射的逆以及两个射影映射的复合也是射影映射。射影映射也称为保线变换,或射影变换或单应( h o m o g r a p h y \rm homography homography)
-
映射 h : I P 2 → I P 2 h:IP^2 \rightarrow IP^2 h:IP2→IP2是射影映射的充要条件是:存在一个 3 × 3 3\times 3 3×3非奇异矩阵 H \pmb H H,使得 I P 2 IP^2 IP2的任何一个用向量 x \pmb x x表示的点都满足 h ( x ) = H x h(\pmb x) = \pmb H \pmb x h(x)=Hx
-
射影变换:一个平面射影变换是关于3维齐次向量的一种线性变换,并可以用一个非奇异 3 × 3 3\times 3 3×3 矩阵表示为
[ 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{bmatrix} x_1^\prime \\ x_2^\prime \\ x_3^\prime \end{bmatrix} = \begin{bmatrix} h_{11} & h_{12} & h_{13}\\ h_{21} & h_{22} & h_{23}\\ h_{31} & h_{32} & h_{33} \end{bmatrix} \begin{bmatrix} x_1 \\ x_2 \\ x_3 \end{bmatrix} x1′x2′x3′ = h11h21h31h12h22h32h13h23h33 x1x2x3
即 x ′ = H x \pmb x^\prime = \pmb H \pmb x x′=Hx -
在点变换 x ′ = H x \pmb x^\prime = \pmb H \pmb x x′=Hx下
变换类型 公式 变换依据 点变换 x ′ = H x \pmb x^\prime = \pmb H \pmb x x′=Hx 逆变 直线变换 I ′ = H − T I \pmb I^\prime = \pmb H^{-T} \pmb I I′=H−TI 协变 二次曲线变换 C ′ = H − T C H − 1 \pmb C^\prime = \pmb H^{-T} \pmb C \pmb H^{-1} C′=H−TCH−1 协变 对偶二次曲线 C ∗ ′ = H C ∗ H T \pmb C^{*\prime} = \pmb H \pmb C^* \pmb H^{T} C∗′=HC∗HT 逆变
变换层次
射影变换可以分解为一串变换链的复合
H
=
H
S
H
A
H
P
=
[
s
R
t
0
T
1
]
[
K
0
0
T
1
]
[
I
0
v
T
v
]
=
[
A
v
t
v
T
v
]
H = H_S H_AH_P = \begin{bmatrix} s\pmb R & \pmb t \\ \pmb 0^T & 1 \end{bmatrix} \begin{bmatrix} \pmb K & 0 \\ \pmb 0^T & 1 \end{bmatrix} \begin{bmatrix} \pmb I & 0 \\ \pmb v^T & v \end{bmatrix} =\begin{bmatrix} \pmb A& \pmb v\pmb t \\ \pmb v^T & v \end{bmatrix}
H=HSHAHP=[sR0Tt1][K0T01][IvT0v]=[AvTvtv]
其中,
A
=
s
R
K
+
t
v
T
\pmb A = sRK+tv^T
A=sRK+tvT为非奇异矩阵,
K
K
K是满足
d
e
t
K
=
1
det K=1
detK=1的归一化上三角矩阵。
- H P H_P HP移动无穷远直线
- H A H_A HA影响仿射性质,不移动无穷远直线
- H S H_S HS是一般相似变换,不影响仿射性质
两边同时取逆,由于它们的逆依然满足对应的变化,所以一般的射影变换也可以分解为如下形式
H
=
H
P
H
A
H
S
=
[
I
0
v
T
1
]
[
K
0
0
T
1
]
[
s
R
t
0
T
1
]
\pmb H = \pmb H_P \pmb H_A \pmb H_S = \begin{bmatrix} \pmb I &\pmb 0\\ \pmb v^T &1 \end{bmatrix} \begin{bmatrix} \pmb K &\pmb 0\\ \pmb 0^T &1 \end{bmatrix} \begin{bmatrix} s\pmb R &\pmb t\\ \pmb 0^T &1 \end{bmatrix}
H=HPHAHS=[IvT01][K0T01][sR0Tt1]
群 | 矩阵 | 不变性质 |
---|---|---|
射影 8dof | [ h 11 h 12 h 13 h 21 h 22 h 23 h 31 h 32 h 33 ] \begin{bmatrix}h_{11} & h_{12} & h_{13}\\h_{21} & h_{22} & h_{23}\\h_{31} & h_{32} & h_{33}\end{bmatrix} h11h21h31h12h22h32h13h23h33 | 共点,共线,接触的阶;相交;相切;拐点;切线不连续性和歧点,交比 |
仿射 6dof | [ a 11 a 12 t x a 21 a 22 t y 0 0 1 ] \begin{bmatrix}a_{11} & a_{12} & t_{x}\\a_{21} & a_{22} & t_{y}\\0 & 0 & 1\end{bmatrix} a11a210a12a220txty1 | 平行、面积比,共线或平行线的长度比,向量的线性组合,无穷远直线 I ∞ \pmb I_\infty I∞ |
相似 4dof | [ s cos θ − s sin θ t x s sin θ s cos θ t y 0 0 1 ] \begin{bmatrix} s \cos \theta & -s\sin \theta & t_{x}\\ s \sin \theta & s\cos \theta & t_{y}\\0 & 0 & 1\end{bmatrix} scosθssinθ0−ssinθscosθ0txty1 | 长度比,夹角,虚圆点 I , J \pmb I,\pmb J I,J |
欧氏 3dof | [ ε cos θ − sin θ t x ε sin θ cos θ t y 0 0 1 ] \begin{bmatrix} \varepsilon \cos \theta & -\sin \theta & t_{x}\\ \varepsilon \sin \theta & \cos \theta & t_{y}\\0 & 0 & 1\end{bmatrix} εcosθεsinθ0−sinθcosθ0txty1 | 长度,面积 |
1D射影几何
直线上的点
x
x
x用齐次坐标表示为
(
x
1
,
x
2
)
T
(x_1,x_2)^T
(x1,x2)T,
x
2
=
0
x_2=0
x2=0是该直线的理想点。用
x
‾
\overline x
x表示2维向量
(
x
1
,
x
2
)
T
(x_1,x_2)^T
(x1,x2)T,直线的射影变换表示为
x
‾
′
=
H
2
×
2
x
‾
\overline x ^\prime = H_{2 \times 2} \overline x
x′=H2×2x
交比是
I
P
1
IP^1
IP1的基本射影不变量。给定4个点,交比定义为
C
r
o
s
s
(
x
‾
1
,
x
‾
2
,
x
‾
3
,
x
‾
4
)
=
∣
x
‾
1
x
‾
2
∣
∣
x
‾
3
x
‾
4
∣
∣
x
‾
1
x
‾
3
∣
∣
x
‾
2
x
‾
4
∣
{\rm Cross } (\overline x_1,\overline x_2,\overline x_3,\overline x_4) =\cfrac{\mid \overline x_1 \overline x_2 \mid \mid \overline x_3 \overline x_4 \mid }{\mid \overline x_1 \overline x_3 \mid \mid \overline x_2 \overline x_4 \mid}
Cross(x1,x2,x3,x4)=∣x1x3∣∣x2x4∣∣x1x2∣∣x3x4∣
从图像恢复仿射和度量性质
一旦 I ∞ \pmb I_\infty I∞的图像被指定,射影失真便可消除,而一旦虚圆点被指定,仿射失真也可消除。剩下的只是相似失真。
恢复仿射性质
-
依据:在射影变换 H \pmb H H下,无穷远直线 I ∞ \pmb I_\infty I∞为不动直线当且仅当 H \pmb H H是仿射变换。
-
方法:如果无穷远直线的像是 I = ( l 1 , l 2 , l 3 ) T \pmb I=(l_1,l_2,l_3)^T I=(l1,l2,l3)T,假定 l 3 ≠ 0 l_3 \neq 0 l3=0,那么把 I \pmb I I映射回 I ∞ = ( 0 , 0 , 1 ) T \pmb I_\infty=(0,0,1)^T I∞=(0,0,1)T的合适的射影点变换是
H = H A [ 1 0 0 0 1 0 l 1 l 2 l 3 ] \pmb H = \pmb H_A \begin{bmatrix} 1&0&0\\ 0&1&0\\ l_1&l_2&l_3 \end{bmatrix} H=HA 10l101l200l3
其中 H A \pmb H_A HA可取为任何仿射变换
反推,已知仿射性质,可以确定无穷远点和直线
- 恢复策略
- 由平行线寻找无穷远直线
- 由长度比计算消影点
虚圆点及其对偶
在任何相似变换下,
I
∞
\pmb I_\infty
I∞上有两个不动点,它们是虚圆点
I
,
J
\pmb I,\pmb J
I,J,其标准坐标是
I
=
[
1
i
0
]
J
=
[
1
−
i
0
]
\pmb I = \begin{bmatrix}1\\i\\0 \end{bmatrix} \pmb J = \begin{bmatrix}1\\-i\\0 \end{bmatrix}
I=
1i0
J=
1−i0
每一圆周相交
I
∞
\pmb I_\infty
I∞于虚圆点
-
与虚圆点对偶的二次曲线:
C ∞ ∗ = I J T + J I T \pmb C_\infty^* = \pmb I \pmb J^T + \pmb J \pmb I^T C∞∗=IJT+JIT
C ∞ ∗ \pmb C_\infty^* C∞∗是由这两个虚圆点构成的退化的( r = 2 r=2 r=2)的线二次曲线。在欧式坐标下为
C ∞ ∗ = [ 1 i 0 ] [ 1 − i 0 ] + [ 1 − i 0 ] [ 1 i 0 ] = [ 1 0 0 0 1 0 0 0 0 ] \mathrm{C}_{\infty}^*=\begin{bmatrix} 1 \\i \\0 \end{bmatrix}\begin{bmatrix} 1 & -i & 0 \end{bmatrix}+\begin{bmatrix} 1 \\ -i \\0 \end{bmatrix}\begin{bmatrix} 1 & i & 0 \end{bmatrix}=\begin{bmatrix} 1 & 0 & 0 \\ 0 & 1 & 0 \\ 0 & 0 & 0 \end{bmatrix} C∞∗= 1i0 [1−i0]+ 1−i0 [1i0]= 100010000 -
对偶二次曲线 C ∞ ∗ \pmb C_\infty^* C∞∗在射影变换 H \pmb H H下不变当且仅当 H \pmb H H是相似变换
射影平面上的夹角
cos θ = l ⊤ C ∞ ∗ m ( l ⊤ C ∞ ∗ l ) ( m ⊤ C ∞ ∗ m ) \cos \theta=\frac{\mathbf{l}^{\top} \mathrm{C}_{\infty}^* \mathbf{m}}{\sqrt{\left(\mathbf{l}^{\top} \mathrm{C}_{\infty}^* \mathbf{l}\right)\left(\mathbf{m}^{\top} \mathrm{C}_{\infty}^* \mathbf{m}\right)}} cosθ=(l⊤C∞∗l)(m⊤C∞∗m)l⊤C∞∗m
- 一旦在射影平面上辨认出二次曲线 C ∞ ∗ \pmb C_\infty^* C∞∗,就可以计算欧拉角
- 如果 I T C ∞ ∗ m = 0 \pmb I^T \pmb C_\infty^* \pmb m=0 ITC∞∗m=0,则直线 I , m \pmb I,\pmb m I,m正交
- 一旦在射影平面上辨认出二次曲线 C ∞ ∗ \pmb C_\infty^* C∞∗,就可以计算长度比(正弦定理)
由图像恢复度量性质
利用SVD分解,如果已知
C
∞
∗
′
\pmb C_\infty^{*\prime}
C∞∗′,
C
∞
∗
′
=
U
[
1
0
0
0
1
0
0
0
0
]
U
T
\pmb C_\infty^{*\prime} = \pmb U \begin{bmatrix} 1 &0 &0 \\ 0&1&0\\ 0&0&0 \end{bmatrix} \pmb U^T
C∞∗′=U
100010000
UT
可直接求得对应的只差一个相似变换的校正射影变换
H
=
U
H=U
H=U
寻找 C ∞ ∗ ′ \pmb C_\infty^{*\prime} C∞∗′方法有
- 找到世界平面中两个正交的直线,由 I T C ∞ ∗ ′ m = 0 \pmb I^T \pmb C_\infty^{*\prime} \pmb m=0 ITC∞∗′m=0得到约束
- 根据长度比
- 根据圆的影像
二次曲线的其他性质
极点-极线的关系
-
点 x \pmb x x和二次曲线 C \pmb C C定义一条直线 I = C x \pmb I=\pmb C \pmb x I=Cx。 I \pmb I I称为 x \pmb x x关于 C \pmb C C的极线,而点 x \pmb x x是 I \pmb I I关于 C \pmb C C的极点
-
点 x \pmb x x关于二次曲线 C \pmb C C的极线 I = C x \pmb I=\pmb C\pmb x I=Cx与 C \pmb C C交于两点。 C \pmb C C的过这两点的两条切线相交于 x \pmb x x
-
如果点 x \pmb x x在 C \pmb C C上,则其极线就是二次曲线过 x \pmb x x点的切线
-
对射是 I P 2 IP^2 IP2的点到 I P 2 IP^2 IP2的直线的可逆映射。它由一个 3 × 3 3\times 3 3×3非奇异矩阵 A A A表示为 I = A x \pmb I = \pmb A \pmb x I=Ax
-
共轭点:如果点 y \pmb y y在极线 I = C x \pmb I=\pmb C \pmb x I=Cx上,则 y T I = y T C x = 0 \pmb y^T \pmb I = \pmb y^T \pmb C \pmb x=0 yTI=yTCx=0。满足 y T C x = 0 \pmb y^T \pmb C \pmb x=0 yTCx=0的任何两点 x , y \pmb x,\pmb y x,y称为关于二次曲线 C \pmb C C的共轭
-
如果 x \pmb x x在 y \pmb y y的极线上,那么 y \pmb y y也在 x \pmb x x的极线上。
二次曲线的分类
二次曲线的射影标准形式:
因为 C C C是实对称矩阵,所以有实特征值并可以分解为 C = U T D U C=U^TDU C=UTDU,将 U U U作为一个射影变换作用于 C C C上即可得到另一个二次曲线 C ′ = D C^\prime=D C′=D。
更进一步, C C C可以化为标准形 d i a g ( ε 1 , ε 2 , ε 3 ) diag(\varepsilon_1,\varepsilon_2,\varepsilon_3) diag(ε1,ε2,ε3)。
对角线 | 方程 | 二次曲线类型 |
---|---|---|
( 1 , 1 , 1 ) (1,1,1) (1,1,1) | x 2 + y 2 + w 2 = 0 x^2+y^2+w^2=0 x2+y2+w2=0 | 假二次曲线——无实点 |
( 1 , 1 , − 1 ) (1,1,-1) (1,1,−1) | x 2 + y 2 − w 2 = 0 x^2+y^2-w^2=0 x2+y2−w2=0 | 圆 |
( 1 , 1 , 0 ) (1,1,0) (1,1,0) | x 2 + y 2 = 0 x^2+y^2=0 x2+y2=0 | 单个实点 ( 0 , 0 , 1 ) T (0,0,1)^T (0,0,1)T |
( 1 , − 1 , 0 ) (1,-1,0) (1,−1,0) | x 2 − y 2 = 0 x^2-y^2=0 x2−y2=0 | 两条直线 x = ± y x= \pm y x=±y |
( 1 , 0 , 0 ) (1,0,0) (1,0,0) | x 2 = 0 x^2=0 x2=0 | 一条直线 x = 0 x=0 x=0计两次 |
对于圆的情形,在仿射几何中分为椭圆,抛物线和双曲线。区分依据为其与 I ∞ \pmb I_\infty I∞的交点个数。椭圆与 I ∞ \pmb I_\infty I∞没有交点,抛物线与 I ∞ \pmb I_\infty I∞相切,双曲线与 I ∞ \pmb I_\infty I∞有两个实交点。
不动点与直线
- 不动点是点变换 x ′ = H x \pmb x^\prime = \pmb H \pmb x x′=Hx的特征向量: H e = λ e He=\lambda e He=λe
- 不动直线是线变换 I ′ = H − 1 I I^\prime = H^{-1}I I′=H−1I的特征向量