距离变换“bwdist”输出完全是黑色
Distance transform `bwdist` output is completely black
为什么bwdist
和imhmin
图像全黑?当我检查工作区中的两个矩阵时,值看起来不错。您可以 运行 在 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)
它将反转为与您发布的图片相似。
为什么bwdist
和imhmin
图像全黑?当我检查工作区中的两个矩阵时,值看起来不错。您可以 运行 在 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)
它将反转为与您发布的图片相似。