测色仪检测颜色原理之技术文章(1):RGB到Lab颜色空间转换
一、引言
随着印刷行业从模拟到数字的变化,色彩的准确再现问题已经变得十分关键。我们需要使用色彩管理,以确保更好、更快、更准确地获得彩色图像。要做到图像处理等过程中的色彩统一性和与设备无关性,就必须实行标准化、规范化的色彩管理。
所谓色彩管理,就是解决图像在各色空间之间的转换问题,使图像的色彩在整个复制过程中失真最小。其基本思路是:首先选择一个与设备无关的参考色空间,然后对设备进行特征化,最后在各个设备的色空间和与设备无关的参考色空间之间建立关系,从而使数据文件在各个设备之间转换时有一个明确的关系可寻。虽然不可能让不同设备上的所有颜色完全相同,但可以使用颜色管理来确保大多数颜色相同或相似,从而达到在某种意义上一致的颜色复制效果。
二、色彩空间转换
色彩空间转换是指把一个色彩空间中的颜色数据转换或表示成另一个色彩空间中的相应数据,即用不同的色彩空间中的数据表示同一颜色。在本文中,是将与设备相关的RGB色彩空间转换到与设备无关的CIELab色彩空间。任何一个与设备有关的色彩空间都可以在CIELab色彩空间中测量、标定。如果不同的与设备相关颜色都能对应到CIELab色彩空间的同一点,那么,它们之间的转换就一定是准确的。
色彩空间转换的方法有很多种,本文主要介绍三维查表插值法和多项式回归法。
1.三维查表插值法
三维查找表法是目前研究色彩空间转换较为常用的算法。三维查找表算法的核心思想是,将源色彩空间进行分割,划分为一个个规则的立方体,每个立方体的八个顶点的数据是已知的,将所有源空间的已知点构成一张三维查找表。当给定源空间中任意一个点时,能够找到与之相邻的八个数据点构成一个小立方体格子的节点,通过这个小立方体的八个顶点进行插值,得到目标空间对应的数据。
一般查找表法都是与插值法结合起来使用,变成带有插值算法的三维查找表法,这种方法可分为三个步骤:
①分割:将源色彩空间按一定的采样间隔分区,建立三维查找表;
②查找:对于一个已知的输入点,搜索源空间,找出包含它的由八个栅格点构成的立方体;
③插值:在一个立方体的栅格内,计算出非栅格点上的颜色值。
根据源空间的不同分割方式,常见的插值算法有:三线性插值、三棱柱插值、金字塔插值和四面体插值方法。
2.多项式回归法
多项式回归算法是指假设色彩空间的联系可以通过一组联立的方程估算出来。多项式回归算法的必要条件就是源空间的点数应该大于所选择的多项式的项数。此算法的重点在于计算出多项式的系数,再将源色彩空间的数据代入多项式,就可以根据方程求出转换后的结果。
多项式的形式分为很多种,本文采用项数为6的多项式,具体表达式如公式(1)所示。
(1)
该多项式的系数可以由公式(2)得到。
(2)
公式(2)中、的表达式分别如公式(3)、(4)所示,为矩阵的转置,具体表达式如公式(5)所示。公式(3)中的表示多项式的项数,在本题目中取;表示选取的源空间的点数,在本题目中,由于对源空间(即RGB颜色空间)进行六级分割后得到216个点,故取。实际上,对于项数为6的多项式,只要取就可以得到多项式的系数。
(3)
(4)
(5)
公式(3)中的、、()为源空间的三个颜色值,公式(4)中的()为目标空间中表示颜色的三个数值中任意一个。
多项式回归算法的特点是简单、实现起来较为方便,且有着不错的转换效果;但使用项数少时精度较低,当项数过大时计算量大、且精度也不一定高。
3.色差
在评价彩色复制质量和控制彩色复制过程时,例如在实施色彩管理和评价印刷品颜色时,往往需要计算颜色的色差来实现控制颜色的目的。目前印刷业普遍采用的是CIE 1976 Lab均匀颜色空间,及其对应的色差公式,具体的表达式如公式(6)所示。
(6)
三、实现过程
先简单介绍了本题目的操作平台,再详细说明了本题目中所使用数据的获取方法,以及实现颜色空间转换的详细步骤。
1.操作平台
本题目采用的操作系统为Microsoft windows XP,编程环境为Visual C++ 6.0,整个应用程序是基于MFC应用程序框架,还用到了OpenGL和OpenCV。
2.数据的获取
数据分为建模数据及测试数据两部分,建模数据用于计算多项式的系数,测试数据用于分析算法的精确程度,来自源空间和目标空间的建模数据和测试数据均在Adobe Photoshop中采集得到。
①建模数据的获取。本题目采用六级均匀分割来采集建模点,R、G、B分别依次取0,51,102,153,204,255。在PhotoShop的拾色器中依次输入R、G、B的各组值,并记下该组值对应的L、a、b的值,记录在文本中,如图一所示。共得到63=216组值。
图一 从拾色器中获得数据
②测试数据的获取本题目采用八级非均匀分割来采集测试点,R、G、B分别依次取0,36,72,108,144,180,216,255。采集方法同上,共得到83=512组值。
3.具体实现步骤
本题目具体实现的框架流程图如图二所示。
图二 框架流程图
如图二所示,程序实现的具体步骤如下:
①先启动Visual C++ 6.0,在MFC中设置OpenCV的运行环境。
②读取建模数据。
③完成出多项式系数的计算:分别依据公式(3)、(4)、(5)得到、、。依次求出、、、,从而就得到了多项式的系数。
④读取测试数据。
⑤绘制对RGB模型进行八级分割后相应Lab模型的三维彩色视图。
⑥将由八级分割得到的每个点的RGB值带入由步骤③得到的三个多项式中,分别计算出每个点的L、a、b值(后面称此值为计算值),从而就通过多项式回归法将RGB颜色空间转换为Lab颜色空间。
⑦为了评判此颜色空间转换方法的优劣,就要通过计算色差来评判。对于每种颜色,将由步骤④得到的测量值与由步骤⑥得到的计算值求差得到、、,然后再依据公式⑥求出色差,画出色差分布直方图,并统计出在不同色差范围内的比例。
四、结果显示与分析
按上节具体步骤,采用VC++6.0编程实现了PhotoShop中RGB到Lab颜色空间的转换,本节主要将程序的运行结果显示并进行简要的分析。
1.结果显示
本题目采用六级均匀分割建立了转换关系,并利用八级非均匀分割对此方法的精度进行了测试,绘制了色差分布直方图,并对色差进行了统计。程序实现的主体界面如图三所示。
图三 RGB到CIELab颜色空间转换的主体界面
色差分布直方图以及相关统计数据,如图四所示。
图四 色差统计界面
对RGB模型进行八级分割后相应Lab模型的三维彩色视图,如图五所示。对RGB模型进行八级分割后,采用多项式回归法转换到Lab颜色空间模型的三维彩色视图,如图六所示。
图五 八级分割RGB颜色空间后测试得到的Lab颜色空间三维彩色视图
图六 八级分割RGB颜色空间后转换到Lab颜色空间的三维彩色视图
2.结果分析与总结
如图四所示,对512种颜色进行颜色空间转换后的色差最大值为28,从总体上看色差分布并不均匀。
经统计,色差范围在0~5之间共有74种颜色,占总体的14.45%;色差范围在5~10之间共有264种颜色,占总体的51.56%;色差范围在10~15之间共有157种颜色,占总体的30.66%;色差范围在15~20之间共有13种颜色,占总体的2.54%;色差大于20的共有4种颜色,占总体的0.78%,而且数据显示,在色差大于20的4种颜色中,纯蓝色(0,0,255)和纯绿色(0,255,0)的色差最大,另外两种颜色的色差都小于21。对于这512种颜色,其中色差最大为28,最小为0,平均色差为9。总的说来,色差范围大部分集中在5~15之间。
将图五与图六进行对比,可以发现使用多项式回归法将RGB颜色空间转换到Lab颜色空间模型,与测试得到的Lab颜色空间模型的形状大体相似,表明本题目所获得的结果是比较理想的。
五、总结
由此可见,使用多项式回归法来进行颜色空间转换还是比较准确的。可采用不同项数的多项式,对相同的源空间到相同的目标空间的转换结果进行比较;从而寻找出,在此源空间转换到目标空间过程中,采用多项式的优越项数。因此,对于此题目还需要进一步的研究。