在python中如何在三维数组中标记连接的组件?

在python中如何在三维数组中标记连接的组件?,python,arrays,connected-components,Python,Arrays,Connected Components,大家好,我在处理3D阵列中的连接组件时遇到了一个问题。实际上,我正在为神经成像研究做3D CT扫描数据。为了简单解释,这里有一个3D阵列的示例: filled = np.array([ [[0, 0, 1],[1, 0, 1],[1, 0, 1],[0, 0, 1],[0, 0, 1],[0, 0, 1]], [[1, 0, 0],[1, 0, 0],[1, 0, 0],[0, 0, 0],[0, 0, 0],[0, 0

大家好,我在处理3D阵列中的连接组件时遇到了一个问题。实际上,我正在为神经成像研究做3D CT扫描数据。为了简单解释,这里有一个3D阵列的示例:

filled = np.array([
                   [[0, 0, 1],[1, 0, 1],[1, 0, 1],[0, 0, 1],[0, 0, 1],[0, 0, 1]],
                   [[1, 0, 0],[1, 0, 0],[1, 0, 0],[0, 0, 0],[0, 0, 0],[0, 0, 0]],
                   [[1, 0, 0],[1, 0, 0],[1, 0, 0],[0, 0, 0],[0, 0, 0],[0, 0, 0]],
                   [[0, 0, 0],[0, 0, 0],[0, 0, 0],[0, 1, 0],[0, 1, 0],[0, 1, 0]],
                   [[0, 0, 0],[0, 0, 0],[0, 0, 0],[0, 1, 0],[0, 1, 0],[0, 1, 0]],
                   [[0, 0, 0],[0, 0, 0],[0, 0, 0],[0, 1, 0],[0, 1, 0],[0, 1, 0]]   
])
这就是它的样子:

问题是,我有没有办法直接在3D空间中制作连接组件?也许用26个像素?或者只是为了在3D中标记对象 因为我已经尝试使用open cv connected component来处理每个切片(在二维数组中),这就是我处理二维数组(切片)及其工作的方式:

# Largest Connected Component
# slice array is from thresholding process (the value is 0, 1, 2)
    new_img = np.zeros_like(slice)                                        
    for val in np.unique(slice)[1:]:                                      
        mask = np.uint8(slice == val)                                     
        labels, stats = cv2.connectedComponentsWithStats(mask, 4)[1:3]      
        largest_label = 1 + np.argmax(stats[1:, cv2.CC_STAT_AREA])          
        new_img[labels == largest_label] = val 
但是我把它叠起来之后,结果就不好了。有些碎片已经失去了价值。 也许这里的某个人以前有处理这个问题的经验,你的回答会很有帮助。
谢谢

我找到了解决这个问题的办法。有一个库不仅支持二维图像,还支持William Silversmith创建的三维图像。以下是链接:

文件很清楚。如果你面临同样的问题,我希望这对你有所帮助