徐 洋,郭冬霄,程安宇,郑太雄
(重庆邮电大学自动化学院,重庆 400065)
颜色的判断是许多科学应用研究的基础,比如在交通方面道路信号的识别、车牌号的识别,在医学方面的舌态检查、药品生产,工业上的纺织、印刷,都需要进行颜色的分类与识别。长期以来,此领域的研究也取得了相应的成绩,而依赖人眼判断颜色的现象仍然存在。如何实现颜色数据化成为纺织、印刷、医药等各行各业的一大难题,也成为国内外研究的焦点。
对颜色的判断,旨在通过对像素进行分类,给定相应的标度,将颜色进行数字化。文献[1-2]在RGB空间中创建了一个分层神经网络专家系统,训练了大量的像素样本,分析R,G,B在每个像素众所占有的比值,在对颜色进行判断时,根据前期提供的训练结果来给出当前的颜色判断。文献[3]提出了一种基于免疫原理的数值规约方法,一定程度上解决了K临近法(KNN)在训练样本时计算开销很大的问题。文献[4]介绍了一种基于像素的皮肤检测技术,强调了分类器算法中色彩空间选择和像素分类的重要性。文献[5]作为同样研究肤色识别的文章,提出把像素分为两类:属于皮肤的和不属于皮肤的,从而将属于皮肤上的这些像素与其周围的区分开来。文献[6]介绍了颜色判断在舌态分析中的应用,将舌像根据颜色进行了区域划分,分为正常舌态和病变舌态,分别计算了各状态下RGB(Red,Green,Blue)空间中R,G,B各分量的平均大小,以及 HIS(Hue,Saturation,Intensity)空间中 H,I,S分量的平均值,最后转换到各类舌态的色坐标大小。
针对当前的研究,对颜色的判别研究主要有以下两方面:1)模糊C均值(FCM)聚类算法、K-means分层聚类、学习矢量量化(LVQ)神经网络分类器等。此类方法需要训练样本值,判别精度受到样本个数的制约,由于实际情况的限制,样本数量往往不能满足各种使用条件的要求,而且不适用于有噪声和样本不均衡等问题,容易收敛于局部极值,所以不能保证达到较高精度。2)在RGB颜色空间中,根据各分量的数值设置相应的颜色范围;或将RGB空间映射到HIS空间,以HIS空间中表征颜色信息的H分量作为颜色分割的主要依据。在图像中,每个颜色通道的分量值都有0~255的256种选择,三者组合在一起就会产生上千万种情况,其中任意分量发生变化,都会产生不同的颜色,所以此类方法不能够全面客观的区分颜色,且不具备通用性。本文基于国际照明委员会(CIE)的标准CIE1931,提出了依据斜率与波长、波长与颜色的一一对应关系,并进行颜色的饱和度计算,来判断颜色的方法,最后在Matlab中进行了仿真。
光是一种人类眼睛可见的电磁波(可见光谱)。在科学上的定义,光是指所有的电磁波谱,如图1所示。具有各种颜色的光是电磁频谱中狭窄的频谱波段,称为可见光。可见光波段中每一频率对应一种单独的颜色,其低频率端是红色4.3×1014Hz,高频率端是紫色7.5×1014Hz。从低频到高频的光谱颜色变化分别是红,橙,黄,绿,蓝,青和紫。用光的波长(λ)或频率(f)来表示各种颜色。可见光部分的波长范围大约是350~780 nm。
图1 可见光谱图
在可见光谱上,光的颜色由其主波长决定。为了对色彩更好地加以说明,定义了颜色空间,指不同波长的电磁波谱与不同物质相互作用所构成的色谱空间。常用的颜色空间有 RGB,XYZ,CMY,HSV,HIS 等,文中在 RGB,XYZ空间中,使用判断波长范围的方法进行颜色的判断。
把两个颜色调整到视觉相同的方法叫颜色匹配,不同的待配色光达到匹配时三原色光亮度不同[7],用方程表示为
式中:C代表待配光;(R),(G)和(B)分别表示产生混合色的三原色,即红、绿、蓝的单位量,为1.000 0,4.590 7,0.060 1;¯r(λ),¯g(λ),¯b(λ)表示匹配待配色所需要的红、绿、蓝三原色的数量,称为三刺激值[7],如图2所示。
图2 RGB光谱三刺激值
在RGB空间,使用R,G,B三个系数值来定量的表述一个颜色。由于颜色仅取决与R,G,B的比例,而非它们的大小,所以可以用两个量来准确地表述一种颜色
式中:将r,g称为色度坐标。现将380~780 mm的所有纯色光进行配色实验,求得其色度坐标,并标注于r、g坐标系中,得到RGB色度图。
图3 等能光谱色的相对亮度曲线
图4是根据光谱色度坐标使用Matlab仿真工具生成的rg色度图的轮廓。曲线中,r坐标大部分是负值,坐标反映了r,g,b三色各自在三刺激值总量中的比例,一组坐标代表了色相和饱和度相同但亮度不同的颜色的特征,此曲线代表了颜色的色域范围。(注:这一系统规定的等能白光(E光源,色温5 500 K),位于色度图的中心(0.327,0.325))[8]。图4 中色度 CIE-RGB 系统的 ¯r(λ) ,¯g(λ) ,¯b(λ)值是由实验得来的,有负值存在,使用起来不方便,因此,1931年CIE提出了新的国际色度学系统—1931CIEXYZ系统(又称为XYZ国际坐标制)[8],转换后的三刺激值如图5所示。
图4 CIE-RG色度图
图5 XYZ光谱三刺激值
在颜色模型中,用来生成其他颜色的两种或三种颜色称为基色(primitive color)。国际照明委员会(简称CIE)在1931年定义了三种标准基色,它们在理论上可以显示各种波长的光,即颜色。通常把CIE规定的一组基色称为XYZ颜色模型。任何一种颜色C可以表示为
式中:使用X,Y,Z来表示理想的三原色,X,Y,Z分别表示红色,绿色,蓝色,它们是假想色,x,y,z指出为匹配C所需的标准基色的量。对式(4)进行规范化
进行规范化后,参数x和y称为色度值。因为z=1-x-y,可以用色度坐标(x,y)在二维图像中表示所有颜色。
从RGB系统到XYZ系统的转换公式为
在XYZ颜色模型中,当绘制出可见光谱中颜色的规范化量x和y时,即可获得一如舌状的曲线,称为CIE色度图,如图6所示。
目前国际通用的CIE1931xy色度图,可显示基色组的颜色范围,计算补色,计算颜色的主波长与色纯度。
计算方法是根据色品图上连接白点与样品点的直线的斜率,这样可以通过编写程序的方法使用电脑来计算波长,准确快速。
首先是精确地找到光谱轨迹上对应的主波长的点,
图6 CIE色度图
按照CIE1931规定的三刺激值得到的白色光E点色坐标是(0.327,0.325),即 xw=0.327,yw=0.325。按照斜率与波长的对应关系将舌形图分成9个区域,分区标准如表1所示。并逐点算出它们与白点所连直线的斜率,然后依次与白色点和样品点所连线的斜率相比较,找到斜率相等的点,该点即为样品的主波长或补色波长。这个方法缺点就是求出的主波长有可能是补色的波长,并不准确,文中通过分区域并判断x色度坐标来唯一确定波长,在分区域的同时,也减少了运算量,大大加快了运算速度。
计算光谱轨迹(x,y)与白点(xw,yw)的斜率时公式采用公式(7)
表1 斜率划分标准
所分区域如图7所示。
对照CIE1931色度图(图7),每一个区域都对应一种颜色,具体的对应关系如表2所示。
图7 斜率区域分割图
表2 色彩与斜率的关系表
色彩区域分割图如图8所示。
图8 色彩区域分割图
在图7中,设S点为某颜色,由白光点E通过S画一直线至光谱轨迹W点,S点离开E点至光谱轨迹的距离表明它的色纯度,即饱和度。颜色越靠近E越不纯,越靠近光谱轨迹越纯。这里S色的饱和度Saturation即为
经过如上过程,某一点或某一区域的平均颜色即可通过求取波长和饱和度确定该样品的色品即颜色。
假设一待测点 S,其 R,G,B 值分别为 0,138,200,根据式(3)计算出该点的色坐标(r,g,b)为(0,0.408 3,0.591 7)。
根据式(5)将上式的色坐标从RGB系统转换到XYZ系统,得到(x,y)为(0.208 9,0.287 9)。
计算S点与白点(0.327,0.325)的连线的斜率k,得到k=0.314 1。
从表1中的分区看到S点落在第8区,x<0.327,0.123 0<k≤2.073 8的范围内,根据表2中的颜色判据,得出S点的颜色为蓝色。
为验证方法的准确性,从Adobe Photoshop CS3 Extended中选中像素 R,G,B 值分别为 0,138,200,生成颜色,人眼判断该像素显示的颜色为蓝色,如图9所示。
图9 使用Photoshop的验证结果
从图片上右边的“信息”一览看到像素显示为所需要的值,左边即为该像素对应的颜色,为蓝色。
重复上述过程,在大量实验的验证下,准确率达到95%,抽样发现,出现检测不准确的情况,主要原因是待测颜色位于两种或几种颜色的交界区,这样就使判断出现摇摆性,引起判断错误。
从总体结果可以看出,该方法求出的颜色值具有较高的准确性,使计算机可以代替人眼自动识别红,橙、黄、绿、青、蓝、紫等主要颜色。
为进一步提高精确度,识别多种混合色,本文对上述方法做出相应改进,通过线性插值运算具体得到所求颜色的主波长。
如图10所示,分区查找并确定待测颜色坐标落在对应主波长为λ1,λ2光谱轨迹与白点的连线之间,两线的斜率分别使用k1,k2表示。这时待测主波长λ0界于λ1和λ2之间,设(x0,y0)到点 E(0.327,0.325)、斜率为 k 的直线的距离为d,公式为
依据上式,计算(x0,y0)到相邻两条直线的距离d1,d2,使用线性内插公式为
从而得到相应主波长λ0的值。
图10 线性插值法
根据准确求出的主波长大小,将斜率的判据进行细化,便可求出更加精确的颜色。
以上仿真过程及验证部分表明,该方法计算量较小,运算速度较快,摆脱了颜色检测的主观性和模糊性,无论是光源色还是表面色,都可以通过这种方法进行判断,有较大的应用价值,比如交通警告和标志牌颜色、医药行业药品颜色等的辨认,可以设置相应的使用范围编码,描述简便而准确。
:
[1]ALTUN H,SINEKLI R,TEKBAS U,et al.An efficient color detection in RGB space using hierarchical neural network structure[C]//Proc.2011 INISTA.[S.l.]:IEEE Press,2011:154-158.
[2]TSAI L W,HSIEH J W,FAN K C.Vehicle detection using normalized color and edge map[C]//Proc.2007 ICIP.[S.l.]:IEEE Press,2007:850-864.
[3]王峰,曼丽春,肖逸军,等.基于免疫数值归约方法的车牌颜色识别算法[J]. 四川大学学报:工程科学版,2008,40(5):164-170.
[4]NALLAPERUMAL K,RAVI S,BABU C N K,et al.Skin detection using color pixel classification with application to face detection:a comparative study[C]//Proc.2007 ICCIMA.[S.l.]:IEEE Press,2007:436-441.
[5]NAGHDI N M,MIRJALILY G,ALMODARRESI S M T.Some notes on accuracy constraints of pixel based skin color detection[C]//Proc.2009 ICFCC.[S.l.]:IEEE Press,2009:324-328.
[6]许家佗,周昌乐,方肇勤,等.舌像颜色特征的计算机分析与识别研究[J]. 上海中医药大学学报,2004,18(3):43-47.
[7]CIE.Calculations for interior lighting basic method[R/OL].[2011-09-22].http://div3.cie.co.at/?i_ca_id=575&pubid=104.
[8]Standard practice for computing the colors of objects by using the CIE system[S/OL].[2011-09-22].http://www.astm.org/.