Как отключить соседние регионы, используя морфологию без потери информации - PullRequest
0 голосов
/ 12 февраля 2019

У меня есть 3D-изображение, которое является результатом сегментации входного объема, система работает нормально, за исключением случаев, когда две ячейки расположены очень близко друг к другу, тогда в этом случае результаты сегментации возвращаются, когда две ячейки соединяются какпоказано на изображении ниже:

enter image description here

Обведенные кружком являются фактически двумя ячейками, но соединены вместе из-за их близкого расположения.При подсчете CC эти два представляют собой одну клетку.

Я пытался использовать морфологическое раскрытие, но, похоже, оно не дает желаемого результата.С одной итерацией у меня нет эффекта объявления с достаточным количеством итераций, чтобы разорвать пробел, я теряю маленькие капли.

import imageio as io
import numpy as np
import skimage.morphology as morph
import scipy.ndimage as ndimage

img = io.volread('test_volumes/volume_4_1_predictions.tif')

bw_img = img > 0.5      # binrize image
bw_img = 1 - bw_img     # this changes True False to 1 and 0
bw_img = 1 - bw_img     # Make background black and foreground white

strel = morph.ball(1)

opened = ndimage.binary_opening(opened, strel, 5)

5 итераций этого открывают пробел, но я, похоже, теряю много информации.

Эрозия также не работает, поскольку она теряет больше информации, чем открытие.

Как лучше всего отсоединить эти две ячейки?

Вот трехмерное изображение в .tif формат: https://app.box.com/s/9wcqf3qbn8d9jg8zfvw3ijz85baes8t4

...