原理概述

snake模型将图像分割问题转换为求解能量泛函最小值的问题。主要思路是构造能量函数进行迭代后,轮廓曲线由初始位置逐渐向使能量函数最小(局部极小)的图像边缘逼近,最终分割出目标。

曲线理论

假设一条光滑封闭曲线 C=C(p)C(p)C(p),则在点p处有切向量T(p)T(p)T(p)和法向量N(p)N(p)N(p)相互垂直:

且有dCdp=T(p)\frac{dC}{dp}=T(p)dpdC​=T(p), d2Cdp2=kN(p)\frac{d^2C}{dp^2}=kN(p)dp2d2C​=kN(p), 其中k是曲率。曲线在p处有近似的二阶展开:
C(p)=C(p0)+k1dCdp0+k2d2Cdp02C(p)=C(p_0)+k_1\frac{dC}{dp_0}+k_2\frac{d^2C}{dp_0^2}C(p)=C(p0​)+k1​dp0​dC​+k2​dp02​d2C​
即:
C(p)=C(p0)+αT(p0)+βN(P0)C(p)=C(p_0)+\alpha T(p_0)+\beta N(P_0)C(p)=C(p0​)+αT(p0​)+βN(P0​)
其中法向量决定了曲线的弯曲方向,

算法原理

首先需要人为在图像上给出一组用于控制曲线形状的控制点:v(s)=[x,y]v(s)=[x,y]v(s)=[x,y],这些首尾相连的点构成一个封闭的轮廓线。v是当前最小能量的位置,在迭代过程中,v会移向下一次能量最小的v’位置。

Snake曲线的能量函数表示为:
Esnake=Eint+EextE _{snake}=E _{int}+E _{ext}Esnake​=Eint​+Eext​

EintE _{int}Eint​是内部能量函数,依赖于轮廓形状:

Eint=∫12×(α(s)∣c′(s)∣2+β(s)∣c′′(s)∣2)dsE _{int}=∫{\frac{1}{2} \times (α(s)∣c'(s)∣^2+β(s)∣c''(s)∣^2)ds}Eint​=∫21​×(α(s)∣c′(s)∣2+β(s)∣c′′(s)∣2)ds
由之前的曲线理论我们知道,式中两项的作用
法向量:推动轮廓形状的改变,决定轮廓平滑度
切向量:保持轮廓点的间离

EextE _{ext}Eext​是外部能量函数,依赖于图像的性质:

Eext=−(Emag+Eext)E _{ext}=-(E _{mag}+E _{ext})Eext​=−(Emag​+Eext​)
EimageE _{image}Eimage​:灰度能量,决定将轮廓吸引到 暗/亮 的区域
EmagE _{mag}Emag​:梯度能量,将图像推向边缘特征

主动轮廓模型snake相关推荐

  1. Active Contour Models 主动轮廓模型(snake模型)

    主动轮廓模型主要用于解决图像中目标物体的分割操作.理论上是可以解决二维乃至多维的情况,不过最初的模型是在二维图像上建立的. 主动轮廓模型(Active Contour Model),又被称为Snake ...

  2. 主动轮廓模型 matlab,主动轮廓模型的功能.ppt

    主动轮廓模型的功能 Amelioration d'images ultrasonores via alignement de vasculature - Julien Jomier - UNC - 2 ...

  3. 离散化-利用计算机求解y=x,基于边缘的主动轮廓模型——从零到一用python实现snake...

    从零到一实现snake算法 1.Snake算法原理 Kass等人最早于1988年提出了主动轮廓模型,该方法通过构造能量函数,从而将图像分割转化为求解能量泛函极值的问题,其核心思想在于,作者认为和之前的 ...

  4. Active Contour Models 主动轮廓模型

    参考博客: https://www.mathworks.com/matlabcentral/fileexchange/19567-active-contour-segmentation 数字图像处理- ...

  5. 图像分割之主动轮廓线模型Snake

    基本概念 1987年由 Kass 等人提出的主动轮廓模型即蛇模型(snake 模型).活动轮廓模型可以用在图像分割和理解中,也适用于分析动态图像或三维图像.Snake定义为最小的能量样条曲线.下面重点 ...

  6. 《Matlab图像处理》part1 Snakes:Active Contour Models 主动轮廓模型

    <Matlab图像处理>part1 Snakes:Active Contour Models 主动轮廓模型 参考博客: 数字图像处理-图像分割:Snake主动轮廓模型 Matlab代码及运 ...

  7. 水平集方法引入主动轮廓模型算法中的两种方法

    水平集方法引入主动轮廓模型算法中的两种方法 1.传统的基于主动轮廓模型和水平集理论的方法 2.变分水平集方法 在讲解水平集理论在主动轮廓模型中的应用前,我们先用流程图说明一下常见的处理主动轮廓模型的流 ...

  8. 基于带有信息熵和联合矢量的LBF主动轮廓模型的PET-CT成像中对静脉血管肺结节分割 (笔记四)

    -----------------------------------------------------------------SUV 标准吸收值-------------------------- ...

  9. OpenCV学习笔记(Python)———— 主动轮廓模型

    本文包含主动轮廓模型代码以及实例分割代码 原图: 效果图: 主动轮廓模型: morphsnakes.py # -*- coding: utf-8 -*- """ ==== ...

  10. 【肺实质分割】基于主动轮廓模型和贝叶斯方法识别实现胸膜旁肺实质分割附matlab代码

    ✅作者简介:热爱科研的Matlab仿真开发者,修心和技术同步精进,matlab项目合作可私信.

最新文章

  1. liunx系统mysql全量备份和增量备份
  2. win7删除桌面文件需要刷新才会消失(2种解决方法)
  3. 【iOS】图片缩放动画
  4. little problem
  5. 净化网络环境!可信数字内容版权服务解决方案发布
  6. tcga数据下载_TCGA数据下载(mRNA)
  7. Regex pattern in openresty
  8. android通过adb shell播放音乐
  9. 生成chm文档工具- Sandcastle -摘自网络
  10. 我见过不少赚了钱,投资孵化一堆店铺的,一般而言后续发展都会出问题的
  11. 基于Matlab----MSK调制与解调
  12. 记录并分析一些软件,以便以后换电脑重新安装(不定时更新)
  13. C++中的iostream和iostream.h
  14. EasyX实现按钮效果
  15. 如何使用Java计算闰年?
  16. 利用TLF给文本加样式
  17. 2019软考总结-UML
  18. 高考加油别学计算机图片,高考加油图片励志壁纸图片欣赏
  19. js逆向 事件点击找加密位置
  20. 微信公众号怎么清缓存

热门文章

  1. 项目管理工具与技术---项目风险管理中的工具与技术
  2. 配置mysql环境变量之后,仍然无法打开mysql的解决方法
  3. 前端H5面试题CSS:如何解决 margin“塌陷”?
  4. 华为LTC/IPD/ITR三大核心流程变革看一篇文章就全明白啦!
  5. SQL Server 数据库之数据约束
  6. Centos系统安装踩坑
  7. Spring 注解的原理
  8. Notepad ++ 汉化版
  9. (附源码)Springboot通用办事流程管理软件 毕业设计 211819
  10. oppor17刷鸿蒙系统,OPPO R17 Pro手机6G+128GB版本上线