Сегментация твердого трехмерного воксельного куба - PullRequest
1 голос
/ 28 мая 2019

Я пытаюсь выполнить сегментацию водораздела для куба 30x30x30 (бинвокс, преобразованный в npy). Он может иметь две функции, такие как прямоугольный проход и круговой проход. Я хочу разделить куб на два разных куба с каждой функцией.

Массив numpy, который я наконец получил, является двоичным, 1 там, где твердое тело, и 0 там, где он полый.

Я попытался использовать тот же подход, который мы используем для изображений (маркировка подключенных компонентов с последующей сегментацией водораздела) с использованием библиотеки scikit-image. Сбой для основного файла с двумя функциями. Я также попробовал Connected Components 3D с последующим scikit-image водоразделом, но ничего плодотворного не происходит.

Пожалуйста, смотрите код ниже.

inf = np.load(path/to/npy)

D = ndimage.distance_transform_edt(inf)
localMax = peak_local_max(D, labels=inf, indices=False, min_distance=1)

# ccl
markers = ndimage.label(localMax)
# perform a connected component analysis on the local peaks, using 8-connectivity, then appy the Watershed algorithm

labels = watershed(-D, markers, mask=inf)

# loop over the unique labels returned by the Watershed algorithm

for label in np.unique(labels):
     if label == 0:
         continue
     mask = np.ones(inf.shape, dtype=np.int32)
     mask[labels == label] = 0
     np.save(path/to/save)

Поскольку я работаю над этим в одиночку, мне может понадобиться изменить свой мыслительный процесс. Так что, если кто-нибудь может подсказать мне, где я ошибаюсь, это будет очень полезно.

...