algorithm - 从二进制卷中分离对象

标签 algorithm matlab 3d image-segmentation

<分区>

我正在使用 MATLAB。

我有一个充满逻辑的三维数组。该数组表示一个圆柱体的数据,其中有 N 个形状相同但方向任意的订书钉。体积以体素(3 维像素)离散化,逻辑“1”表示“在圆柱体中的这一点是主食的一部分”,而“0”表示“在圆柱体中的这一点是空气”。 下图包含整个体积的一个二维切片。想象一下由这样的切片组成的完整体积。 白色表示“1”,黑色表示“0”。 one slice of the volume

现在我的问题是:我必须尽可能分开每根订书钉。 输出产品应该是 N 个三维数组,只有属于某个主食的体素为“1”,其他所有内容为“0”。这样我就有了只包含一根订书钉数据的数组。

最大的问题是,不同主食的'1'可以彼此相邻(相互接触并纠缠在一起),因此很难确定它们属于哪个主食。 简化的事实是,主食的边界体素可能会被切掉,我可以使用任何保留原始主食大致形状的输出阵列。

也许你们中的某些人可以提供解决此类问题的想法,或者甚至说出我可以查看的算法。 提前致谢。

最佳答案

由于订书钉是许多像素对象,您可以使用 3d median filtering 减少噪声或 bwareaopen 开始。那么bwlabeln可用于标记二进制数组中的连通分量。然后你就可以使用
REGIONPROPS进一步分析每个连接的对象,看看这是一个独立的主食还是更多。这可以使用诸如“周边”之类的功能来识别不同的情况来完成,但是您必须自己调查这些和其他 regionprops 功能。

关于algorithm - 从二进制卷中分离对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16764061/

相关文章:

c - 快速排序算法给出段错误

Swift:获取下一个以零结尾的最高数字

java - Java中如何优化这个方法?我的时间超出限制

OpenGL:模型 View 矩阵的多用户向量?

Javascript Array.sort 实现?

matlab - 如何按元素将矩阵的列除以向量的元素?

arrays - 如何在 matlab 中创建由多个 3d 图像数据数组组成的数组

matlab - For 循环将矩阵拆分为大小相等的子矩阵

java - 多边形顶点作为 UV 坐标

css - 使用 CSS 转换的伪 3d 效果?