画像から平均したRGB値を取得したいです.
現状,画像の一点からRGB値を取得するプログラムは書くことができます.
特定の関数が見つからなかったため,質問させていただきました.
ご教授いただきますと幸いです.

 採用された回答

Atsushi Ueno
Atsushi Ueno 2021 年 9 月 24 日
編集済み: Atsushi Ueno 2021 年 9 月 24 日

0 投票

画像も数値データなので、mean(平均値)関数で計算できます。image processing toolboxには画像専用の高級な関数がありますが、ここでは触れません。
I = imread('peppers.png');
meanPixelValue = mean(I,[1 2 3]) % カラー画像1枚から1つの平均値を出す。mean(I(:))やmean(I,'all')もOK
meanPixelValue = 81.6038
RGB_mean = mean(I,[1 2]) % RGB各々の全画素平均値。元データ同様に3次元方向のベクトルなので注意
RGB_mean =
RGB_mean(:,:,1) = 120.7808 RGB_mean(:,:,2) = 66.3971 RGB_mean(:,:,3) = 57.6335
RGB_mean = RGB_mean(:) % こう書けば列ベクトルになる
RGB_mean = 3×1
120.7808 66.3971 57.6335

4 件のコメント

momita
momita 2021 年 9 月 25 日
ご返信いただきありがとうございます.
おかげさまで解決しました.ありがとうございました.
momita
momita 2021 年 9 月 27 日
I=imread('画像');
I(I<10)=0;%画像の黒の部分を計算に入れないため
meanPixelValue=mean(I(I>0),[1 2 3])
RGB_mean=mean(I(I>0),[1 2])
RGB_mean=RGB_mean(:)
度々すみません.
画像の一部分のRGB値を取得するため,画像の黒色(輝度値10以下)の部分を除くようにしました.
これでは輝度値しか出てこないと思うのですが,RGB値でも同じようなことが可能でしょうか?
Atsushi Ueno
Atsushi Ueno 2021 年 9 月 27 日
その点に関して、以前に類似の回答をした記憶があります
黒い部分の輝度値を0にしても画素数が減少しないので、mean関数で平均値を計算すると輝度の平均値を下げてしまいます。上記リンク先回答の様な方法で、黒い部分の画素数を求め、平均値を計算する際の母数(画素数)から減算すれば、画像の一部分(黒い部分以外)のRGB平均値を取得出来ます。
Atsushi Ueno
Atsushi Ueno 2021 年 9 月 27 日
編集済み: Atsushi Ueno 2021 年 9 月 28 日
すいません良く見ていませんでした。計算に入れる画素数の面はご提示頂いた内容で問題無いですね。
ただ、I(I>0)と書くと行列がベクトルになってしまうのでmean関数を上手く使う事が出来ません。
RGB各面で輝度値の合計/ 黒以外の画素数を計算すると目的の値を計算出来ます。
I = imread('peppers.png');
I(I<128) = 0; % 画像の黒色(輝度値が所定以下)の部分を除く(わざと閾値を大きくした)
imshow(I) % 表示画像の黒以外のRGB値の平均値をそれぞれ取得する
meanPixelValue = mean(I(I>0)) %,[1 2 3]) % RGB合算だからOK、ベクトルなので[1 2 3]は不要
meanPixelValue = 187.3860
% RGB_mean = mean(I(I>0),[1 2]) % I(I>0)がベクトルなのでRGB別に出来ない
RGB_mean = sum(I,[1 2])./ sum(I>0,[1 2]) % 黒以外の輝度値合計/黒以外の画素数(RGB別)
RGB_mean =
RGB_mean(:,:,1) = 196.8778 RGB_mean(:,:,2) = 171.6318 RGB_mean(:,:,3) = 167.2093

サインインしてコメントする。

その他の回答 (0 件)

カテゴリ

ヘルプ センター および File Exchangeイメージ についてさらに検索

タグ

質問済み:

2021 年 9 月 24 日

編集済み:

2021 年 9 月 28 日

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!