|||
摄影测量与计算机视觉
(6)几何变换的层次 上
1. 欧几里得空间
何谓空间?要是将根基建立在心理学和哲学,百家争鸣般的定义和争论显而易见。权威字典也不会完全一致。要是从最严谨的数学出发,抱歉这里可找不到“空间”的定义。与现实相悖,但恰是数学的本质:空谈概念而不知所言何物,有何意义?
因此,定义一个数学意义上的“空间”,必须同时为它配置属性和结构。我们一般所指的平直空间,在数学上叫“欧几里得空间”,记作Rn(更严格地,记作En,在计算机视觉中可以模糊一点),n代表空间的维度。它的定义,有赖于另外一个更普遍的概念:向量空间。向量空间的公理化定义又立于集合论之上。
20世纪上半叶,集合论,乃至整个数学,遭受了连串致命打击,号称第三次数学危机。1901年罗素在写他的大作《数学原理》时,“不幸”发现了“理发师悖论”;三十年代,毫不留情的哥德尔粉碎了数学完备性的梦想——一个数学系统中总存在不可证的命题;图灵在他的通用图灵机上碰到了“不可判定停机问题”。这一切的肇事者,是“集合论中的自指”。痛归痛,日子还得继续。希尔伯特,20世纪之交最著名的数学家,公理化的倡导者,大声疾呼“没人能把我们从康托尔建立的天堂(指集合论)里面赶出去!”直至死前最后一刻仍念念不忘:“一定行,必须行……”。让希尔伯特在天堂欣慰的是,集合论没有被数学家抛弃。后来者企图通过集合论自身的“公理化”,以避免悖论。目前通用的是由策梅洛-弗兰克尔建立并不断精化的Z-F体系。所用的策略,概括为:避免自指。
(自指引发的危机可不局限于数学。早年的资本家,“为那些自己不生产牛奶的人生产牛奶”,劳动人民用所有钱来买牛奶,仍然买不起;轮到资本家自己买单时,金融危机就降临了。现在,既做裁判又做运动员引发的灾难不亚于金融危机:裁判要不要遵守自己制定的规则完全是理发师悖论的现实翻版。还是尽量避免吧。)
公理化后的集合论成为当今数学的基础之基础。然而可以预见,附加种种约束的、长篇大论的权宜之计,距离真正的“问题解决”道阻且长。中间势必引发不断的瑕疵、批评、争论和改进,就把问题留给数学家吧。理论物理学家当然也有自己的苦恼。他们自嘲“量子力学的重整化”只是把“垃圾扫到地毯下掩人耳目”;所谓的统一理论只是“把两块不相干的木板缠在一起”。虽然两大基础学科祸起根基,建立其上的科学大厦暂时仍算稳固。我们还是轻装前行。
依赖于公理化的集合论,我们这样定义公理化的向量空间:给定域F(域Field是标量的集合,配备加减乘除)上的集合 V,为V中的元素(称为向量)配备向量加法(u + v)和标量乘法(a·u),且加法和乘法满足八大公理,即我们熟知的交换律、结合律和分配律。那么这个集合就叫做向量空间。实数轴上的所有点的集合构成向量空间R。平面上的所有点构成向量空间R2。
定义了向量空间,与现实仍相去甚远。现实世界最直观的量:长度、角度、距离如何衡量?这就引出了“内积向量空间”、“赋范向量空间”、“度量空间”。
向量空间是从标量到向量;现在我们需要再回来,从向量到标量(长度、角度、距离等都是标量),这定义于内积空间。内积空间用符号<,>表示,记为<,>:V×V→F。F和V定义同上。为明确内积的度量,引入范数的定义:||x|| = <x, x>0.5= (∑xi2)0.5。这个范数就是广义的长度。定义了范数的空间称为“赋范向量空间”。根据范数和内积,可定义角度:θ = cos-1(<x, y>/(||x||·||y||))。
同理,为了定义距离,先要定义度量空间,然后如此定义:D(x, y) = ||x – y||= (∑(xi - yi)2)0.5。
翻山涉水,最后,在实数域Rn上,定义了如此多的性质和结构后,我们终于得到欧几里得空间En(一般也直接写成Rn)。
2. 拓扑空间与流形
除了最重要的Rn,计算机视觉和摄影测量中的一些课题还涉及拓扑空间。18世纪前,路过柯尼斯堡的客人可能感到迷茫:有没有一次性通过七座桥而不重复的走法?数学大师欧拉(1707-1783)通过点与线的简化,巧妙地证否,并创立拓扑学。拓扑忽略长度和度量,只考虑连通和邻接,是更具广泛意义的数学结构。因此Rn属于拓扑空间的特例。我们专业所用到的名词“流形”(一般仅指赋予了黎曼度量的微分流形),也是一种特殊的拓扑空间。
计算机视觉中引入流形主要是为简化非欧几何中的度量问题。为避免再次陷入公理化的泥潭,我们简单地把流形看作是局部具有Rn结构的曲面或曲线。例如:球面是一个流形,它属于非欧几何(黎曼几何),异于平直空间,如何计算其上两点A、B的距离(测地线)?先想象一个包含球面的正立方面。为每个平面建立局部坐标。建立局部球面与平面间的双射f。这个双射是连续的、光滑的函数,称为“同胚”。(拓扑中最著名的“同胚”问题当属彭加莱猜想:单连通三维闭流形与球同胚。2006年已由古怪的数学家佩雷尔曼证明。)
直观起见,我们取二维平面上的圆,如图1。通过A、B在平面上的投影a、b的距离、以及f,计算A、B在球面的距离。设圆方程为x2+y2 = r2。我们将其映射至[-r, r]的直线,即f: (x,y) →x。逆映射是:f-1: x →(x,(r2 – x2)0.5)。考虑平面上无限靠近的两点,距离为dx,通过f-1,得到弧线对应长度:ds = [(r2– x2)0.5/r]dx = E dx。在A、B间积分:
∫ABds = ∫AB E dx = r·arcsinx|AB = r·Δθ (1)
我们就重新发现了圆的弧长公式。更一般地,对于R3中嵌入的一般二维流形,其度量依然从微分入手:ds2=Edx12+2Fdx1d x2+Gdx22。这里系数E,F,G称为度量张量,由曲率决定。如在R2中,就有E = G = 1,F=0。不过,这不就是曲线微积分吗?需要引入流形吗?在图1中,只要我们将B移动到B’,那么AB’就无法仅用现在的x轴积分出来。现实世界无疑是更加复杂的,仅仅投影于单个数轴(切空间)的曲线微分无法胜任。这就需要为复杂的曲面建立多个局部坐标卡,比如图1中的四个数轴。把每个局部空间称为地图,把所有的空间称为图册,为相邻的地图(不同颜色的重叠区域)建立起映射T。这样,就保证了图与图之间的连续性。分而治之,就是计算机视觉中流形的意义所在。
图1 圆和流形
回到我们的地球,为了进行完整的度量,我们需要一系列地图,每个地图表达有限的区域。高斯的“绝妙定理”,证明了无法将球面展开为单个平面,因此他建立了高斯投影(从椭球面到平面的保角投影),并按照经度分带,将单图变成图册。现在我们常用的分带是6°投影带和3°投影带。
球面或者椭球面,都是简单的流形。请想象您的连帽外套。那可是复杂流形的典范。然而,即便是古代的裁缝,也深蕴分而治之之道。他们拿着皮尺,只需量测几个参数:袖口、腰围、肩宽、身长。以此制作袖、身、肩、领(简单流形),最后引针过线,拼为成衣(复杂流形)。
在弦理论中,图册的思想也被逐渐接受,即认为物理世界无法通过一个模型(地图)来表达,而是需要一组地图。这就是M理论。M理论中的每个子理论只能用于有限的领域,而将他们拼在一起,就能展现宇宙全貌。即兴一首:
Atlas! Atlas! Atlas!
曾经以为世界简单只需画卷徐徐展开;
现在宇宙广阔封土分疆似摊倒的骨牌;
你,我,他;
锤子,钉子;
缝针,丝线;
胶水,剪刀;
敲起来,缝起来,粘起来;
Atlas! Atlas! Atlas!
3. 几何实体
在Rn中,继续定义基本的几何实体。点、线、面、角。
除了那些大数学家和大物理学家(在科学的哪个角落都会遇上他们),德谟克利特(前460-370)同样值得尊敬。与所有真正的学者一样,他感到越学习,越无知。为追求真理和智慧,德谟克利特漫游了希腊、埃及、巴比伦、印度和波斯,无所不学,无所不问。他认为,自然只有两样东西:不可再分之原子、供原子永恒运动之虚空;宇宙中永远有无数个世界在生成、运动、灭亡。前者启发了19至20世纪的原子论和量子力学;后者是多重宇宙的前身。他所说的“原子”,可以是电子、光子、夸克等不可再分之物,因此直到今天他的思想依然适用。
这些不可再分的粒子,在物理学上称为点粒子。电子等点粒子被认为没有大小,然而这只是权宜之计,追求数学上的简单性。目前电子究竟有没有大小尚无定论。可能大多数物理学家倾向于认为有个下界:10-43。空间也一样,可能也有个最小结构,即非连续的;当然在数学上将它看作连续的R3来计算并没有问题。
回到计算机视觉。点用矢量x表示。二维空间R2中的点记作x = (x, y)。将其再扩充一维,写作(x, y, 1),规定两者表达同一个点。接着,我们假定 (2x, 2y, 2),直到(kx, ky, k),也表达同一个点。这种表达方法称为该点的“齐次坐标”。从齐次坐标恢复普通的坐标,只需要将齐次坐标的前两项除以第三项即可。有一个例外是(x, y, 0),这时候普通坐标无穷大。这恰恰是我们所需要的:灭点(无穷远点)、灭线等概念用齐次坐标更好表达。类似地,三维点的齐次坐标表示为x = (x, y, z, 1)。
线用矢量l表示。方程ax + by + c = 0表达二维空间的一条直线。即:点(x, y, 1)出现在由参数(a, b, c)所定义的直线上。令l = (a, b, c),这是线的齐次坐标(回顾初等几何,线可以只用斜率和截距2个参数表达)。此时点在线上这个几何关系,表达为x·l = 0;线与线相交x = l1×l2;两点一线l = x1×x2。略作变换,得到二维直线的另外一种常见形式:l = (nx, ny,d) = (n, d),其中,n是单位法矢,d是直线与原点的距离。有一个例外是(0, 0, 1),这是一条无穷远线,它没有法矢,并且所有的无穷远点都在其上。想象脚下无穷延伸的二维地平线,我们的直觉应该是一个无穷大半径的圆。没错,无穷大半径的圆和直线确实等价。
很遗憾,三维空间直线没有二维空间如此简单的表达形式。通常,我们需要额外引入一个参数来表达。设(x1, x2)为直线上已知两点,λ为任意实数,该直线上任意一点表达为:
x =(1-λ)x1 +λx2 (2)
面用字母π表示。在二维欧式空间,面就是空间本身。三维空间的面,用(a, b, c,d)表达,且满足关系式:
x·π= ax + by+ cz + d = 0 (3)
改写成法向量的形式:π= (nx, ny,nz, d) = (n, d)。无穷远面(0, 0, 0, 1)没有法矢。想象一个无限扩张的三维球面:它显然没有一个固定的法方向。最终这个无限的球面等价于无穷远平面,并且所有的无穷远点和无穷远线都在其上。
平面角一般用字母θ表示,只需要1个参数。当绕逆时针旋转时,新旧坐标点的变换公式为
(4)
三维空间的角度则复杂许多,一般有3种表达方法。最常用的是欧拉角,缺点多多。静态欧拉角,即绕固定不动的世界坐标系旋转,一般表示为φ,ω,κ。不同的旋转顺序(比如按照y-x-z轴或x-z-x轴旋转),欧拉角互不相同。动态欧拉角,是绕物体的旋转,坐标系随着物体的转动而转动。动态欧拉角可能产生万向锁(gimble lock),丢掉一个维度。最后,欧拉角在参数空间上甚至不是连续的。即便如此,欧拉角依然应用广泛。
第二种表达方法是罗德里格斯公式。试想这样一个更普遍的问题:如何绕一个任意的空间矢量n = (nx, ny,nz)(而不是坐标轴),旋转某个角度θ?这里直接给出通用公式:
R(n, θ) = I + sinθ[n]×+ (1−cosθ)[n]×2
[n]×是与矢量叉积同构的反对称矩阵。
第三种表达角度的方法是四元数。直观的数系,包括自然数、整数、有理数、实数;在求解-1的平方根时,复数(二元的复平面)也被自然地发现。还有更多的数吗?下一个出场的就是四元数(有兴趣的朋友可以试着证明不存在三元数)。四元数写作q = qxi + qyj+ qzk + qw,且ij=jk=ik=-1;而单位四元数指位于||q|| = 1单位球面上四元数。
再次回到上面的问题:如何将一个矢量v绕某个轴n旋转θ角?首先,仿照齐次式的小技巧,将三维矢量扩充一维,得到一个四元数:qv=(v, 0 );再构造这样一个“旋转”单位四元数:Q = (nsinθ/2, cosθ/2) = (x, y,z, w)。接着,我们恰可证明,“旋转”后的新四元数qv′ = Q qv Q-1正对应着旋转后的三维矢量v′ = Rv。R正是我们所需的3×3旋转矩阵。
不同于实数和复数乘法,四元数乘法并不满足交换律。还有其他数系吗?还剩一个八元数。不光交换律,八元数甚至连结合律都不满足。好了,不会有更多的数系了:没有更多的“律”可供挥霍啦。
与可能发生跳变的欧拉角相比,这种“旋转”单位四元数的表达形式在参数空间是连续的,在数理科学和工程中得到广泛应用。如狄拉克方程(爱因斯坦质能方程E = mc2的“量子升级版”)就由四元数表达。但四元数到底是什么?事实上,百余年来,包括19世纪的发明者汉密尔顿自己,都未能诠释周全;在与“矢量派”的论战中,“四元数派”长期落于下风。现在一切都清楚了:我们表达旋转第二种的方法,矢量,是旋转发生的平台;而第三种方法,四元数,是旋转本身。因此,20世纪的数学家嘉当替四元数起了一个更加确切的名字:旋量。
Archiver|手机版|科学网 ( 京ICP备07017567号-12 )
GMT+8, 2024-11-2 16:38
Powered by ScienceNet.cn
Copyright © 2007- 中国科学报社