メニュー
目次
表色系と色空間
コンピュータにおける色の表現方法(表色系)
色を表現するには様々な方法があり,それらを表色系と呼ぶ.それぞれの表色系における色要素で示される空間のことを色空間と呼ぶ.色空間とは,色を表現する3要素を座標軸とした3次元座標を考えたものである.その空間上の位置によって実際の色が決定できる.
表色系でおもだったものには次のものが存在する.
- ○RGB○
R(赤)とG(緑)とB(青)という光の3原色を用いる系.どの成分をどれだけ含むかによって色を表現する.コンピュータ処理では基本的にこの系が使用されることが多い.モニタなどの表示装置や,グラフィックボードが扱う色データは,通常このRGB系である.
- ○YUV○
-
Y(輝度)とU(色差:輝度-青)と,V(色差:輝度-赤)で表現される系.ビデオカメラやUSBカメラなどでも内部データをこの形式としているものも多い.
ほぼRGBと一対一で変換されるため,コンピュータ処理でもよく用いられる.
- ○YIQ○
-
テレビジョンの世界でよく用いられる.テレビの映像信号はYと色差Iと色差Q信号を用いている.IとQは,YUVのUVの色相平面上で角度を33°ずらしたものである.それにより,Iは肌色を中心とした暖色系,Qは寒色系を軸とする.人間の視覚特性として,肌色周辺には敏感であることに対して,寒色系には鈍感であることを利用し,Q信号だけを密とするようなことを考慮するために用いられる.
Y = Y I = -0.2676*U +0.7361*V Q = +0.3869*U +0.4596*V Y = Y U = -1.1270*I +1.8050*Q V = +0.9489*I +0.6561*Q
- ○HSB○
-
H(Hue: 色相)とS(彩度)とB(Brightness: 明度)で表現される系.感覚的に色を作成しやすいため,デザインなどの分野でも使用される.
- ○CIE L*a*b*○
-
CIE L*a*b*とは,国際照明学会(CIE)によって1976年に規定された均等色空間である.ここでいう均等とは,色差が場所や向きによって偏らずに均等であることを意味する.この色差とは色と色の差(どの程度の色の違いか)であり,色空間上では2つの色の座標の間の距離として表現できる.しかし,RGB空間やHSB空間では,この距離が空間上の場所や向きによって人間の感覚とあわずに均等ではない.例えば,明るさが同じA,B,C,Dという4色があったとして,A-B間の距離と,C-D間の距離が同じ長さだとする.しかし,A-Bの向きや場所と,C-Dの向きや場所により,人間が見たA-Bの色の感覚的な差と,C-Dの差が同じだとは限らないことを意味する.しかし,それでは画像処理で色差を利用する際にはなはだ不都合である.そこで,3次元座標をうまく調整して,どの2点の距離でも均等に扱えるようにしたものが均等色空間であり,そのひとつがCIE L*a*b*である.
CIE L*a*b*は,工業製品におけるカラーマネジメントで普及している.
L* が明度,a*とb*で色座標を表現する.
- ○CIE L*C*h○
-
CIE L*C*hは,CIE L*a*b*と同じ色空間を別座標系に表現しなおしたものである.色空間が同じもののため,やはり均等空間である.教科書によってはCIE L*a*b*と同じとみなされて,見出しにされないことも多い.
L*は,CIE L*a*b*とCIE L*C*hでも共通のL*であり,色空間上ではどちらも垂直方向の軸を示している.両者が異なるのは水平方向の色平面の座標の取りかたである.CIE L*a*b*はa*とb*という2軸によって色平面上の点を指定する直交座標系であることに対して,C*を半径としてhを角度にした極座標系で表現したものがCIE L*C*hである.ここで,C*は彩度を表し,hは色相を表している.
カラー階調
コンピュータで使用される表色系は,RGBの光の三原色によるものである.デジタル画像の階調数で述べたように,明暗は256段階あれば十分であるため,RGBそれぞれ256階調の組み合わせ,合わせて24bitの色深度で色を表現することが多い.
ただし,スキャナやデジタルカメラなどの装置では,各色で10bitや12bitの深度にして36bit表現になっているものも多い.これは,無駄なビット数ではなく,途中の画像処理のための余裕である.
8bitの場合には,0から255までしか表現できないため,例えば画像を明るくするために各画素に足し算をしたりするときに,すぐオーバーフロー を起こしてしまう.各画素の値をいろいろ都合に合わせて計算処理した後,最終的に0から255の範囲に収める場合でも,計算の途中で一時的に範囲を超して しまうこともよくある.このため,画像処理を行う場合には,24ビットカラー以上の色深度を要求される.
表色系 | 色要素 | 説明 | RGBで表現可能な色を変換した範囲(最低) | (最高) |
---|---|---|---|---|
RGB | R | 赤 | 0 | 255 |
RGB | G | 緑 | 0 | 255 |
RGB | B | 青 | 0 | 255 |
YUV | Y | 輝度 | 0 | 255 |
YUV | U | 輝度-青 | -128 | 127 |
YUV | V | 輝度-赤 | -128 | 127 |
HSB | H | 色相(角度) | 0.0 | 1.0 |
HSB | S | 飽和度 | 0.0 | 1.0 |
HSB | B | 明るさ | 0.0 | 1.0 |
CIE L*a*b* | L* | 明度 | 0.0 | 100.0 |
CIE L*a*b* | a* | 色度 | -86.18463 | 98.25422 |
CIE L*a*b* | b* | 色度 | -107.863686 | 94.48248 |
CIE L*C*h | L* | 明度 | 0.0 | 100.0 |
CIE L*C*h | C* | 彩度 | 0.0 | 133.81586 |
CIE L*C*h | h | 色相(角度) | 0.0 | 360.0 |
グレースケール変換
カラー画像をどのようにグレイスケール画像に変換するのかには,いくつか方法がある.もっともよく用いられている方法の一つは,NTSC方式のテレビで用いられている輝度信号(明るさ)の分離方法である.
YUV色空間のY値を利用する方法
Y = ( 0.298912 * R + 0.586611 * G + 0.114478 * B )
これは実験的に求められた,人間の目の視覚特性に基づいている.人間の視覚は,緑色光を最も明るく感じ,青色光を最も暗く感じることを示している.
これは,RGB色空間からYUV色空間に変換する際の,Y値の求め方そのものでもある.
CIEL*a*b*(CIEL*C*h)色空間のL*値を利用する方法
実際Y値と大きくは変わらず,ほぼ同じ値であるが,人間の視覚特性をより詳細に見て,暗い時と明るいときで変換式を切り替えるなど調整が入る.計算には,一度CIEXYZ色空間を経由する.
具体的な変換式は,easyRGB.comなどを参考にすること.
HSBのB値を利用する方法
HSBのB成分は,計算方法が異なり,RGB値のうち,最大のものを明度として算出する.このため,他のY値やL*値とはかなり異なった印象のグレースケール画像となる.
変換例
原画像 | Y成分 | L成分 | B成分 |
---|
Y成分の場合,赤がやや暗く出ている.逆にB成分では赤も明るく出てしまっており,実際よりも明るい画像に見える.この画像の場合にはL成分のものが一番バランスが取れているように見える.しかし,原画像の色合い次第でどれにも一長一短があり,また画像処理の対象によっては赤などを強調しなければならないこともあり,どれがよいかは一概にはいえない.
田村研画像処理ライブラリでは,convertGrayImage()メソッドを用意してあるが,このメソッドは元画像がYUV形式か,CIELab(CIELCh)か,HSBかのどれかで,これらの変換を切り替えている.また,RGB画像の場合にはYUVと同じようにY値を計算してグレースケールに変換を行う.