Mathworks.com 上的二维分水岭示例可总结如下:
bw = imread('someImage.tif');
D = -bwdist(~bw);
D(~bw) = -Inf;
L = watershed(D);
我不太明白为什么D(~bw) = -Inf;
这里有必要强制不属于对象的像素处于-Inf(最初为零)。
我尝试在没有该语句的情况下运行程序,结果令人困惑。为什么有必要将这些像素强制为 -Inf 以使分水岭获得正确的结果?
正如弗雷德里克所指出的,我曾经surf
在这里绘制表面,在运行之前D(~bw) = -Inf;
,结果是:
运行之后,结果是: