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

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

[email protected]

http://blog.csdn.net/zouxy09

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

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

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

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

一、曲线演化理论

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

曲线能够简单的分为几种:

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

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

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

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

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

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

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

二、Snakes模型

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

简单的来讲,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就停在图像的边缘位置了,也就完毕了切割。那么这个的前提就是目标在图像中的边缘比較明显了,否则非常easy就越过边缘了。)

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

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

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

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

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

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

Reference:

李天庆等,Snake模型综述,计算机project,2005,第31卷 
第9期

时间: 2024-12-26 13:00:28

图像切割之(五)活动轮廓模型之Snake模型简单介绍的相关文章

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

在"图像分割之(一)概述"中咱们简单了解了目前主流的图像分割方法.下面咱们主要学习下基于能量泛函的分割方法.这里学习下Snake模型简单的知识,Level Set(水平集)模型会在后面的博文中说到. 基于能量泛函的分割方法: 该类方法主要指的是活动轮廓模型(active contour model)以及在其基础上发展出来的算法,其基本思想是使用连续曲线来表达目标边缘,并定义一个能量泛函使得其自变量包括边缘曲线,因此分割过程就转变为求解能量泛函的最小值的过程,一般可通过求解函数对应的欧拉

猫猫学iOS(五十)多线程网络之GCD简单介绍(任务,队列)

猫猫分享,必须精品 原创文章,欢迎转载.转载请注明:翟乃玉的博客 地址:http://blog.csdn.net/u013357243?viewmode=contents GCD简单介绍 1.什么是GCD? 全称是Grand Central Dispatch,可译为"牛逼的中枢调度器" 纯C语言,提供了非常多强大的函数 2.GCD的优势 GCD是苹果公司为多核的并行运算提出的解决方案 GCD会自动利用更多的CPU内核(比如双核.四核) GCD会自动管理线程的生命周期(创建线程.调度任务

Dubbo源码分析(五):Dubbo内核实现之SPI简单介绍

Dubbo采用微内核+插件体系,使得设计优雅,扩展性强.那所谓的微内核+插件体系是如何实现的呢!大家是否熟悉spi(service  provider interface)机制,即我们定义了服务接口标准,让厂商去实现(如果不了解spi的请谷歌百度下), jdk通过ServiceLoader类实现spi机制的服务查找功能. JDK实现spi服务查找: ServiceLoader    首先定义下示例接口 package com.example; public interface Spi { boo

[家里蹲大学数学杂志]第054期图像分割中的无边缘活动轮廓模型

$\bf 摘要$: 本文给出了王大凯等编的<图像处理中的偏微分方程方法>第 4.4 节的详细论述. $\bf 关键词$: 图像分割; 活动轮廓模型; matlab 编程 1 模型的建立 在图像中, 对象与背景的区别有时表现为平均灰度的明显不同. 由于这类图像既没有明显的边缘 ($\sev{\n I}$ 大), 也缺乏明显的纹理 (texture, 灰度变化有一定的规律, 并形成一定的 patten), 故测地线活动轮廓 (geodesic active contour, GAC, 或 snak

图像切割之(一)概述

图像切割之(一)概述 [email protected] http://blog.csdn.net/zouxy09 所谓图像切割指的是依据灰度.颜色.纹理和形状等特征把图像划分成若干互不交迭的区域,并使这些特征在同一区域内呈现出相似性,而在不同区域间呈现出明显的差异性.我们先对眼下基本的图像切割方法做个概述,后面再对个别方法做具体的了解和学习. 1.基于阈值的切割方法 阈值法的基本思想是基于图像的灰度特征来计算一个或多个灰度阈值,并将图像中每一个像素的灰度值与阈值相比較,最后将像素依据比較结果分

新手学,java使用分水岭算法进行图像切割(一)

近期被图像切割整的天昏地暗的,在此感谢老朋友周洋给我关于分水岭算法的指点!本来打算等彩色图像切割有个完满的结果再写这篇文章,可是考虑到到了这一步也算是一个阶段,所以打算对图像切割做一个系列的博文,于是先写这篇. 啰嗦了这么多!先看效果: 效果一般,存在着非常多过切割现象,但比没使用滤波之前的效果好非常多,过切割是分水岭算法的通病.这个兴许博文会继续解决. 本文用java实现的是基于自己主动种子区域的分水岭算法,注意本文是基于单色的切割,所以将输入图片首先进行灰度化处理,这个比較简单,不多提了:因

CRF图像切割简单介绍

这里主要是讲Conditional Random Fields(CRF)用于pixel-wise的图像标记(事实上就是图像切割).CRF经经常使用于 pixel-wise的label 预測.当把像素的label作为形成马尔科夫场随机变量且能够获得全局观測时,CRF便能够对这些label进行建模.这样的全局观測通常就是输入图像. 令随机变量Xi是像素i的标签. Xi∈L={l1,l2,...,lL} 令变量X是由X1,X2,...,XN组成的随机向量,N就是图像的像素个数. 如果图 G=(V,E)

Win32中GDI+应用(五)--GDI与GDI+编程模型的区别

在GDI里面,你要想开始自己的绘图工作,必须先获取一个device context handle,然后把这个handle作为绘图复方法的一个参数,才能完成任务.同时,device context handle是同一定的绘图属性绑定在一起的,诸如画笔.话刷等等,你必须在画线之前创建自己的画笔,然后使用selectObject方法把这个画笔同已经获取的device context handle绑定,才能使用LineTo等方法开始画线.不然,你画出来的线使用的是默认的属性:宽度(1),颜色(黑色).但

图像切割—基于图的图像切割(Graph-Based Image Segmentation)

 图像切割-基于图的图像切割(Graph-Based Image Segmentation) Reference: Efficient Graph-Based Image Segmentation,IJCV 2004,MIT Code 图像切割-基于图的图像切割(OpenCV源代码注解) 最后一个暑假了,不打算开疆辟土了.战略中心转移到品味经典.计划把图像切割和目标追踪的经典算法都看一看.再记些笔记. Graph-Based Segmentation 是经典的图像切割算法,作者Felzens