The 2-D watershed example总结如下:
bw = imread('someImage.tif');
D = -bwdist(~bw);
D(~bw) = -Inf;
L = watershed(D);
我不太明白为什么D(~bw) = -Inf;
在这里需要强制不属于对象的像素为-Inf(原为零)。
我尝试在没有该声明的情况下运行该程序,结果令人困惑。为什么有必要将这些像素强制为-Inf以使分水岭得到正确的结果?
正如弗雷德里克所指出的那样,我用surf
来绘制表面,
在运行D(~bw) = -Inf;
之前,结果是:
运行后,结果是:
答案 0 :(得分:1)
-Inf
增强了连接组件和背景之间的对比度。否则,分水岭很可能将所有背景与单个连接组件合并到一个区域。实际上,-Inf
设置将完全消除感兴趣区域的背景。使用sample image查看-Inf
对细分的影响。如果您设置D(~bw) = 0;
,您将获得: