学习笔记——色准(ΔE)/ 如何量化色差
如何量化评价不同处理算法得到的图片哪个更接近真实呢?ΔE帮你解决!
引言
在学习白平衡校正的时候,有一个很直观的问题:我手上有A图的真实原图(ground truth image)、A图错误的白平衡图像(improperly white-balanced image)以及错误图像经过算法修复后的图像(correcting image),分别记为A_truth、A_wrong和A_cor。那么我如何评价不同算法得到的A_cor哪个更接近A_truth呢?
CIE在1979年给出了ΔE的概念,用于量化图像之间的颜色差距,并且在1994年和2000年进行了概念的优化(就是更为准确的表达色准),分别命名为ΔE79、ΔE94和ΔE2000。
ΔE的定义
CIE给的定义是“The measure of change in visual perception of two given colors.”,直译过来就是“给定两种颜色的视觉感知变化”。Δ是数学符号,表示函数的变化;E引用了德语单词 Empfindung,就是感觉的意思。由于白平衡差异本质也是颜色的差异,因此在大多数情况下,dE也能用于衡量两张图片之间的白平衡差异。
ΔE的值域一般在0-100之间,数值越小表示两者之间的颜色差异越小。有研究学者总结了在通常情况下不同的ΔE,人眼的感知差异。
ΔE | 人眼感知情况 |
<1.0 | 几乎无法看出色差 |
1-2 | 仔细观察可以看出色差 |
2-10 | 一眼可以看出色差 |
11-49 | 颜色不同 |
100 | 颜色完全相反 |
当然,表中数据仅作参考,在不同的情况下会有不同的阈值。有些时候两种看起来完全不同的颜色,其ΔE也小于1,在ΔE79、ΔE94中尤为明显。下面详细介绍ΔE79、ΔE94和ΔE2000的计算方法。
ΔE79
ΔE79的公式非常简单:
小学二年级的学生也能一眼看出来:“这不就是距离公式嘛”。没错,这公式表示的就是色彩空间中两点间的欧几里得距离。在公式提出之前,CIE还制定了一种Lab色彩空间,L表示亮度,a轴从负到正表示绿色到红色,b轴从负到正表示蓝色到黄色,如图所示。(Lab色彩空间的细节以及转换方法有空我写一下)
ΔE94
在1994年,CIE对ΔE公式进行了改进,新公式加入了亮度、饱和度和色调的权重。为此,CIE还引入了Lab转化成Lch的方法(Lightness, Chroma, Hue)。其公式如下:
当然,相比起直接的距离计算,ΔE94要比ΔE76准确的多。但是它有个缺点,就是对亮度的权重容易出错。一个很简单的例子,我用PS取了亮度完全相同、但色调不同的两种颜色。
用MATLAB计算出两种颜色的色差,可以得到ΔE94=92.2,而ΔE2000=30.0。从人眼的观察来说,一个绿色,一个灰色,显然不是一对相反色(绿色的相反色是红色)。根据上面的表,显然ΔE2000是更加合理的,ΔE94的值过大,若该值准确两种颜色应该几乎是相反的了。
由于ΔE2000的公式过于复杂,在很多亮度影响不大的情况下,仍会使用ΔE94来保证效率。
ΔE2000
CIE很快发现了亮度权重的问题,于是在2000年再次优化了公式,一直到今天仍然是最准确,最复杂的算法。
ΔE2000的总公式在94的基础上,多加了一交叉项(也可以叫做旋转项)。那么上过幼儿园的都可以看出来,ΔE94的表达式可以看作正椭球面的一半,而ΔE2000加了旋转项,使得椭球面的一个轴发生了偏转,通过下面的图就可以很清晰的理解这两个表达式的几何差异。
atan2(y,x)表示原点到(x,y)间射线与x轴的夹角。旋转项的可变参数RT也很关键,不妨把H’看作是自变量,把RT的函数画出来,如图。
结合前面的分析,可以看到,当H’旋转到210-330度的时候,RT的绝对值变大,即椭圆旋转的角度变大。那么看回一开始Lch颜色空间图:
这个角度区间对应的色彩空间是蓝色区域,也就是说,在蓝色区域的色差评价中,亮度和色调的权重会发生变化。而ΔE2000相比起ΔE94的优化就是在于蓝色空间的修正,使得最终的结果更加合理(下面有例子)。至于为什么,那就是一大篇论文的事了,其实还是基于大量的实验的出来的,有兴趣去CIE官网可以看:http://cie.co.at/publications/colorimetry-part-6-ciede2000-colour-difference-formula。
为了进一步对比ΔE2000和ΔE94,提出了这么个疑问:“纯绿色与白色更相似还是与黑色更相似?”用语言好像难以描述这个答案,但给人的第一感觉是,绿色是一种比较明亮的颜色,那它似乎与白色更相似。那么用MATLAB将RGB(0,255,0)的绿色分别与RGB(0,0,0)、(1,1,1)……(255,255,255)作对比,即从黑到白。得到的结果如图:
可以看出来,ΔE2000的表现是更符合预期的,当亮度从黑色渐变为白色时,其值会下降,得出“黑色-绿色与白色-绿色之间的色差有一定区别,且绿色与白色更为相似的结论”。而ΔE94错误地得出黑色-绿色与白色-绿色具有大致相同的色差的结论,因为其值几乎没怎么变动且都在100以上,显然,无论是白色还是黑色与绿色都不是相反色。
参考
1.http://zschuessler.github.io/DeltaE/learn/
2.http://cie.co.at/publications/colorimetry-part-6-ciede2000-colour-difference-formula
3.Sharma, G. (2004). The CIEDE2000 Color-Difference Formula: Implementation Notes, Supplementary Test Data, and Mathematical Observations. Retrieved from http://www.ece.rochester.edu/~gsharma/ciede2000/ciede2000noteCRNA.pdf
4.Color Differences & Tolerances: Commercial Color Acceptability. (2013, January 1). Retrieved from http://industrial.datacolor.com/support/wp-content/uploads/2013/01/Color-Differences-Tolerances.pdf
5.Brainard, D. (2003). Color Appearance and Color Difference Specification. In The Science of Color (pp. 192 - 213). Elsevier.
开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!
更多推荐
所有评论(0)