括号中按条件的数组索引
array indexing by condition in brackets
我正在使用随机游走算法从 MRI 序列中分割髂骨。我将它从序列的最简单切片中分割出来,然后我想使用先前的骨骼分割(侵蚀和扩张)作为内部和外部标记来迭代序列。我使用以下代码来标记标记:
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
是前一个切片的髂骨分割。第一次它工作正常,但是当我 运行 在循环中使用它时,第二次迭代无法在标记数组中组合标签。在这里您可以看到第一次和第二次迭代中标记图像的示例:
我在两次迭代中都检查了 out_mark
和 in_mark
,它们都很好,就像它们应该的那样。这对我来说很神秘,我不知道如何解决这个问题。你能分享一下你对这个问题的看法吗?
我发现了问题,这是由于 skimage.segmentation.random_walker
的输出类型不是 bool
而是:
array of ints of same shape as data, in which each pixel has been
labeled according to the marker that reached the pixel first
我的情况是这样的。
最简单切片的第一个分割是用另一种算法完成的,是一个bool数组。
我正在使用随机游走算法从 MRI 序列中分割髂骨。我将它从序列的最简单切片中分割出来,然后我想使用先前的骨骼分割(侵蚀和扩张)作为内部和外部标记来迭代序列。我使用以下代码来标记标记:
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
是前一个切片的髂骨分割。第一次它工作正常,但是当我 运行 在循环中使用它时,第二次迭代无法在标记数组中组合标签。在这里您可以看到第一次和第二次迭代中标记图像的示例:
我在两次迭代中都检查了 out_mark
和 in_mark
,它们都很好,就像它们应该的那样。这对我来说很神秘,我不知道如何解决这个问题。你能分享一下你对这个问题的看法吗?
我发现了问题,这是由于 skimage.segmentation.random_walker
的输出类型不是 bool
而是:
array of ints of same shape as data, in which each pixel has been labeled according to the marker that reached the pixel first
我的情况是这样的。
最简单切片的第一个分割是用另一种算法完成的,是一个bool数组。