Я пытаюсь сегментировать трехмерные томографы пористых сетей на Python. Я могу рассчитать карту расстояний с помощью ndimage.distance_transform_edt и пиков с помощью feature.peak_local_max. когда я применяю алгоритм водораздела, я получаю приемлемый результат, но маркеры пиков не расположены на видимых пиках, см. изображение карты расстояний
заранее спасибо
Здесь код a - изображение
D = ndimage.distance_transform_edt(a)
localMax = feature.peak_local_max(D, indices=False, min_distance=50,
labels=a)
localMax2 = feature.peak_local_max(D, indices=True, min_distance=50,
labels=a)
markers = ndimage.label(localMax, structure=np.ones((3,3,3)))[0]
labels = morphology.watershed(-D,markers,mask=a)
есть ли другой вариант для расчета локальных минимумов для трехмерных массивов?
(а) как упомянул Крис, предоставьте полный пример кода; но (б) да, см. skimage.morphology.local_maxima, который является рекомендуемым способом их вычисления, если вам не нужны причудливые функции min_distancepeak_local_max.





Я нашел путь:
мне пришлось исключить границы и применить порог
D = ndimage.distance_transform_edt(a)
localMax = feature.peak_local_max(D, indices=False, min_distance=30,
labels=a,threshold_abs=9,exclude_border=1)
localMax2 = feature.peak_local_max(D, indices=True, min_distance=30,
labels=a,threshold_abs=9,exclude_border=1)
#markers = ndimage.label(localMax, structure=np.ones((3,3,3)))[0]
markers = ndimage.label(localMax, structure=np.ones((3,3,3)))[0]
labels = morphology.watershed(-D,markers,mask=a)
regions=measure.regionprops(labels,intensity_image=a)
В чем вопрос? Также укажите свой код, см. минимальный воспроизводимый пример.