3D射影几何与变换(1)
这篇主要介绍在3D射影几何中的基本元素,包括平面和直线,以及他们各自的性质。
3D射影几何的许多内容是2D射影几何的直接推广,但也有许多不一样的地方,比如这篇要介绍的一个重要不同:在
I
P
3
IP^3
IP3中,点与平面对偶,而直线自对偶。
平面
-
平面方程
在3D空间中,平面方程写作:
π 1 X + π 2 Y + π 3 Z + π 4 = 0 \pi_1 X + \pi_2 Y + \pi_3 Z + \pi_4 = 0 π1X+π2Y+π3Z+π4=0
显然,该等式乘一个非0标量仍成立,所以只有3个自由度,可以写成齐次坐标: π = ( π 1 , π 2 , π 3 , π 4 ) T \pi = (\pi_1, \pi_2,\pi_3,\pi_4)^T π=(π1,π2,π3,π4)T,这就是 I P 3 IP^3 IP3中的平面齐次坐标表示。
这个齐次坐标形式对应于欧式几何中的写法: n X ^ + d = 0 n\hat{X}+d=0 nX^+d=0,其中 n = ( π 1 , π 2 , π 3 ) T , X ^ = ( X , Y , Z ) T , X 4 = 1 , π 4 = d n=(\pi_1,\pi_2,\pi_3)^T,\hat{X}=(X,Y,Z)^T,X_4=1,\pi_4=d n=(π1,π2,π3)T,X^=(X,Y,Z)T,X4=1,π4=d,其中 d ∣ ∣ n ∣ ∣ \frac{d}{||n||} ∣∣n∣∣d为平面到原点的距离。
对于在平面上的点X,有方程: π T X = 0 \pi^TX=0 πTX=0。 -
平面的代数确定
众所周知,三点确定一条平面。我们可以将三个点在平面上的方程堆叠成一个矩阵:
[ X 1 T X 2 T X 3 T ] π = 0 \left[ \begin{matrix} X_1^T \\ X_2^T \\ X_3^T \end{matrix} \right]\pi = 0 ⎣⎡X1TX2TX3T⎦⎤π=0
矩阵大小为3x4,则该平面由矩阵的一维右零空间确定。若该矩阵不满秩,则说明三点在一条直线上,此时由零空间确定以该直线为轴的平面束。
在具体计算中,我们可以从一个矩阵开始,它包含确定平面的三个点和一个任意点:
M = [ X , X 1 , X 2 , X 3 ] M = [X, X_1, X_2, X_3] M=[X,X1,X2,X3]
当X在平面上时,该矩阵的秩退化为3,于是行列式等于0,按点 X = ( x 1 , x 2 , x 3 , x 4 ) T X=(x_1,x_2,x_3,x_4)^T X=(x1,x2,x3,x4)T展开行列式可得:
d e t M = x 1 D 234 − x 2 D 134 + x 3 D 124 − x 4 D 123 = 0 detM = x_1D_{234} - x_2 D_{134} + x_3 D_{124} - x_4D_{123}=0 detM=x1D234−x2D134+x3D124−x4D123=0
所以平面有以下表示:
π = ( D 234 , − D 134 , D 124 , − D 123 ) \pi = (D_{234}, -D_{134}, D_{124}, -D_{123}) π=(D234,−D134,D124,−D123) -
射影变换
对应于点变换: x ′ = H x x'=Hx x′=Hx,平面的单应变换为 π ′ = H − T π \pi' = H^{-T}\pi π′=H−Tπ,与2D中直线变换一样。 -
平面上点的参数表示
平面上的点只有2个自由度,所以可以用三维向量来表示,这种三维向量表示称为平面上点的参数化表示。
给出平面上三个不共线的点 X 1 , X 2 , X 3 X_1,X_2,X_3 X1,X2,X3,则平面上任意一点可以写作这三个点的线性组合:
X = α X 1 + β X 2 + γ X 3 X=\alpha X_1 + \beta X_2 + \gamma X_3 X=αX1+βX2+γX3
这样就得到了平面上点的参数化表示: x = ( α , β , γ ) T x=(\alpha, \beta, \gamma)^T x=(α,β,γ)T。
直线
直线在三维射影空间中表示为两点的连接或者平面的交线,所以直线有4个自由度,也因为这个原因,在3维射影空间上难以表示直线(4个自由度需要5维的齐次坐标),所以就有以下两种并非直接的表示方式。
-
点表示法 - 生成子空间表示
假定点 X 1 , X 2 X_1,X_2 X1,X2不重合,连接成一条线,令W是这两个点的齐次坐标作为行构成的2x4的矩阵,有下述结论:1)点束 L = { X = W T ( α , β ) T ∣ ( α , β ) ∈ R 2 } L=\{X=W^T(\alpha , \beta )^T|(\alpha , \beta )\in R^2\} L={X=WT(α,β)T∣(α,β)∈R2}是连接两个空间点 X 1 , X 2 X_1,X_2 X1,X2的直线。2)矩阵W的二维右零空间是以L为轴的直线束。 -
面表示法 - 零空间表示
根据 I P 3 IP^3 IP3中点与平面的对偶,同样可以由平面来表示直线:两个平面 π 1 , π 2 \pi_1,\pi_2 π1,π2,定义一个矩阵 W = ( π 1 T , π 2 T ) T W=(\pi_1^T,\pi_2^T)^T W=(π1T,π2T)T,同样有以下两个结论:1) α π 1 + β π 2 = W T ( α , β ) T , ( α , β ) ∈ R 2 \alpha \pi_1 + \beta \pi_2=W^T(\alpha , \beta )^T,(\alpha , \beta )\in R^2 απ1+βπ2=WT(α,β)T,(α,β)∈R2。2)W的二维右零空间是直线L构成的点束。 -
Plucker矩阵表示
连接两点A,B的直线可以用Plucker矩阵表示:
L = A B T − B A T L=AB^T - BA^T L=ABT−BAT
这是一个4x4的反对称矩阵,有4个自由度,其二维生成子空间是以该直线为轴的平面束。根据点与直线的对偶,可以得到用平面表示的直线:
L ∗ = π 1 π 2 T − π 2 π 1 T L^*=\pi_1 \pi_2^T - \pi_2 \pi_1^T L∗=π1π2T−π2π1T
在plucker矩阵的表示下,有下述结论:
1)点与直线的关系: L ∗ X = 0 L^*X=0 L∗X=0表示X在直线上,否则 L ∗ X = π L^*X=\pi L∗X=π是点与直线确定的平面。
2)面与直线的关系: L π = 0 L\pi=0 Lπ=0表示l在平面上,否则 L π = X L\pi=X Lπ=X是直线与平面的交点。