Matlab mathworks.com上的二维流域示例

Matlab mathworks.com上的二维流域示例,matlab,image-processing,image-segmentation,watershed,Matlab,Image Processing,Image Segmentation,Watershed,在Mathworks.com上可以总结如下: bw = imread('someImage.tif'); D = -bwdist(~bw); D(~bw) = -Inf; L = watershed(D); 我不太明白为什么D(~bw)=-Inf在这里是必需的,它强制不属于对象的像素位于-Inf(最初为零) 我试着在没有那个语句的情况下运行这个程序,结果令人困惑。为什么为了分水岭得到正确的结果,必须强制这些像素为-Inf 正如Frederick所指出的,我使用了surf在这里绘制曲面,

在Mathworks.com上可以总结如下:

bw = imread('someImage.tif');

D = -bwdist(~bw);

D(~bw) = -Inf;

L = watershed(D);
我不太明白为什么
D(~bw)=-Inf在这里是必需的,它强制不属于对象的像素位于-Inf(最初为零)

我试着在没有那个语句的情况下运行这个程序,结果令人困惑。为什么为了分水岭得到正确的结果,必须强制这些像素为-Inf

正如Frederick所指出的,我使用了
surf
在这里绘制曲面, 在运行
D(~bw)=-Inf之前,结果是:

运行后,结果是:

-Inf
增强连接组件和背景之间的对比度。否则,“分水岭”很可能会将具有单个连接组件的所有背景合并到一个区域。实际上,
-Inf
设置将完全消除感兴趣区域的背景。用你的电脑查看
-Inf
对分段的影响。如果设置
D(~bw)=0,您将获得: