了解CIE XYZ的来龙去脉,看维基之前,先读这两篇文章:

https://medium.com/hipster-color-science/a-beginners-guide-to-colorimetry-401f1830b65a

A Beginner’s Guide to (CIE) Colormetry, 和

http://graphics.stanford.edu/courses/cs148-10-summer/docs/2010--kerr--cie_xyz.pdf

The CIE XYZ and xyY Color Spaces

看完上述文章后,在看中文维基应该不会有任何困难了:

https://zh.wikipedia.org/wiki/CIE1931%E8%89%B2%E5%BD%A9%E7%A9%BA%E9%97%B4

然后可以看英文维基的补充:

https://en.wikipedia.org/wiki/CIE_1931_color_space

一、LMS色彩空间

在明亮环境中人眼对420~440nm(短波S,对应蓝)、530~540nm(中波M,对应绿)以及560~580nm(长波L,对应红)的光波反应最敏感。用LMS描述的色彩空间即为LMS色彩空间。

二、色彩空间与三色刺激值

色彩空间需要先定义三种主要颜色primary color,在利用颜色叠见的模型,描述各种颜色。这三种颜色值统称为tristimulus values,中文译为三色刺激值,这是很准确的。注意,这三种颜色不一定是真正的颜色,或者某种颜色无法被真正创造出来,或者为了计算方便某种颜色是想象出来的。下面会有详细描述。

当两组有不同波长的光混合成的光源对标准观察者而言呈现相同的颜色时,应认为这两组光有相同的三色刺激值,即使他们的光谱分布不同。这种现象叫metamerism,“异谱同色”。

三、RGB色彩空间

鉴于LMS误差大,RBG色彩空间被发明。RGB色彩空间的三种primary color分别是波长700nm的红光、546.1nm的绿光和435.8nm的蓝光。此三种光波的颜色匹配函数波形如下:

RGB颜色匹配函数曲线的特征是,曲线覆盖的面积是相等的:

实际上,RGB各光波的亮度是不一样的;为了统一RGB的亮度刻度,经常对源亮度按照R:G:B比率1:4.5907:0.0601进行缩放。即:

R = r/1; G=g/4.5907; B=b/0.0601;

RGB的三色刺激值是:

其中I是缩放后光波的频谱功率分布函数。

RGB色彩空间的目的是,使用该三种光波、调整不同的亮度,以组合出任何人眼可见的颜色。注意到R的颜色匹配函数有一部分是负值;负值的含义是,某些参考颜色无法用RGB光波组合出来,以致于需要在参考颜色上附加另一个光波。负值的含义在开头的参考文档中均有描述,不再重复。RGB使用的是primary color是真实存在的;事实上可以证明,任何使用真实primary color的色彩空间,其颜色匹配曲线均有一部分是负值。

四、XYZ色彩空间

在计算机问世之前,计算带有负值乘法的曲线是很麻烦的;XYZ就是为了把RGB空间转换成另一个没有负值的、方便计算的空间。很明显,XYZ的三色刺激值是想象出来的。

XYZ不用于描述颜色,而用于说明光波如何组合会产生什么样的颜色,因此XYZ是独立于设备的。

RGB到XYZ的转换可表示为:

我们知道,颜色的亮度luminance可以表示为:

如果使:

那么L就可以用Y来表示。

事实上,这就是一般用Y,而不是L,表示颜色亮度的原因。

试问,为什么是Y而不是X或者Z呢?因为期望Y对应G,而G覆盖的波长范围是最广的,即人眼对G最敏感。

XYZ的颜色匹配函数曲线如下:

CIE要求的RGB到XYZ转换公式如下:

五、xyY与xy色彩空间

对于颜色,人眼更关注的是色度与亮度;把色度与亮度分离,就是xyY。

Y的含义我们已知道,xy的含义定义如下:

z因为可以从xy推导,因此可以隐性表示。

隐藏掉Y,即可得到我们常见的x-y色度表:

维基上的图没有把坐标点(0,1), (1,0)显示出来,因此多付一张图。

维基上的彩图如下:

该色度图有一些有趣性质,不一一推导,直接摘取自维基如下:

  • 色度图展示了对一般人可见的所有色度。这个用颜色展示的区域叫做人类视觉的色域。在CIE绘图上所有可见色度的色域是用颜色展示的马蹄铁形状。色域的曲线边界叫做“光谱轨迹”并对应于单色光,波长用纳米标记。色域底下的直线边界叫做“紫线”,这些颜色尽管在色域的边界上,但没有匹配的单色光。更少饱和的颜色位于图形内部而白色位于中央。
  • 所有可见色度对应于xyz的非负值(因此对应于XYZ的非负值)。
  • 如果你在色度图上选择了任何两点,则位于这两点之间直线上任何颜色都可以用这两个颜色混合出来。这得出了色域的形状必定是凸形的。混合三个光源形成的所有颜色都可以在色度图内的源点形成的三角形内找到(对于多个光源也如是)。
  • 两个同等明亮颜色的等量混合一般不位于这个线段的中点。用更一般术语说,在xy色度图上距离不对应于两种颜色之间的差别程度。设计了其他色彩空间(特别是CIELuv和CIELab)来满足这个问题。
  • 给定三个真实光源,这些光源不能覆盖人类视觉的色域。几何上说,在色域中没有三个点可以形成包括整个色域的三角形,更简单的说,人类视觉的色域不是三角形。

六、白点

又称为E点或者D55点。白点的推导过程不再赘述。白点用于定义色域的白色。相关关键词,白平衡。组成白点的各色能量频谱一致,因此白点的频谱是最平坦的。

七、混色

在xy色度图中,假如某个颜色由其他颜色叠加而成,该颜色的xy坐标xmix, ymix可以这样计算:

对于两种颜色叠加的情况,可以进一步简化为:

CIE XYZ的更多相关文章

  1. 彩色模型,CIE XYZ,CIE RGB

    学习DIP第8天 转载请标明出处:http://blog.csdn.net/tonyshengtan,欢迎大家转载,发现博客被某些论坛转载后,图像无法正常显示,无法正常表达本人观点,对此表示很不满意. ...

  2. Spectrum to XYZ to sRGB

    如何将频谱响应转换为对应的RGB显示值: 首先要在频率功率分布(SPD)曲线的基础上,分别使用X/Y/Z三个频率匹配曲线(spectral matching curves,又名CIE XYZ Colo ...

  3. 通过python将图片生成字符画

    基础知识: 1.python基础知识   快速学习链接:https://www.shiyanlou.com/courses/214 2.linux命令行操作   快速学习链接:https://www. ...

  4. [OpenCV] IplImage and Functions

    In this chapter, APIs will make U crazy. Good luck! Next, Review Linear Algebra.  Ref: http://blog.c ...

  5. Emgu学习之(二)——图像读取、显示、保存

    visual Studio Community 2015 工程和源代码:http://pan.baidu.com/s/1o6u5Fdw 内容 在这篇文章中将提到以下内容: 从文件中读取图像 Image ...

  6. opencv 61篇

    (一)--安装配置.第一个程序 标签: imagebuildincludeinputpathcmd 2011-10-21 16:16 41132人阅读 评论(50) 收藏 举报  分类: OpenCV ...

  7. 【转载】颜色空间-RGB、HSI、HSV、YUV、YCbCr的简介

    转载自缘佳荟的博客. 颜色通常用三个相对独立的属性来描述,三个独立变量综合作用,自然就构成一个空间坐标,这就是颜色空间.而颜色可以由不同的角度,用三个一组的不同属性加以描述,就产生了不同的颜色空间.但 ...

  8. python image模块

    Image 模块 Image 模块提供了同名的类用来表示PIL的图像.Image模块还提供了许多工厂(factory)函数,包块从文件加载图像的函数,以及创建新图像的函数.    例子  下面的脚本加 ...

  9. Wiki: HSL和HSV色彩空间

    HSL 和 HSV(也叫做 HSB)是对RGB 色彩空间中点的两种有关系的表示,它们尝试描述比 RGB 更准确的感知颜色联系,并仍保持在计算上简单.HSL 表示 hue(色相).saturation( ...

随机推荐

  1. Django-ORM初识

    Django之ORM基础 一.ORM简介: ORM概念: 对象关系映射(Object Relational Mapping,简称ORM)模式是一种为了解决面向对象与关系数据库存在的互不匹配的现象的技术 ...

  2. Flyway - Version control for your database

    Flyway 是什么? Flyway是个数据库版本管理工具.在开发过程中,数据库难免发生变更,例如数据变更,表结构变更.新建表或者视图等等. 在项目进行时无法保证一旦开发环境中的数据库内容变化候会去测 ...

  3. angularJs input框绑定ng-model后js获取不到问题

    搬运自:https://blog.csdn.net/fenglongmiao/article/details/81545993 与其他指令一样,ng-controller指令也会创建一个子级作用域,因 ...

  4. vue keep-alive缓存问题

    搬运自:https://blog.csdn.net/dongguan_123/article/details/80910231 我的问题:列表页  > 详情页a  > 支付页  >  ...

  5. C++11 auto 与 右值

    auto: auto T = xxx; // 产生一个变量,自动推导变量类型.  存在变量拷贝的消耗.auto& T = xxx; // 产生一个变量的引用,自动推导变量类型.减少拷贝的消耗. ...

  6. python基础第9章 魔法方法、属性和迭代器(一)

    __getitem__和__setitem__: 这个方法返回与指定键想关联的值.对序列来说,键应该是0~n-1的整数,其中n为序列的长度.对映射来说,键可以是任何类型. class A : __ge ...

  7. java web 在tomcat没有正常输出

    目录 文章背景 目录 问题介绍 问题解决 说明 参考文章 版本记录 文章背景 调试程序时候突然发现一些位置设置的日志输出没有了,最后总算是解决了! 目录 问题介绍 本地运行时候的环境如下: windo ...

  8. splay 模板 洛谷3369

    题目描述 您需要写一种数据结构(可参考题目标题),来维护一些数,其中需要提供以下操作: 插入 xx 数 删除 xx 数(若有多个相同的数,因只删除一个) 查询 xx 数的排名(排名定义为比当前数小的数 ...

  9. bat命令自用其(一)

    每秒钟打印ping命令结果到指定文件: @echo off set /p ip=Input the IP required to monitor: :starts echo %date% %time% ...

  10. 秦曾昌人工智能课程---5、KNN和朴素贝叶斯

    秦曾昌人工智能课程---5.KNN和朴素贝叶斯 一.总结 一句话总结: 拟合和概率:构建机器学习模型,一般有拟合和概率两种方式 轻学无用:一定要保证学有所用,要深入学习,比如之前做的安卓,一定要学通, ...