首页 > 解决方案 > 查找图像波段之间的方差和协方差值

问题描述

我想在不使用现成命令的情况下进行编码。我做了一些事情,但结果太小了。发生错误时我没有计算其他波段。如果您能提供帮助,我将不胜感激。

我的 V1 (variance-1) 值出现在 1,2820183e-05,但使用 var() 函数 91.143653869628900 出现了。

format long g
img = imread('Landsat8.tif');
blue = round((im2single(img(:, :, 1))+1)*128);
grn = round((im2single(img(:, :, 2))+1)*128);
red = round((im2single(img(:, :, 3))+1)*128);
blue_r = reshape(blue,[2000*2000,1]);
grn_r = reshape(grn,[2000*2000,1]);
red_r = reshape(red,[2000*2000,1]);

%% Mean
mean1 = sum(blue_r)/(2000*2000);
mean2 = sum(grn_r)/(2000*2000);
mean3 = sum(red_r)/(2000*2000);

%% Variance
sum1 = 0;
for i= 1 : length(2000*2000)
   sum1 = sum1 + (blue_r(i) - mean1).^2;
end
V1 = sum1 ./ (length(blue_r));

sum2 = 0;
for i= 1 : length(2000*2000)
    sum2 = sum2 + (grn_r(i) - mean2).^2;
end
V2 = sum2 / (length(grn_r));

%% covariance
sum12 = 0;
for i= 1 : length(2000*2000)
    sum12 = sum12 + (blue_r(i) - mean1) * (grn_r(i) - mean2);
end
c12 = sum12 / (length(blue_r));

标签: imagematlabcovariancevariance

解决方案


推荐阅读