DCDM-X’Y’Z’转RGB的研究
2018-04-26 15:54 那么像你 阅读(145) 评论(0) 收藏 举报经过研究发现对于DCDM-X’Y’Z’转RGB会分两个步骤
1、 DCDM-X’Y’Z’转XYZ;XYZ为线性归一值,即取值在[0,1],而DCDM-X’Y’Z’(一下简称X’Y’Z’)可以认为是XYZ的一种编码方式。
2、 XYZ转RGB;RGB为线性归一值。
一 DCDM-X’Y’Z’转XYZ
对于X’Y’Z’与XYZ之间的转换方式,可以认为是X’Y’Z’对XYZ进行编码的过程,X’Y’Z’对XYZ的编码公式为

其中k=48.0(白光亮度),INT表示取整数.
XYZ对X’Y’Z’的解码公式为

L=48.0(白光亮度);
这两个公式是现在研究的唯一公式,没有再找到其他的转换公式。
二 XYZ转RGB
XYZ与RGB转换时都是线性,现在研究发现都是归一值;
XYZ 与RGB之间的转换现在找到了多个公式,现在主要研究了ImageMagic(ITU-R BT.709规范)、Opencv、SMPTE431-2规范;
1、 ImageMagic的转换公式:
RGB->XYZ
X = 0.41239558896741421610 * R + 0.35758343076371481710 * G + 0.18049264738170157350 * B;
Y = 0.21258623078559555160 * R + 0.71517030370341084990 * G + 0.07220049864333622685 * B;
Z = 0.01929721549174694484 * R + 0.11918386458084853180 * G + 0.95049712513157976600 * B;
XYZ->RGB
R = 3.2406 * X - 1.5372 * Y - 0.4986 * Z;
G = -0.9689 * X + 1.8758 * Y + 0.0415 * Z;
B = 0.0557 * X - 0.2040 * Y + 1.0570 * Z;
2、 OpenCv的转换公式
RGB->XYZ
X = 0.412453 * R + 0.357580 * G + 0.180423 * B;
Y = 0.212671 * R + 0.715160 * G + 0.072169 * B;
Z = 0.019334 * R + 0.119193 * G + 0.950227 * B;
XYZ->RGB
R = 3.240479 * X - 1.537150 * Y - 0.498535 * Z;
G = -0.969256 * X + 1.875991 * Y + 0.041556 * Z;
B = 0.055648 * X - 0.204043 * Y + 1.057311 * Z;
3、 SMPTE431-2规范的转换公式----论文《数字电影色彩处理》
RGB->XYZ
X = 0.4451698156 *R + 0.2771344092 * G + 0.1722826698 * B;
Y = 0.2094916779 * R + 0.7215952542 * G + 0.0689130679 * B;
Z = 0.0000000000 * R + 0.0470605601 * G + 0.9073553944 * B;
XYZ->RGB
R = 2.7253940305 * X - 1.0180030062 * Y - 0.4401631952 * Z;
G = -0.7951680258 * X + 1.6897320548 * Y + 0.0226471906 * Z;
B = 0.0412418914 * X - 0.0876390192 * Y + 1.1009293786 * Z;
这三种方式得出的RGB值都是线性归一值,也就是我们常用的Liner(RGB)颜色空间。
得出的值,还需要进行编码。即将线性的归一值转为RGB值或SRGB值
1、 ImageMagic
if (R > 0.0031306684425005883)
{
R = 1.055 * Math.Pow(R, 1 / 2.4) - 0.055;
}
else
{
R = 12.92 * R;
}
R’ =65535*R;
R为XYZ转RGB得出的RGB的归一值
R’ 为图片在16bit下的编码值。 G、 B的编码值也可以用上述公式。
2、 论文《数字电影色彩处理》 中介绍的公式
R’ = (int)Math.Round( Math.Pow(R, 1 / 2.6) * 65535.0 );
R为XYZ转RGB得出的RGB的归一值
R’ 为图片在16bit下的编码值。 G、 B的编码值也可以用上述公式。
3、 论文《DCI 数字电影编解码系统》(其 XYZ 转 RGB 用的公式与 ImageMagic 一致)
L为XYZ转RGB得出的RGB的线性归一值, L’ 为转换的非线性值;


LD’ 为图片在n-bit下的编码值。
三 转换尝试和验证
重点研究了 ImageMagic、 论文《数字电影色彩处理》、 论文《DCI 数字电影编解码系统》 的
流程和公式
1、 首先将 DCDM-X’Y’Z’的 Tif 转成 RGB 的 png, ImageMagic 和论文《数字电影色彩处理》
中介绍的公式得出的 RGB-png 会有明显区别,看上去论文《数字电影色彩处理》 得出的
RGB-png 比较明亮,比较适合绘制深度图。
2、 然后将 RGB-png 逆过程转换得出 DCDM-X’Y’Z’的 Tif, ImageMagic、 论文《数字电影色
彩处理》得出的 DCDM-X’Y’Z’的 Tif 和原始的 DCDM-X’Y’Z’的 Tif 进行比较得出差值图片,
人眼看上去都没有差别。
用程序得出每个像素的通道值差值,进行比较
论文《数字电影色彩处理》还原的 DCDM-X’Y’Z’的 Tif 明显更好,查看得出最大差值为 16bit
下的 114,转为 8bit 为 0.44,也就是说在 255 满色阶下,一个色阶的差值都不到。
ImageMagic 得出的差值会有很少的较大差值,最大差值为 16bit 的 10135, 转为 8bit 为 39。
论文《DCI 数字电影编解码系统》 得出的最大差值与 ImageMagic 一致。
相比较而言, ImageMagic 和论文《数字电影色彩处理》 都可以得出看上去正常的 rgb 图片,
也可以很少损失的还原成 DCDM-X’Y’Z’-Tif,但是论文《数字电影色彩处理》 的流程和公
式更好。
综合得出论文《数字电影色彩处理》转换得出的 RGB 图片看上去比较适合绘制,而且返回
DCDM-X’Y’Z’的误差较小。
浙公网安备 33010602011771号