アプリ版:「スタンプのみでお礼する」機能のリリースについて

画像内の色相の平均値の算出方法

画像を、HSV色空間で表現した場合に、
色相の平均値を算出する方法を教えていただきたく思います。
色相は円環で表現される為、単純に加算して画素数で割るという手法に疑問を覚えます。

問題点の例:
色相を0~360の範囲で表現した場合において、
0の画素が5ピクセル分、
359の画素が5ピクセル分存在するような画像の場合、
単純に平均を算出すると179.5となります。
しかし、色相は円環で表現される為、
平均値としては359.5の値をとるのが正しいと私は思います。

上記の問題に対して、解決案をご教授願いたく思います。
もしくは私の解釈に間違いがありましたら、ご指摘をお願いいたします。
よろしくおねがいいたします。

A 回答 (1件)

色空間には詳しくありませんが,似た問題として一般角や (日付をまたいだ) 時刻の


平均値を求める方法を考えたことがあります.次のような方法はどうでしょうか?

・色相環を単位円 (原点中心) で表す.

・色相を単位円上の1点 r=(x, y),またはそれに対応する角度θで表す.
 (x=cosθ,y=sinθ)

・色相 θ[1],θ[2],…,θ[n] の平均を次のように定義する.

  r[i] = (x[i],y[i]) = (cosθ[i],sinθ[i]).

  R ≡ Σ{i=1,n} r[i].

  R≠0 ならば r[average] ≡ R / |R| = (cosθ[average],sinθ[average]).

  R=0 (無彩色) となるのは例えば,
  ・n=2 で θ[1] と θ[2] が補色関係の場合.
  ・n=3 で θ[1~3] が同輝度の R,G,B (または C,M,Y) の場合.


この方法だと,

> 0の画素が5ピクセル分、
> 359の画素が5ピクセル分存在するような画像の場合、

θ[1~5]=0°,θ[6~10]=359°.

R = 5 * (cos 0°, sin 0°) + 5 * (cos 359°, sin 359°)
 ≒ (9.9992, -0.087262)
θ[average] = 359.5°
    • good
    • 0
この回答へのお礼

ありがとう御座います。

ベクトルを一度座標に変換して、平均座標を求め、
その座標への角度を再度求める、という流れでしょうか?

どうやら解決することができそうです。
三角関数は苦手意識を持ってしまっていて、
今まであまり触れないで来てしまったのですが、
このように便利に利用できるものなのですね。

本当にありがとうございました!

お礼日時:2007/12/10 21:54

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!