RGB → XYZ 変換行列の求め方
ガンマ補正なしの RGB 成分を
(R, G, B),
この点の XYZ 空間での座標を
(X, Y, Z)
として,RGB から XYZ への変換行列 M
を求めよう。
行列を決める条件として,白色点と3つの原色点のXYZ 空間における座標
白色点 (Xn,
Yn,
Zn)
R点 (xr, yr,
zr)
G点 (xg, yg,
zg)
B点 (xb, yb,
zb)
が与えられているものとする (sRGB,Adobe RGB でのこれらの値は,規格で定義されている)。
ただし, (xr, yr, zr)
はR点すなわち (R, G, B) = (1, 0, 0)
の点の XYZ 空間での座標 (Xr,
Yr, Zr)
を割合で表したものである。すなわち
xr
= Xr /
(Xr+Yr+Zr),
yr = Yr /
(Xr+Yr+Zr),
zr = Zr /
(Xr+Yr+Zr) = 1-xr-yr |
(1)
|
G点,B点についても同様とする。
さて,R点 (R, G, B) = (1, 0, 0)
を M で変換すると (Xr,
Yr,
Zr)
になることから,つぎの関係が成り立つ。
G点,B点についても同様であることから,変換行列 M はつぎのように表せることがわかる。
|
|
Xr |
Xg |
Xb |
|
M =
|
Yr |
Yg |
Yb |
|
Zr |
Zg |
Zb |
ところで,(1) 式より (Xr, Yr,
Zr) は
(xr, yr, zr)
に Xr+Yr+Zr
をかけたものである。そこで,
Xr+Yr+Zr
= Tr
とおくと
(Xr,
Yr, Zr)
=
(Trxr, Tryr,
Trzr)
と表せる。同様にして
Xg+Yg+Zg
= Tg,
Xb+Yb+Zb
= Tb
とおくと
(Xg,
Yg, Zg)
=
(Tgxg, Tgyg,
Tgzg)
(Xb,
Yb, Zb)
=
(Tbxb, Tbyb,
Tbzb)
と表せるので,けっきょく変換行列 M はつぎのように書けることがわかる。
|
|
Trxr |
Tgxg |
Tbxb |
|
|
M =
|
Tryr |
Tgyg |
Tbyb |
(2)
|
|
Trxr |
Tgxg |
Tbxb |
|
あるいは,2つの行列に分けて書くと
|
|
xr |
xg |
xb |
|
|
Tr |
0 |
0
|
|
M =
|
yr |
yg |
yb |
0 |
Tg |
0 |
|
zr |
zg |
zb |
0 |
0 |
Tb |
あとは Tr, Tg, Tb
であるが,これは 白色点 (R, G, B) = (1,
1, 1) が
(Xn, Yn, Zn)
に変換されることから求めることができる。すなわち,

|
Xn |

|
|
|
1
|
|
|
 |
xr |
xg |
xb |
 |
 |
Tr |
0 |
0 |
 |
 |
1
|
 |
|
 |
xr |
xg |
xb |
 |
 |
Tr |
 |
Yn |
= M |
1 |
=
|
yr |
yg |
yb |
0 |
Tg |
0 |
1 |
= |
yr |
yg |
yb |
Tg |
Zn |
|
1 |
|
zr |
zg |
zb |
0 |
0
|
Tb |
1
|
|
zr |
zg |
zb |
Tb |
これを Tr, Tg, Tb
について解くと

|
Tr |

|
|
 |
xr |
xg |
xb |
 |
-1
|
 |
Xn |
 |
Tg |
= |
yr |
yg |
yb |
|
Yn |
Tb |
|
zr |
zg |
zb |
|
Zn |
こうして Tr, Tg, Tb
が得られたら,変換行列
M は (2) 式よりただちに計算できる。
戻る
T. Fujiwara, 2011/12