• 大小: 796B
    文件类型: .rar
    金币: 1
    下载: 0 次
    发布日期: 2021-05-14
  • 语言: Matlab
  • 标签: 图像分割  matlab  

资源简介

应用标记符控制分水岭分割 有效解决了分水岭算法在图像分割中的过分割问题

资源截图

代码片段和文件信息

%对一组脑部CT图像共94张进行改进分水岭算法运算
for i=0:93
numcdstring=num2str(i);
if length(numcdstring)==1
    serials=strcat(‘head_image_100‘numcdstring‘_1001‘);
else
    serials=strcat(‘head_image_10‘numcdstring‘_1001‘);
end
filename=strcat(serials‘.bmp‘);  
f=imread(filename);
%f=rgb2gray(t);
%subplot(231);
%imshow(f);
%title(‘原始图像‘);
%计算梯度图
f=double(f);
hv=fspecial(‘prewitt‘);  %应用prewitt算子锐化图像 
hh=hv.‘;
gv=abs(imfilter(fhv‘replicate‘));  %replicate表示图像大小通过复制外边界的值来扩展
gh=abs(imfilter(fhh‘replicate‘));
g=sqrt(gv.^2+gh.^2);
%计算距离函数
%subplot(232);
df=bwdist(f);    % 求出其他点跟当前点的距离
%imshow(uint8(df*8));
%title(‘原始图像的距离变换‘);
%计算外部约束
L=watershed(df);
em=L==0;
%subplot(233);
%imshow(em);
%title(‘标记外部约束‘);
%计算内部约束
im=imextendedmax(f20);
%subplot(234);
%imshow(im);
%title(‘标记内部约束‘);
%重构梯度图
 g2=imimposemin(gim|em);
 %subplot(235);
 %imshow(g2);
 %title(‘由标记内外部约束重构的梯度图‘);
 %watershed算法分割
 L2=watershed(g2);
 wr2=L2==0;
 %subplot(236);
 f(wr2)=255;
 f=uint8(f);
 %imshow(f);
 %title(‘分割结果‘);
 imwrite(fstrcat(serials‘改进分水岭算法分割图‘‘.bmp‘));
end


 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----

     文件       1248  2009-09-17 11:08  watershedgjsz.m

----------- ---------  ---------- -----  ----

                 1248                    1


评论

共有 条评论