色差公式(11)——CIEDE2000色差公式
为了进一步改善工业色差评价的视觉一致性,CIE专门成立了工业色差评价的色相和明度相关修正技术委员会TC1-47(Hue and Lightness Dependent Correction to Industrial Colour Difference Evaluation),经过该技术委员会对现有色差公式和视觉评价数据的分析与测试,在2000年提出了一个新的色彩评价公式,并于2001年得到了国际照明委员会的推荐,称为CIE2000色差公式,简称CIEDE2000,色差符合为 。CIEDE2000是到目前为止最新的色差公式,该公式与CIE94相比要复杂的多,同时也大大提高了精度。
CIEDE2000色差公式主要对CIE94公式做了如下几项修正:
① 重新标定近中性区域的a*轴,以改善中性色的预测性能;
② 将CIE94公式中的明度权重函数修改为近似V形函数;
③ 在色相权重函数中考虑了色相角,以体现色相容限随颜色的色相而变化的事实;
④ 包含了与BFD和Leeds色差公式中类似的椭圆选择选项,以反映在蓝色区域的色差容限椭圆不指向中心点的现象。
CIEDE2000色差公式如下:
其计算过程如下:
首先计算L*、a*、b*、
然后
/P>
这里, 是一对样品色的算术平均。
这里,
其中下标“s”表示颜色对中的标准色,“b”表示样品色。
式中的 、、是一对色样 L'、C'、 的算术平均值。
最后,由式(8-30)计算色差值。
在计算时,如果两个颜色的色相处于不同的象限,就需要特别注意,以免出错。如,某颜色样品对中标准色和样品色的色相角分别为90°和300°,则直接计算出来的算术平均值为195°,但是正确的应该是15°。实际计算时,可以从两个色相角之间的绝对差值来检查,如果该差值小于180°,那么应该直接采用算术平均值,否则(差值大于180°),需要先从较大的色相角中减去360°,然后再计算算术平均值。因此,在上述示例中,对于样品色先计算300°-360°=-60°,然后计算平均值为15°。
以上基于对CIELAB公式改良的近期色差公式在数学上均采用椭球方程或其变形,并于椭球的边界来表示颜色的宽容量范围,再引入不同的参数来调节三个色差、、在总色差中的权重,以提高色差计算结果与目视评判的一致性。同时,所有这些公式都无一例外地建立在目视比较经验评色数据的基础之上。尽管有不少科学家提议从颜色的视觉机理出发,建立符合人眼视觉特征的真正的均匀颜色空间及其色彩评价模型,然而,迄今没有这样的颜色系统被提出。
色差公式(11)——CIEDE2000色差公式
function [DE,RT,hm,Dt,Rot]=CIEDE2000(LABREF,LAB,K)
% DE2000 calculates colour difference between a reference and sample
% using CIEDE2000 colour difference (as defined in Luo, Cui and Rigg (2000))
%
% Input data can be single values or multiple values arranged in columns
% LABREF can be a single value while LAB is a column
%
% Colour Engineering Toolbox
% author: ?Phil Green
% version: 1.1
% date: 17-01-2001
% modified: Zheng Yuanlin, 2010-08-23
%
% t the values of parametric weighting factors KL,KC,KH
if nargin>2
if length(K)>2
kL=K(1);kC=K(2);kH=K(3);
end
el
kL=1;kC=1;kH=1;
end
%___________________________________________________________________
L=LABREF(:,1);
a=LABREF(:,2);
b=LABREF(:,3);
C=(a.^2+b.^2).^0.5;
Ls=LAB(:,1);
as=LAB(:,2);
bs=LAB(:,3);
Cs=(as.^2+bs.^2).^0.5;
%find G and recompute a', C' and h'
Cm=(C+Cs)/2;
G=0.5*(1-(Cm.^7./(Cm.^7+25^7)).^0.5); % a轴调整因子
a=(1+G).*a;
as=(1+G).*as;
C=(a.^2+b.^2).^0.5;
h=hue_angle(a,b);
Cs=(as.^2+bs.^2).^0.5;
hs=hue_angle(as,bs);
zcidx = (C.*Cs == 0);
%% find the mean chroma and hue for each reference/sample pair
Cm=(C+Cs)/2; % 彩度平均值
%% 色相角平均值
% hm=hmean_GS(h,hs,C,Cs);
hm=(h+hs)/2;
hm=hm-360*(abs(h-hs)>360);
hm=hm+(hm<0)*360;
hm(zcidx)=h(zcidx)+hs(zcidx);
%% 色相角差
% Dh=angle_diff_GS(h,hs,C,Cs);
Dh=hs-h;
Dh = Dh - 2*180* (Dh > 180 );
Dh = Dh + 2*180* (Dh < (-180) );
Dh(zcidx)=0;
%%
rad=pi/180;
DL=(L-Ls); % 亮度差
DC=Cs-C; % 彩度差
DH=2*((C.*Cs).^0.5).*sin(rad*(Dh)/2); % 色相差
% calculate T
T=1-0.17*cos(rad*(hm-30))+0.24*cos(rad*2*hm)+0.32*cos(rad*(3*hm+6))-0.2*cos(rad*(4*hm-63));
%权重因子 SL, SC, SH
SL=1+(0.015.*((L+Ls)./2-50).^2)./(20+((L+Ls)./2-50).^2).^0.5;
SC=1+0.045.*Cm;
SH=1+0.015.*Cm.*T;
Dt=30*exp(-(((hm-275)/25).^2));
RC=2.*((Cm.^7)./(Cm.^7+25.^7)).^.5;
RT=-sin(2*rad*Dt).*RC;
Rot=RT.*(DC./(SC.*kC)).*(DH./(SH.*kH)); % 调整项
DE=((DL./(SL.*kL)).^2+(DC./(SC.*kC)).^2+(DH./(SH.*kH)).^2+Rot).^0.5;
return