多个图像的红色通道的平均值和标准偏差

时间:2016-12-13 09:07:53

标签: matlab image-processing

我想在matlab中计算多个图像红色通道的平均值和标准差。

到目前为止,这是我的代码:

imagesPath = imageSet('path');

n = size(imagesPath.ImageLocation,2)

sum = zeros(512,512);

for i=1 : n

    I = imread(imagesPath.ImageLocation{i});
    I = imresize(I, [512 512]); 
    I = double(I);
    I = rgb2gray(I);
    sum = sum + I;
end

   m = sum. /n;

2 个答案:

答案 0 :(得分:0)

https://mathworks.com/help/matlab/ref/imread.html

A = imread('ngc6543a.jpg');
//imread returns a 650-by-600-by-3 array, A.

图像是RGB格式,这意味着我们有650 x 600像素的红色,然后是绿色,然后是蓝色。要平均红色,只需做

mean_red_X = mean(A(:, :, 1), 1);

(为了说明发生了什么,我采取了两次平均值,一次用于x-,一次用于y维度)

要获得标准偏差,请对std执行相同操作,但请注意第二个参数指定尺寸以采用标准偏差(即不是模拟均值)。如果要在两个维度上取标准差,可先将矩阵线性化。

all_red_A = A(:, :, 1);
all_red_A = all_red_A(:);
std_red   = std(all_red_A); 

答案 1 :(得分:0)

@ Dr.J是对的,但我相信答案中有一个拼写错误。它应该是:

mean_red_X2 = mean(mean(A(:, :, 1),1),2);

计算y中的平均值,然后计算x方向。

但是,您也可以使用mean2来计算传递的整个n维数组的平均值:

mean_red_X = mean2(A(:, :, 1));