背景:

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 提出的两相分片常数能量泛函:

不需要重新初始化的

DRLSE 水平集算法总结相关推荐

  1. 『分享』水平集算法简介(Level Set)

    注:原文网页广告太多,决定转帖到这里,待更新! [原链接]http://www.caogenit.com/caogenxueyuan/yingyongfangxiang/rengongzhineng/ ...

  2. 图像分割 - 水平集算法

    水平集介绍 水平集分为三种: 1 . 基于图像边缘灰度梯度信息 ,适用于边缘强的图像分割 2 . 基于区域特征 ,利用区域信息引导曲线慢慢靠近 ,比如分割曲线区域的内外灰度均值,分割曲线内部区域面积( ...

  3. 水平集算法matlab实现

    http://forum.vibunion.com/thread-24651-1-1.html function phiy = activecontourCV( u0, center, radius, ...

  4. [图像处理]水平集(Level set)算法实现思路(简化)

    [图像处理]水平集(Level set)算法实现思路(简化) 创建时间:2020年6月22日 修改时间:2021年6月12日 文章目录 [图像处理]水平集(Level set)算法实现思路(简化) 一 ...

  5. 水平集(level set)算法原理介绍

    本篇文章,解释的是水平集算法最基础的原理. 1 水平集方法的解释  有一个表面S,它与一个平面P相交,得到一个曲线C,这个C就是我们通过水平集得到的轮廓.  在图像分割中,表面S是随着由图像派生得到的 ...

  6. 基于水平集方法和G0模型的SAR图像分割

    基于水平集方法和G0模型的SAR图像分割 Abstract(摘要) 这篇文章提出了一种分割SAR图像的方法,探索利用SAR数据中的统计特性将图像分区域.我们假设为SAR图像分割分配参数,并与水平集模型 ...

  7. 水平集——那些我膜拜过的牛人2

    本篇是迄今为止数学味最浓的,主要用于介绍一个方法以及一个牛人李春明.又来一个明(上次是何凯明),要是中国的小明都这么厉害就了不得了. 代表文章:<Level set evolution with ...

  8. 水平集(Level Set)的基本方法

    水平集(Level Set)的基本方法 水平集(Level Set)的基本方法-曲线演化的直观解释 映射C(p), p\in [a,b] : R→R^2定义了一个平面的曲线,p是参数,对属于区间[a, ...

  9. 基于水平集的图像分割方法

    一.引言 借鉴一些流体中的重要思想, 1988年,Osher和Sethian首次提出了水平集算法[1],这是一种有效解决曲线演化问题的数值方法,并且计算稳定,适宜任意维数空间.随后,Osher等人对水 ...

  10. 荔枝hsv空间图像分割程序matlab,基于稀疏场水平集的荔枝图像分割算法_毛亮

    第4期毛亮等:基于稀疏场水平集的荔枝图像分割算法349 从表中可知,本文算法在计算速度上接近标准模糊C 均值聚类算法,优于水平集方法.因此,与水平集方法相比,本文算法有着更好的分割性能和实时性. 4结 ...

最新文章

  1. selenium自动加载Flash
  2. 开闭原则------(转)
  3. Struts 1基础入门
  4. pythontry参数_Python ——Try Except
  5. ASP.NET之JSONHelper操作
  6. 点击加入购物车直接转到购物车页面
  7. iOS 10 的 Speech 框架实现语音识别 (Swift)
  8. MYSQL常用查询函数
  9. 纯新手DSP编程--5.29--基于CCS的DSP片级支持库CSL
  10. 搜索题,留着以后慢慢刷
  11. error: Unexpected trailing comma (comma-dangle) at src\components\Login.vue:99:4:
  12. Unity 官方标准资源下载(standard assets)2种方式
  13. tp1900芯片对比7621a_TP-LINK WDR7660千兆版 厉害了单芯片TP1900-路由器交流
  14. 在vue中使用unity3D实现webGL将要呈现的效果
  15. 电脑键盘上的Alt键的作用
  16. CorelDRAW 2022中文精简64位直装版下载
  17. SPSS数据分析中出现的常见问题总结
  18. 培训机构内幕--转载
  19. 修改Zabbix标志性logo
  20. Mac conda 使用

热门文章

  1. CPU 用户时间 系统时间
  2. [转]CString类型的头文件、CString的输出、CString的常用用法
  3. 必做作业三:原型化系统-社区分享app
  4. java -super关键字
  5. CephOpenstack结合说明操作
  6. ThinkPHP开发博客系统笔记之二
  7. geotrellis使用(七)记录一次惨痛的bug调试经历以及求DEM坡度实践
  8. atomic一定线程安全吗
  9. Java ME SDK 3.0.5发布!
  10. NTP原理及配置使用