是否有可能分割 3d-np.array(布尔变量)

Is there a possibility for a segmentation of a 3d-np.array (boolean variables)

我有一个 3D-numpy-array,它专门填充了布尔变量 (True/False)。 是否有可能或库在 N6 邻域中对所有带有“True”的条目进行分割?在我的研究中,不幸的是我只找到了用 openCV 进行图像处理的东西。

然后目标将是一个数组,其中所有连接的“True”条目都具有相同的编号(段的分配)。或者,单独的数组也适用于每个单独的段,其中只有属于相应段的元素为“真”。

非常感谢您的建议和提示。

编辑: 这将是一个输入数组:

[[[ True  True False False  True]
  [False False False False False]
  [False False False False False]
  [False False  True False False]
  [False False  True  True False]]

 [[ True  True False False  True]
  [False  True False False False]
  [False False False False False]
  [False False False False False]
  [False False  True False False]]

 [[False False False False False]
  [False False False False False]
  [False False  True False False]
  [False False False False False]
  [False False False False False]]

 [[False False False False  True]
  [False False False False False]
  [False False False False False]
  [False False False  True  True]
  [False False False  True  True]]

 [[False False False False  True]
  [False False False False  True]
  [False False False False False]
  [False False False  True  True]
  [False False False  True  True]]]

如图所示(带有单个片段的编号):

enter image description here

我需要一个分段(事先不知道数组中有多少段)。第一个输出数组将如下所示:

[[[ True,  True, False, False,  False],
  [False, False, False, False, False],
  [False, False, False, False, False],
  [False, False,  False, False, False],
  [False, False,  False,  False, False]],

  [[ True,  True, False, False,  False],
  [False,  True, False, False, False], ...(rest is False)

第二段的第二个数组如下所示:

[[[ False,  False, False, False,  True],
[False, False, False, False, False],
[False, False, False, False, False],
[False, False,  False, False, False],
[False, False,  False,  False, False]],

[[ False,  False, False, False,  True],
 [False,  False, False, False, False], ...(rest is False)

以此类推,直到确定所有段

我自己回答问题似乎很常见:

需要以下库:

connected-components-3d

我的代码:

import cc3d
connectivity = 6 #18, 26
labels_out = cc3d.connected_components(pic_3d, connectivity=connectivity)

使用布尔数组

结果:

[[[1 1 0 0 2]
  [0 0 0 0 0]
  [0 0 0 0 0]
  [0 0 3 0 0]
  [0 0 3 3 0]]

 [[1 1 0 0 2]
  [0 1 0 0 0]
  [0 0 0 0 0]
  [0 0 0 0 0]
  [0 0 3 0 0]]

 [[0 0 0 0 0]
  [0 0 0 0 0]
  [0 0 4 0 0]
  [0 0 0 0 0]
  [0 0 0 0 0]]

 [[0 0 0 0 5]
  [0 0 0 0 0]
  [0 0 0 0 0]
  [0 0 0 6 6]
  [0 0 0 6 6]]

 [[0 0 0 0 5]
  [0 0 0 0 5]
  [0 0 0 0 0]
  [0 0 0 6 6]
  [0 0 0 6 6]]]

在此之后我可以通过简单的循环获得我需要的(单独的)数组!

希望对大家有所帮助!