1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

Rで統計解析:お弁当の色彩の豊かさ

Last updated at Posted at 2019-04-19

この4月から子供が高校に進学した。同時に、お弁当を作る日々が始まった。

まぁ、それ自体は構わない。しかし、もう4〜5年前になろうか、何かの機会に小学生だった子供に弁当を作って持たせた時、同級生から「色彩がないね」と言われた、とのお言葉を帰宅した子供から頂いた。つらい。

となると、色彩の豊かさをスカラー値で表現してみたい、と思うのが普通である。

弁当の写真を撮って、その彩りの豊かさを評価する方法があれば、改良のモチベーションを保つのに役に立つ。と思ってちょっとググってみたがよくわからない。ので、彩りの豊かさの数値化を考えた。一つの色は一つの波長だろうとも思うが、写真データは RGB に分解されているので、その比が色ということになるだろう。でいまどきの写真は勝手にコントラストやらが調整されていたりするが、まぁ安易に考えると、色彩の豊かさ数値化アルゴリズムはこんな感じになろうか。

 1. 明るい点と暗い点を5%ずつくらい捨てる
 2. 各点で RGB の三値から比を二回取る $r = B/(G/R)
$
 3. $r$ の分散を計算する

この最後の値が大きいほど彩り豊か、という判断である。Rスクリプトを書いて、試しにおかず部分だけ切り出した、だいぶ彩りの様子の違う画像3枚に対して計算してみたところ、0.0357、0.0548、0.0574 であった。数値だけを見てもなんとも分からないが、弁当を作るたびに継続的にこの値の変化を見ていけば、参考にはなろう。

library(jpeg)

# 弁当の写真のファイルは、JPEG フォーマットで拡張子は JPG に固定
# カレントディレクトリでファイル名に "JPEG" を含む全てのファイルが対象
# 画像の各ピクセルについて計算した R3 の値の分散値を彩りの豊かさを判断材料にする
for (f in list.files(pattern = "JPG")) {
  img  <- readJPEG(f);                    # 画像を行列に読み込み
  L    <- 3 * 0.05;                       # 暗い方の閾値
  U    <- 3 - L;                          # 明るい方の閾値
  m    <- img[,,1] + img[,,2] + img[,,3]; # 輝度値合計 0 <  m  < 3
  imgR <- img[,,1];                      # 赤の輝度値 0 < img < 1
  imgG <- img[,,2];                      # 緑の輝度値
  imgB <- img[,,3];                      # 青の輝度値
  imgR <- imgR[(m > L) & (m < U)];       # 暗すぎる|明るすぎる点を捨てる
  imgG <- imgG[(m > L) & (m < U)];       # 暗すぎる|明るすぎる点を捨てる
  imgB <- imgB[(m > L) & (m < U)];       # 暗すぎる|明るすぎる点を捨てる
  R1   <- imgG/imgR;                     # 緑と赤の比
  R2   <- imgB/imgR;                     # 青と赤の比
  R3   <- R2[R1 != 0] / R1[R1 != 0];     # 上の二つの比の比
  cat(f, var(R3), "\n");                 # 二つの比の比の分散
}

bento1.JPG0.0357
bento2.JPG0.0548
bento3.JPG0.0574

R のシンタックスハイライトでは、変数名に数字は入らない方がよさそうだ。

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?