分水岭算法的过分割

sha*_*are 5 matlab image-processing image-segmentation watershed

我按照Mathworks.com中的2-D Watershed示例分离了连接的对象,如下图所示:

Imgur

代码总结如下:

bw = imread('some_binary_image.tif');

D = -bwdist(~bw);

D(~bw) = -Inf;

L = watershed(D);
Run Code Online (Sandbox Code Playgroud)

结果是:

Imgur

中心的颗粒已分成两部分.有什么方法可以避免过度细分吗?

谢谢,lennon310,chessboard对我的大多数图像都有效,但仍然有一些情况没有.例如,以下二进制图像: Imgur

使用棋盘将导致: Imgur

由于我有数百张图像,似乎很难找到适用于所有图像的一个参数组合.我想知道我是否需要结合使用棋盘,城市街区等获得的好结果......

len*_*310 7

使用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)
Run Code Online (Sandbox Code Playgroud)

结果: 在此输入图像描述