色を混ぜて色を作るときにどういう計算をすればよいか考えてみた。
加法、減法混色の性質とかRGB、CYMKの変換式なんかをメモっておく。
加法混色
光の重ね合わせなどでみられる計算方法。
RGB(赤、緑、青)の組み合わせを計算する。
混ぜ合わせた結果は元の色より明るく(大きく)なる。
シアン(0,255,255)とイエロー(255,255,0)の混色は計算上白になるけど、実際には薄い緑っぽくなる。
減法混色
絵の具の混ぜ合わせなんかで使われる混色。
CMYかCMYK(シアン、マゼンタ、イエロー、キープレート)の組み合わせ計算。
シアンは赤を反射せず、マゼンタは緑を反射しないので青だけ反射するという考え。
混ぜ合わせた結果は元の色より暗く(小さく)なる。
よく見かけるこのCMY合成図は色の積を表している。つまりRGBのような独立した色を合わせると必ず黒くなる。
他の考え方
色の積をとると赤と青の混色が黒になってしまうが実際には紫色になる。
赤(青)を反射する特性と赤(青)以外を反射しない特性を混合して赤と青を少しずつ反射する特性になっている※。
※厳密には粒子の重なりとかを計算することになる(クベルカムンク理論)。
簡単に考えるために色の平均をとることにする。
色の変換式
RGB、CMY、CMYK それぞれの変換式は以下の通り。
- RGB – CMY
- R = 1 – C ( C = 1 – R )
- G = 1 – M ( M = 1 – G )
- B = 1 – Y ( Y = 1 – B )
- C’M’Y’ – CMYK
- C = C’ – K ( C’ = C + K )
- M = M’ – K ( M’ = M + K )
- Y = Y’ – K ( Y’ = Y + K )
- K = Min(C’, M’, Y’)
- RGB – CMYK
- C = 1 – R – K ( R = 1 – C – K )
- M = 1 – G – K ( G = 1 – M – K )
- Y = 1 – B – K ( B = 1 – Y – K )
- K = Min(1 – R, 1 – G, 1 – B)
※それぞれの最大値は1とする
RGBとCMYKでは色域が違う(CMYKが狭い)ので補正を掛ける式もある
- C = ( 1 – R – K ) / ( 1 – K ) R = 1 – Min(1, C*( 1 – K ) + K)
- M = ( 1 – G – K ) / ( 1 – K ) G = 1 – Min(1, M*( 1 – K ) + K)
- Y = ( 1 – B – K ) / ( 1 – K ) B = 1 – Min(1, Y*( 1 – K ) + K)
- K = Min(1 – R, 1 – G, 1 – B)
テスト
実際に加法(足し算)、減法(積、平均)で試算してみた。
可逆変換なので最終的にはだいたい同じ値になる。
とはいえCMYKではいろいろとおかしな動きをする。
100均で水彩絵の具を売っていたので試しに混ぜてみた。
シアンっぽい色とマイルドなイエローで緑系の色になった。
左のRGBの混色は大体失敗しているが赤+青で紫はそれっぽい。
右端では緑と赤で紫ができたが、どちらの色も青要素を持ってたのだろうか。