画像の輝度を0~256で表すコード
14 Ansichten (letzte 30 Tage)
Ältere Kommentare anzeigen
suzuka iwaki
am 22 Nov. 2023
Beantwortet: Akira Agata
am 22 Nov. 2023
jpegFiles = dir('*.jpg');
numfiles = 300; %フォルダ内のファイルの数
mydata = cell(1, numfiles);
T = table((1:numfiles)', zeros(numfiles,1), 'VariableNames', {'Serial_No.', 'meanLuminance'})%表作成
for k = 1:numfiles
mydata{k} = imread(jpegFiles(k).name);
RGB = imread(jpegFiles(k).name);
graying = rgb2gray(RGB);%グレースケール化
meanLuminance = mean(graying,"all")%平均輝度値を求める
T{k,2} = meanLuminance
end
現在、上のコードで複数枚の画像の一枚ずつの平均輝度を求めているのですが、このコードで計算された結果は、0~256の値で表されていますか。
0 Kommentare
Akzeptierte Antwort
Akira Agata
am 22 Nov. 2023
単純に「はい」か「いいえ」で答えられないご質問ですので、順を追って説明します。
まず、対象画像がすべて 8 bit 画像の場合、画像は uint8 型の数値配列として読み込まれます。これを rgb2gray で変換すると同じく uint8 型の配列となるため、mean(graying,"all") とすると 0~255 の値が返ってきます。その意味ではご質問の回答は「はい」と言うこともできます。ただ、もしご質問の意図が「0~255 の uint8 型ですか?」であれば、回答は「いいえ」となります。理由は、以下のとおり double 型の値として返ってくるためです。
% uint8 型の配列 [1, 2, ..., 10] の平均
avg = mean(uint8(1:10));
disp(avg)
あるいは、場合によっては対象画像が 12 bit 又は 16 bit である可能性もあります。その場合、読み込んだ結果は uint16 型の数値配列となるため、mean で平均をとると 255 以上となる可能性があります。このため、画像が 8 bit でない場合、回答は「いいえ」となります。
0 Kommentare
Weitere Antworten (0)
Siehe auch
Kategorien
Mehr zu 大規模なイメージ ファイル finden Sie in Help Center und File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!