距离变换“bwdist”输出完全是黑色

Distance transform `bwdist` output is completely black

为什么bwdistimhmin图像全黑?当我检查工作区中的两个矩阵时,值看起来不错。您可以 运行 在 Matlab 中查看此代码。预期结果是灰度图像,其中每个连通分量的中心具有低强度,而连通分量的边缘具有高强度。边缘的像素距离距质心较远,并且具有较高的距离值。如果距离值被认为是一个强度,那么边缘处的强度就很高。

将 1 视为要进行距离变换的连通分量,而 0 仅作为背景。我想把背景设为0。

image = zeros(5,5);
image(2,2) = 1;
image(4,4) = 1;

binary = im2bw(image,graythresh(image));
distance = bwdist(binary,'cityblock');
hminima = imhmin(distance,5);

figure; imshow(binary)
figure; imshow(distace)
figure; imshow(hminima)

需要的结果是这样的。

我不知道我是否理解这个问题,但从最近的编辑来看,您似乎想要这一行

figure; imshow(distace)

看起来像您发布的图片。为此,您必须了解 imshow 生成灰度图像,将 0 映射为黑色,将 1 映射为白色。在您的示例中,distance 从 0 到 5 不等。如果您使用以下代码

scaledDistance = distance/max(distance(:));
figure; imshow(scaledDistance)

您将得到一张灰度图像,而不仅仅是两个点。如果您使用此代码:

scaledDistance = distance/max(distance(:));
figure; imshow(1 - scaledDistance)

它将反转为与您发布的图片相似。