DKL 色空間∗
吉田 正俊†

2008 年 1 月 13 日‡

概要

1) DKL 色空間とは、色空間を網膜以降の色処理の三つのチャネル (Luminance, L-M,
S-(L+M)) の軸によって表現したものです。モニタの RGB 値から DKL 空間への変換を簡単に説明します。2) Brainard 1996 に準拠して、LMS 色空間から DKL 色空間への変換行列を導出します。3) さいごに、DKL 色空間が持つややこしい点について言及します。

1 イントロダクション
1.1 さまざまな色空間
網膜には三種類の錐体 (L-cone, M-cone, S-cone) があって、脳内の色の処理は L-, M-cone の情報を使っている parvocellular pathway と S-cone の情報を使っている koniocellular pathway とに分かれて処理されています。このような状況で便利なのが DKL 色空間による色表現です。
網膜から上丘へ直接入力する retinotectal pathway では S-cone の入力がないと考えられています。そこで、輝度は一定のままに、S-cone への刺激だけが変化するような刺激 (S-cone isolating

stimuli) を作ってやれば、S-cone を選択的に刺激できます。もしこのような刺激を処理できないとしたら、そのような情報処理は retinotectal pathway を介しているという証拠になります。
というわけですが、マイナーすぎて日本語による資料がありません。そこでまとめを作成してみました。わたしは神経生理学者でして、心理物理学者ではありませんので、間違いを指摘していただけるとありがたいです。まさにそれこそがこういう文書を公開した理由なわけでして。

錐体のレベルL+
RGC のレベル

M

+

+

Lum
= L+M
図1

L-M

S

-

-

+

S-Lum
= S-(L+M)

反対色応答∗ 元の記事：http://pooneil.sakura.ne.jp/archives/permalink/001222.php† 所属：生理学研究所・発達生理学研究系・認知行動発達研究部門 連絡先：pooneil68@gmail.com‡ 謝辞：生理学研究所・感覚認知情報研究部門の鯉田孝和さんにいろいろ教わりました。御礼申し上げます。

1

イントロとかは最小限でいきましょう。図 1 に網膜での反対色応答の形成の図式を作りました。
網膜には三種類の錐体 (L-cone, M-cone, S-cone) があって、それぞれの足し算引き算によって網膜以降の色処理の三つのチャネル (Luminance, L-M, S-(L+M)) ができます。このような三つのチャネルによって、CRT モニタに表示された色がどのように表現されるか、というのがここでの問題です。
色空間とその変換の流れを以下に書きます (図 2)。
(a)

RGB

(b)

rgb

(c)

XYZ

(d)

LMS

DKL

(e)
図 2 色空間とその変換

モニタの刺激は RGB それぞれ 256 階調ありますので、3 次元で表示することができます (図 3)。

G

255

B

R

0
0

255
図 3 RGB 空間

XYZ 空間は xyY 空間に変換できて、x,y で色を表して、Y で luminance を表します。有名な
CIE xyY の空間です (図 4)。
(http://ja.wikipedia.org/wiki/%E7%94%BB%E5%83%8F:CIExy1931.png)
LMS 色空間はそれぞれの cone での excitation の大きさで表現した座標です。LMS 色空間は言ってみれば、網膜の錐体のレベルでの色表現です。これを retinal ganglion cell 以降での色表現として表したものが DKL 色空間です (図 5)。
じっさいに LGN のニューロンの応答が DKL 空間でうまく表現されることが報告されました。
この論文が Derrington AM, Krauskopf J, Lennie P (1984) ”Chromatic mechanisms in lateralgeniculate nucleus of macaque.” J Physiol (Lond) 357:241-265. でして、著者の三人の頭文字を取って DKL と呼ばれるようになりました。それより前に、MacLeod and Robert M. Boynton(1979) ”Chromaticity diagram showing cone excitation by stimuli of equal luminance” J. Opt.
Soc. Am., Vol. 69, No. 8, p.1183-1186 というのが出版されていまして、こちらは MacLeodBoynton color space と呼ばれます。式の表現の違いはありますが、基本的に同じものです。

2

図 4 xyY 空間 equiluminant plane (Wikimedia Commons)

Lum:1

S:-1
L-M:-1
L-M:1
S:1

Lum:-1

図 5 DKL 色空間

1.2 RGB 空間から LMS 空間への変換
図 2 の変換のそれぞれのステップについて記します。
モニタの刺激は RGB 8bit ずつ (0-255) あります (図 3)。じっさいの輝度変化は linear ではない (gamma 値は 1 ではない) ので、RGB それぞれの最大値 (255) での輝度を 1 として、輝度に比例した座標 (ここでは rgb と呼ぶ) に変換します (変換 (a))。Gamma 値による式 rgb =(RGB 1/γ − RGB(0))/RGB(255) を使うよりは実測値に基づく lookup table を作っておく方が実際的です。
同時に色度計を使った計測を行っておけば、XYZ 空間への変換も計算できます (変換 (b))。rgbと XYZ の実測値があれば、ここは一次変換ですので最小二乗法で変換行列を作れます。

3

LMS 色空間での表現は網膜での錐体の分布による影響を受けますので、種差、個人差、視野位置での差、刺激の大きさによる差などが大きい部分です。Spectrometer を持っている場合は変換 (e) を計算することができます。このとき、まず CRT モニタの RGB それぞれ単独での最大値 ([255 0 0], [0 255 0], [0 0 255]) での波長の分布を spectrometer で計測しておきます。つづいて、

RGB それぞれの単独刺激が網膜の L-cone, M-cone, S-cone それぞれにどのくらいの大きさの応答を引き起こすかを計算することになります。
光の波長を λ、spectrometer の bin の幅を ∆λ、spectrometer で計測したヒストグラムをC(λi )(これは RGB ごとに定義されるので合計 9 個の式になる)、L-cone, M-cone, S-cone それぞれの bin ごとの吸光特性を Labs (λi )、Mabs (λi )、Sabs (λi ) とすると、

L=

n
X

Labs (λi )C(λi )∆λ(1)

Mabs (λi )C(λi )∆λ(2)Sabs (λi )C(λi )∆λ

(3)

i=1

M=

n
X
i=1

S=

n
X
i=1

(4)
となります。L-cone, M-cone, S-cone の吸光特性については出版されている論文を使います。
いちばん有名なやつはSmith, V. C. and Pokorny, J. (1975). Spectral sensitivity of the foveal cone photopigments
between 400 and 500 nm. Vision Research, 15, 161-171.
ですが、さいきんはもっと新しいので、Stockman, A., and Sharpe, L. T. (2000). Spectral sensitivities of the middle- and longwavelength sensitive cones derived from measurements in observers of known genotype. Vision
Research, 40, 1711-1737.
というのがあります。Web site にデータもあるので (http://cvrl.ioo.ucl.ac.uk/)、テーブルを自分で入力する必要はありません。これらは human のデータです。しかも刺激のサイズによって値が違います。よって、最終的にはなんらか別に psychophysical な validation の必要性が出てきます。

Spectrometer は高価ですので、色度計で間に合わせる場合は、XYZ から LMS への変換行列 (c)を利用します。

 L
0.2420 M  =  −0.3896
S
0.0034 

0.8526 −0.0445
X
1.16010.0853  ∗  Y −0.00180.5643Z(5)

こちらの変換の方が誤差が多くなります。
ともあれ、ここまででモニタの RGB 値 [R G B] から網膜の各 cone での活動 [L M S] が計算できました。
以上の変換に関しては、Brainard, D. H., Pelli, D.G., and Robson, T. (2002). ”Display

characterization. In the Encylopedia of Imaging Science and Technology.” J. Hornak (ed.),Wiley. 172-188. にくわしい説明があります。この論文は web からフリーで入手可能です。
4さて、この LMS 空間から DKL 空間への変換 (d) を導出するというのがこの文書の本題です。

2 LMS から DKL への変換行列の導出
2.1 前提つづいて、LMS から DKL への変換をします。ここの参考文献は Brainard, D. H. (1996). Conecontrast and opponent modulation color spaces. In Kaiser and Boynton, Human Color Vision,
2cd edition, Optical Society of America, Washington, DC. です。この論文は web からフリーで入手可能です。以下でやってることはこの論文と同じなのですが、計算のステップを省略せずに書いて、確認しながら進めてゆきます。
まず、LMS の値は background の値 ([L0 M0 S0 ]) からの差分として扱います。つまり、



 

∆L
L − L0 ∆M  =  M − M0 ∆S
S − S0(6)を使います。よって DKL space の方もあくまである background からの変動として表示されることになります。教科書的にはだいたい灰色になってますけど。DKL space は




∆Lum
 ∆LM ∆Slum(7)と表記することにします。はじめの軸が luminance、つぎが L-M の軸、最後が S-(L+M)=S-

luminance の軸です。これは線形変換で、行列で表示できます。




 
∆Lum/k1∆L
w1 ∆LM/k2  = A  ∆M  =  w4
∆Slum/k3
∆S
w7

w2
w5
w8



w3
∆L
w6   ∆M 
w9
∆S

(8)

未知数は w1 から w9 および k1 から k3 の 12 個です。k1 から k3 によって normalization のために必要になります。順番に未知数を減らしてゆきます。

2.2 未知数 w1 − w9 の消去
まず未知数 w1 から w9 を消してゆくことにします。∆Lum の項から始めます。

∆Lum = k1 · (w1 ∆L + w2 ∆M + w3 ∆S)(9)

ここは天下り的に w1 = 1、w2 = 1、w3 = 0 です。つまり、luminance は L-cone と M-cone の活動の和によって決まっていて、S-cone はまったく寄与しない、という近似を使っています。よって式 (9) は∆Lum = k1 · (1 · ∆L + 1 · ∆M + 0 · ∆S)となります。
つづいて、∆LM および ∆Slum ですが、いくつかの拘束条件を使います。

5

(10)

∆LM = k2 · (w4 ∆L + w5 ∆M + w6 ∆S)∆Slum = k3 · (w7 ∆L + w8 ∆M + w9 ∆S)

(11)
(12)

まず、LMS の変動が background での LMS の比と同じ場合には、chromaticity に変化はありませんので、∆LM および ∆Slum は 0 となります。つまり任意の k(6= 0) において




∆L
L0
 ∆M  = k ·  M0 
S0
∆S

(13)

∆LM = 0∆Slum = 0

(14)
(15)



のときに、

です。よって式 (13) を式 (12) および式 (12) に代入して左辺を 0 にすると、

0 = k2 · k · (w4 L0 + w5 M0 + w6 S0 )0 = k3 · k · (w7 L0 + w8 M0 + w9 S0 )

(16)
(17)

という関係があります。これで未知数を二つ減らすことができますがそれはあとで。
さらに ∆LM では、S-cone は寄与しないので w6 = 0 です。よって式 (17) は

0 = k2 · k · (w4 L0 + w5 M0 )

(18)

となり、

w5 = −w4 ·

L0
M0

(19)

L0
· ∆M + 0 · ∆S)
M0

(20)

これを式 (12) に代入して w5 を消すと、∆LM = k2 · k · w4 · (1 · ∆L −となりました。k2 はさいごにもう一回決め直すので係数をまとめて k2 としておきましょう。これで w4 も消えました。

∆LM = k2 · (1 · ∆L −L0
· ∆M + 0 · ∆S)
M0

(21)

同様にして ∆Slum も解きますが、こちらの拘束条件はこういうものです：∆S = 0∆Lum = 0の両方が成り立つときに

6

(22)
(23)

∆Slum = 0(24)となります。式 (10) にこれらの条件を入れると、

0 = k1 · (1 · ∆L + 1 · ∆M )(25)となりますので、つまり拘束条件は∆S = 0∆L + ∆M = 0

(26)
(27)

∆Slum = 0

(28)の両方が成り立つときにとなる、と書き直せます。よって式 (12) にこの条件を入れると、

0 = k3 · (w7 ∆L − w8 ∆L)(29)

つまり、w7 = w8 となりました。これを式 (17) に入れて w8 を消去します。

0 = k3 · k · (w7 L0 + w7 M0 + w9 S0 )L0 + M0
w9 = −
· w7
S0

(30)
(31)

これを式 (12) に入れて w9 を消すと∆Slum = k3 · w7 · (1 · ∆L + 1 · ∆M −L0 + M 0
∆S)
S0

(32)

となりました。k3 はさいごにもう一回決め直すので係数をまとめて k3 としておきましょう。ついでに ∆S が正になるように係数に −1 をかけておきます。これで w7 も消えました。

∆Slum = k3 · (−1 · ∆L − 1 · ∆M +L0 + M0
∆S)
S0

(33)

以上をまとめると、式 (8) での行列 A は以下のように書けました。



 
1
∆Lum/k1
 ∆LM/k2  =  1∆Slum/k3
−1

1
L0
M0

−1


∆L
  ∆M 
L0 +M0
∆S
S0
0
0



(34)

2.3 未知数 k1 − k3 の消去
さておつぎは未知数 k1 , k2 , k3 の消去ですが、これはどのような normalization をするか、という立場によってやり方が変わります。じっさい、オリジナルの DKL 論文と Brainard 1996 とではやり方が違います。ここでは Brainard 1996 に準拠します。

7

要は、「DKL の各チャンネルを単離するような入力を加えたときに、pooled cone contrast が 1となるようにする」というものです。Pooled cone contrast というのは

r
C=

(

∆L 2
∆M 2
∆S 2
) +(
) +(
)
L0
M0
S0

(35)

というものです。Cone contrast の空間での変動量が同じになるように DKL space の各軸のゲインを決めてやろう、というわけです。つまり、DKL space は DKL = [1 0 0], [0 1 0], [0 0 1] のどの場合でも pooled cone contrast は 1 になっています。
それでは進めます。Brainard 1996 ではここからは具体例を使って計算しているのですが、ここではあくまで式の変換をして、公式として使えるようにしていきます。この点だけがこの文書のオリジナルな点。
まず行列 A の逆行列を計算します。昔やったやつです。もう忘れてましたので、web でさがして手計算。ここだけは途中省略して結果だけにします。



L0
1
−1

A =
· M0
L0 + M0
S0

M0
−M0
0


0
0 
S0

(36)

よって、






∆L
∆Lum/k1
 ∆M  = A−1 ·  ∆LM/k2 ∆S∆Slum/k3(37)となっています。DKL = [1 0 0], [0 1 0], [0 0 1] それぞれのときの pooled cone contrast は 1、という式を作ります。








∆L
1/k1
L0
1/k
1
 ∆M  = A−1 ·  0/k2  =·  M0 
L0 + M0
∆S
0/k3
S0





∆L
0/k1
M0
1/k
2
 ∆M  = A−1 ·  1/k2  =·  −M0 
L0 + M0
∆S
0/k3
0

(38)








∆L
0/k1
0
1/k
3
 ∆M  = A−1 ·  0/k2  =· 0 
L0 + M 0
∆S
1/k3
S0

(39)



(40)

それぞれでの pooled cone contrast が 1 になるように k1 , k2 , k3 を決めてやります。
式 (38) を式 (35) に代入して右辺を 1 にしてやると、

v
u
u
C=t

L0 /k1
L0 +M0L0√!2+

M0 /k1
L0 +M0

M0

1
3·
k1 L0 + M0
=1
=

!2
+

S0 /k1
L0 +M0

S0

!2
(41)
(42)
(43)

8

より、

√

3
L0 + M0

k1 =

(44)

同様に式 (39) を式 (35) に代入して右辺を 1 にしてやると、

v
u
u
C=t

L0 /k2
L0 +M0!2!2−M0 /k2
L0 +M0+M0
M0p
L20 + M02 /L01=·
k2
L0 + M0=1+

0/k2
L0 +M0

!2
(45)

S0

(46)
(47)

より、

p

L20 + M02 /L0
L0 + M0

k2 =

(48)

同様に式 (40) を式 (35) に代入して右辺を 1 にしてやると、

v
u
u
C=t

0/k3
L0 +M0!2

0/k3
L0 +M0

+

M0

!2

M0

+

S0 /k3
L0 +M0

!2
(49)

S0

1
1
·
k3 L0 + M0
=1
=

(50)
(51)

より、

k3 =

1
L0 + M0(52)

これですべての未知数が消えました。これで最終的な変換式は以下の通りとなります。

√

√


3
∆Lum
p
1
2
 ∆LM  =
·L0 + M02 /L0
L0 + M0
∆Slum
−1


−

p

3
2
L0 + M02 /M0−1
∆L  ∆M  (53)
L0 +M0
∆S
S
0
0



0

検算のために、Brainard 1996 の具体例の数字を入れてみます。刺激の LMS 座標が [4.0 1.5 4.0]tで Background の LMS 座標が [2.0 4.0 3.0]t です。このとき ∆LM S = [2.0 − 2.5 1.0]t です。これで式 (53) の L0 , M0 , S0 に代入して変換行列 A を計算すると、



0.2887
 0.3727−0.1667

0.28870.1863−0.1667
0.00000.0000 
0.3333(54)となって、Brainard 1996 の式 (A.4.11) と同じものが出てきました。というわけで、計算は合っているみたいです。

9

というわけで、LMS から DKL への変換は一次変換でした。初めに出てきた図 2 での変換(b)-(e) はすべて一次変換です。ですので、PC のモニタで表現できる部分は DKL 空間の中では傾いた平行四辺形みたいなものになっています。図 5 にあるような球形ではないことに注意。つまり、DKL 空間のうちで CRT モニタによって表現できるところは限られていて、normalization にもよりますが、半径 1 の球の中で定義できないところもあるし、外で定義できるところもあります。
あと、ここまでゴリゴリやりましたが、じっさいには background としては灰色を設定するでしょう。そうすると、L0 と M0 と S0 の比を一定にしたまま background の輝度を変えていって、変換行列 A と DKL 座標の値がどう変わるかを計算してやることができます。そうするとどこかに不動点があるかとかわかるはずですが (Y/2 な気がする)、面倒くさいので止めました。

3 DKL 色空間が持つややこしい点
前の章で多少言及しましたが、じつは normalization の項 k1 − k3 は実験の目的によって決まり、一意には定まりません。つまり、pooled cone contrast での normalization は、Lum. L-M. Sの軸での絶対値が perceptual に同等であることを保証しません。もしある luminance の刺激とある S-cone contrast の刺激とを比較したい場合には、detection task かなんかをやって正答率が同等のところで比較してやらないといけません。このへんの事情については、Brainard 1996 でも銘記されています。
また、大元の DKL 論文は刺激に CRT モニタを使っていますが、DKL 座標の Lumimance の軸の 1 は Michelson contrast が 1 になるように設定されています。つまり、DKL = [1 0 0]t が RGB= [255 255 255]t だとすると、background がその半分の輝度になるようにしてあります。そしてこのようにして決めた background から S-lum の軸で提示可能な最大値を S-lum 軸の 1 としています。L-M については明示的に書かれてないんですけど。ともあれ、DKL の値はモニタの値に依存します。つまり、モニタの RGB の輝度のバランスによっていくらでも変わるということです。
よって、DKL 論文だけ引いているような研究だと L-M と S との絶対値についてはあまり考慮していないと思っておいた方がよいんではないでしょうか。

10