Halcom 发表于 2017-2-4 22:08:56

XYZ与CIE Lab颜色空间相互转换

       CIE1931-XYZ色度系统给定量研究色彩提供了国际通用标准,但无论是RGB色度系统,还是XYZ色度系统,都是不均匀的,即色彩空间中距离相同的两点,引起人的视觉差异却不同,某两种颜色会引起很大的视觉差异,而另外两种三刺激值差相同的颜色却可能引起的视觉差异很小。在实际应用中经常需要辨别样品颜色的差别,即色差的定量化表示,但CIE 1931-XYZ色度系统由于自身的缺陷,不能用于计算样品颜色的色差。为了解决这一问题,在经过大量的研究之后,CIE于1976年推荐了一种新的颜色空间及其色差计算公式,即CIE 1976-Lab。这是一种均匀的色彩空间,即在不同位置,不同方向上相等的几何距离在视觉上有对应相等的色差。    由于CIELAB和CIELUV没有明显的优劣,所以这两个颜色空间都经常被使用,如Photoshop就是使用CIELAB颜色空间的。
XYZ —> CIE-L*abvar_X = X / ref_X          //ref_X =95.047   Observer= 2°, Illuminant= D65
var_Y = Y / ref_Y          //ref_Y = 100.000
var_Z = Z / ref_Z          //ref_Z = 108.883

if ( var_X > 0.008856 ) var_X = var_X ^ ( 1/3 )
else                  var_X = ( 7.787 * var_X ) + ( 16 / 116 )
if ( var_Y > 0.008856 ) var_Y = var_Y ^ ( 1/3 )
else                  var_Y = ( 7.787 * var_Y ) + ( 16 / 116 )
if ( var_Z > 0.008856 ) var_Z = var_Z ^ ( 1/3 )
else                  var_Z = ( 7.787 * var_Z ) + ( 16 / 116 )

CIE-L* = ( 116 * var_Y ) - 16
CIE-a* = 500 * ( var_X - var_Y )
CIE-b* = 200 * ( var_Y - var_Z )

CIE-L*ab —> XYZ
var_Y = ( CIE-L* + 16 ) / 116
var_X = CIE-a* / 500 + var_Y
var_Z = var_Y - CIE-b* / 200

if ( var_Y^3 > 0.008856 ) var_Y = var_Y^3
else                      var_Y = ( var_Y - 16 / 116 ) / 7.787
if ( var_X^3 > 0.008856 ) var_X = var_X^3
else                      var_X = ( var_X - 16 / 116 ) / 7.787
if ( var_Z^3 > 0.008856 ) var_Z = var_Z^3
else                      var_Z = ( var_Z - 16 / 116 ) / 7.787

X = ref_X * var_X   //ref_X =95.047   Observer= 2°, Illuminant= D65
Y = ref_Y * var_Y   //ref_Y = 100.000
Z = ref_Z * var_Z   //ref_Z = 108.883       Lab色彩空间被设计用来接近人类视觉,它致力于感知均匀性。    在Lab空间中,L表示亮度,a和b表示颜色对立的维度。L值为0时色彩为黑色,L值接近100时为白色;a值表示色彩在红色和绿色之间的位置;b值表示色彩在蓝色和黄色之间的位置。在CIELAB模型中,a值大于0时表示红色,a值小于0时表示绿色,b值大于0时表示黄色。    则:白平衡时,可将RGB转化为Lab颜色空间,然后将a和b分别取均值,则a和b的值就是一个固定的值,同样适用某些场景下的白平衡处理。











页: [1]
查看完整版本: XYZ与CIE Lab颜色空间相互转换