
snake算法
家庭教育名言-吕布简介
2023年3月20日发(作者:生物防治技术).
Word文档资料
图像分割之(五)活动轮廓模型之Snake模型简介
在“图像分割之(一)概述”中咱们简单了解了目前主
流的图像分割法。下面咱们主要学习下基于能量泛函的分割法。这里学
习下Snake模型简单的知识,LevelSet(水平集)模型会在后面的博文
中说到。
基于能量泛函的分割法:
该类法主要指的是活动轮廓模型(activecontourmodel)
以及在其基础上发展出来的算法,其基本思想是使用连续曲线来表达目
标边缘,并定义一个能量泛函使得其自变量包括边缘曲线,因此分割过
程就转变为求解能量泛函的最小值的过程,一般可通过求解函数对应的
欧拉(Euler.Lagrange)程来实现,能量达到最小时的曲线位置就是目标
的轮廓所在。
主动轮廓线模型是一个自顶向下定位图像特征的机制,
用户或其他自动处理过程通过事先在感兴趣目标附近放置一个初始轮
廓线,在部能量(力)和外部能量(外力)的作用下变形外部能量吸引
活动轮廓朝物体边缘运动,而部能量保持活动轮廓的光滑性和拓扑性,
当能量达到最小时,活动轮廓收敛到所要检测的物体边缘。
.
Word文档资料
一、曲线演化理论
曲线演化理论在水平集中运用到,但我感觉在主动轮廓
线模型的分割法中,这个知识是公用的,所以这里我们简单了解下。
曲线可以简单的分为几种:
曲线存在曲率,曲率有正有负,于是在法向曲率力的推
动下,曲线的运动向之间有所不同:有些部分朝外扩展,而有些部分则
朝运动。这种情形如下图所示。图中蓝色箭头处的曲率为负,而绿色箭
头处的曲率为正。
简单曲线在曲率力(也就是曲线的二次导数)的驱动下
演化所具有的一种非常特殊的数学性质是:一切简单曲线,无论被扭曲
得多么重,只要还是一种简单曲线,那么在曲率力的推动下最终将退
化成一个圆,然后消逝(可以想象下,圆的所有点的曲率力都向着圆心,
所以它将慢慢缩小,以致最后消逝)。
.
Word文档资料
描述曲线几特征的两个重要参数是单位法矢和曲率,单
位法矢描述曲线的向,曲率则表述曲线弯曲的程度。曲线演化理论就是
仅利用曲线的单位法矢和曲率等几参数来研究曲线随时间的变形。曲线
的演变过程可以认为是表示曲线在作用力F的驱动下,朝法线向N以
速度v演化。而速度是有正负之分的,所以就有如果速度v的符号为
负,表示活动轮廓演化过程是朝外部向的,如为正,则表示朝部向演化,
活动曲线是单向演化的,不可能同时往两个向演化。
所以曲线的演变过程,就是不同力在曲线上的作用过程,
力也可以表达为能量。世界万物都趋向于能量最小而存在。因为此时它
是最平衡的,消耗最小的(不知理解对不?)。那么在图像分割里面,
我们目标是把目标的轮廓找到,那么在目标的轮廓这个地,整个轮廓的
.
Word文档资料
能量是最小的,那么曲线在图像任一个地,都可以因为力朝着这个能
量最小的轮廓演变,当演变到目标的轮廓的时候,因为能量最小,力平
衡了,速度为0了,也就不动了,这时候目标就被我们分割出来了。
那现在关键就在于:1)这个轮廓我们怎么表示;2)
这些力怎么构造,构造哪些力才可以让目标轮廓这个地的能量最小?
这两个问题的描述和解决就衍生出了很多的基于主动轮
廓线模型的分割法。第一个问题的回答,就形成了两大流派:如果这个
轮廓是参数表示的,那么就是参数活动轮廓模型(parametricactive
contourmodel),典型为snake模型,如果这个轮廓是几表示的,那
么就是几活动轮廓模型(geometricactivecontourmodel),即水平集
法(LevelSet),它是把二维的轮廓嵌入到三维的曲面的零水平面来
表达的(可以理解为一座山峰的等高线,某个等高线把山峰切了,这个
高度山峰的水平形状就出来了,也就是轮廓了),所以低维的演化曲
线或曲面,表达为高维函数曲面的零水平集的间接表达形式(这个轮廓
的变化,直观上我们就可以调整山峰的形状或者调整登高线的高度来
得到)。
那对于第二个问题,是两大流派都遇到的问题,是他们
都需要解决的最关键的问题。哪些力才可以达到分割的目标呢?这将在
后面聊到。
.
Word文档资料
二、Snakes模型
自1987年Kass提出Snakes模型以来,各种基于主动轮
廓线的图像分割理解和识别法如雨后春笋般蓬勃发展起来。Snakes模型
的基本思想很简单,它以构成一定形状的一些控制点为模板(轮廓线),
通过模板自身的弹性形变,与图像局部特征相匹配达到调和,即某种能
量函数极小化,完成对图像的分割。再通过对模板的进一步分析而实现
图像的理解和识别。
简单的来讲,SNAKE模型就是一条可变形的参数曲线
及相应的能量函数,以最小化能量目标函数为目标,控制参数曲线变形,
具有最小能量的闭合曲线就是目标轮廓。
构造Snakes模型的目的是为了调和上层知识和底层图像
特征这一对矛盾。无论是亮度、梯度、角点、纹理还是光流,所有的图
像特征都是局部的。所谓局部性就是指图像上某一点的特征只取决于这
一点所在的邻域,而与物体的形状无关。但是人们对物体的认识主要是
来自于其外形轮廓。如将两者有效地融合在一起正是Snakes模型的长
处。Snakes模型的轮廓线承载了上层知识,而轮廓线与图像的匹配又融
合了底层特征。这两项分别表示为Snakes模型中能量函数的部力和图
像力。
.
Word文档资料
模型的形变受到同时作用在模型上的多不同的力所控
制,每一种力所产生一部分能量,这部分能量表示为活动轮廓模型的能
量函数的一个独立的能量项。
Snake模型首先需要在感兴趣区域的附近给出一条初始曲线,接下
来最小化能量泛函,让曲线在图像中发生变形并不断逼近目标轮廓。
Kass等提出的原始Snakes模型由一组控制点:v(s)=[x(s),
y(s)]s∈[0,1]组成,这些点首尾以直线相连构成轮廓线。其中x(s)和
y(s)分别表示每个控制点在图像中的坐标位置。s是以傅立叶变换形式
描述边界的自变量。在Snakes的控制点上定义能量函数(反映能量与
轮廓之间的关系):
其中第1项称为弹性能量是v的一阶导数的模,第2项称
为弯曲能量,是v的二阶导数的模,第3项是外部能量(外部力),在
基本Snakes模型中一般只取控制点或连线所在位置的图像局部特征例
如梯度:
.
Word文档资料
也称图像力。(当轮廓C靠近目标图像边缘,那么C的灰度的梯度将会
增大,那么上式的能量最小,由曲线演变公式知道该点的速度将变为0,
也就是停止运动了。这样,C就停在图像的边缘位置了,也就完成了分
割。那么这个的前提就是目标在图像中的边缘比较明显了,否则很容易
就越过边缘了。)
弹性能量和弯曲能量合称部能量(部力),用于控制
轮廓线的弹性形变,起到保持轮廓连续性和平滑性的作用。而第三项代
表外部能量,也被称为图像能量,表示变形曲线与图像局部特征吻合的
情况。部能量仅仅跟snake的形状有关,而跟图像数据无关。而外部能
量仅仅跟图像数据有关。在某一点的α和β的值决定曲线可以在这一
点伸展和弯曲的程度。
最终对图像的分割转化为求解能量函数E
total(v)极小化(最
小化轮廓的能量)。在能量函数极小化过程中,弹性能量迅速把轮廓线
压缩成一个光滑的圆,弯曲能量驱使轮廓线成为光滑曲线或直线,而图
像力则使轮廓线向图像的高梯度位置靠拢。基本Snakes模型就是在这3
个力的联合作用下工作的。
因为图像上的点都是离散的,所以我们用来优化能量
函数的算法都必须在离散域里定义。所以求解能量函数Etotal(v)极小化是
一个典型的变分问题(微分运算中,自变量一般是坐标等变量,因变量
是函数;变分运算中,自变量是函数,因变量是函数的函数,即数学上
所谓的泛函。对泛函求极值的问题,数学上称之为变分法)。
.
Word文档资料
在离散化条件(数字图像)下,由欧拉程可知最终问
题的答案等价于求解一组差分程:(欧拉程是泛函极值条件的微分表达
式,求解泛函的欧拉程,即可得到使泛函取极值的驻函数,将变分问题
转化为微分问题。)
记外部力F=−∇P,Kass等将上式离散化后,对x(s)
和y(s)分别构造两个五对角阵的线性程组,通过迭代计算进行求解。在
实际应用中一般先在物体围手动点出控制点作为Snakes模型的起始位
置,然后对能量函数迭代求解。