我有一个包含多个连接组件的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
答案 0 :(得分:1)
您可能希望使用arrayfun
计算区域高于threshold
的每个连接组件的表面区域。
idx = find([stats.Area]>threshold);
arrayfun(@(ii) compute_surface_area(L == ii), idx, 'UniformOutput', 0 )
这里,for
循环写在一行代码中。