以前作个设计,如今从事IT,脑子里面关于RGB,RGBA,CMY,CMYK,YUV,可是具体理论仍是不扎实。若干年前以前写过《水煮RGB与CMYK色彩模型—色彩与光学相关物理理论浅叙》《三色视者与四色视者身后的理论基础:色彩原理》html
光学的三原色: 红(Red)、绿(Green)、蓝(Blue) (RGB)。网站
印刷的三原色: 青(Cyan)、品红(Magenta)、黄(Yellow) (CMYK)设计
印刷色是光照射在印刷物上, 而后折射到人眼的光的合成,因此印刷色会比光学暗淡,由于印刷色是通过印刷物过滤过光合成的,天然会比较相对暗淡。3d
C(100) +M(100) +Y(100) = 黑色(100,100,100)cdn
可见黑色就是青色、品与黄色之和,可是这三种颜色混成的黑色不够纯,因此印刷学就引进了K(Black)黑色,由于B已经被Blue占用,因此黑色就只好用引文字母黑色的最后一个字母K,因此:htm
C(100) +M(100) +Y(100) + K(100) 等价于 C(0) +M(0) + Y(0) + K(100) = 黑色blog
光学三原色如何获得白色, 配色以下:get
R(0) + G(0) + B(0)+A(255) = C(0) +M(0) + Y(0) + K(100) = 黑色数学
联想下,是否是可见黑色就是没有颜色(0,0,0)?it
咱们显示屏通常采用RGB,印刷采用CMY。RGB/CMY色彩模型是经过不一样量的(红/绿/蓝)||(青/品红/黄)来描述一个颜色的,对人类来讲很不直观,难以理解。他们对机器很友好的色彩模式,但并不够人性化,难以直观理解,由于咱们对色彩的认识每每是:什么颜色?鲜艳不鲜艳?亮仍是暗?
HSL 模式和HSB(HSV) 都是基于 RGB 的,是做为一个更方便友好的方法建立出来的。HSB和HSV是是同样的,只是叫法不同而已
HSL:色相H(Hue) ,饱和度S(Saturation),亮度L(Lightness)
HSB:色相H(Hue) ,饱和度S(Saturation),明度B(Brightness)
色相H(Hue)控制颜色种类,取值0-360°的圆心角。须要记住色相环上的六大主色:红黄绿青蓝洋红(即RGB夹CMY呈60°分布)用做基本参照
饱和度S(Saturation)控制颜色的纯度。取值0-100%。数值越大,颜色中的灰色越少,颜色越鲜艳,呈现一种从灰度到纯色的变化
亮度L(Lightness)和明度B(Brightness)控制色彩的明暗变化,取值0-100%。
HSB与HSB其中的S与L有着不一样的表述。这里暂且忽略,推荐阅读:色彩空间中的 HSL、HSV、HSB 有什么区别- AK23的回答 - 知乎
Lab颜色模型是由国际照明委员会(CIE:International Commission on illumination)制定的一种色彩模式。
L*表明明度,取值0~100
a*表明从绿色到红色的份量 ,取值-128~127
b*表明从蓝色到黄色的份量,取值-128~127
这样规定是根据人类的视觉原理,灵长类动物的视觉都有两条通道:红绿通道和蓝黄通道,大多数动物最多只有一条通道,若是有人缺失其中一条,就是咱们所说的色盲。
其实,咱们生活中所说的颜色和光谱中可见光的颜色并非严格对等的。实际上,存在两种颜色的定义:
天然界真实存在的颜色:严格对应波长,实际上所谓的不一样的颜色就是可见光电磁波的不一样波长(或者能量不一样)的光子。好比波长为550nm的光子、波长为700 nm的光子...
人眼感知的颜色:人眼对整个可见光谱的感知。由于人眼视网膜上,主要负责感知色彩的视锥细胞对不一样波长的光子的感知并不相同,存在一个相应的范围
而人眼对不一样波长的感知能力能够用下图中的白色曲线来表示。白线对应的值越高,表示人眼对此波段的光子的感知越灵敏。人眼把S那条线感觉到的光子都认知为蓝色、把M那天线的认知为绿色、把L那天线对应的认知为红色。
实际上,上述的三种颜色:蓝、绿和红色(RGB)正是咱们所知道的三原色。因此,事实上,你只能看到三种颜色:蓝绿红!等等……事实不是这样啊!咱们的世界明明丰富屡次啊??你怎么在这里瞎扯?其实,你看到的多种多样的颜色是这三种颜色组合在一块儿的结果。这三种颜色比如一个三维空间里的三个坐标,你把他们不一样程度的组合起来,就能够造成各类各样的颜色。实际上,他们造成了一个3D的色彩空间,以下图,空间中每个点都表明了一种颜色。
因此你看到的颜色其实就是人眼在对蓝绿红这三种光子的测量,而后线性的叠加而已!其实咱们的RGB显示器就是运用了这个原理,显示出不一样的色彩。因此,不少颜色并非真正的一个颜色而已,它表明的是这个物体发出的光中,蓝绿红这三种光的相对强度的组合!!这些美丽的颜色中很大一部分其实只是你的脑补而已…… [不过,由于人眼视锥细胞的响应也存在饱和,也就是说蓝、绿和红不可能无限的亮,所以,人类的感知只是这个三维空间里的一个有限区域。这也是CIE定义出他们最有名的CIE色表的来源。由于人类对色彩的感知是有限的,且咱们实际上对实际的光谱更感兴趣,因此,根据人眼对色彩的响应曲线,咱们能够把上面的三维空间变换到二维(以下图)
而这二维的平面涵盖了人眼能看到的全部颜色(注意,实际上上述的三维色彩空间里有很大一部分是人眼没法识别的颜色,由于人眼视锥细胞的感光能力是有限的!),因而就造成了下面的CIE图,此图是1976年的修改标准,该图最先由1931年提出。
而,经过数学运算,不难算出真实光谱,好比450nm的光应该什么颜色的。你只须要把450nm处三种颜色的视锥细胞的响应叠加起来就好了。经过这样的方法,你就能够计算出一条曲线,它能够近似表明天然界中真实的色彩。此外,你还能够计算出色温曲线。若是你还记得黑体这个概念的话,不一样温度会给出不一样的能谱分布,以下图,不一样的能谱分布中,蓝、绿和红色的相对强度不一样。
那么一样经过数学的运算,你能够计算出不一样温度黑体在人眼中所反映出的“颜色”。就是图中间的那条曲线。太阳的温度是~6000K,因而咱们能够对应出来,太阳是白色(偏一点点黄)。]然而,还须要提到的是,上面说的是物体发出的光,好比太阳(黄白色),还有你的显示器。那么绿叶的颜色又是怎么回事?白纸呢?白种人为何那么白?黑人为何那么黑?由于他们不发光。因此,其实他们的颜色只是他们反射的光中蓝绿红这三种光的相对强度的组合!!所以,对于反光的物体来讲,光源的颜色覆盖很重要。这也是为何咱们使用日光灯或者白光灯的缘由。试想一下,若是你用绿光灯,你还能看到丰富多彩的衣服和图画吗?值得一提的是,汉语里的紫色实际上是一个比较模糊的概念,既能够对英语英语里的violet,也能够是purple。严格来讲,violet更接近比蓝波波长更短的颜色,也就是红和绿都不多,而蓝色也很弱的情形。至关于黑中加了点蓝的感受。而紫色则是纯粹的脑补大红+大蓝而已。无论则样,紫色并非真实的颜色。那么violet呢?其实它也并非真实的,咱们再来看一副更精确的视锥细胞响应曲线
或者为了更加严谨,咱们来看看论文里实际的测量曲线:
注意到了吗?实际上在比蓝光中较短的波段红色视锥细胞的响应也比较突出,大概是0.1,而蓝色大概是0.7-0.8。所以,你看到的violet也是蓝+红组合的结果。
一句话总结,咱们大体能够理解为,颜色是天然界的可见光波段的光谱在人眼中的一个线性投影。咱们能够更具CIE,把人眼中看到的“颜色”,还原到天然界“真实的颜色”。
天然界中任何一点色均可以在Lab空间中表达出来,它的色彩空间比RGB空间还要大(有毛用?超过了RGB色域屏幕显示不了,超过了CMYK的色域打印不了,超过了视觉色域看都看不了!高精度下lab偶尔能够做为颜色模式的中间标尺,可是这和你一点关系都没有。这纯粹是数学公式定义的结果——色域很大纯粹是由于定义范围内有许多多余的颜色)。不过对PS用户来讲:LAB最大的优点就是调色,最经常使用的也是调色。明度和色彩信息由于是分离的,能够容许作出更多的操做,更精准的调整。也能够通简单的调整就出作一些别的模式很是复杂的操做才能达到的效果。好比照片过暴致使高光细节丢失严重,就能够用LAB修补高光部分的色彩信息。
这种模式是以数字化方式来描述人的视觉感应, 与设备无关,因此它弥补了RGB和CMYK模式必须依赖于设备色彩特性的不足。因为Lab的色彩空间要比RGB模式和CMYK模式的色彩空间大。
注:
Catmull和Smith在1971至1972年间提出了这个不可或缺的alpha数值,使得alpha渲染和alpha合成变得可能。提出者以alpha来命名是源于经典的线性插值方程αA + (1-α)B所用的就是这个希腊字母。PNG是一种使用RGBA的图像格式。
注:通常两个色彩空间,找一个变换矩阵,能够快速转换。
原文连接:色彩空间RGB/CMYK/HSL/HSB/HSV/Lab/YUV基础理论及转换方法:RGB与YUV - 计算机视觉与计算机图形学的图像处理所涉及的基础理论知识 - 周陆军的我的网站,原文阅读体验可能更好,文章更新只在源站进行,若有不妥之处,请留言告知,多谢
参考文章:
色彩空间表示与转换 zhuanlan.zhihu.com/p/24281841