水平集介绍

水平集分为三种:

1 . 基于图像边缘灰度梯度信息 ,适用于边缘强的图像分割

2 . 基于区域特征 ,利用区域信息引导曲线慢慢靠近 ,比如分割曲线区域的内外灰度均值,分割曲线内部区域面积(例如 Chan-Vase)

3 . 混合型

水平集关键 :曲线的演变

首先设置一个初始轮廓,也就是初始轮廓,通过将这个初始轮廓演变成图像中需要分割出来的形状,那具体是如何演变的呢 ?我用自己的理解来解释一下:

既然曲线在演变,那曲线的每一个点一定有一个演化的方向,如何确定演化方向?

用最优方向,也就是梯度方向的法线方向,因为曲线沿这个方向变化最快 .

既然曲线在演变,每一个点不但有了方向也应该有一个速度,如何控制曲线演变速度呢?

梯度信息,也就是图像的灰度分别对坐标轴两方向求偏导,靠近边缘变化慢,远离边缘变化快 .

Chan-Vese(CV) 算法

要用水平集实现图像分割 , Chan-Vese算法是一个非常重要的算法,CV模型使用图像的像素灰度信息作为能量,构造能量函数,通过控制曲线内外图像的灰度值来实现曲线的演变,公式如下:

其中  表示原图像在  坐标下的灰度值 ,  分别为曲线内外图像灰度值的均值 .

当曲线演变至目标轮廓时, 取极小值,内外能量守恒 .

再在 上加上一些正则项 ,得出一个能量泛函:

引入水平集函数 :  

先来说一下我对这个函数   的理解 ,我把它理解成一个描绘等高线的函数,他不是一个曲线函数,我们可以把它理解成一个面函数,从初始曲线映射的面函数,假设引入时间变量  ,随着时间  在变 曲线也就在演变,而面也就一层一层的向下演变,这个在之后的变分方程(E-L公式的介绍里会详细的说明)当演化到一定程度,再通过绘制等高线的方法,来实现图像最终的分割.

刚才既然说到水平集函数是一个面函数,那么如何表示曲线呢?这里就要引入Heaviside Fucntion(阶跃函数)  公式如下:

这里阶跃函数的参数  就是水平集函数  

一般一个初始的轮廓设置时,变量是一个和原图相同大小的矩阵,轮廓内的值为 1,而轮廓外的值为  -1,通过慢慢演变,

中的 -1逐渐增大变为正数,迭代到一定程度是 ,将轮廓曲线分割完成,而  阶跃函数的意义就是 如果,也就是 的值 了,说明该点已经被认为是演化出来的新的轮廓了.

能量泛函的定义

上面已经提到过,能量泛函为:

其中:

并且每一个前面都需要有一个权重参数,所以总能量泛函就可以是:

其中:

在理论上来讲,Heaviside Fucntion(阶跃函数)是不存在的,所以我们选择了一个替代函数(为常数):

为什么选择这个函数呢?因为后面变分法梯度下降的时候,会涉及到  求导,而数学好的已经发现了 求导是一个跟  有关的常数 .

当ϵ 的取值越小,替代函数也就越接近理想中的的阶跃函数。

求解能量泛函极值

我们使用变分法(欧拉 - 拉格朗日)和梯度下降来求泛函  的最优解,公式如下:

代码实现中,我们也是通过这个公式来实现迭代并更新水平集函数 

图像分割 - 水平集算法相关推荐

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

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

  2. 水平集算法matlab实现

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

  3. 计算机视觉之图像分割——水平集方法_ACWE2001

    一个简单的例子引入能量函数 其实是Mumford-Shah的特例 用水平集函数表示曲线 变分法得到欧拉-拉格朗日公式 迭代法解偏微分方程 算法 问题 这篇博客介绍的是2001年的一篇文章Active ...

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

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

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

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

  6. 图像分割之水平集(Level Set)分割

    几何活动轮廓模型--水平集分割:Active Contours Without Edges 水平集方法 水平集是跟踪轮廓和表面运动的一种数字化方法,它不直接对轮廓进行操作,而是将轮廓设置成一个高维函数 ...

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

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

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

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

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

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

最新文章

  1. 数据库MYSQL学习系列二
  2. Cocos2d学习之路三(使用Zwoptex创建精灵表单和CCAnimate动画)
  3. c语言计算pi后1000位,计算圆周率 Pi (π)值, 精确到小数点后 10000 位
  4. verilog基础--sign表达式
  5. Hyperledger Besu企业以太坊快速教程
  6. TensorFlow随笔-多分类单层神经网络softmax
  7. 『转载』hadoop2.x常用端口、定义方法及默认端口
  8. XEIM|XEIM企业即时通讯
  9. sci写作sci写作模板_2020年写作主题
  10. PHY芯片88EE1111 MDIO接口调试
  11. Dart的日期时间操作
  12. 【百度地图API】建立全国银行位置查询系统(二)——怎样为地图添加控件
  13. 爬虫学习(七)——使用代理服务器进行数据爬取
  14. paip.c++ qt 共享库dll的建立
  15. Win10安装ST-Link驱动--无需下载驱动
  16. 二极管压降随电流的变化
  17. java 音频 合成_java实现mp3合并的方法
  18. mysql 联合主键的作用
  19. 稿费一般多少钱一千字_写网络小说能挣多少钱,稿费都是怎么算的?
  20. 手机如何测光照度_照度测定方法

热门文章

  1. pythonidechart_Python调用echarts5实现数据可视化-02-魅惑黑
  2. SliverLight的官方介绍
  3. 调试Loder.exe时候遇到的问题
  4. (一)目标检测-R-CNN模型
  5. 自注意力(Self-Attention)
  6. 谈谈JVM GC 收集器
  7. 虾扑 ERP 店铺 管理系统 一键式上新
  8. html如何外链两个css文件,CSS的两种外链方式讲解
  9. 微信小程序聊天 表情
  10. 爱因斯坦不为人所知的十大秘密