射影几何基础
2D
2D点
欧氏空间中的笛卡尔坐标,缩放、旋转和仿射变换能表示成矩阵运算(线性) ; 但平移变换和透视投影不能表示成矩阵相乘。所以为了解决这个问题引入齐次坐标,其中齐次坐标有如下特性:
- 所有2D/3D几何变换可表示成矩阵运算/线性变换 X ′ = H X X'=HX X′=HX
- 可以表示无穷远点
笛卡尔坐标系 | 齐次坐标系 | |
---|---|---|
2D | ( x w , y w ) (\frac{x}{w},\frac{y}{w}) (wx,wy) | ( x , y , w ) (x,y,w) (x,y,w) |
3D | ( x w , y w , z w ) (\frac{x}{w},\frac{y}{w},\frac{z}{w}) (wx,wy,wz) | ( x , y , z , w ) (x,y,z,w) (x,y,z,w) |
射影几何用于 3D世界到2D图像之间的映射
射影空间 I P n IP^n IPn:欧氏空间 I R n IR^n IRn的扩展
齐次坐标 [ x 1 , x 2 , … , x n , x n + 1 ] [x_1,x_2,\dots,x_n,x_{n+1}] [x1,x2,…,xn,xn+1]
无穷远点 x n + 1 = 0 x_{n+1}=0 xn+1=0、无穷远直线、无穷远平面
当 x n + 1 = 0 x_{n+1}=0 xn+1=0,我们成该点为无穷远点(Infinity), 或理想点(Idea Point)
射影空间之间的映射为共线性映射,即保持共线 性(共线的点经过射影映射后还共线)。
从 I P m IP^m IPm到 I P n IP^n IPn的共线映射为 X ′ = H X X'=HX X′=HX,其中 H H H为 ( n + 1 ) × ( m + 1 ) (n+1)\times (m+1) (n+1)×(m+1)的矩阵
其中2D欧氏坐标 I R 2 IR^{2} IR2的点的笛卡尔坐标为 ( x , y ) T (x,y)^{\mathrm{T}} (x,y)T 2D射影空间 I P 2 IP^{2} IP2的点的齐次坐标为 x = ( x , y , w ) T x=(x,y,w)^{\mathrm{T}} x=(x,y,w)T, 对应 I R 2 IR^{2} IR2的点 ( x / w , y / w ) T (x/w,y/w)^{\mathrm{T}} (x/w,y/w)T
可知道在笛卡尔坐标系中(2,1)的点在摄影空间为(2,1,1)
易知在笛卡尔坐标系中直线方程为 A x + B y + C = 0 Ax+By+C=0 Ax+By+C=0
在笛卡尔空间中两条平行线是不可以相交的,但是在射影空间中两条平行线是可以相交的,如火车的铁轨
易知在笛卡尔坐标系中两平行线的交点方程为
{
A
x
+
B
y
+
C
=
0
A
x
+
B
y
+
D
=
0
\begin{cases} Ax+By+C=0\\ Ax+By+D=0 \end{cases}
{Ax+By+C=0Ax+By+D=0
可知此方程无解,因为当且仅当C=D时方程组成立,但是此两条直线重合
但在射影空间中
{
A
x
w
+
B
y
w
+
C
=
0
A
x
w
+
B
y
w
+
D
=
0
\begin{cases} A\frac{x}{w}+B\frac{y}{w}+C=0\\ A\frac{x}{w}+B\frac{y}{w}+D=0\\ \end{cases}
{Awx+Bwy+C=0Awx+Bwy+D=0
即
{
A
x
+
B
y
+
C
w
=
0
A
x
+
B
y
+
D
w
=
0
\begin{cases} Ax+By+Cw=0\\ Ax+By+Dw=0 \end{cases}
{Ax+By+Cw=0Ax+By+Dw=0
所以可知当w=0时,两平行线相交
欧氏空间中的平行线不会相交,但我们可以在齐次坐标下(射影空间)计算其叉乘,得到第3个元素为0,即无穷远点一般形式:给定两条平行线 l 1 = [ a b c 1 ] T , l 2 = [ a b c 2 ] T l_1=[a\quad b\quad c_1]^{\mathrm{T}},\quad l_2=[a\quad b\quad c_2]^{\mathrm{T}} l1=[abc1]T,l2=[abc2]T
则交点为
l
1
×
l
2
=
[
b
c
2
−
c
1
b
c
1
a
−
a
c
2
a
b
−
b
a
]
=
(
c
2
−
c
1
)
[
b
−
a
0
]
l_1\times l_2=\begin{bmatrix}bc_2-c_1b\\c_1a-ac_2\\ab-ba\end{bmatrix}=(c_2-c_1)\begin{bmatrix}b\\-a\\0\end{bmatrix}
l1×l2=
bc2−c1bc1a−ac2ab−ba
=(c2−c1)
b−a0
2D直线
2D射影空间IP2的直线也用3维齐次坐标表示为 l = ( a , b , c ) T l=(a,b,c)^{\mathrm{T}} l=(a,b,c)T
点
x
=
(
x
,
y
,
1
)
T
x=(x,y,1)^{\mathrm{T}}
x=(x,y,1)T在直线
l
l
l上:点到直线的距离为0,可得
a
x
+
b
y
+
c
=
0
[
a
,
b
,
c
]
[
x
y
1
]
=
0
l
T
x
=
x
T
l
=
0
\begin{aligned} ax + by + c&=0\\ \begin{bmatrix} a,b,c \end{bmatrix} \begin{bmatrix} x\\y\\1 \end{bmatrix} &=0\\ l^Tx=x^Tl&=0 \end{aligned}
ax+by+c[a,b,c]
xy1
lTx=xTl=0=0=0
易知给定两点
x
1
,
x
2
x_1,x_2
x1,x2,可得经过这两点的一条直线
l
=
x
1
×
x
2
l=x_1\times x_2
l=x1×x2
l
=
x
1
×
x
2
=
∣
i
j
k
x
1
,
1
x
1
,
2
x
1
,
3
x
2
,
1
x
2
,
2
x
2
,
3
∣
=
(
x
1
,
2
x
2
,
3
−
x
1
,
3
x
2
,
2
)
i
+
(
x
1
,
3
x
2
,
1
−
x
1
,
1
x
2
,
3
)
j
+
(
x
1
,
1
x
2
,
2
−
x
1
,
2
x
2
,
1
)
k
=
[
x
1
,
2
x
2
,
3
−
x
1
,
3
x
2
,
2
x
1
,
3
x
2
,
1
−
x
1
,
1
x
2
,
3
x
1
,
1
x
2
,
2
−
x
1
,
2
x
2
,
1
]
\begin{aligned} l&=x_1\times x_2\\ &=\left|\begin{matrix} i&j&k\\ x_{1,1}&x_{1,2}&x_{1,3}\\ x_{2,1}&x_{2,2}&x_{2,3} \end{matrix}\right|\\ &=(x_{1,2}x_{2,3}-x_{1,3}x_{2,2})i\\ &+(x_{1,3}x_{2,1}-x_{1,1}x_{2,3})j\\ &+(x_{1,1}x_{2,2}-x_{1,2}x_{2,1})k\\ &=\begin{bmatrix}x_{1,2}x_{2,3}-x_{1,3}x_{2,2}\\x_{1,3}x_{2,1}-x_{1,1}x_{2,3}\\x_{1,1}x_{2,2}-x_{1,2}x_{2,1}\end{bmatrix} \end{aligned}
l=x1×x2=
ix1,1x2,1jx1,2x2,2kx1,3x2,3
=(x1,2x2,3−x1,3x2,2)i+(x1,3x2,1−x1,1x2,3)j+(x1,1x2,2−x1,2x2,1)k=
x1,2x2,3−x1,3x2,2x1,3x2,1−x1,1x2,3x1,1x2,2−x1,2x2,1
同理可得给定两条直线:
l
1
(
L
1
)
,
l
2
(
L
2
)
l_1(L_1),l_2(L_2)
l1(L1),l2(L2) 这两条直线点的交点为:
x
=
l
1
×
l
2
x=l_1\times l_2
x=l1×l2
设两条线的齐次坐标分别为:(-1,0,1), (-1,0,2)
则这两条平行线的交点为无穷远点:
x
=
(
−
1
,
0
,
1
)
T
×
(
−
1
,
0
,
2
)
T
=
(
0
,
1
,
0
)
T
x=(-1,0,1)^{\mathrm{T}}\times(-1,0,2)^{\mathrm{T}}=(0,1,0)^{\mathrm{T}}
x=(−1,0,1)T×(−1,0,2)T=(0,1,0)T
第3个元素为0表示这是一个无穷远点
前两个元素表示无穷远点的方向:(0,1)表示这是一个竖直方向的无穷远点
综上所述:
- 点在直线上 : 0 = l T x = x T l :0=l^Tx=x^Tl :0=lTx=xTl
- 经过两点 x 1 x_1 x1和 x 2 x_2 x2的直线: l = x 1 × x 2 l=x_1\times x_2 l=x1×x2
- 两条线 l 1 l_1 l1和 l 2 l_2 l2的交点 : x = l 1 × l 2 x=l_1\times l_2 x=l1×l2
因为对于任意无穷远点 x x x存在直线 l = ( 0 , 0 , 1 ) T l=(0,0,1)^T l=(0,0,1)T,使得 l T x = 0 l^Tx=0 lTx=0恒成立,所以 l l l为无穷远直线
二次曲线
平面上的二次曲线:用二阶方程描述
- 非齐次坐标表示: a x 2 + b x y + c y 2 + d x + e y + f = 0 ax^2+bxy+cy^2+dx+ey+f=0 ax2+bxy+cy2+dx+ey+f=0
- 齐次坐标: x → x / w , y → y / w x\to x/w,\quad y\to y/w x→x/w,y→y/w代入,得到 a x 2 + b x y + c y 2 + d x w + e y w + f w 2 = 0 ax^2+bxy+cy^2+dxw+eyw+fw^2=0 ax2+bxy+cy2+dxw+eyw+fw2=0
- 矩阵形式: x T C x = 0 x^{\mathrm{T}}Cx=0 xTCx=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 是对称矩阵,自由度为5
为每个点提供一个约束
a
x
i
2
+
b
x
i
y
i
+
c
y
i
2
+
d
x
i
+
e
y
i
+
f
=
0
ax_i^2+bx_iy_i+cy_i^2+dx_i+ey_i+f=0
axi2+bxiyi+cyi2+dxi+eyi+f=0,即
[
x
i
2
,
x
i
y
i
,
y
i
2
,
x
i
,
y
i
,
1
]
c
=
0
\left[x_i^2,x_iy_i,y_i^2,x_i,y_i,1\right]\boldsymbol{c}=0
[xi2,xiyi,yi2,xi,yi,1]c=0,其中
c
=
[
a
,
b
,
c
,
d
,
e
,
f
]
T
c=[a,b,c,d,e,f]^{\mathrm{T}}
c=[a,b,c,d,e,f]T,可得
[
x
1
2
x
1
y
1
y
1
2
x
1
y
1
1
x
2
2
x
2
y
2
y
2
2
x
2
y
2
1
x
3
2
x
3
y
3
y
3
2
x
3
y
3
1
x
4
2
x
4
y
4
y
4
2
x
4
y
4
1
x
5
2
x
5
y
5
y
5
2
x
5
y
5
1
]
c
=
0
\begin{bmatrix}x_1^2&x_1y_1&y_1^2&x_1&y_1&1\\x_2^2&x_2y_2&y_2^2&x_2&y_2&1\\x_3^2&x_3y_3&y_3^2&x_3&y_3&1\\x_4^2&x_4y_4&y_4^2&x_4&y_4&1\\x_5^2&x_5y_5&y_5^2&x_5&y_5&1\end{bmatrix}\mathbf{c}=\mathbf{0}
x12x22x32x42x52x1y1x2y2x3y3x4y4x5y5y12y22y32y42y52x1x2x3x4x5y1y2y3y4y511111
c=0
3D
3D点
欧氏空间的3D点: ( X 1 , X 2 , X 3 ) T (X_1,X_2,X_3)^{\mathrm{T}} (X1,X2,X3)T
3D射影空间IP 3 ^{3} 3的点的齐次坐标为 x = ( X 1 , X 2 , X 3 , X 4 ) T x=(X_1,X_2,X_3,X_4)^{\mathrm{T}} x=(X1,X2,X3,X4)T
当 X 4 ≠ 0 X_4\neq0 X4=0时, X = ( X 1 X 4 , X 2 X 4 , X 3 X 4 , 1 ) T = ( X , Y , Z , 1 ) T X=(\frac{X_1}{X_4},\frac{X_2}{X_4},\frac{X_3}{X_4},1)^{\mathrm{T}}=(X,Y,Z,1)^{\mathrm{T}} X=(X4X1,X4X2,X4X3,1)T=(X,Y,Z,1)T
当 X 4 = 0 X_4=0 X4=0时, ( X 1 , X 2 , X 3 , 0 ) (X_1,X_2,X_3,0) (X1,X2,X3,0)表示无穷远点。
3D射影空间中的点的射影变换为:
X
′
=
H
X
X'=HX
X′=HX
其中
H
H
H为4×4的非奇异矩阵,自由度为15
3D 平面
可知3D点的形式如下
X
=
[
X
1
X
2
X
3
X
4
]
X=\begin{bmatrix}X_1\\X_2\\X_3\\X_4\end{bmatrix}
X=
X1X2X3X4
设3D平面的形式如下
π
=
[
π
1
π
2
π
3
π
4
]
\pi=\begin{bmatrix}\pi_1\\\pi_2\\\pi_3\\\pi_4\end{bmatrix}
π=
π1π2π3π4
所以点在平面上可以表示为
X
1
π
1
+
X
2
π
2
+
X
3
π
3
+
X
4
π
4
=
0
X_1\pi_1+X_2\pi_2+X_3\pi_3+X_4\pi_4=0
X1π1+X2π2+X3π3+X4π4=0
若使用矩阵表示,则为
0
=
π
T
X
=
X
T
π
0=\pi^\mathrm{T}X=X^\mathrm{T}\pi
0=πTX=XTπ
同理可得,平面的射影变换为
π
′
=
H
−
T
π
\pi^{\prime}=H^{-T}\pi
π′=H−Tπ
可知无穷远平面为
π
∞
=
(
0
,
0
,
0
,
1
)
T
\pi_{\infty}=(0,0,0,1)^T
π∞=(0,0,0,1)T
因为三个点可以确定一个平面,则有三个点满足 X 1 π 1 + X 2 π 2 + X 3 π 3 + X 4 π 4 = 0 X_1\pi_1+X_2\pi_2+X_3\pi_3+X_4\pi_4=0 X1π1+X2π2+X3π3+X4π4=0
所以存在方程组
点
X
X
X 在由3点
(
X
1
,
X
2
,
X
3
)
(X_1, X_2, X_3)
(X1,X2,X3)在一个平面上,有三点共面条件可得
det
[
X
1
X
11
X
21
X
31
X
2
X
12
X
22
X
32
X
3
X
13
X
23
X
33
X
4
X
14
X
24
X
34
]
=
0
\det \begin{bmatrix} X_1&X_{11}&X_{21}&X_{31}\\ X_2&X_{12}&X_{22}&X_{32}\\ X_3&X_{13}&X_{23}&X_{33}\\ X_4&X_{14}&X_{24}&X_{34}\\ \end{bmatrix} =0
det
X1X2X3X4X11X12X13X14X21X22X23X24X31X32X33X34
=0
解得:
X
1
D
234
−
X
2
D
134
+
X
3
D
124
−
X
4
D
123
=
0
X_1D_{234}-X_2D_{134}+X_3D_{124}-X_4D_{123}=0
X1D234−X2D134+X3D124−X4D123=0
π
=
(
D
234
,
−
D
123
,
D
124
,
−
D
123
)
T
\boldsymbol{\pi}=(D_{234},-D_{123},D_{124},-D_{123})^\mathrm{T}
π=(D234,−D123,D124,−D123)T
可知3点
(
X
1
,
X
2
,
X
3
)
(X_1,X_2,X_3)
(X1,X2,X3) 确定的一个平面为:
(
D
234
,
−
D
123
,
D
124
,
−
D
123
)
T
(D_{234},-D_{123},D_{124},-D_{123})^{\mathrm{T}}
(D234,−D123,D124,−D123)T ,因为
[
X
1
T
X
2
T
X
3
T
]
π
=
0
\begin{bmatrix} X_1^T\\ X_2^T\\ X_3^T \end{bmatrix} \pi=0
X1TX2TX3T
π=0,即
π
\pi
π是
[
X
1
T
X
2
T
X
3
T
]
\begin{bmatrix} X_1^T\\ X_2^T\\ X_3^T \end{bmatrix}
X1TX2TX3T
的零空间。
因为三个平面可以确定一个点,所以可得3个平面 ( π 1 , π 2 , π 3 ) (\pi_1,\pi_2,\pi_3) (π1,π2,π3) 确定一个交点 X X X,存在 [ π 1 T π 2 T π 3 T ] X = 0 \begin{bmatrix} \pi_1^T\\ \pi_2^T\\ \pi_3^T \end{bmatrix} X=0 π1Tπ2Tπ3T X=0,即 X X X是 [ π 1 T π 2 T π 3 T ] \begin{bmatrix} \pi_1^T\\ \pi_2^T\\ \pi_3^T \end{bmatrix} π1Tπ2Tπ3T 的零空间。
3D直线
两点的连线:给定两个不重合的点A、B,连接这两个点的直 线有一个2×4的矩阵W的行的生成子空间表示:
W
=
[
A
T
B
T
]
W=\begin{bmatrix}A^T\\B^T\end{bmatrix}
W=[ATBT]
其中
λ
A
+
μ
B
=
0
\lambda A+\mu B=0
λA+μB=0表示直线上的点簇