• 大小: 3KB
    文件类型: .m
    金币: 1
    下载: 0 次
    发布日期: 2021-06-15
  • 语言: Matlab
  • 标签: 分水岭  

资源简介

分水岭算法是现在医学图像分割的经典算法,具有非常高的参考价值

资源截图

代码片段和文件信息

 
rgb = imread(‘E:\MATLAB\work\src\(10).jpg‘);%读取原图像
I = rgb2gray(rgb);%转化为灰度图像
figure; subplot(121)%显示灰度图像
imshow(I)
text(732501‘Image courtesy of Corel‘...
     ‘FontSize‘7‘HorizontalAlignment‘‘right‘)
hy = fspecial(‘sobel‘);%sobel算子
hx = hy‘;
Iy = imfilter(double(I) hy ‘replicate‘);%滤波求y方向边缘
Ix = imfilter(double(I) hx ‘replicate‘);%滤波求x方向边缘
gradmag = sqrt(Ix.^2 + Iy.^2);%求摸
subplot(122); imshow(gradmag[]) %显示梯度
title(‘Gradient magnitude (gradmag)‘)

%2. 直接使用梯度模值进行分水岭算法:(往往会存在过的分割的情况,效果不好)

L = watershed(gradmag);%直接应用分水岭算法
Lrgb = label2rgb(L);%转化为彩色图像
figure; imshow(Lrgb) %显示分割后的图像
title(‘Watershed transform of gradient magnitude (Lrgb)‘)

%3.分别对前景和背景进行标记:本例中使用形态学重建技术对前景对象进行标记,首先使用开操作,开操作之后可以去掉一些很小的目标。

se = strel(‘disk‘ 20);%圆形结构元素
Io = imopen(I se);%形态学开操作
figure; subplot(121)
imshow(Io) %显示执行开操作后的图像
title(‘Opening (Io)‘)
Ie = imerode(I se);%对图像进行腐蚀
Iobr = imreconstruct(Ie I);%形态学重建
subplot(122); imshow(Iobr) %显示重建后的图像
title(‘Opening-by-reconstruction (Iobr)‘)
Ioc = imclose(Io se);%形态学关操作
figure; subplot(121)
imshow(Ioc) %显示关操作后的图像
title(‘Opening-closing (Ioc)‘)
Iobrd = imdilate(Iobr se);%对图像进行膨胀
Iobrcbr = imreconstruct(imcomplement(Iobrd) ...
    imcomplement(Iobr));%形态学重建
Iobrcbr = imcomplement(Iobrcbr);%图像求反
subplot(122); imshow(Iobrcbr) %显示重建求反后的图像
title(‘Opening-closing by recons

评论

共有 条评论