• 大小: 4KB
    文件类型: .m
    金币: 1
    下载: 0 次
    发布日期: 2021-01-06
  • 语言: Matlab
  • 标签: matlab  watershedalg  

资源简介

用Matlab实现分水岭算法,这个算法是图像边缘检测的常用算法。

资源截图

代码片段和文件信息

%{

如果图像中的目标物体是连在一起的,则分割起来会更困难,分水岭算法经常用于处理这类问题,通常会取得比较好的效果。分水岭分割算法把图像看成一副“地形图”,其中亮度比较强的地区像素值较大,而比较暗的地区像素比较小,通过寻找“汇水盆地”和“分水岭界限”,对图像进行分割。
步骤:
1.读取图像
2.求取图像的边界,在此基础上可直接应用分水岭分割算法,但效果不佳;
3.对图像的前景和背景进行标记,其中每个对象内部的前景像素都是相连的,背景里面的每个像素值都不属于任何目标物体;
4.计算分割函数,应用分水岭分割算法的实现
注:直接用分水岭分割算法效果并不好,如果在图像中对前景和背景进行标注区别,再应用分水岭算法会取得较好的分割效果。
例 步骤:
1.读取图像并求取图像的边界。
%}
rgb = imread(‘355.jpg‘);%读取原图像
% rgb = imread(‘Sitophilus_oryzae_0001.tif‘);%读取原图像
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); imsh

评论

共有 条评论