資源簡介
GAC model 活動(dòng)輪廓模型代碼 可用于醫(yī)學(xué)圖像處理輪廓提取 迭代次數(shù)較少 速度快
代碼片段和文件信息
%??用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);
%?對圖像進(jìn)行高斯濾波
sigma=2;
gauss_filter=fspecial(‘gaussian‘3sigma);??%默認(rèn)值3*3SIGMA=0.5
b=imfilter(im_1?gauss_filter‘conv‘);
%?計(jì)算圖像梯度[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);
%?調(diào)用迭代函數(shù)
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);
%計(jì)算更新u的第二部分
du_2=max(gx0)?.*?diff_x_backward?+?min(gx0)?.*?diff_x_forward?+?max(gy0)?.*?diff_y_backward??+?min(gy0)?.*?diff_y_forward??;
%--------
%計(jì)算更新u的第三部分
%中心差分
diff_y_central=(?circshift(?u?[?0?-1?]?)?-?circshift(?u?[?0?1?]?)?)?/?2;
diff_x_central=(?circs
評論
共有 條評論