齐次坐标
一、背景
在数学里,齐次坐标(homogeneous coordinates),或投影坐标(projective coordinates)是指一个用于投影几何里的坐标系统。该词由奥古斯特·费迪南德·莫比乌斯于1827年在其著作《Der barycentrische Calcul》一书内引入。
齐次坐标可让包括无穷远点的点坐标以有限坐标表示。使用齐次坐标的公式通常会比用笛卡儿坐标表示更为简单,且更为对称。齐次坐标广泛的应用于计算机图形及3D计算机视觉。使用齐次坐标可让计算机进行仿射变换,通常其投影变换能简单地使用矩阵来表示。
在齐次坐标的定义中,一个点的齐次坐标乘上一个非零标量,所得坐标会表示同一个点。因此齐次坐标也用来表示无穷远点,为此一扩展而需用来表示坐标的数值比投影空间的维度多一。
二、齐次坐标与笛卡尔坐标
在齐次坐标里,需要两个值来表示在投影线上的一点,需要三个值来表示投影平面上的一点。则点
(
X
,
Y
)
(X, Y)
(X,Y) 在齐次坐标里面变成了
(
x
,
y
,
w
)
(x, y, w)
(x,y,w) ,并且有
X
=
x
/
w
X = x/w
X=x/w ,
Y
=
y
/
w
Y = y/w
Y=y/w 。笛卡尔坐标系下
(
1
,
2
)
(1,2)
(1,2) 的齐次坐标可以表示为
(
1
,
2
,
1
)
(1, 2, 1)
(1,2,1) ,如果点
(
1
,
2
)
(1, 2)
(1,2) 移动到无限远处,在笛卡尔坐标下它变为
(
∞
,
∞
)
(∞, ∞)
(∞,∞),然后它的齐次坐标表示为
(
1
,
2
,
0
)
(1, 2, 0)
(1,2,0) ,因为
(
1
0
,
2
0
)
=
(
∞
,
∞
)
(\frac{1}{0}, \frac{2}{0}) = (∞, ∞)
(01,02)=(∞,∞),我们可以不用
∞
∞
∞ 来表示一个无穷远处的点。下面为齐次坐标与笛卡尔坐标的转换关系。
齐次坐标
\qquad \qquad \quad
笛卡尔坐标
(
x
,
y
,
w
)
<
=
>
(
x
w
,
y
w
)
=
(
X
,
Y
)
(x, y, w) \ \ \ <=> \quad (\frac{x}{w}, \frac{y}{w}) \quad =\quad (X, Y)
(x,y,w) <=>(wx,wy)=(X,Y)
( 1 , 2 , 1 ) < = > ( 1 1 , 2 1 ) = ( 1 , 2 ) (1, 2, 1) \quad <=> \quad (\frac{1}{1}, \frac{2}{1}) \quad =\quad (1, 2) (1,2,1)<=>(11,12)=(1,2)
(
2
,
4
,
2
)
<
=
>
(
2
2
,
4
2
)
=
(
1
,
2
)
(2, 4, 2) \quad <=> \quad (\frac{2}{2}, \frac{4}{2})\quad = \quad (1, 2)
(2,4,2)<=>(22,24)=(1,2)
三、进阶
实投影平面可以看作是一个具有额外点的欧氏平面,这些点称之为无穷远点,并被认为是位于一条新的线上(该线称之为无穷远线)。每一个无穷远点对应至一个方向(由一条线之斜率给出),可非正式地定义为一个点自原点朝该方向移动的极限。在欧氏平面里的平行线可看成会在对应其共同方向的无穷远点上相交。正如生活中两条平行的铁轨会在视觉的无穷远处相交。给定欧氏平面上的一点
(
x
,
y
)
(x, y)
(x,y),对任意非零实数
Z
Z
Z,三元组
(
x
Z
,
y
Z
,
Z
)
(xZ, yZ, Z)
(xZ,yZ,Z) 即称之为该点的齐次坐标。依据定义,将齐次坐标内的数值乘上同一个非零实数,可得到同一点的另一组齐次坐标。例如,笛卡儿坐标上的点 (1,2) 在齐次坐标中即可标示成
(
1
,
2
,
1
)
(1,2,1)
(1,2,1) 或
(
2
,
4
,
2
)
(2,4,2)
(2,4,2)。原来的笛卡儿坐标可透过将前两个数值除以第三个数值取回。因此,与笛卡儿坐标不同,一个点可以有无限多个齐次坐标表示法。
一条通过原点
(
0
,
0
)
(0, 0)
(0,0) 的线之方程可写作
n
x
+
m
y
=
0
nx + my = 0
nx+my=0,其中
n
n
n 及
m
m
m 不能同时为 0。以参数表示,则能写成
x
=
m
t
,
y
=
−
n
t
x = mt, y = − nt
x=mt,y=−nt。令
Z
=
1
t
Z=\frac{1}{t}
Z=t1,则线上的点之笛卡儿坐标可写作
(
m
Z
,
−
n
Z
)
(\frac{m}{Z},\frac{-n}{Z})
(Zm,Z−n)。在齐次坐标下,则写成
(
m
,
−
n
,
Z
)
(m, − n, Z)
(m,−n,Z)。当
t
t
t 趋向无限大,亦即点远离原点时,
Z
Z
Z 会趋近于 0,而该点的齐次坐标则会变成
(
m
,
−
n
,
0
)
(m, −n, 0)
(m,−n,0)。因此,可定义
(
m
,
−
n
,
0
)
(m, −n, 0)
(m,−n,0) 为对应
n
x
+
m
y
=
0
nx + my = 0
nx+my=0 这条线之方向的无穷远点的齐次坐标。因为欧氏平面上的每条线都会与透过原点的某一条线平行,且因为平行线会有相同的无穷远点,欧氏平面每条线上的无穷远点都有其齐次坐标。
概括来说:
- 投影平面上的任何点都可以表示成一三元组 ( X , Y , Z ) (X, Y, Z) (X,Y,Z),称之为该点的齐次坐标或投影坐标,其中 X 、 Y X、Y X、Y 及 Z Z Z 不全为 0。
- 以齐次坐标表表示的点,若该坐标内的数值全乘上一相同非零实数,仍会表示该点。
- 相反地,两个齐次坐标表示同一点,当且仅当其中一个齐次坐标可由另一个齐次坐标乘上一相同非零常数得取得。
- 当 Z Z Z 不为 0,则该点表示欧氏平面上的该 ( X Z , Y Z ) (\frac{X}{Z}, \frac{Y}{Z}) (ZX,ZY)。
- 当
Z
Z
Z 为 0,则该点表示一无穷远点。
注意,三元组 ( 0 , 0 , 0 ) (0, 0, 0) (0,0,0) 不表示任何点。原点表示为 ( 0 , 0 , 1 ) (0, 0, 1) (0,0,1)。
有理贝兹曲线-定义于齐次坐标内的多项式曲线(蓝色),以及于平面上的投影-有理曲线(红色)W 为投影平面
参考资料:
[1] 关于齐次坐标的理解:https://blog.csdn.net/janestar/article/details/44244849
[2] 齐次坐标:https://zh.wikipedia.org/wiki/%E9%BD%90%E6%AC%A1%E5%9D%90%E6%A0%87
欢迎关注个人公众号,实时推送最新博文!