Как удалить небольшие объекты из 3D-изображения? - PullRequest
2 голосов
/ 08 июля 2019

3D image Вы видите это? Есть некоторые маленькие объекты, распространяющиеся ниже мозга. и я хочу удалить их, чтобы получить чистый мозг.

Трехмерное изображение может быть выражено в виде трехмерного массива в Numpy.

Ниже приведен подход для удаления небольших объектов в 2D-изображении.

from skimage import morphology
img_size = img.shape[0] * img.shape[1]
new_img = morphology.remove_small_objects(img, img_size*0.1)

1 Ответ

1 голос
/ 18 июля 2019

Вот мое решение:


from skimage import morphology

    def remove_small_objects(img):
        binary = copy.copy(img)
        binary[binary>0] = 1
        labels = morphology.label(binary)
        labels_num = [len(labels[labels==each]) for each in np.unique(labels)]
        rank = np.argsort(np.argsort(labels_num))
        index = list(rank).index(len(rank)-2)
        new_img = copy.copy(img)
        new_img[labels!=index] = 0
        return new_img
...