Дистанционное преобразование `bwdist` выводится полностью черным
Почему 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)
Нужный результат примерно такой.
1 ответ
Я не знаю, понимаю ли я вопрос или нет, но, судя по последним изменениям, вам нужна эта строка
figure; imshow(distace)
выглядеть как изображение, которое вы разместили. Чтобы достичь этого, вы должны понимать, что imshow создает изображение в градациях серого, отображая 0 в черный цвет и 1 в белый. В вашем примере distance
варьируется от 0 до 5. Если вы используете следующий код
scaledDistance = distance/max(distance(:));
figure; imshow(scaledDistance)
Вы получите изображение в градациях серого вместо двух точек. Если вы используете этот код:
scaledDistance = distance/max(distance(:));
figure; imshow(1 - scaledDistance)
Он будет инвертирован, чтобы быть похожим на изображение, которое вы разместили.