雑感等

音楽,数学,語学,その他に関するメモを記す.

XYZデータとsRGBデータの相互変換

JIS X 9204 高精細カラーディジタル標準画像(XYZ/SCID)を参照した.
逆行列等の計算は十進BASIC Version 7.8.3の有理数モードを使用した.

変数

8ビットに符号化されたsRGBのコード値:
0\leq R_{\rm 8bit} ,\,G_{\rm 8bit} ,\, B_{\rm 8bit} \leq 255
sRGB値:
0\leq R_{\rm sRGB} ,\,G_{\rm sRGB} ,\, B_{\rm sRGB} \leq 1
CIE 1931 XYZ 三刺激値(相対値):
0\leq X,\,Y,\,Z \leq 1

XYZの絶対的な三刺激値を求めるには,上記のX, Y, Z値をそれぞれ80倍する.
"80"という数値はsRGBの白色点の輝度が 80\,cd/m^{3}であることによる.
https://www.w3.org/Graphics/Color/srgb

 R_{\rm 8bit} ,\,G_{\rm 8bit} ,\, B_{\rm 8bit} \rightarrow X,\,Y,\,Z


f_{\rm 8bit\rightarrow sRGB} (Q)=
\left\{ \begin{array}{ll}
    (Q/255)/12.92 & (Q \leq 0.04045\times 255) \\
    ((Q/255+0.055)/1.055)^{2.4} & (otherwise)
  \end{array} \right.
として

R_{\rm sRGB}=f_{\rm 8bit\rightarrow sRGB} \left(R_{\rm 8bit} \right) \\
G_{\rm sRGB}=f_{\rm 8bit\rightarrow sRGB} \left(G_{\rm 8bit} \right) \\
B_{\rm sRGB}=f_{\rm 8bit\rightarrow sRGB} \left(B_{\rm 8bit} \right) \\


\left[
\begin{array}{c}
 X \\ Y \\ Z 
\end{array}
\right]=

\left[
\begin{array}{ccc}
0.4124  & 0.3576  & 0.1805 \\
0.2126  &  0.7152  &  0.0722 \\
0.0193 & 0.1192 & 0.9505
\end{array}
\right]
\left[
\begin{array}{c}
R_{\rm sRGB} \\ G_{\rm sRGB} \\ B_{\rm sRGB}
\end{array}
\right]

 X,\,Y,\,Z \rightarrow R_{\rm 8bit} ,\,G_{\rm 8bit} ,\, B_{\rm 8bit}


\left[
\begin{array}{c}
R_{\rm sRGB} \\ G_{\rm sRGB} \\ B_{\rm sRGB}
\end{array}
\right] =

\left[
\begin{array}{ccc}
28154000/8687829 & -13355000/8687829  & -1444000/2895943    \\
 -418089250/431495507 &  1618760625/862991014   & 17914625/431495507  \\
484000/8687829  & -1772500/8687829   & 3061000/2895943
\end{array}
\right]
\left[
\begin{array}{c}
X \\ Y \\ Z
\end{array}
\right]
ここで,

f_{\rm sRGB \rightarrow 8bit} (Q)=
\left\{ \begin{array}{ll}
    255 \times 12.92 \times Q & (Q \leq 0.04045/12.92) \\
    255 \, (1.055\,Q^{1/2.4}-0.055) & (otherwise)
  \end{array} \right.
として

R_{\rm 8bit}=f_{\rm 8bit\rightarrow sRGB} \left(R_{\rm sRGB} \right) \\
G_{\rm 8bit}=f_{\rm 8bit\rightarrow sRGB} \left(G_{\rm sRGB} \right) \\
B_{\rm 8bit}=f_{\rm 8bit\rightarrow sRGB} \left(B_{\rm sRGB} \right) \\