Hello Mat

 找回密码
 立即注册
查看: 4965|回复: 0

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

[复制链接]

1294

主题

1520

帖子

110

金钱

管理员

Rank: 9Rank: 9Rank: 9

积分
22633
发表于 2017-2-4 22:08:56 | 显示全部楼层 |阅读模式
       CIE1931-XYZ色度系统给定量研究色彩提供了国际通用标准,但无论是RGB色度系统,还是XYZ色度系统,都是不均匀的,即色彩空间中距离相同的两点,引起人的视觉差异却不同,某两种颜色会引起很大的视觉差异,而另外两种三刺激值差相同的颜色却可能引起的视觉差异很小。在实际应用中经常需要辨别样品颜色的差别,即色差的定量化表示,但CIE 1931-XYZ色度系统由于自身的缺陷,不能用于计算样品颜色的色差。为了解决这一问题,在经过大量的研究之后,CIE1976年推荐了一种新的颜色空间及其色差计算公式,即CIE 1976-Lab。这是一种均匀的色彩空间,即在不同位置,不同方向上相等的几何距离在视觉上有对应相等的色差。
    由于CIELABCIELUV没有明显的优劣,所以这两个颜色空间都经常被使用,如Photoshop就是使用CIELAB颜色空间的。

XYZ —> CIE-L*ab
  1. var_X = X / ref_X          //ref_X =  95.047   Observer= 2°, Illuminant= D65
  2. var_Y = Y / ref_Y          //ref_Y = 100.000
  3. var_Z = Z / ref_Z          //ref_Z = 108.883

  4. if ( var_X > 0.008856 ) var_X = var_X ^ ( 1/3 )
  5. else                    var_X = ( 7.787 * var_X ) + ( 16 / 116 )
  6. if ( var_Y > 0.008856 ) var_Y = var_Y ^ ( 1/3 )
  7. else                    var_Y = ( 7.787 * var_Y ) + ( 16 / 116 )
  8. if ( var_Z > 0.008856 ) var_Z = var_Z ^ ( 1/3 )
  9. else                    var_Z = ( 7.787 * var_Z ) + ( 16 / 116 )

  10. CIE-L* = ( 116 * var_Y ) - 16
  11. CIE-a* = 500 * ( var_X - var_Y )
  12. CIE-b* = 200 * ( var_Y - var_Z )
复制代码


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

  4. if ( var_Y^3 > 0.008856 ) var_Y = var_Y^3
  5. else                      var_Y = ( var_Y - 16 / 116 ) / 7.787
  6. if ( var_X^3 > 0.008856 ) var_X = var_X^3
  7. else                      var_X = ( var_X - 16 / 116 ) / 7.787
  8. if ( var_Z^3 > 0.008856 ) var_Z = var_Z^3
  9. else                      var_Z = ( var_Z - 16 / 116 ) / 7.787

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












算法QQ  3283892722
群智能算法链接http://halcom.cn/forum.php?mod=forumdisplay&fid=73
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Python|Opencv|MATLAB|Halcom.cn ( 蜀ICP备16027072号 )

GMT+8, 2024-4-20 05:44 , Processed in 0.229637 second(s), 21 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表