我按照Mathworks.com中的2-D Watershed example分隔连接的对象,如下图所示:
该代码总结为:
bw = imread('some_binary_image.tif');
D = -bwdist(~bw);
D(~bw) = -Inf;
L = watershed(D);
结果是:
中心的粒子已被分为两部分。有什么方法可以避免过度分割吗?
谢谢,lennon310,
chessboard
对于我的大多数图像都能很好地工作,但是在某些情况下,效果却不尽人意。例如,以下二进制图像:使用棋盘将导致:
由于我有数百张图像,因此似乎很难找到适用于所有图像的参数的一种组合。我想知道我是否需要结合使用棋盘,城市街区等获得的良好结果...
最佳答案
使用max(abs(x1-x2),abs(y1-y2))
作为距离度量(棋盘),并在watershed
函数中使用八连邻域:
bw=im2bw(I);
D = -bwdist(~bw,'chessboard');
imagesc(D)
D(~bw) = -Inf;
L = watershed(D,8);
figure,imagesc(L)
结果:
关于matlab - 分水岭算法的过度分割,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/20622368/