基于水平集的gac模型的图像分割报告

上传人:206****923 文档编号:37534671 上传时间:2018-04-18 格式:DOC 页数:7 大小:299.50KB
返回 下载 相关 举报
基于水平集的gac模型的图像分割报告_第1页
第1页 / 共7页
基于水平集的gac模型的图像分割报告_第2页
第2页 / 共7页
基于水平集的gac模型的图像分割报告_第3页
第3页 / 共7页
基于水平集的gac模型的图像分割报告_第4页
第4页 / 共7页
基于水平集的gac模型的图像分割报告_第5页
第5页 / 共7页
点击查看更多>>
资源描述

《基于水平集的gac模型的图像分割报告》由会员分享,可在线阅读,更多相关《基于水平集的gac模型的图像分割报告(7页珍藏版)》请在金锄头文库上搜索。

1、偏微分方程与图像处理偏微分方程与图像处理(GAC(GAC 的水平集方法的水平集方法) )实验二 GAC 的水平集方法一一 实验目的实验目的采用 GAC 模型的水平集方法检测图像中对象的轮廓,以便有效地进行分割。二二 原理分析原理分析推广 GAC 模型的水平集方法对应的 PDE 为:(3.31)ugcugugkut uu u v按照上式,曲线运动将受两种“力”的支配,第一种力来自于曲率几何形变曲率运动() ,不过它的强弱还要受到因子的影响。gcugku()gI为图象 I(x,y)的梯度模值,函数 g (r) 是可以是任何具有单调减性的函数。I因为图象梯度模值在图象的边缘附近有较大值,从而使 g(

2、)取极小的值,故在图II象边缘附近,该作用力将会变的很小,因此有时将边缘函数称之为边缘停止函数。()gI常数 c 的作用是加速曲线向内部收缩。第二种力来自于 g 的梯度,它是一种不论当前 C 的局部是在对象内部或外( 1,2)g uu u v部,都能将曲线引向边界的“吸引力” 。从而总是使曲线向着更接近于边界线的gu uu u v方向运动,最终达到贴近对象边界的稳定状态。由于这两种作用使曲线演化可最终达到紧靠轮廓这一稳定状态而不再继续演化。采用单边迎风方案,根据(1.76)式的数值方案实现上式:考虑到 ,0g 0c 可得:(1)( )( )nn ijijijuut g c( )( )( )(

3、)max( 1,0)min( 1,0)max( 2,0)min( 2,0)xijxijyijyijDuDuDuDu(2.1)(0)2(0)2 1 2()() n ijijxijyijg kDuDu其中( )2222(max(,0)(min(,0)(max(,0)(min(,0) xijxijyijyijD uD uD uD u(2.3)中心差分 (2.2),1,1(0) 2i ji j xijuuDu向前单边差分 (2.3),1,xiji ji jD uuu 向后单边差分 (2.4),1xiji ji jD uuu 三三 编程过程编程过程1 1 准备工作准备工作1)读入图像 I,将其转化为灰度

4、图象,重新调整图象的大小为100,100。2)进行预平滑,即对图象进行高斯卷积滤波。3)计算图像梯度模值,,代入函数计算,然后计算 gIrI exp()gr k()gI的梯度。( 1,2)g uu u v4)选取初始封闭曲线,使其从外部全部包住对象,简单起见这里将选取为以图像中0C0C心为圆心的封闭圆。5)根据初始化水平集。0C0u2 2 迭代运算迭代运算1)根据(2.1)式进行迭代运算,由计算。( )n iju(1)n iju2)每迭代 5 次,进行一次重新初始化,以免累计误差。具体的方法是根据当前演化得到的检测零水平集则为当前,根据当前重新初始化水平集。uCCu3)每 10 次观察一次零水

5、平集,当演化曲线迭代 400 次,则停止迭代。 3 3 参数取值参数取值:c=34, =0.050.1, N=35, k=12.t四四 程序程序1 1、主程序:、主程序: % 用 GAC 水平集演化方法检测图像轮廓 close all; clear all;a=imread(3.bmp);% figure;imshow(a);a=rgb2gray(a); im=imresize(a,100 100);% figure;imshow(im);imsize=size(im);im_1=double(im); % 对图像进行高斯滤波sigma=2; gauss_filter=fspecial(gau

6、ssian,3,sigma); %默认值3*3,SIGMA=0.5b=imfilter(im_1, gauss_filter,conv);% 计算图像梯度Ix,Iy和梯度模值 deltIIx, Iy=gradient(b);deltI=abs(sqrt(Ix.2+Iy.2);k=2;g=exp(-deltI./k);gx,gy=gradient(g);% 初始化圆,定义中心和半径center=floor(size(im)/2);radius = min(center)-8;u = init_u( imsize, center, radius);% 调用迭代函数filename = 3.bmp;

7、m_name = filename( 1 : strfind( filename, . ) - 1 );num=400;u_new=die_dai(im,u,g,num,m_name);2 2、主要子程序、主要子程序(1 1)初始化水平集函数:)初始化水平集函数:function u = init_u( imsize, center, radius ) % 初始化水平集m = imsize( 1 ); n = imsize( 2 );u = zeros( imsize );for i = 1 : m;for j = 1 : n;distance = sqrt( sum( ( center -

8、i, j ).2 ) );u( i, j ) = distance - radius;endend (2 2)迭代计算函数:)迭代计算函数:function u=die_dai(im,u,g,num,m_name)m,n=size(u);gx,gy=gradient(g);u1=u;newpic=im; for i=2:m-1 for j=2:n-1if (u(i,j)*u(i+1,j)0u(i,j)=min(dist);elseu(i,j)=-min(dist);endendend五五 实验结果分析实验结果分析以下为实验结果:Fig.1 Fig.2 Fig.3 Fig.4Fig.5 Fig.

9、6 Fig.7 Fig.8 Fig.9 Fig.10 Fig.11 上面的图是每迭代 40 次选取一副图象,直至演化至稳态的结果(Fig.1 为调整大小并滤波 后的图) 。 注意: 1曲线最终演化基本稳定在对象边界。 2由于 c 选择过小,使曲线在对象凹陷部分(k0)继续运动的作用力()不足,但 c 过大又会使曲线穿透边界,因此 c 的选择要合适。gcugku3重新初始化间隔不要过大,会积累误差。4 中 k 值选取过大,导致函数 g 的下降速度过于平缓,不能在对象边缘exp()gr k有效的停止。 5 时间步长 delt_t 选取过大,就会影响效果。 对不同的参数进行验证,实验结果表明各参数较为合理的值的范围: c: 5 10 delt_t: 0.05 0.1 re_init: 5 20 k: 0.001 0.005六六 实验小结实验小结:通过本次实验,可以看到 GAC(测地线活动轮廓模型)在图象分割中的理论运用。其 数学思想是通过最小化一个能量泛函来实现的。这与前面所说的演化有些类似。只是在选 取时采用什么样的函数来做不同。对于图象的分割,就是要找到边缘部分(即梯度变化在 局部有最大值的地方) 。所以用 g(r)函数来做,使得在图像边缘处曲线停止演化,得到相 应的水平集方法的 PDE,能够有效的进行分割。

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 行业资料 > 其它行业文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号