• 大小: 4KB
    文件类型: .m
    金币: 2
    下载: 1 次
    发布日期: 2023-01-19
  • 语言: Matlab
  • 标签: GAC  model  code  

资源简介

GAC model 活动轮廓模型代码 可用于医学图像处理轮廓提取 迭代次数较少 速度快

资源截图

代码片段和文件信息

%  用GAC水平集演化方法检测图像轮廓
close all;
clear all;
a=imread(‘1.png‘);
% 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(‘gaussian‘3sigma);  %默认值3*3SIGMA=0.5
b=imfilter(im_1 gauss_filter‘conv‘);

% 计算图像梯度[IxIy]和梯度模值deltI
[Ix Iy]=gradient(b);
deltI=abs(sqrt(Ix.^2+Iy.^2));
k=2;
g=exp(-deltI./k);
[gxgy]=gradient(g);

% 初始化圆,定义中心和半径
center=[floor(size(im)/2)];
radius = min(center)-8;
u = init_u( imsize center radius);

% 调用迭代函数
filename = ‘1.png‘;
m_name = filename( 1 : strfind( filename ‘.‘ ) - 1 );
num=400;
u_new=die_dai(imugnumm_name);

%下面是子程序
function  u=die_dai(imugnumm_name
[mn]=size(u);
[gxgy]=gradient(g);
u1=u;
newpic=im; 
          for i=2:m-1               
             for j=2:n-1
                 if (u(ij)*u(i+1j)<0)|(u(ij)*u(ij+1)<0)==1  
                     newpic(ij)=0;
                 end
             end
          end
figure;imshow(newpic);   

[gxgy]=gradient(g);
det=0.05;c=3;dx=1;dy=1;display_it=10;
for k=1:num
     if mod(k5)==0
        u=re_init_u( u );
     end

%x和y方向的前向差分和后向差分
diff_x_backward=( u - circshift( u [ 0 1 ] ) );
diff_x_forward=( circshift( u [ 0 -1 ] ) - u );
diff_y_backward=( u - circshift( u [ 1 0 ] ) );
diff_y_forward=( circshift( u [ -1 0 ] ) - u );

du_1=g.*c.* ( (max( diff_x_forward0 )).^2 + (min( diff_x_backward0 )).^2 +(max( diff_y_forward0 )).^2 + (min( diff_y_backward0 )).^2);
%计算更新u的第二部分
du_2=max(gx0) .* diff_x_backward + min(gx0) .* diff_x_forward + max(gy0) .* diff_y_backward  + min(gy0) .* diff_y_forward  ;
%--------

%计算更新u的第三部分
%中心差分
diff_y_central=( circshift( u [ 0 -1 ] ) - circshift( u [ 0 1 ] ) ) / 2;
diff_x_central=( circs

评论

共有 条评论