【发布时间】:2013-06-13 22:19:01
【问题描述】:
我有一个如下形式的函数:
function Out = DecideIfAPixelIsWithinAnEllipsoidalClass(pixel,means,VarianceCovarianceMatrix)
ellipsoid = (pixel-means)'*(VarianceCovarianceMatrix^(-1))*(pixel-means);
if ellipsoid <= 1
Out = 1;
else
Out = 0;
end
end
我正在使用matlab进行遥感处理,我想对LandSatTM图像进行分类。这张图片有7个波段,大小为2048*2048。所以我将它们存储在3维2048*2048*7矩阵中。在这个函数中意味着是一个 7*1 矩阵,使用名为 ExtractStatisticalParameters 的函数中的类样本计算得出,而 VarianceCovarianceMatrix 实际上是一个 7*7 矩阵,您会看到:
ellipsoid = (pixel-means)'*(VarianceCovarianceMatrix^(-1))*(pixel-means);
是椭圆体的方程。我的问题是每次你可以将一个像素(它是一个 7*1 向量,其中每一行是分隔带中像素的值)传递给这个函数,所以我需要像这样写一个循环:
for k1=1:2048
for k2=1:2048
pixel(:,1)=image(k1,k2,:);
Out = DecideIfAPixelIsWithinAnEllipsoidalClass(pixel,means,VarianceCovarianceMatrix);
end
end
您知道这将花费系统的大量时间和精力。您能建议我一种减少施加在系统上的压力的方法吗?
【问题讨论】:
标签: performance matlab image-processing vectorization