2

Mathworks.com 上的二维分水岭示例可总结如下:

bw = imread('someImage.tif');

D = -bwdist(~bw);

D(~bw) = -Inf;

L = watershed(D);

我不太明白为什么D(~bw) = -Inf;这里有必要强制不属于对象的像素处于-Inf(最初为零)。

我尝试在没有该语句的情况下运行程序,结果令人困惑。为什么有必要将这些像素强制为 -Inf 以使分水岭获得正确的结果?

正如弗雷德里克所指出的,我曾经surf在这里绘制表面,在运行之前D(~bw) = -Inf;,结果是:

伊姆古尔

运行之后,结果是: 伊姆古尔

4

1 回答 1

1

-Inf增强连接组件和背景之间的对比度。否则分水岭很可能会将所有背景与单个连通分量合并到一个区域。实际上,-Inf设置将完全消除感兴趣区域的背景。用您的样本图像检查-Inf对分割的影响。如果你设置,你会得到:D(~bw) = 0;

在此处输入图像描述

于 2013-12-17T04:53:24.657 回答