把颜色模型从rgbrgb yuv 转换工具为yuv有什么好处

RGB里的科学(下) - 为程序员服务
RGB里的科学(下)
张挺&高级前端开发工程师
RGB其实是一种非常泛的概念,只是口头表述,其实有着非常多的歧义。
颜色最开始是无法量化的,直到后来国际上才有一套标准——CIE标准色度学系统。
CIE(国际照明委员会)是位于欧洲的一个国际学术研究机构,1931年,CIE在会议上根据之前的实验成果提出了一个标准——CIE1931-RGB标准色度系统。
而CIE随后进行了一系列实验,选取了700nm(
R ) 546.1nm(G) 435.8nm(B)三种波长的单色光作为三原色, 来辅助合成其他颜色。
经过一定的人眼视觉刺激实验,最终产生了三色刺激值曲线。
有了数据就可以精确的量化一个值了,我们可以看出580nm左右(红绿线交叉点)的黄色光,可以用1:1(经过亮度换算..)的红绿两种原色混合来模拟。
但是这个颜色的光的定义也是人为的,是因为红光与绿光按某种比例复合后,对细胞刺激后产生的色觉可与眼睛对单纯的黄光的色觉等效,然后人觉得这个颜色不错,就定义成了黄色光,囧……
这让我想起来前几周的那件衣服,白金还是蓝色,傻傻分不清楚,那都是人眼的错。
(图片来源:果壳网)
所以一切颜色的定义并不是凭空产生,而是人眼的锥形感光细胞的错觉,这是一个生理性问题。
CIE根据曲线图,希望将三种光线的刺激表示成可视的颜色,为了能在二维空间中表现,将颜色分化为两部分:亮度(光的振幅,即明暗程度)、色度(光的波长组合,即具体某种颜色),然后将亮度(Y)变量分离出来,之后用比例来表示三色的刺激值,就变成了:
这样就能得出r+g+b=1。由此可见,色度坐标r、g、b中只有两个变量是独立的(b可以反推)。这样我们就把刺激值R、G、B转换成r、g、Y(亮度)三个值,把r、g两个值绘制到二维空间得到的图就是色域图。
图上中间的颜色就表示单色的光谱。例如540nm的单色光,可以看到由r=0、g=1、b=(1-r-g)=0三个原色的分量组成。
再例如380-540nm波段的单色光,由于颜色匹配实验结果中红色存在负值的原因,该段色域落在了r轴的负区间内。
自然界中,人眼可分辨的颜色,都落在光谱曲线包围的范围内。
CIE1931-RGB标准是根据实验结果制定的,出现的负值在计算和转换时非常不便。CIE假定人对色彩的感知是线性的,因此对上面的r-g色域图进行了线性变换,将可见光色域变换到正数区域内。CIE在CIE1931-RGB色域中选择了一个三角形,该三角形覆盖了所有可见色域,之后将该三角形进行如下的线性变换,将可见色域变换到(0,0)(0,1)(1,0)的正数区域内。即假想出三原色X、Y、Z,它们不存在于自然界中,但更方便计算。
得到的结果就是CIE1931-XYZ度图:
注意这里的颜色只是示意,事实上没有设备能完全还上面所有的自然色域
这个图有些有意思的性质:
该色度图所示意的颜色包含了一般人可见的所有颜色,即人类视觉的色域。色域的马蹄形弧线边界对应自然界中的单色光。色域下方直线的边界只能由多种单色光混合成。
在该图中任意选定两点,两点间直线上的颜色可由这两点的颜色混合成。给定三个点,三点构成的三角形内颜色可由这三个点颜色混合成。
给定三个真实光源,混合得出的色域只能是三角形(例如液晶显示器的评测结果),绝对不可能完全覆盖人类视觉色域。
这就是CIE1931-XYZ标准色度学系统。该系统是国际上色度计算、颜色测量和颜色表征的统一标准,是几乎所有测色仪器的设计与制造依据。
根据理论只是,人们把描述颜色的数学模型定义成了颜色模型。通常颜色模型分为两类:设备相关和设备无关。
设备无关的颜色模型:这类颜色模型是基于人眼对色彩感知的度量建立的数学模型,例如上面提到的CIE-RGB、CIE-XYZ颜色模型。这些颜色模型主要用于计算和测量。
设备相关的颜色模型:以最长见的RGB模型为例,一组确定的RGB数值,在一个液晶屏上显示,最终会作用到三色LED的电压上。这样一组值在不同设备上解释时,得到的颜色可能并不相同。常见的设备相关模型有:RGB、CMYK、YUV、HSL、HSB(HSV)、YCbCr等。这类颜色模型主要用于设备显示、数据传输等。
这里不得不提一下&CIE-Yxy模型。
该模型由CIE-XYZ衍生得来。其中,
Yxy中的Y表示光的亮度。这个模型投影到x-y平面上即上面的CIE1931-XYZ色度图。其中x、y分量的取值范围是[0,1]。有时该模型也被称作CIE-xyY。
正如上面写的,这个模型是由真实的人眼颜色匹配实验得出的模型,RGB分别表示那三个固定波长的光的份量。
RGB是最常见的颜色模型,**设备相关**。三个数值代表R、G、B分量,取值均为[0,255],我们常说的RGB其实就是这个。
人们常用CIE-XYZ&或者CIE-xyY颜色模型作为参考坐标系进行比较叠加。
一般设备的RGB仅能表现CIE-XYZ很少一部分。
比如OSX中ColorCync工具 将普通RGB显示到Yxy立体色域中,就是如下的模样。
为了将设备相关的颜色模型和设备不相关的颜色模型进行互相转换,人们常以RGB和CIE-XYZ做为桥梁进行转换。
为了能将RGB映射到真实的视觉颜色空间XYZ中,需要预先定义一些常量。
根据上面的CIE-XYZ色域图的介绍,给定三个光源,最终能覆盖的色域只能是三角形,所以这里需要定义R、G、B在XYZ色域的绝对位置。
例如下图就是sRGB定义的R、G、B在色彩空间中的绝对位置。这样就建立的RGB到XYZ的线性关系。
由于开发时间和开发厂家的不同,基于RGB模型还衍生出了Adobe
RGB和sRGB等等色彩空间。
而不同的色彩空间覆盖的色域会有一些差异
下面是一些常见的RGB色彩空间:
通常Photoshop绘图时,默认选择的是sRGB,该色域可以在大多数设备上完整呈现出来。那些号称覆盖100%色域的上流显示器,指的是覆盖了AdobeRGB色域。目前没有设备能完整呈现上图完整的色域
介绍了完整的颜色模型和色彩空间的知识,还附带三维的立体色域,值的一看。
RGB的知识加上色彩的知识非常的深奥,名词也非常的多,我只是简单地学习一下,弥补下这方面知识的缺失,本想加上色彩管理的部分,不过个人能力有限,还未理解,所以就此作罢,有兴趣的同学可以继续深入。
原文地址:, 感谢原作者分享。
您可能感兴趣的代码}

我要回帖

更多关于 rgb yuv raw 转换 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信