[转帖 原文也没有图片!]level set 介绍

摘要

本文简明扼要 阐明了水平集技术的相关背景,具体的介绍了水平集基本概念、基本思想、基本方法和基本技术,以及水平集在图像分割处理中的应用。

引言                                                                              

数字信号处理按其技术特征可以分为三层结构,即图像处理,图像分析和图像理解与识别。无论是图像处理,分析,还是图像理解与识别,其基础工作都建立在图像分割的基础上。所以图像分割是图像处理技术中的一项关键技术,被应用到了诸如医学,计算机视觉等各个领域,其自 20 世纪 70 年 代起一直受到人们的高度重视。图像分割的方法很多,除了经典的一阶微分法和二阶微分法等,还有我们经常使用的灰度阈值法,区域生长法,分离聚合法等,当然 还有常见的边缘检测的方法。除了上述方法外,许多学者又将模糊理论、马尔可夫模型、遗传算法理论、分形理论、神经网络、形态学理论、小波理论等研究成果运 用于图像分割的研究中,取得了很大进展。近年来,出现的基于变形模型 (Deformable Model) 的图像分割算法综合了各种对图像数据的解释和人们的知识,该方法最接近人类的视觉系统,为图像分割与图像理解开辟了一个崭新的天地,从而得到广泛的关注。

变形模型包含主动轮廓线模型、刚性联结模型 [3] 、点分布模型 [4] 。其中,主动轮廓模型是一种有效的图像分割、物体跟踪方法 [5] , 成功地用于物体识别、计算机视觉等领域;解决了传统分割算法中存在的许多问题,适当初始化后,能够自动收敛至目标边缘,不仅对图像噪声和边界间隙具有很好 的鲁棒性,而且可以将图像边界元素集合成为相关且一致的数学表达形式,以便应用于后续更高层次的图像处理中。目前,主动轮廓线模型按照曲线的基本表达方式 分为两类 [5] :一类是参数主动轮廓线模型 (Parametric Active Contour Model) ,另一类为几何主动轮廓线模型 (Geometric Active Contour Model) 。几何主动轮廓线模型基于曲线演化理论和水平集方法 (Level Set) ,是通过一个高维函数曲面来表达低维的演化曲线或曲面,即将演化的曲线或曲面表达为高维函数曲面的零水平集的间接表达形式,将演化曲线或曲面的演化方程转化为高维水平集函数的演化偏微分方程,从而避免变形曲线或曲面的参数化过程。

2 水平集的基本理论

2.1 理论概述

基于几何变形模型的水平集方法由 Osher Sethian 1982 年提出 [7] 。该方法是利用偏微分方程作为数值分析放过与技术手段被广泛运用于轮廓面或轮廓线的运动跟踪。该方法将低维闭合曲线演化的问题转化为高维空间中谁破解函数全面演化的隐含方式来求解,因此可以适应于拓扑结构变化的处理。这很好的解决了图像的拓扑结构,得到了广泛的应用。 Caselles 等人使用水平集方法实现了图像分割; bertalmio 等人把水平集方法应用到了图像变形和破损图像的修复;而 mansouri 等人则将其应用到了运动目标跟踪领域;今年来,各个学者又将水平集理路应用到了医学图像处理中。

2.2 水平集的定义

说到水平集就应该首先明白什么是水平集。水平集的标准定义是 [8] 与实数c 对应的可微函数 的水平集是实点集 {(x1, x2, ...,xn) | f(x1, x2,...,xn) = c} 称可微函数f 为水平集函数。也许这个比较难以理解,这里给一个例子:水平集函数 对应于常数c 的水平集是一个以(000) 为球心,sqrt(c) 为半径的球面(注意这里是球面不是线)。

当自变量参数个数n=2 时,水平集是一个水平曲线,我们可以理解为一个空心的球体的切面。同理,当自变量的个数n=3 时(上面 对应常数c 的水平集),水平集是一个水平面,就像一个实心的球体的切面一样。

有上面的定义我们可以有这样的感性认识,所谓的水平集关键在于水平的概念。顾名思义,水平集就是水平切面上的一个集合。

2.3 水平集的思想

要把握一个算法,关键是把握该算法的基本思想,关于水平集的基本思想,文献 [3] 是这样定义的: 水平集图像处理的核心思想是把n 维描述视为高一维(n+1) 维的水平集, 或者说是把n 维描述视为有n 维变量的水平集函数f 的水平集. 这样一来就把求解n 维描述的演化过程转化为求解关于有n 维变量的水平集函数f 的演化所导致的水平集的演化过程。其要害是通过这种转化,引入了变中的相对不变:水平集函数f 的水平c 不 变。我们把这种变中的相对不变叫做泛对称。引入了泛对称,就引入了规律,而引入了规律就能推演出水平集在此规律下依各种具体条件而演化的具体演化方程。也 即是说,引进了泛对称这一规律,我们就有了从一般到特殊的演绎过程的出发点和依据。这种思想方法的实质是以关系来决定对象。

文献[4] 表述的水平集的基本思想是:将平面闭合曲线隐含地表达为三维连续函数曲面φ(x ,y) 的一个具有相同函数值的同值曲线,通常是{ φ=0} ,称为零水平集,而φ(x ,y) 称为水平集函数。这样曲线的运动就转化为高维函数曲面的运动,而每一时刻曲线的位置由高维函数的零水平集表征。

文献[10] 给出的水平集的基本思想是:假设用C(p,t) 表示一个沿其法向方向的闭合曲线(interface ,又称Front) ,它可以是二维中的一条闭合曲线(curve) ,也可以是三维中的一个闭合曲面(Surface) 。这样,遵循一定的关系,二维曲线的演化就转换为三维水平集函数曲面的演化。通过截取不同时刻三维空间连续函数曲面的水平层,我们就可以得到当前时刻二维平面的闭合曲线的。位置和形状。水平集的主要思想就是将界面C(p,t) 作为零水平集(Zero Level Set,ZLS) 引入到高一维的 函数中,用一个关于函数 的水平集 来描述界面C(p,t) 的运动状态。

通过比较上面三个文献中关于水平集基本思想的阐述,我们可以直觉上得到关于水平集的基本思想应该是:低维到高维的映射。就是把低维空间上的函数通过水平集的方法来转化为高维空间( 如果低维是n ,则这里的高维指n+1 ,和文献[3] 相同) 。也许这还不够直觉,这里给出一个例子:

这里假设二位平面上的闭合曲线为: ,明显该曲线是二维平面上的一个标准圆。利用上面提到的水平集函数的概念,函数 就是对应常数1 的水平集函数,这里维数n=2 所以定义的水平集是一个曲线。可能会疑惑,水平集的基本思想是从低维到高维,没有体现,并不是这样,注意,水平集函数 如果你在二维的空间看确实是一个曲线,和原来没有区别,但是你还同样可以在三维的空间看,此时他就是一个圆柱体。不是吗,我们现在把水平集函数做一个简单的修改就会更加的明确,修改后的水平集函数为 ,但这里 ,这个时候就实现了二维到三维的转化。此时,你就可以这样想象了,闭合曲线其实就是三维中的圆柱体经过xoy 平面截取的一个曲线,事实上确实是这样。

如果我们接着上面所说的想象,我们把上面例子中的水平集函数 中的z 变量变为t ,此时水平集函数就为 ,这里其实就是上面文献[10] 中提到的C(p,t) 。则二维空间的闭合曲线就是我们通过截取不同时刻三维空间连续函数曲面的水平层。再直观的理解可见下图:

 

 

x

y

 

x

y

 

x

y

 

T=0

T=1

T=2

1

当我们函数中的t 取不同的值时,水平集函数对应不同的水平集,三维中的函数就是这样映射到二维的平面中的。也就是将二维中曲线的演化转化为了三维中的曲面的演化,低维变化到了高维,低维中的问题变化到了高维进行求解。

2.4 曲线演化理论

只 要有较为详细介绍水平集理论的资料在提到水平集概念时都会首先介绍曲线演化的理论,为何是这样那,其实仔细想想也不奇怪,主要原因我认为就是水平集方法很 好的解决了平面上曲线演化的问题,基本思想也就是上面提到的水平集的基本思想。其二就是图像分割的过程就可以理解为曲线演化的过程,正如文献[4] 所提到的那样图像分割可近似的看作图像平面上,闭合曲线在各种因素作用下运动的过程,这也许就是水平集为何能很好的应用到图像分割的本质所在。

我们取曲线外法线方向作为运动方向,如图 2(a) ,此时演化速度最快。但仅按此标准进行曲线演化往往会出现曲线在运动过程中自身相交的现象,易导致演化失败。图 2(b) 为仅按法线方向演化的结果,出现燕尾现象,理想情况如 2(c) 。为不使曲线在演化过程中出现燕尾现象,通常在演化速度中加入曲线的曲率项,由于使用了曲线的曲率信息,曲线在曲率大的地方具有较高的速度,这样有效的避免了燕尾现象。

   

(a) 法线运动方向                    (b) 燕尾型                           (c) 理想演化过程

2

描述曲线几何特征的两个重要参数是单位法矢和曲率,单位法矢描述曲线的方向,曲率则表述曲线弯曲的程度。曲线演化理论就是仅利用曲线的单位法矢和曲率等几何参数来研究曲线随时间的变形。

上面所说到曲线演化我们可以使用一下的函数来表示: C(p,t) = (x(p,t), y(p,t)) p 是任意参数化变量, t 是时间变量。这也是很容易理解的,曲线我们使用 C(p) 来表示,而演化其实就是在各个时间上的不同状态,所以就有了上面文献中经常提到的曲线演化方程。另一方面,速度可以分解为两个方向上的和速度。根据这个原理,加入时间参数 C(p,t) = (x(p,t), y(p,t)) 可按照法线和切线进行分解,则曲线的演化过程可用如下的偏微分方程表示:

                                        1

其中α 和β 是曲线切线方向和法线方向的速度函数。可证明,对于任何速度函数 ( α , β ) 总存在对应的 (0, β ) 保证曲线的最终演化轮廓是相等的。因为切线方向的变形仅影响曲线的参数化,不改变其形状和几何属性,也可以说,任意方向运动的曲线方程总是可以通过重新参数简化为如下的形式

                             2

其中, V(C) 是速度函数,决定曲线 C 上每点的演化速度。我们熟悉的较为常用的几何曲线演化方程有:

                         3

对于上式,我们可以认为是表示曲线在作用力 F 的驱动下,朝法线方向 N 以速度 v 演化。而速度是有正负之分的,所以就有如果速度 v 的符号为负,表示活动轮廓演化过程是朝外部方向的,如为正,则表示朝内部方向演化,活动曲线是单方向演化的,不可能同时往两个方向演化。

这里注意, 其实是一个函数,这就是速度函数,不同的速度函数就得到了不同的曲线演化方程,如果速度函数和曲线的曲率有关,就是我们常说的曲率演化方程:

                            4

式中的α是正值常数; k 是曲线的曲率。此时如果仔细思考我们可以得到下面的结论:任意形状的简单闭合曲线 [3] ,这里有必要说一下简单闭合曲线的含义,正如文献 [3] 所说的那样,简单曲线就是没有 交叉点的曲线。如下图所示:

 

3

简单曲线在上述偏微分方程的驱动下,将会逐渐变的平滑,并逐渐收缩成一个圆点,同参数化模型中的弹性内力的变形效果非常相似。听起来好像十分的奇怪,但是让我们仔细的想一下,也就没有什么奇怪的啦,为了解释方便,我们以下图为例:

 

a

b

4

根据数学上曲率的定义 [10] ,图中 a 处和 b 处的曲率显然不同, a 处的曲率大于 b 处的曲率,则有上面的公式 4 ,我们可以容易的得到在 a b 处的演化速度是不同的,速度和 a b 处的曲率成正比,所以 a 处的曲线演化速度大于 b 处的曲线演化速度,所以就有只要 a b 的速度不同,曲线在 a b 两处的演化速度就不同,这样演化的结果就是 a b 两处的演化速度变为相同。此时你可以再考虑速度的方向问题,开始时候的方向如上图箭头所示的方向,综上两个方面的考虑,我们可以断定在曲线演化的某一个阶段一定会出现下图的情形:

 

5

好的,此时去想的演化方向都是一致的,即此后只要考虑速度的大小即可,根据曲率的定义很容易得出,圆的曲率是处处一致的,即此时演化的速度的大小和方向都一样的,那么必然会有最后曲线演化为一个点。

此外我们熟悉的就是常量演化方程:

                          6

式中 是决定演化速度和方向的常系数。该方法和参数活动轮廓模型中气球力有相同的变形效果,会导致曲线出现尖角,可能出现拓扑结构变化。为何那,其实我们按照分析曲率演化模型的方法分析常量演化方程就很容易得到,还是利用图 4 来说明,假设图 4 就是曲线的起点,此时曲线上的各个速度的大小和方向都是相同的,所以在演化的某个阶段肯定会出现曲线的拉伸的状态,也就会出现尖角。

2.5 水平集方法

2.4 中的时候,我们已经知道曲线演化主要涉及到两个几何参数,一个是曲线的曲率,一个是曲线的方向矢量,而这两个参数的计算一并不是一件容易的事情,怎么有效的更方便处理曲线的几何参数的计算方法,而水平集方法正好满足这些要求。这也是水平集方法最为吸引人的地方。

水平集方法最早是由 Osher Sethian 提出,用于解决遵循热力学方程下的火苗的外形变化过程。其基本思想是将平面闭合曲线隐含地表达为三维连续函数曲面φ (x ,y) 的一个具有相同函数值的同值曲线,通常是 { φ =0} ,称为零水平集,而φ (x ,y) 称为水平集函数。这就是我们前面关于水平集函数的定义。

那么什么是水平集方法那,我的理解就是将低维的曲线转化到高维曲面的方法(在介绍水平集的主要思想时我们已经涉及)。具体的做法文献 [4] 如下:

给定平面上的一条封闭曲线,以曲线为边界,把整个平面划分为两个区域:曲线的外部和内部区域。在平面上定义距离函数φ (x ,y ,t )= ± d ,其中 d 是点 (x ,y) 到曲线的最短距离,函数符号取决于该点在曲线内部还是外部,一般定义曲线内部点的距离为负值, t 表示时间。在任意时刻,曲线上的点就是距离函数值为零的点 ( 即距离函数的零水平集 ) 。尽管这种转化使问题在形式上变得复杂,但在问题的求解上带来很多优点,最大的优点是曲线的拓扑变化能够得到很自然的处理,而且可以获得唯一的满足熵条件的解。

其实上面所说的这段内容,我们在介绍水平集的主要思想时候都已经大多说了,只是这里有一个距离函数的概念,这是理解水平集方法的一个很重要的概念。对于上面文献 [4] 给出的描述,我要说明的是, d 是点 (x,y) 到曲线的最短距离,这里就有些问题,点 (x,y) 是那里的点,到曲线是那的曲线,文中很含糊,而文献 [11] 是这样描述的:取初始闭合曲线 t=0 时的曲线,生成的符号距离函数 (signed Distance Dunction) ,记为 SDF ,作为水平集函数的零水平集 。即

     

式中的 d 是点 x 到初始曲线 的距离,其符号是根据点 x 在闭合曲线 的内外部而定,如果 x 位于 的内部,则取负号,反之取正号 . 当然也可以取相反的选择 .

所以从中可以看出,这里的点 (x,y) 应该是曲线上的点,这里的目标曲线是初始曲线。这样理解文献中的做法就变的容易理解。为更好的理解给出下面的图示:

初始轮廓

Z=d(x,y)

Y

X

Z= ψ ( Ґ (t) t)

5

5 可 以比较清楚的看出,距离函数在水平集方法中的重要性,结合前面我们所说的水平集函数和水平集的概念,在该图中也较好的体现了出来,二维平面中的圆和三维圆 锥中的水平截面就是可以是我们所说的水平集,而水平集函数就是三维坐标系中的圆锥形。对于三维坐标中不同时刻的水平截面就对应了不同的二维坐标中的曲线。

3 水平集技术的应用

明白了原理,就可以来考虑水平集的应用了,有了基本原理的理解也才能很好的应用。总体来说,水平集主要应用于图像的分割中,当然也可以应用于图像的其他方面,如文献 [3] 就提到了水平集在图像去噪中的应用。

3.1 图像分割中的应用

文献 [1] 中给出了活动轮廓模型和 Chan-Ves e 图像分割模型在图像分割中的应用,其具体的描述如下:

活动轮廓模型

Snake 模型又称活动轮廓模型,其基本思想是使初始曲线在一系列的外部约束力和图像内在能量的相互作用下进行演化,直至他满足一定的收敛条件停止在图像边缘,实现图像的分割。 Snake 模型的原理 iushi 计算能量最小,即 ,其具体的形式为:

        3.1

式中,参数 为非负的常数, C s )为初始曲线,式中开头的两项是用来控制分割物体的平滑性,属于内部能量,最后一项是控制分割物体周围的轮廓的,属于外部能量。可以看出,要使能量达到最小化,就要把演化曲线 C(s) 置于梯度 最大的地方,也就是达到目标物体边缘,从而实现图像的分割。

       此方法主要利用图像的梯度信息,对于噪声较大或者是模糊的图像,以上方法很难有效,甚至可能出现不正确的分割结果。

Chan-Vese 图像分割模型

Mumford-Shah 模型是一种基于能量最小的用于图像分割或降噪模型。 Mumford-Shah 模型的基本形式是:

       3.2

式中, v 是非负数, 表示图像区域,曲线 C 表示区域的边界, 表示初始图像, 鄙视逼近原始图像 一个分段光顺图像。要解决的主要问题就是最小化能量函数 chan-Vese 提出用水平集方法来解决 Mumford-Shah 问题。此外,他们将 Mumford-Shah 模型又分为分段光滑和分段常数两种情况。

       该方法不依赖梯度信息,利用计算能量函数最小实现图像分割,所以该方法具有全局最优。

3.2 水平集技术去噪的机理 [3]

关于水平集去噪在图像处理中的应用可以参考文献 [3].

参考文献

1 钱 芸 , 张英杰 . 水平集的图像分割方法综述 . 中国图象图形学报 . 2008, 13(1):7-13.

2 Level Set 方法介绍 . http://icst.nbu.edu.cn/ppt/LevelSet%20Review2008-03-20.pps

3 冯向军 . 水平集图像处理入门 . http://www.aideas.com/LevelSetTutorial_Public.doc . 2006.5

4 陈金男 . 基于水平集方法的图像分割研究 . 燕山大学硕士论文 . 2007

5 C. Xu, J. A. Yezzi, L. Prince. On the Relationship between Parametric and Geometric Active Contours. The Thirty-Fourth Asilomar Conference Signal System and Computers, Pacific Grove, CA, USA,2000,1:483-489.

6  V. Carlos, M. Amar. Joint Multiregion Segmentation and Parametric Estimation of Image Motion by Basis Function Representation and Level Set Evolution. IEEE Transactions on Pattern Analysis and Machine Intelligence,2006,28(5):782-793

7 HaarliekRM ShaPiorLG.ImageSemgenattionTeehniques.ComPut.Vis.GraPh.Im.Pore 1985 29:100-132.

8 level set 定义 . http://mathworld.wolfram.com/LevelSet.html

9 曲率 定义 . http://sxyd.sdut.edu.cn/gaoshu1/lesson/3.9%20%20qulv.htm

10 金大年 . 基于水平集的医学图像分割算法研究 . 硕士学位论文 . 广州 . 2005

11 徐盛 . 基于曲线演化的图像分割技术及其应用研究 . 华东师范大学硕士论文 . 2006

 

 

 


 

你可能感兴趣的:(c,算法,活动,图像处理,transactions,distance)