【转贴】Level Set方法简介【已搜无重复】 - 信息科学版 - 小木虫论坛

来源:百度文库 编辑:神马文学网 时间:2024/04/28 18:06:19
【转贴】Level Set方法简介【已搜无重复】

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),但毕竟大家还是看到了它的巨大潜力。所以这还是成为一个很热的研究方向。
更多level set请浏览Chunming Li博士的主页:
http://www.engr.uconn.edu/~cmli/