上面这张图叫PDI Test Image,在谷歌搜索即可获得,常用于验证色彩管理流程。
下面是打印效果:
让颜色对上,并不是一件简单的事情。
先来说说,什么是颜色?
正常人视网膜中的三种视锥细胞,响应如下:
其中L和M的响应非常接近,这也就说明了为什么红绿色盲是最常见的一种色盲——两个峰如果过于靠近,是无法分辨红绿两色的。
当光线照到物体表面,并反射进入人眼的时候,人眼视锥细胞受到刺激,L/M/S 三刺激值 = 光源谱 * 物体表面的反射谱 * L/M/S 响应函数。三刺激值可以认为是“绝对颜色”或者“原始颜色”。在CIE模型中,三刺激值配合参考白点(环境灯光/显示器背光)就可以决定“相对颜色”;在最新的CIECAM模型中,考虑周围环境光照、背景影响等等,形成“相对颜色”(这类似于在红色的背景下,人眼会认为灰色偏绿,等等)。
以上都属于色彩学理论,有兴趣的同学可以也必须自己扩展阅读,否则难以理解本帖的实践。
这次面对的打印机,是佳能Canon imageRunner ADVANCED C5035 多功能机。他内部采用CMYK墨粉,悲剧的是没有安装PostScript/PCL选件(PS选件价格超过1W),因此没有办法直接打印CMYK,只能通过UFR II 驱动打印RGB值。随驱动提供的ICM Profile色差比较大,没有太大实用意义(当然,随便打个文件还是可以的)。
首先,使用开源的Argyll CMS软件套装中的targen工具,为我们生成一系列测试值,再用printtarg工具将测试值转换为TIFF格式的测试图(下称target)。
以上是我使用的命令行参数,详情请参考Argyll CMS文档与使用简介。
于是得到new5035.tif,也就是下面这张图:
我使用的参数着重强调了浅色的还原。
现在我们要打印上面这张图。打印的时候,我们希望不要做任何色彩管理,而直接把文件中的RGB值发给打印机。但这要怎么实现呢?
此处有个坑提前告诉大家:Photoshop CS6是
禁止直接传递RGB值而不经过色彩管理流程的。
于是,我下了一个Photoshop 7.0中文版。
怎样是不是很怀念。
首先这个中文版的翻译很有问题,下面这个Profile要选择“保存为源”,其实就是不应用任何Profile,而直接向打印机传递RGB值的意思。
那么在打印机驱动这边,要把“手动色彩设置”勾上,然后进入“色彩设置”
“不使用驱动程序色彩转换”,这很重要。
以后正常打印的时候,也应该保持以上设置,让Photoshop做色彩管理。
好,现在可以打印了
打印结果:
现在,要利用这份target,建立从输入RGB值到输出色彩的关系。这里有几点要注意:
1. 输出色彩与打印机设置(dpi,喷墨模式)等相关,这方面必须熟读说明书。
2. 与纸张相关。应尽量用目标纸张打印。
色块RGB值列表,以及target上的色块分布等信息,在生成target的时候就已经一并生成了,分别保存为new5035.ti1和new5035.ti2。现在只要知道每一个输入RGB色块对应的输出颜色,就可以建立一个三维查找表(3D LUT),用于将一个颜色转换为具体的RGB值驱动打印机。把这个查找表放到ICC文件里,就成了我们常说的打印机Profile,以后打印的时候可以调用。
前面讲过,颜色是若干个谱函数的乘积。因此,要测量输出色彩,需要有合适的光源以及光谱采集仪器。
这里请出 i1-Pro ,这是一个可见光段的CCD摄谱仪。它内部有个白炽灯泡,可以测物体表面的反射谱。
找一把尺子(要足够薄),配合chartread.exe,手持i1逐行扫描,即可录入target中每一个色块的颜色。这里的“颜色”,通常用CIEXYZ坐标表示。
具体操作请参考Argyll CMS文档。总之就是一行一行地把色块的颜色值读入计算机。
结束后,获得测量值 new5035.ti3
最后就可以生成ICC文件了。通过有限的测量值生成三维查找表,其实是挺复杂的一件事情,涉及非常多的数学,所以我很佩服Argyll CMS的作者,完全靠个人毅力和捐助完成了整套软件。
命令行: colprof.exe -v -D"C5035 gradation refined" -qm -r2 -S sRGB.icm -cmt -dpp new5035
获得:
剩下的工作就是把这个icm安装到系统中,并在Photoshop中使用这个icm实现打印色彩管理,在此不赘述。