图像分割之(五)活动轮廓模型之Snake模型简介

article/2025/11/7 15:55:04

图像分割之(五)活动轮廓模型之Snake模型简介

zouxy09@qq.com

http://blog.csdn.net/zouxy09

 

       在“图像分割之(一)概述”中咱们简单了解了目前主流的图像分割方法。下面咱们主要学习下基于能量泛函的分割方法。这里学习下Snake模型简单的知识,Level Set(水平集)模型会在后面的博文中说到。

 

基于能量泛函的分割方法:

       该类方法主要指的是活动轮廓模型(active contour model)以及在其基础上发展出来的算法,其基本思想是使用连续曲线来表达目标边缘,并定义一个能量泛函使得其自变量包括边缘曲线,因此分割过程就转变为求解能量泛函的最小值的过程,一般可通过求解函数对应的欧拉(EulerLagrange)方程来实现,能量达到最小时的曲线位置就是目标的轮廓所在。

       主动轮廓线模型是一个自顶向下定位图像特征的机制,用户或其他自动处理过程通过事先在感兴趣目标附近放置一个初始轮廓线,在内部能量(内力)和外部能量(外力)的作用下变形外部能量吸引活动轮廓朝物体边缘运动,而内部能量保持活动轮廓的光滑性和拓扑性,当能量达到最小时,活动轮廓收敛到所要检测的物体边缘。

 

一、曲线演化理论

       曲线演化理论在水平集中运用到,但我感觉在主动轮廓线模型的分割方法中,这个知识是公用的,所以这里我们简单了解下。

       曲线可以简单的分为几种:

       曲线存在曲率,曲率有正有负,于是在法向曲率力的推动下,曲线的运动方向之间有所不同:有些部分朝外扩展,而有些部分则朝内运动。这种情形如下图所示。图中蓝色箭头处的曲率为负,而绿色箭头处的曲率为正。

       简单曲线在曲率力(也就是曲线的二次导数)的驱动下演化所具有的一种非常特殊的数学性质是:一切简单曲线,无论被扭曲得多么严重,只要还是一种简单曲线,那么在曲率力的推动下最终将退化成一个圆,然后消逝(可以想象下,圆的所有点的曲率力都向着圆心,所以它将慢慢缩小,以致最后消逝)。

       描述曲线几何特征的两个重要参数是单位法矢和曲率,单位法矢描述曲线的方向,曲率则表述曲线弯曲的程度。曲线演化理论就是仅利用曲线的单位法矢和曲率等几何参数来研究曲线随时间的变形。曲线的演变过程可以认为是表示曲线在作用力 F 的驱动下,朝法线方向 N 以速度 v 演化。而速度是有正负之分的,所以就有如果速度 v 的符号为负,表示活动轮廓演化过程是朝外部方向的,如为正,则表示朝内部方向演化,活动曲线是单方向演化的,不可能同时往两个方向演化。

       所以曲线的演变过程,就是不同力在曲线上的作用过程,力也可以表达为能量。世界万物都趋向于能量最小而存在。因为此时它是最平衡的,消耗最小的(不知理解对不?)。那么在图像分割里面,我们目标是把目标的轮廓找到,那么在目标的轮廓这个地方,整个轮廓的能量是最小的,那么曲线在图像任何一个地方,都可以因为力朝着这个能量最小的轮廓演变,当演变到目标的轮廓的时候,因为能量最小,力平衡了,速度为0了,也就不动了,这时候目标就被我们分割出来了。

        那现在关键就在于:1)这个轮廓我们怎么表示;2)这些力怎么构造,构造哪些力才可以让目标轮廓这个地方的能量最小?

       这两个问题的描述和解决就衍生出了很多的基于主动轮廓线模型的分割方法。第一个问题的回答,就形成了两大流派:如果这个轮廓是参数表示的,那么就是参数活动轮廓模型(parametric active contour model),典型为snake模型,如果这个轮廓是几何表示的,那么就是几何活动轮廓模型(geometric active contour model),即水平集方法(Level Set),它是把二维的轮廓嵌入到三维的曲面的零水平面来表达的(可以理解为一座山峰的等高线,某个等高线把山峰切了,这个高度山峰的水平形状就出来了,也就是轮廓了),所以低维的演化曲线或曲面,表达为高维函数曲面的零水平集的间接表达形式(这个轮廓的变化,直观上我们就可以调整山峰的形状或者调整登高线的高度来得到)。

       那对于第二个问题,是两大流派都遇到的问题,是他们都需要解决的最关键的问题。哪些力才可以达到分割的目标呢?这将在后面聊到。

 

二、Snakes模型

       自1987Kass提出Snakes模型以来,各种基于主动轮廓线的图像分割理解和识别方法如雨后春笋般蓬勃发展起来。Snakes模型的基本思想很简单,它以构成一定形状的一些控制点为模板(轮廓线),通过模板自身的弹性形变,与图像局部特征相匹配达到调和,即某种能量函数极小化,完成对图像的分割。再通过对模板的进一步分析而实现图像的理解和识别。

        简单的来讲,SNAKE模型就是一条可变形的参数曲线及相应的能量函数,以最小化能量目标函数为目标,控制参数曲线变形,具有最小能量的闭合曲线就是目标轮廓。

       构造Snakes模型的目的是为了调和上层知识和底层图像特征这一对矛盾。无论是亮度、梯度、角点、纹理还是光流,所有的图像特征都是局部的。所谓局部性就是指图像上某一点的特征只取决于这一点所在的邻域,而与物体的形状无关。但是人们对物体的认识主要是来自于其外形轮廓。如何将两者有效地融合在一起正是Snakes模型的长处。Snakes模型的轮廓线承载了上层知识,而轮廓线与图像的匹配又融合了底层特征。这两项分别表示为Snakes模型中能量函数的内部力和图像力

       模型的形变受到同时作用在模型上的许多不同的力所控制,每一种力所产生一部分能量,这部分能量表示为活动轮廓模型的能量函数的一个独立的能量项。

         Snake模型首先需要在感兴趣区域的附近给出一条初始曲线,接下来最小化能量泛函,让曲线在图像中发生变形并不断逼近目标轮廓。

        Kass等提出的原始Snakes模型由一组控制点:v(s)=[x(s), y(s)]   s[0, 1] 组成,这些点首尾以直线相连构成轮廓线。其中x(s)y(s)分别表示每个控制点在图像中的坐标位置。 s 是以傅立叶变换形式描述边界的自变量。在Snakes的控制点上定义能量函数(反映能量与轮廓之间的关系):

      其中第1项称为弹性能量v的一阶导数的模,第2项称为弯曲能量,是v的二阶导数的模,第3项是外部能量(外部力),在基本Snakes模型中一般只取控制点或连线所在位置的图像局部特征例如梯度:

也称图像力。(当轮廓C靠近目标图像边缘,那么C的灰度的梯度将会增大,那么上式的能量最小,由曲线演变公式知道该点的速度将变为0,也就是停止运动了。这样,C就停在图像的边缘位置了,也就完成了分割。那么这个的前提就是目标在图像中的边缘比较明显了,否则很容易就越过边缘了。)

        弹性能量和弯曲能量合称内部能量(内部力),用于控制轮廓线的弹性形变,起到保持轮廓连续性和平滑性的作用。而第三项代表外部能量,也被称为图像能量,表示变形曲线与图像局部特征吻合的情况。内部能量仅仅跟snake的形状有关,而跟图像数据无关。而外部能量仅仅跟图像数据有关。在某一点的α和β的值决定曲线可以在这一点伸展和弯曲的程度。

       最终对图像的分割转化为求解能量函数Etotal(v)极小化(最小化轮廓的能量)。在能量函数极小化过程中,弹性能量迅速把轮廓线压缩成一个光滑的圆,弯曲能量驱使轮廓线成为光滑曲线或直线,而图像力则使轮廓线向图像的高梯度位置靠拢。基本Snakes模型就是在这3个力的联合作用下工作的。

        因为图像上的点都是离散的,所以我们用来优化能量函数的算法都必须在离散域里定义。所以求解能量函数Etotal(v)极小化是一个典型的变分问题(微分运算中,自变量一般是坐标等变量,因变量是函数;变分运算中,自变量是函数,因变量是函数的函数,即数学上所谓的泛函。对泛函求极值的问题,数学上称之为变分法)。

        在离散化条件(数字图像)下,由欧拉方程可知最终问题的答案等价于求解一组差分方程:(欧拉方程是泛函极值条件的微分表达式,求解泛函的欧拉方程,即可得到使泛函取极值的驻函数,将变分问题转化为微分问题。

       记外部力 F = − P Kass等将上式离散化后,对x(s)y(s)分别构造两个五对角阵的线性方程组,通过迭代计算进行求解。在实际应用中一般先在物体周围手动点出控制点作为Snakes模型的起始位置,然后对能量函数迭代求解。

 

     以上只是对snake简单的理解,如要深入,请参考其他更多专业文献。水平有限,错误在所难免,还望不吝指正。

 

Reference

李天庆等,Snake模型综述,计算机工程,2005,第31  9


http://chatgpt.dhexx.cn/article/wEytOIiG.shtml

相关文章

麻雀搜索算法SSA(Sparrow Search algorithm)

文章目录 前言数学模型 前言 麻雀搜索算法是2020提出的一种新的优化算法,出自东华大学xue和shen的论文:A novel swarm intelligence optimization approach: sparrow search algorithm,本文的内容是基于该论文来写的。 数学模型 麻雀搜索算…

snake 模型

转自:https://blog.csdn.net/caoniyadeniniang/article/details/77803002 一、曲线演化理论 假设CC(p)是一条光滑封闭的曲线,P是任意的参数化变量,设K表示曲 率,T表示切线,N表示法线,则有如下关系存在&…

蛇优化算法(Snake Optimization,SO)(附Matlab代码,完整,免费)

蛇优化算法(Snake Optimization,SO)(附Matlab代码,完整,免费) 一、算法灵感二、算法介绍2.1 初始化2.2 划分种群2.3 定义温度和食物2.4 食物不足时(探索阶段)2.5 食物充足时(开发阶段)2.5.1 斗争…

snake模型求解

 snake 模型 一、曲线演化理论 假设CC(p)是一条光滑封闭的曲线,P是任意的参数化变量,设K表示曲 率,T表示切线,N表示法线,则有如下关系存在: 因为T和N是互相垂直的(如图所示)&am…

snake模型

1 能量泛函 在介绍snake模型的参考资料[1]中,提到能量泛函的概念,这里对此概念做一个总结。 参考资料[6]给出了泛函的定义: 简单的说, 泛函就是定义域是一个函数集,而值域是实数集或者实数集的一个子集。推广开来&…

Snake算法知识点记录

Snake算法 snake是一种主动轮廓模型,主动轮廓模型目前用到了2种:CV和snake。snake在逐步迭代优化过程的目标是能量函数最小化,snake的目标不像sobel、canny等找到整张图的轮廓。它只搜索你给出的初始轮廓附近,达到轮廓更精确的目…

snake模型简介

图像分割之(五)活动轮廓模型之Snake模型简介 zouxy09qq.com http://blog.csdn.net/zouxy09 在“图像分割之(一)概述”中咱们简单了解了目前主流的图像分割方法。下面咱们主要学习下基于能量泛函的分割方法。这里学习下Snake模型简…

蛇优化算法(Snake Optimizer)

生物学机理&#xff1a;来源于蛇的交配行为。如果温度较低&#xff0c;且食物可用&#xff0c;蛇的交配行为发生&#xff1b;否则蛇只会寻找食物&#xff08;食物量<0.25&#xff09;或吃现有的食物(T>0.6)。基于此&#xff0c;将考虑蛇优化算法的搜索过程分为两个阶段&a…

图像处理之图像分割(一)之活动轮廓模型:Snake算法简单梳理

图像处理之图像分割&#xff08;一&#xff09;之活动轮廓模型&#xff1a;Snake算法简单梳理 Snake算法&#xff0c;应该也可以翻译成蛇形算法&#xff0c;或者是包含曲折前进的意思。具体函数背景原理介绍参考&#xff1a;zouxy09&#xff0c;http://blog.csdn.net/zouxy09/a…

snake算法总结

snake是一种主动轮廓模型&#xff0c;笨妞对主动轮廓模型的理解&#xff1a;你先给它一个初始轮廓&#xff0c;模型以初始轮廓为基准逐步迭代&#xff0c;来改进图像的轮廓&#xff0c;使其更加精确。主动轮廓模型目前用到了2种&#xff1a;CV和snake。前者没有看算法内部的原理…

主动轮廓模型:Snake模型的python实现

质量声明&#xff1a;原创文章&#xff0c;内容质量问题请评论吐槽。如对您产生干扰&#xff0c;可私信删除。 主要参考&#xff1a;Active Contour Model — skimage v0.16.dev0 docs - scikit-image 文章目录 skimage实现函数声明代码示例结果显示 Numpy实现代码示例结果显示…

社交网络分析--python-igraph

#coding:utf-8 import scrapy import xlwt, lxml import re, json import matplotlib.pyplot as plt import numpy as np import pylab from scipy import linalg #文档&#xff1a;igraph.org/python/doc/ #社交网络分析 #from igraph import *社交网络算法介绍 分析-权利的游…

(一文读懂社交网络分析(附应用、前沿、学习资源)学习笔记)

一文读懂社交网络分析&#xff08;附应用、前沿、学习资源&#xff09;学习笔记 一、社交网络的结构特性与演化机理1、社交网络结构分析与建模1.1 统计特性1.2 网络特性1.3 网络模型 2、虚拟社区以及发现技术2.1 定义2.2 社区发现算法评估指标2.3社区静态发现算法2.4 社区动态发…

推荐系统实践读书笔记-06利用社交网络数据

推荐系统实践读书笔记-06利用社交网络数据 自从搜索引擎谷歌诞生后&#xff0c;大家都在讨论互联网的下一个金矿是什么。现在&#xff0c;几乎所有的人都认为那就是社交网络。根据尼尔森2010年的报告&#xff0c;用户在互联网上22%的时间花费在社交网站和社交媒体上。Facebook…

超级干货 :一文读懂社交网络分析(附应用、前沿、学习资源)

转自&#xff1a;http://op.inews.qq.com/m/20171020B02CN500?refer100000355&chl_codekb_news_tech&h0 本文主要阐述&#xff1a; 社交网络的结构特性与演化机理 社交网络群体行为形成与互动规律 社交网络信息传播与演化机理 社交网络分析的应用 社交网络前沿研…

社交网络分析调研上

//2019年08月15日 文章来源&#xff1a;https://mp.weixin.qq.com/s/39_r3idlE3plqJwlhrvpAQ 一、相关概述 1、定义&#xff1a;“由许多节点构成的一种社会结构&#xff0c;节点通常是指个人或者组织&#xff0c;而社交网络代表着各种社会关系。” *在之前是社会学和人类学的…

社交网络影响力最大化

目录 1、社交网络概述 2、影响力最大化问题分类 3、社交网络影响力最大化作用 4、传播模型 4.1独立级联模型&#xff08;Independent Cascade Model&#xff09;简称 IC 模型 4.2线性阈值模型&#xff08;Linear Threshold Model&#xff09;简称LT模型 社交网络影响力最…

基于hadoop的社交网络三角形计数

图的三角形计数问题是一个基本的图计算问题,是很多复杂网络分析(比如社交网络分析) 的基础。目前图的三角形计数问题已经成为了 Spark 系统中 GraphX 图计算库所提供的一个算法级 API。本次实验任务就是要在 Hadoop 系统上实现 Twitter 社交网络图的三角形计数任务。 1.1 …

PageRank算法在社交网络上的应用

PageRank算法介绍 pagerank算法的核心思想是&#xff0c;计算一个用户随机点击一个网站然后不停点击从而到达各个网站的概率。而一个网站的打开概率又取决于那些指向他自己的那些网站的概率&#xff0c;所以这个概率的计算是一个不断迭代的过程。 一个简单的例子&#xff1a;…

社交网络与社会计算课程内容梳理总结

目录 1 引言2 复杂网络的图要素3 复杂网络度量4 复杂网络模型5 网络表示学习6 主题模型 1 引言 社会计算是指社会科学和计算技术交叉融合而成的一个研究领域&#xff0c;研究如何利用计算系统帮助人们进行沟通与协作&#xff0c;研究如何利用计算技术分析社会运行的规律与发展…