【发布时间】:2015-03-27 10:38:36
【问题描述】:
我在 matlab 中定义了一个真实比例 (0,1) 的图像和一个整数比例定义的掩码。
例子
mask = [ 1 1 1 3 4 ;
1 1 1 2 4 ;
1 1 2 2 2 ]
img = [ 0.1 0.1 0.2 0.2 0.3 ;
0.1 0.1 0.2 0.3 0.3 ;
0.1 0.1 0.3 0.3 0.3 ]
对于掩码中的每个区域(即 1、2、3、4),我想计算相应图像强度的某个特征(例如,平均值)。
我使用的算法是
for i = labels
region = img(mask==i);
feature(i) = mean(region);
end
现在,对于大小为 300x400x500 且标签集的基数 > 40000(顺便说一句,这正是我的情况)的图像,此算法非常慢。
关于如何加快我的代码的任何建议?
【问题讨论】:
-
大小为
300x400x500的图像是什么意思?是 500 张大小为300x400的图像吗? -
@knedlsepp 明明是体积图像,Matlab中的3维数组。
-
@Sh3ljohn:我之所以问是因为该示例与给出的数据不符。 OP 可以具有:2D
mask、3Dimg并希望沿第三维为img的所有层使用相同的掩码,或者具有 3Dmask和 3Dimg。这就是为什么它不那么明显。 -
@knedlsepp 鉴于所提出的问题,OP 中缺乏相关信息令人震惊。但总结一下 cmets,OP 正在一个小的体积图像中进行聚类,并希望在 Matlab 中尽可能快地计算聚类强度的平均值、sdev 和偏度。
-
@Sh3ljohn:哦!在评论你的答案!所以
mask真的是一个 3D 数组。
标签: performance matlab image-processing feature-extraction