【问题标题】:How to find clusters in binary 3D image?如何在二进制 3D 图像中找到簇?
【发布时间】:2015-09-29 13:59:39
【问题描述】:

我有一个二进制 3D 图像,即它只包含 0 和 1。现在我想找到所有 1 的簇(即只包含值 1 的体素簇)。最后,对于每个集群,我应该知道属于该集群的体素的坐标。

如何做到这一点?当然,我可以遍历所有体素,但困难在于检测集群并提取集群内的所有体素。

我想在 Matlab 中做这个。

【问题讨论】:

  • 如果我理解得很好,您希望将 bwconncomp 与适当的连接级别(即 6、18 或 26)一起用于 3D 案例。

标签: matlab image-processing multidimensional-array 3d cluster-analysis


【解决方案1】:

这称为连通分量分析。

一种简单的方法是种子填充:系统地扫描整个域;当您遇到“1”时,递归访问所有“1”邻居并将它们设置为“0”(以避免多次访问它们)。顶级访问枚举集群中的所有体素。清除集群后,继续搜索其他 '1'。

请注意,这将是堆栈密集型的,为此目的实现显式堆栈会更好。

【讨论】:

    【解决方案2】:

    regionprops'PixelIdxList' 属性一起使用。默认情况下,这使用 8 路连接区域。它还获得了对计算有用的线性索引。

    例子:

    A = false(4,4,3);
    A(1,1,1) = true;
    A(3,3,3) = true;
    rp = regionprops(A,'PixelIdxList');
    
    EDU>> A(rp(1).PixelIdxList)
    
    ans =
    
         1
    
    EDU>> A(rp(2).PixelIdxList)
    
    ans =
    
         1
    

    您也可以使用'PixelList' 获取 3D 坐标:

    EDU>> rp = regionprops(A,'PixelList');
    EDU>> rp
    
    rp = 
    
    2x1 struct array with fields:
        PixelList
    
    EDU>> rp(1)
    
    ans = 
    
        PixelList: [1 1 1]
    
    EDU>> rp(2)
    
    ans = 
    
        PixelList: [3 3 3]
    

    【讨论】:

    • 谢谢。 8路连接区域是什么意思?在您的示例中,您只有一个体素的集群。它还会返回具有多个体素的簇的体素坐标吗?
    • 通常当你想找到连续区域时,你必须指定连通性。它可以是 4 路或 8 路连续的。 4-way 连接意味着它会从上到下搜索,而 8-way 将搜索一个点周围的所有 8 个像素。 Here 是一张描述它的好照片。这适用于 2D 案例。
    • 但正如你所说,这是用于 2D 的。不应该将 16 路用于 3D 或类似的东西吗?
    • 是的,我的意思是要注意相邻区域有不同类型的连接。因此,您需要确保您的应用程序使用默认设置。
    【解决方案3】:

    这取决于您希望采用的规则。以及您的 3D 是如何表示的。 它是点云,还是使用颜色表示深度的 2D 位图,还是 3D数组,或者什么...

    您可以尝试根据平面或 3D 空间内的小 3D 云对它们进行聚类。 如果首先,将 3D 空间分割成平面并在其上使用 2D 聚类算法。 然后,您将拥有每个深度平面的集群(如果存在)。 如果是第二个,修改 2D 搜索聚类算法以使用空间立方体而不是平面的正方形作为框架。 您甚至可以在切片平面上使用 2D 算法,然后检查周围的平面以查看集群是否在 3D 空间中走得更远。 但这将是低效的。我不是matlab专家,所以我不能帮助你实现, 但也许已经有一些工具箱可以完全按照您的意愿行事。 而且,当然,您将如何做很大程度上取决于您的图像在内存中的表示方式。 也许您必须更改格式才能轻松有效地提取集群。 让 Google 有事可做。

    编辑: 刚刚有了一个想法。 使用正确的格式并对数据进行排序。 您应该得到所有相邻点的列表。 在输入数据中加入有关坐标的信息。排序通常比连接更快。

    【讨论】:

    • 我认为 jucistains 解决方案可以。
    猜你喜欢
    • 2019-09-24
    • 2021-12-11
    • 2014-03-29
    • 1970-01-01
    • 2019-02-04
    • 2014-12-19
    • 1970-01-01
    • 2017-08-19
    • 2016-06-28
    相关资源
    最近更新 更多