MATLAB Answers

0

複数の画像の平均輝度値を取得する方法

Asked by Asaka Masahiro on 11 Sep 2019
Latest activity Commented on by Asaka Masahiro on 17 Sep 2019
複数の画像の平均輝度値を取得したいと思っています。
どのような方法があるでしょうか。ご回答いただけると幸いです。

  0 Comments

Sign in to comment.

Products

1 Answer

Answer by Kenta Itakura on 11 Sep 2019
 Accepted Answer

for文で各画像を参照しながら、mean(image, 'all')で平均輝度値を取り出し、さらにそれらの平均をとれば
複数の画像の平均輝度値をとりだすことができます。

  5 Comments

Asaka Masahiro on 16 Sep 2019
回答ありがとうございます。
状況といたしましては、
画像刺激を提示する際、画像間のブランクとして、使用する全画像の平均輝度の画像(グレースケール)を使用したいと考えております。
画像毎の平均輝度は算出出来ているので計算すれば出せない事はないのですが、
今後使用する画像を増やした際の事を考え、一括で平均を求めようとしています。
現在は A1.png~A20.png、B1.png~B20.png という名前の計40枚の画像の平均輝度を算出し、その輝度のグレースケール画像を作成しようとしています。
Kenta Itakura on 17 Sep 2019
int=zeros(40,1);
for i=1:40
if i<=20
filename=sprintf('A%d.png',i);
I=imread(filename);
int(i)=mean(I,'all');
else
filename=sprintf('B%d.png',i-20);
I=imread(filename);
int(i)=mean(I,'all');
end
end
ave_int=mean(int);
img=ones(size(I,1),size(I,2)).*ave_int;
figure;imshow(uint8(img));
40枚でそれぞれ、全ピクセルの輝度の平均を計算
その輝度の値をもつ1チャンネルの画像を生成
例)全画像の平均輝度が100の場合:画像サイズがAやB画像と同じで、すべてのピクセルの値が100の画像を出力
このような感じですが、質問者さまの意図が正しくくみ取れていますでしょうか。
ちなみに、上では、rgb2grayをしてから平均を計算されていたと思いましたが、
グレースケール化には、以下のような変換式をが使われています。
そのため、厳密にRGBの平均をとって計算しているわけではないので、
注意が必要です。
gray_image=0.2989 * R + 0.5870 * G + 0.1140 * B ;
Asaka Masahiro on 17 Sep 2019
詳しい回答ありがとうございます。
ほぼ私が求める通りのものです。
非常に助かりました。

Sign in to comment.