如何在matlab中处理来自3D体积的各个连通组件?

时间:2013-09-17 16:51:27

标签: matlab volume

我有一个包含多个连接组件的3D数据集。使用matlab,我想为每个组件计算一个度量标准(度量标准不包含在'regionprops'函数中)。我的问题是,最好的方法是什么?

我想要计算的指标是表面积。我知道如何为一个连接的组件执行此操作,但我正在寻找一种有效的方法来为符合特定卷标准的所有组件执行此操作。

到目前为止我所拥有的:

cc = bwconncomp(data,26); % find components
L = labelmatrix(cc); % 
stats = regionprops(data, 'area');


for i = 1:length(cc.PixelIdxList)

  if stats(i,1).Area > threshold

    a = (L==i);
    surfaceArea(i,1) = compute_surface_area(a);

  end

end

我确信有更好的方法可以做到这一点!

提前致谢,N

1 个答案:

答案 0 :(得分:1)

您可能希望使用arrayfun计算区域高于threshold的每个连接组件的表面区域。

idx = find([stats.Area]>threshold);
arrayfun(@(ii) compute_surface_area(L == ii), idx, 'UniformOutput', 0 )

这里,for循环写在一行代码中。