分水岭算法Matlab实现——三种方法

本文通过Matlab代码展示了三种不同的分水岭算法实现:基本分水岭、梯度分水岭和梯度加掩模的三次分水岭。通过比较,探讨了它们在图像分割中的过分割问题及其改进效果,适用于图像处理和计算机视觉领域的研究。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

clear,clc%三种方法进行分水岭分割

%读入图像

filename='sar1.bmp';

f=imread(filename);

Info=imfinfo(filename);

if Info.BitDepth>8

f=rgb2gray(f);

end

figure,

mesh(double(f));%显示图像,类似集水盆地

%方法1:一般分水岭分割,从结果可以看出存在过分割问题

b=im2bw(f,graythresh(f));%二值化,注意应保证集水盆地的值较低(为0),否则就要对b取反

d=bwdist(b); %求零值到最近非零值的距离,即集水盆地到分水岭的距离

l=watershed(-d); %matlab自带分水岭算法,l中的零值即为风水岭

w=l==0; %取出边缘

g=b&~w; %用w作为mask从二值图像中取值

figure

subplot(2,3,1),

imshow(f);

subplot(2,3,2),

imshow(b);

subplot(2,3,3),

imshow(d);

subplot(2,3,4),

imshow(l);

subplot(2,3,5),

imshow(w);

subplot(2,3,6),

imshow(g);

%方法2:使用梯度的两次分水岭分割,从结果可以看出还存在过分割问题(在方法1的基础上改进)

h=fspecial('s

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值