Почему изображения bwdist
и imhmin
полностью черные? Когда я проверяю две матрицы в рабочей области, значения кажутся прекрасными. Вы можете запустить этот код в Matlab, чтобы проверить его. Ожидаемый результат — изображение в градациях серого, где центр каждого связанного компонента имеет низкую интенсивность, а края связанных компонентов имеют высокую интенсивность. Расстояние в пикселях от краев дальше от центра тяжести и будет иметь большое значение расстояния. Если значения расстояния считаются интенсивностью, то высокая интенсивность на краях.
Рассматривайте единицы как связанные компоненты, которые должны быть преобразованы на расстоянии, в то время как нули являются просто фоном. Я хотел бы иметь фон как 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)
Нужный результат примерно такой.
distance
отрицательно? - person beaker   schedule 31.08.2016bwdist(~binary,'cityblock')
почему-то выглядит точно так же, как и бинарное. - person Senyokbalgul   schedule 31.08.2016bwdist
для любого пикселя, который равен 0 / черный, вычисляет расстояние до ближайшего ненулевого пикселя. Сначала вы инвертируете изображение, так что это означает, что в изображении есть только два нулевых пикселя. Ближайшие ненулевые пиксели к любому из них на самом деле равны 1, и, поскольку другие пиксели не равны нулю, они просто устанавливаются равными 0 в соответствии с определениемbwdist
. Вот почему вы получаете переменнуюdistance
такой же, как оригинал. Непонятно, почему вы сначала инвертируете изображение. - person rayryeng   schedule 31.08.2016true
пикселями инвертированного изображения? - person beaker   schedule 31.08.2016bwdist
, если вы предоставляете этот ввод. - person rayryeng   schedule 31.08.2016distance
изображение, которое вы хотите из этого. То, что вы пытаетесь сделать, звучит достаточно просто, но вы сделали противоречивые заявления, которые сбивают с толку. Например, исходное изображение полностью черное с двумя белыми пикселями. Затем вы говорите, что инвертируете изображение, чтобы фон был черным, а не белым. Как фон белый в вашем построенном изображении? - person beaker   schedule 31.08.2016max(distance(:)) - distance
(может быть,+1
), а не отрицать. Но тогда вам нужно будет правильно масштабировать его и отфильтровать фоновые пиксели. - person beaker   schedule 31.08.2016