首页 > 代码库 > DRLSE 水平集算法总结
DRLSE 水平集算法总结
背景:
Level Set方法是美国数学家Osher(加州大学洛杉矶分校)和Sethian(加州大学伯克利分校)合作提出的。后者因为对Level Set的贡献获得了去年美国数学会与工业应用数学会联合颁发的维纳奖。遗憾的是这两位Level Set的开创者现在正为争夺Level Set的名誉而对簿公堂。
Level Set方法是他们在98年文章"Front Propagation with Curvature Depedent Speed: Algorithms Based on Hamilton-Jacobi Formulation"中第提出的。这个方法提出以后被成功地应用于流体力学,计算机图形学,材料科学等领域。应用于图像处理和计算机视觉始于93年Caselles等人和95年Malladi等人的两篇著名文章。他们用Level Set来表示Snakes,想法很简单:一个平面上的曲线可以表示成一个二元函数z=f(x,y)的零点集合(Zero Level Set),既这个二元函数z=f(x,y)所表示的三维曲面与xy平面的交线。更一般地,任何N维曲面都可以表示为一个N+1维曲面与一个N维超平面的交集,或称为N+1维曲面在一个N维超平面上的投影。相对最早的Snake(用参数化的曲线,所以也叫parametric active contour),用level set表示的活动曲线叫着Geometric Active Contours。
用二维曲面与二维平面的交线表示曲线,这在微积分甚至中学数学里都是很平凡的。但是,当我们要描述曲线运动的时候,用Level Set表示曲线就有很明显的优点。比如说,几条曲线在运动中merge成一条曲线,或一条曲线分裂成几条曲线,这样的拓扑变化是不可能表示成一条连续的参数化曲线的运动。原因很简单,一条连续的参数化曲线是用一个一元连续函数来卞表示的,它显然不能表示几条分开的曲线(这与连续性矛盾)。
然而,以上所说的曲线的拓扑变化却可以简单地表示成一个连续变化的的曲面与一个固定的平面的交线。这个曲面本身可以不发生拓扑变化,它可以始终是一个连续的二元函数z=f(x,y)的图象。这样,复杂的曲线运动就可以简单地表示成一个更高一维的函数的演化,这可以用一个发展方程(evolution equation)来描述,数学里已经有很多工具可以用了。
再接着说说level set吧。我这次参加CVPR,遇到很多人都说level set很难。我甚至还听说有个做snake很有名的教授对level set很反感。说实话,我在去年开始实现别人的level set方法时,也对level set越来越讨厌。原因是:现有的level set方法实现跟理论不一致(这在Gomes和Faugeras的文章里已经指出),需要搀杂不少remedies,比如最令人讨厌的re-initialization。还有一些步骤,比如velocity extension,都不是让人赏心悦目的东西。这些步骤就象长在人身上的赘肉或瘤,也许是良性的,但总是让人看着极不舒服,甚至怕它恶化。
但是,还是有些人能把这样复杂而且不是那么优美的方法实现出来,而且用得不错,具有其它很多方法不具备的优点,比如让曲线自然地split和merge。象任何一种理论和方法一样,尽管有缺点(比如re-initialization),但毕竟大家还是看到了它的巨大潜力。所以这还是成为一个很热的研究方向。
图像分割问题:
偏微分方程图像分割:
近年来,基于偏微分方程的图像分割方法称为研究热点,其中KASS等在1988年发表的论文,Snakes:Active contour models 在图像分割领域影响深远。该模型将图像分割问题转化为一个能量泛函极小值问题。通过变分法,将泛函极值问题转化为对偏微分方程的求解。然后把偏微分方程的极小解作为图像分割的结果。目前,偏微分方程的分割方法主要有参数活动轮廓模型和几何活动轮廓模型。
levelset方法:
Level Set方法的基本思想是将平面闭合曲线隐含地表达为二维曲面函数的水平集,即具有相同函数值的点集,通过Level Set函数曲面的进化隐含地求解曲线的运动.尽管这种转化使得问题在形式上变得复杂,但在问题的求解上带来很多优点,其最大的优点在于曲线的拓扑变化能够得到很自然的处理,而且可以获得唯一的满足熵条件的弱解.
结合:
几何活动轮廓模型与水平集的结合的曲线演化方法。
该方法利用高维函数曲面,来表达低维的演化曲线或曲面,即,将演化的曲面或曲线嵌入到高维函数表示的曲面中。将演化方程转化为高维水平集函数的偏微分方程。从未避免参数化过程。故,水平及方法将几何活动轮廓模型的演化转化为,水平集函数的偏微分方程的表达式的,数值解的过程。
基本理论: just plain easy to understand: there is a surface, it intersects a plane, that gives us a contour and that‘s it. With image segmentation, the surface is updated with forces derived from the image.
符号距离函数的重新初始化:
finet=sgn(fine0)(1-|deltafine|);
fine(x,0)=fine0;
目的:数字纠错
重新初始化:迭代fine符号距离函数
速度函数:水平集方法进行边界轮廓提取的关键是根据实际问题的需要选取合适的速度函数F,F一般为与图像相关的项(梯度信息)以及与轮廓曲线的几何形状有关的项(曲率)的函数
其中,F表示曲线上各点的演化速度,方向沿着曲线的法线方向,通常与图像梯度和曲线曲率有关。我们想要分析和计算的是在速度F的作用下,曲面随后的演化情况。从式(2)可以看出,只要速度F变化平滑,则妒(菇,Y,t)始终保持是一个光滑函数,零水平集始终与运动曲面相对应,曲面的拓扑变化可以很容易地描述。对于不同的分割模型,速度F表达式也不相同,从而出现了多种基于水平集的图像分割方法。另外,可以看出式(2)对任意维数的曲面演化都适用。曲线的几何特性也可以很容易地从水平集函数妒(髫,,r,t)得出,譬如,曲线C上各点的
限差分法,梯度:求导
MS-MUMFORD-SHAH模型:
包括对区域和边界的描述
H是Hausdorff测度:H0表示点数,H1:表示长度,H2:表示面积
其中第一项称为数据项或忠诚项,保证近似图像u 保留观察图像I 的主要信息;第二项称为近似图像的正则项,保证图像的光滑性,在观察图像有噪声时,正则项有去除噪声的作用;C 表示目标轮廓的长度;α 、β 为非负常数,平衡各项在能量中的权重。由于Mumford-Shah 能量泛函难以求解,许多学者给出了近似模型,最简单的是Chan 和Vese 提出的两相分片常数能量泛函:
不需要重新初始化的