・RGB
RGB(RGBカラーモデル)は、Red、Green、Blueの3つを混ぜて色を表現する加法混色の一つです。
数値が増えるにつれて、白に近づきます。
テレビは、正にRGBカラーモデルを採用しています。モニターに近づいてドットを見ると、白のドットがRGBのドット3つで構成されているのが見えたりします。離れて見えると白に見えます、不思議。
・CMY
CMYはCyan、Magenta、Yellowの3つによる、減法混色です。
例は絵の具。数値が増えるにつれて、黒に近づきます。
この辺はよく知られていると思われます。
・HSV
HSVは色相Hue、彩度Saturation、明度Value
から構成されます。HSB(Hue、Saturation、Brightness)とも呼びます。
V=1の時の例を下に示します。
中心に向かうにつれ、白に近づいていきます。
変換式はこんな感じ。
h=floor(H/(PI/3))
P=I*(1-S)
Q=I*(1-S(H-h))
T=I*(1-S*(1-H+h))
if h=0 R=I, G=T, B=P
if h=1 R=Q, G=I, B=P
if h=2 R=P, G=I, B=T
if h=3 R=P, G=Q, B=I
if h=4 R=T, G=P, B=I
if h=5 R=I, G=P, B=Q
0<=R, G, B, S, I<=1, 0<=H<=2*PI
この式だと、若干不連続な領域があります。
ちなみにJavaのColorクラスにもHSVからRGBに変換してくれるメソッドがあります。
このメソッドでは、上に示したものより不連続な点が改善されているようです。
・HLS
HLSは色相Hue、輝度Lightness/Luminance、彩度Saturation
から構成されます。 HSI(Hue、Saturation、Intensity)、HSLとも呼びます。
HSVに似ています…がちょっと違います。
L=0.5の時の例を下に示します。
中心に向かうにつれて、灰色に近づいていきます。
変換式はこんな感じ。
R=X (h=H+2/3*PI)
G=X (h=H)
B=X (h=H-2/3*PI)
X(h)は下の定義
h'=h
h'=h+2*PI (h<0)
h'=h-2*PI (h>2*PI)
M2=I*(1+S) (I<=0.5)
M2=I+S-I*S (I>0.5)
M1=2*I-M2
X=M1+(M2-M1)*h'/(1/3*PI)
(h' < 1/3*PI)
X=M2
(1/3*PI <= h' < PI)
X=M1+(M2-M1)*(4/3*PI-h')/(1/3*PI)
(PI <= h' < 4/3*PI)
X=M1
(4/3*PI <= h' < 2*PI)
0<=R, G, B, S, I<=1, 0<=H<=2*PI
この変換式は、綺麗にできます。
再現性はかなり低いですが、下のようなものもあります。
I=1/5の例。
変換式は…
R=I/3+2*S*cosH
G=I/3-S*cosH+S*sinH
B=I/3-S*cosH-S*sinH
0<=R, G, B<=1, 0<=I<=3, 0<=H<=2*PI, 0<=S<=2/3
あまりまとまりが無いですが、こんな処で。
0 件のコメント:
コメントを投稿