在Matlab中,查找3D邻域

3
我有一个经过分割处理的体积(3D矩阵)。该体积大部分由NaN(或零)组成,除了通过某些标准的区域(见图片)。我需要知道每个剩余段落的大小(以体素数为单位),以及它们在2D平面上(xy、xz、yz)的分布情况。是否有任何matlab工具可以帮助我以高效的方式完成此操作,而不是进行直接搜索?该体积可能相当大。例如,在附加的图片中,有一个黄褐色的段落,由7个体素组成,垂直方向比xy方向更长。 提前感谢您的帮助。enter image description here
2个回答

4
最方便的解决方案是使用REGIONPROPS。在您的示例中:
stats = regionprops(image, 'area', 'centroid')

每个特性在结构统计中都有一个条目,其中包含面积(即体素数)和质心。


3
我认为你需要的是名为bwlabeln的函数。它允许您在三维空间中找到斑点,就像bwlabel在二维中所做的那样。之后,您可以使用regionprops查找数据的属性。
直接从帮助文件中摘取信息:

bwlabeln 用于标记二值图像中连接的组件。 L = bwlabeln(BW) 返回一个包含 BW 中连接组件标签的标签矩阵 L。BW 可以具有任何维度;L 与 BW 大小相同。L 的元素是大于或等于 0 的整数值。标记为 0 的像素是背景。标记为 1 的像素组成一个对象,标记为 2 的像素组成第二个对象,依此类推。当处理二维图像时,默认连通性为 8,处理三维图像时为 26,处理更高维时为 CONNDEF(NDIMS(BW),'maximal')。


在调用 regionprops 之前,您不需要调用 bwlabeln - Jonas
谢谢大家,你们节省了我很多时间。 - user1641496

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接