资源简介
分水岭算法是现在医学图像分割的经典算法,具有非常高的参考价值
代码片段和文件信息
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
- 上一篇:最小距离分类
- 下一篇:EMD实现的MATLAB代码
相关资源
- 图像分割分水岭算法MATLAB源代码
- matlab写的分水岭算法对粘连东西进行
- matlab基于分水岭算法处理图像分割的
- 分水岭算法分割苹果(matlab代码实现
- 基于matlab的分水岭算法分割黏连细胞
- 图像分割分水岭算法
- Matlab分水岭法分割图像代码
- 标记分水岭分割算法的matlab实现
- 基于标记的分水岭算法matlab程序
- 基于分水岭算法的重叠细胞分割
- matlab实现的区域增长和分水岭算法
- cellcount细胞分割 分水岭算法
- ImageSegmentation 多尺度分水岭变换分割
- Watershed-algorithm 基于距离变换的分水岭
- 基于分水岭和区域合并的图像分割算
- 分水岭分割方法提取目标轮廓
- matlab实现分水岭算法代码
- matlab 分水岭分割算法
评论
共有 条评论