индексирование массива по условию в скобках - PullRequest
1 голос
/ 10 мая 2019

Я делаю сегментацию подвздошной кости из последовательности МРТ, используя алгоритм случайного Уокера. Я сегментировал его по простейшему фрагменту последовательности, а затем хочу перебрать последовательность, используя предыдущую сегментацию кости (эродированную и расширенную) в качестве внутреннего и внешнего маркеров. Я использую следующий код для маркировки маркеров:

markers = np.zeros(bone_mark.shape)
out_mark = np.invert(dilation(bone_mark, disk(10)))
in_mark = erosion(bone_mark, disk(5))
markers[out_mark == True] = 1
markers[in_mark == True] = 2

где bone_mark - сегментация подвздошной кости предыдущего среза. В первый раз все работает нормально, но когда я запускаю это в цикле, вторая итерация не может объединить метки в массиве маркеров. Здесь вы можете увидеть пример изображения маркера в первой и второй итерациях:

first iteration markers

second iteration markers

Я проверил out_mark и in_mark в обеих итерациях, и они в порядке, как и должно быть. Это выглядит загадочно для меня, и я понятия не имею, как решить эту проблему. Не могли бы вы поделиться своими мыслями по этой проблеме?

1 Ответ

0 голосов
/ 10 мая 2019

Я обнаружил проблему, это было связано с типом вывода skimage.segmentation.random_walker, который не является bool, а:

массивом целых чисел той же формы, что и данные, в которых каждый пиксель имеетбыл помечен в соответствии с маркером, который первым достиг пикселя

, поэтому единицы и двойки в моем случае.

Первая сегментация самого простого среза была выполнена с помощью другого алгоритма, и это был массив bool.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...