是否有可能分割 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)
以此类推,直到确定所有段
我自己回答问题似乎很常见:
需要以下库:
我的代码:
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]]]
在此之后我可以通过简单的循环获得我需要的(单独的)数组!
希望对大家有所帮助!
我有一个 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)
以此类推,直到确定所有段
我自己回答问题似乎很常见:
需要以下库:
我的代码:
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]]]
在此之后我可以通过简单的循环获得我需要的(单独的)数组!
希望对大家有所帮助!