主动轮廓模型-Snake分割算法matlab源码_第1页
主动轮廓模型-Snake分割算法matlab源码_第2页
主动轮廓模型-Snake分割算法matlab源码_第3页
主动轮廓模型-Snake分割算法matlab源码_第4页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、主动轮廓模型Snake分割算法matlab源码学习图像分割算法,在网上找到的关于主动轮廓模型的实现代码,自己简化总结了一下,在这里和大家分享,欢迎提问进入正题:snake是一种能量最小的曲线,表示为v(s)=(x(s),y(s),s为归一化的曲线长度,swO,1。能量函数由曲线内部能量和外部约束力(图像力)组成,表示为Esnake=JEsnake(v(s)ds=J(Eint(v(s)+Eimage(v(s)ds曲线内部能量图像力内部能量分为弹性势能和弯曲势能两部分:Eint=(a(s)|vs(s)|人2+B(s)|Vss(s)|人2)/2弹性势能弯曲势能vs(s)是曲线的一阶导数;Vss(s)

2、是曲线的二阶导数。假设Vi=(xi,yi),i=0,1,n-1;vs(s)=(vi+1-vi-1)/2;vss(s)(vi+1-vi)-(vi-vi-1)=vi+1-2vi+vi-1;所以Eint=艺a|vi+1-vi|+B|vi+1-2vi+vi-1|A2;图像力分为三部分,分别驱使snake趋向于lines(线),edges(边),termination(终端)Eimage=wlineEline+wedgeEedge+wtermEterm般设定Eline为图像强度,Eedge为亮度的梯度变化;Eline=I(x,y);Eedge=-l(x,y)|A2;C(x,y)为高斯滤波后的图像,8是(

3、x,y)处的梯度角度;C(x,y)=Go(x,y)*I(x,y);tan8=Cy/Cx;规定n=(cos8,sin8),门丄=(-sin8,cos8)则,终端的能量函数定义为:E=im弘丄_护cmSC/dn综上,目标轮廓的确定就转化为极小化如下的能量泛函的问题Esnake=J(a(s)|vs(s)|A2+B(s)|Vss(s)|A2)/2+Eimage)ds求解能量的极小化是一个典型的变分问题,依据变分法的原理将其转化为欧拉公式,将变分问题转化为微分问题,进而求得极小值%读入图像I=imread(sample.tif);I=imread(sample.tif);Igs=im2double(I)

4、;figure,imshow(Igs)%手动获取snake轮廓点x=;y=;c=1;N=100;whilecNxi,yi,button=ginput(1);%精确获取轮廓点x=x,xi;%将获取的点存入x,y集合y=y,yi;holdon;plot(xi,yi,ro);if(button=3),%当点击鼠标右键时,取点停止break;endc=c+1;end%将第一个点复制到最后,构成完整的轮廓结构xy=x;y;c=c+1;xy(:,c)=xy(:,1);%对轮廓线进行插值t=1:c;ts=1:0.1:c;xys=spline(t,xy,ts);xs=xys(1,:);%初始取点横坐标ys=x

5、ys(2,:);%初始取点纵坐标%查看插值效果holdontemp=plot(x(1),y(1),ro,xs,ys,b.);legend(temp,原点插值点);%snake算法主体部分%图像力线函数Eline=Igs;%原图像%图像力边函数gx,gy=gradient(Igs);Eedge=-1*sqrt(gx.*gx+gy.*gy);%梯度图像%图像力终点函数ml=-1,1;m2=-1;1;m3=卜1,-2,1;m4=-1;-2;1;m5=1,-1;-1,1;cx=conv2(Igs,m1,same);cy=conv2(Igs,m2,same);cxx=conv2(Igs,m3,same)

6、;cyy=conv2(Igs,m4,same);cxy=conv2(Igs,m5,same);row,col=size(Igs);fori=1:rowforj=1:colEterm(i,j)=(cyy(i,j)*cx(i,j)*cx(i,j)+cxx(i,j)*cy(i,j)*cy(i,j)-2*cxy(i,j)*cx(i,j)*cy(i,j)/(1+cx(i,j)*cx(i,j)+cy(i,j)*cy(i,j)U5);endendwl=0;we=0.4;wt=0;%计算外部力Eext=wl*Eline+we*Eedge+wt*Eterm;%计算梯度fx,fy=gradient(Eext);%

7、计算五对角状矩阵xs=xs;%初始取点横坐标集合转换为列向量ys=ys;m,n=size(xs);mm,nn=size(fx);alpha=0.2;beta=0.2;gama=1;kappa=0.1;b(1)=beta;b(2)=-(alpha+4*beta);b(3)=(2*alpha+6*beta);%b(i)表示v(i)系数,从(i-2)到(i+2)b(4)=b(2);b(5)=b(1);A=b(1)*circshift(eye(m),2);A=A+b(2)*circshift(eye(m),1);A=A+b(3)*circshift(eye(m),O);A=A+b*circshift(eye(m),-1);A=A+b(5)*circshift(eye(m),-2);%计算矩阵的逆LU=lu(A+gama.*eye(m);Ainv=inv(U)*inv(L);%画图部分NIter=1000;figurefori=1:NIter;ssx=gama*xs-kappa*interp2(fx,xs,ys);ssy=gama*ys-kappa

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论