2016-12-13 46 views
0

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

は、画像は、我々は赤の650・バイ・600ピクセルを持っていることを意味し、RGBである

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

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

を見ます次に緑色と青色の色です。赤を超える平均化するには、単に取得するには(何が起こっているかを説明するために、私はx軸のために1回、2回の平均を取り、一度y次元のためよ)

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

を行います標準偏差は標準と同じですが、2番目の引数はではなく、では標準偏差をとる次元を指定しています(つまり、類似していないことに注意してください)。両方の次元で標準偏差を取る場合は、まず行列を線形化してください。

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

@ Dr.Jは正しいですが、私は応答にタイプミスがあると思います。それがなければならない:

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

これはYで平均値を計算し、次いでX方向。

しかし、あなたはまた、渡された全体のn次元配列の平均値を計算mean2を、使用することができます。何の質問はありません

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

関連する問題