学习笔记——色准(ΔE)/ 如何量化色差

本文探讨了如何通过CIE在1979年提出的ΔE概念,尤其是CIEDE2000,来评价白平衡校正算法的效果。文章介绍了ΔE的定义、人眼感知阈值,并详细讲解了ΔE79、ΔE94和ΔE2000的计算方法,指出ΔE2000是最准确的评估标准,尤其是在处理亮度影响较大的颜色差异时。
摘要由CSDN通过智能技术生成

引言

        在学习白平衡校正的时候,有一个很直观的问题:我手上有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的公式非常简单:

ΔE79表达式

        小学二年级的学生也能一眼看出来:“这不就是距离公式嘛”。没错,这公式表示的就是色彩空间中两点间的欧几里得距离。在公式提出之前,CIE还制定了一种Lab色彩空间,L表示亮度,a轴从负到正表示绿色到红色,b轴从负到正表示蓝色到黄色,如图所示。(Lab色彩空间的细节以及转换方法有空我写一下)

(偷懒,直接用了别人的图了)

ΔE94

        在1994年,CIE对ΔE公式进行了改进,新公式加入了亮度、饱和度和色调的权重。为此,CIE还引入了Lab转化成Lch的方法(Lightness, Chroma, Hue)。其公式如下:

ΔE94表达式

        

        当然,相比起直接的距离计算,ΔE94要比ΔE76准确的多。但是它有个缺点,就是对亮度的权重容易出错。一个很简单的例子,我用PS取了亮度完全相同、但色调不同的两种颜色。 

两者亮度都为62(左绿右灰)

         用MATLAB计算出两种颜色的色差,可以得到ΔE94=92.2,而ΔE2000=30.0。从人眼的观察来说,一个绿色,一个灰色,显然不是一对相反色(绿色的相反色是红色)。根据上面的表,显然ΔE2000是更加合理的,ΔE94的值过大,若该值准确两种颜色应该几乎是相反的了。

MATLAB计算结果:灰/绿 ΔE

         由于ΔE2000的公式过于复杂,在很多亮度影响不大的情况下,仍会使用ΔE94来保证效率。

ΔE2000

        CIE很快发现了亮度权重的问题,于是在2000年再次优化了公式,一直到今天仍然是最准确,最复杂的算法。

ΔE2000表达式
(真的,这公式看了就想吐,呕!)

        

         ΔE2000的总公式在94的基础上,多加了一交叉项(也可以叫做旋转项)。那么上过幼儿园的都可以看出来,ΔE94的表达式可以看作正椭球面的一半,而ΔE2000加了旋转项,使得椭球面的一个轴发生了偏转,通过下面的图就可以很清晰的理解这两个表达式的几何差异。

交叉项系数为0,图形为球体
交叉项系数为1.6,yoz坐标绕x轴旋转
交叉项系数为-1.6,yoz坐标绕x轴旋转

         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.

  • 6
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,关于 jQuery 的事件,我可以和你分享一些学习笔记。 1. 绑定事件 在 jQuery 中,我们可以通过以下方式来绑定事件: ``` $(selector).event(function(){ // 事件处理程序 }) ``` 其中,`selector` 表示要绑定事件的元素,`event` 表示要绑定的事件类型,比如 `click`、`mouseover` 等等。事件处理程序则是在事件触发时要执行的代码块。 2. 多个事件绑定 我们可以通过 `on()` 方法来同时绑定多个事件: ``` $(selector).on({ event1: function(){ // 事件处理程序1 }, event2: function(){ // 事件处理程序2 } }) ``` 这样,当 `event1` 或 `event2` 中任意一个事件触发时,对应的处理程序都会被执行。 3. 解除事件 如果需要解除某个元素的事件处理程序,可以使用 `off()` 方法: ``` $(selector).off(event); ``` 其中,`event` 表示要解除的事件类型。如果不指定事件类型,则会解除该元素上所有的事件处理程序。 4. 事件委托 在 jQuery 中,我们可以使用事件委托来提高性能。事件委托是指将事件绑定到父元素上,而不是绑定到子元素上,然后通过事件冒泡来判断是哪个子元素触发了该事件。这样,当子元素数量较多时,只需要绑定一次事件,就可以监听到所有子元素的事件。 ``` $(selector).on(event, childSelector, function(){ // 事件处理程序 }) ``` 其中,`selector` 表示父元素,`event` 表示要绑定的事件类型,`childSelector` 表示要委托的子元素的选择器,事件处理程序则是在子元素触发事件时要执行的代码块。 以上是 jQuery 中事件的一些基本操作,希望对你有所帮助。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值