随时看看五颜六色的世界

image

五颜六色的世界

资料整理笔记。

在craft里面自已记录内容的目录叫“五颜六色的世界”。娃小的时候,哄娃睡觉时候给娃写了一首歌,里面有一句“总有一天你要远直高飞,看未知世界五颜六色的美”。建目录的时候想到这儿,知识是世界的,世界是丰富多彩的,每一点滴的知识学习都是在探索这个五颜六色的世界。

自已平时写前端或者画图的时候,也经常用到颜色模型,虽然那些简要知识日常都够用了,但来不知道为什么中午脑子一热,有了一个想要再挖一点的念头。所以晚上就燥起来吧。

正好是这次内容是与颜色相关的,就用了目录名称当标题。

image

这段不喜欢的建议跳过

首先,我们理解一个概念,“比如我同事今天穿了一件好看的Raspberry(树莓红)的衬衫”,这句话日常生活中是对的,但科学上讲是错的,她的衬衫其实没有颜色,物体本身是没有颜色的。我们所看到的物体的颜色,其实是物体反射或发射出的光进入我们眼睛后,大脑对其进行解释的结果。就像一张白纸,在白光下是白色的,但如果我们用红色的光照射它,它就会变成红色。

image

那么光为什么有不同的颜色呢?这涉及到光的物理性质。光是一种电磁波,像海浪一样有波长和频率。可见光的波长范围大约是380纳米到780纳米。不同波长的光,我们眼睛感知到的颜色是不一样的。比如,波长在620750纳米之间的光,我们看到的就是红色;波长在450490纳米之间的光,我们看到的就是蓝色。

而我们通常看到的白光,比如太阳光,其实是由各种不同波长的光混合而成的。就像一束彩虹,红橙黄绿青蓝紫,各种颜色的光都有。

谱功率密度(SPD)

谱功率密度(SPD)可以理解为一束光中不同颜色的"配方"。就像一杯果汁,可能由不同比例的苹果汁、橙汁、葡萄汁混合而成。SPD描述了一束光中不同波长(也就是不同颜色)的光所占的比例。而且,光的混合是可以简单地"加"在一起的。就像你喝一杯果汁还不过瘾,再加一杯,味道就会更浓郁。

其次,我们人眼内有三种视锥细胞,分别对红、绿、蓝三种颜色的光最敏感。它们就像三个女孩,对不同颜色的衣服有不同的喜好。比如,绿色视锥细胞最喜欢波长500纳米左右的"绿色衣服",而红色视锥细胞则对650纳米左右的"红色衣服"情有独钟。有意思的是,每个人眼中这三种细胞的分布都不太一样,所以有时候我们看同样的一个东西,但我们的感觉是不一样的。

当一束光进入我们眼睛时,三种视锥细胞就会根据自己的"喜好"对这束光产生不同的响应,然后把这些响应"报告"给大脑。大脑再根据这些信息,判断出我们所感知到的颜色。

有时候,不同组成的光也可能会让视锥细胞产生相同的响应,从而让我们感知到相同的颜色。这就叫同色异谱。打个比方,一块纯巧克力蛋糕和一块巧克力慕斯蛋糕,虽然配方不同,但可能会给人相似的味觉感受。

最后,在自然界和电脑屏幕上,颜色都是以"加色"的方式混合的。多种颜色的光混在一起,就会让我们感觉更亮。这就像在黑暗的房间里,你打开一盏灯,房间变亮了一些;再打开一盏,房间就会变得更亮。

色域

image

这个图大家应该经常见色域图。

  • ProPhoto RGB: 由Kodak公司开发,色域非常广,几乎覆盖了人眼可见的所有颜色。常用于专业的摄影后期处理,在普通显示器上可能无法完全显示其色彩。
  • Adobe RGB: 由Adobe公司开发,比sRGB的色域更广,常用于印刷、平面设计等领域。
  • SWOP CMYK:是一种标准的CMYK印刷色彩空间,用于杂志等印刷品。
  • sRGB: 由微软和惠普开发的标准RGB色彩空间,是目前使用最广泛的色彩空间。适用于网页、普通级照片打印等。大部分消费级显示设备都覆盖sRGB色域。
  • ColorMatch RGB: 由Radius公司开发,比sRGB稍大,曾在早期的Apple显示器上使用。现在已经很少使用。
  • D65 white point: 并非一个色彩空间,而是一个标准光源。D65模拟正午太阳光,广泛用作显示器、照相机的白点校准标准。白点会影响色彩的显示。

所以参考这部分,买显示设备的时候,根据你需求去挑选相应参数的设备吧,不要被厂商的介绍牵着你走。

色彩管理可协助您在数位相机、扫描器、电脑萤幕与印表机之间达成颜色的一致。当您将数位相机中的影像显示在萤幕上,并最终使用印表机列印时,影像颜色也会有所调移。调移之所以会发生,是因为每个装置都有不同的色域,因此会重新产生不同的颜色。

image

image

A.描述档会描述输入装置和文件的色域。 B.色彩管理系统使用描述档的描述来识别文件的实际色彩。 C.萤幕的描述档会告知色彩管理系统如何将数值转换成萤幕的色域。 D.使用输出装置的描述档,色彩管理系统可将文件的数值转换成输出装置的颜色值,以列印实际颜色。

在计算机领域,为了方便处理颜色,人们发明了RGB、CMY、HSV等不同的颜色模型。就像用不同的调色板来调配颜色一样。比如在RGB模型中,我们用红、绿、蓝三种基本色光以不同比例混合,就能得到各种不同的颜色。小时候的调色板、彩泥弄出各种颜色都是这样的方式。

Named Colors(命名颜色)模型

使用预定义的颜色名称,如"red"、"blue"、"green"等。

css支持140种命名颜色。

image

RGB颜色模型(三元色)

image

又称红绿蓝颜色模型,是一种加色模型,故名思意将红(Red)、绿(Green)、蓝(Blue)三原色的色光以不同的比例相加混色,以合成产生各种色彩光。

RGB颜色模型的主要目的是在电子设备中表示和显示色彩丰富的图像,如电视和电脑显示器。它利用了人眼和大脑的特性,通过混合红、绿、蓝三种基本色光来产生各种色彩。

起源

  • 1802年:英国物理学家托马斯·杨提出三原色理论,认为人眼有三种感光器,对应红、绿、蓝。
  • 1861年:苏格兰物理学家詹姆斯·麦克斯韦用红、绿、蓝滤色片拍摄同一场景,叠加后形成彩色图像,证明了三原色理论,奠定了RGB模型的应用基础。
  • 1938年:美国科学家约翰·洛吉·贝尔德发明世界首台彩色电视机,使用RGB三原色原理,通过三种颜色的电子枪产生彩色图像。
  • 1977年:苹果公司推出支持RGB颜色显示的Apple II个人电脑,RGB模型成为计算机显示技术的标准,延续至今。

工作原理

  • 屏幕上有许多像素点,每个像素点由红、绿、蓝三个子像素组成。
  • 通过调节每个子像素的亮度,可以混合出不同的颜色。
  • 人眼看屏幕时,由于像素点很小且密集,无法分辨单独的子像素。
  • 大脑会自动将相邻的红、绿、蓝子像素"失焦"并混合,形成我们感知到的颜色。

RGB颜色表示方式

在RGB模型中,每种原色都有一个0到255之间的数值来表示其亮度。例如:

  • 红色: RGB(255, 0, 0)
  • 绿色: RGB(0, 255, 0)
  • 蓝色: RGB(0, 0, 255)
  • 黑色: RGB(0, 0, 0)
  • 白色: RGB(255, 255, 255)

通过调整三种原色的亮度值,可以混合出超过16,777,216种不同的颜色。也就是256256256,猜为什么是256呢

不正经科谱:女性大概能够识别大约180万种颜色,而男性只能够识别大约130万种。所以别跟女性衣服口红好不好看,因为你看不到人家看到的世界。

RGB颜色混合原理

RGB颜色混合遵循以下原则:

  1. 三种原色光以不同的比例混合,可以产生各种不同的颜色。
  2. 两种原色光混合可以产生另一种颜色:
    • 红 + 绿 = 黄
    • 红 + 蓝 = 品红
    • 绿 + 蓝 = 青
  3. 三种原色光以相等的比例混合,可以产生白色光。
  4. 任何颜色与其互补色混合,都会产生白色光。

image

扩展的 RGBA

RGBA是在RGB颜色模型的基础上,增加了一个Alpha通道,用于表示颜色的透明度。因此,RGBA颜色由四个部分组成:红色(Red)、绿色(Green)、蓝色(Blue)和透明度(Alpha)。

  1. 1984年:Alpha通道概念首次提出,用于表示图像透明度。
  2. 1992年:PNG图像格式发布,支持Alpha通道。
  3. 1996年:CSS1发布,支持RGB颜色模型。
  4. 1998年:CSS2发布,引入有限的透明度支持。
  5. 2002年:SVG 1.0规范发布,支持RGBA颜色模型。
  6. 2003年:CSS3草案引入RGBA颜色模型。
  7. 2011年:CSS Color Module Level 3成为W3C推荐标准,正式支持RGBA。

所以RGBA的表示方式就是:

RGBA(255,255,255,1)

HEX16进制颜色模型

image

16进制颜色是基于RGB颜色模型的颜色表示方式,使用16进制数字来表示红、绿、蓝三种原色的亮度值。

在16进制颜色表示法中,每种原色(红、绿、蓝)都用两位16进制数字表示,范围从00到FF。例如:

  • 红色: #FF0000
  • 绿色: #00FF00
  • 蓝色: #0000FF
  • 黑色: #000000
  • 白色: #FFFFFF

16进制数字的范围从0到9,然后是A到F。两位16进制数字可以表示256种不同的亮度值,三种原色组合在一起,可以表示超过16,777,216种不同的颜色。

256**3 = 16** 6 = 16,777,216

16进制颜色的转换原理

要将RGB颜色转换为16进制颜色,需要执行以下步骤:

  1. 将每种原色的亮度值(0-255)除以16,得到商和余数。
  2. 将商转换为16进制数字(0-9或A-F),作为第一位。
  3. 将余数转换为16进制数字(0-9或A-F),作为第二位。
  4. 将三种原色的16进制数字按照红、绿、蓝的顺序组合在一起,并在前面加上"#"符号。

例如,将RGB颜色(255, 165, 0)转换为16进制颜色:

  • 红色: 255 ÷ 16 = 15 余 15,对应的16进制数字为FF
  • 绿色: 165 ÷ 16 = 10 余 5,对应的16进制数字为A5
  • 蓝色: 0 ÷ 16 = 0 余 0,对应的16进制数字为00

因此,RGB颜色(255, 165, 0)对应的16进制颜色为#FFA500。

HSL

image

HSL是一种基于人类感知的颜色模型,代表色相(Hue)、饱和度(Saturation)和亮度(Lightness)。HSL更接近人类对颜色的直观感受。

HSL、HSV/HSB在概念和数值上非常相近,主要区别在于明暗度的表示名称不同。

  • HSL使用亮度(Lightness)表示明暗,取值范围0-100%。
  • HSV和HSB使用明度(Value或Brightness)表示明暗,取值范围0-100%。

起源

  • 1938年:Albert Munsell提出Munsell颜色系统,包括色相、明度和彩度三个维度。
  • 1978年:Alvy Ray Smith在Munsell颜色系统基础上,提出了HSV颜色模型,更适合计算机处理。
  • 1979年:Tektronix研究人员提出HLS颜色模型,是HSL的前身。
  • 1996年:Wolfgang Ortmann正式提出HSL颜色模型。
  • 2011年:CSS Color Module Level 3成为W3C推荐标准,HSL得到广泛浏览器支持。
  • 2014年:CSS Color Module Level 4引入更多HSL相关特性,如HSLA和color()函数。

HSL的工作原理

HSL颜色模型使用三个维度来描述颜色:

  1. 色相(Hue):表示颜色的基本属性,如红色、绿色、蓝色等。色相用一个0到360度的角度表示,0度为红色,120度为绿色,240度为蓝色。
  2. 饱和度(Saturation):表示颜色的纯度,即颜色中灰色的占比。饱和度用0%到100%表示,0%为灰色,100%为纯色。
  3. 亮度(Lightness):表示颜色的明暗程度。亮度用0%到100%表示,0%为黑色,100%为白色,50%为纯色。

通过调整这三个维度的值,可以得到各种不同的颜色。例如:

  • hsl(0, 100%, 50%):纯红色
  • hsl(120, 100%, 50%):纯绿色
  • hsl(240, 100%, 50%):纯蓝色
  • hsl(0, 0%, 50%):中性灰色
  • hsl(0, 100%, 100%):白色
  • hsl(0, 100%, 0%):黑色

扩展的HSLA

HSLA是HSL的扩展,增加了一个透明度参数。例如,hsla(0, 100%, 50%, 0.5)代表半透明的红色

HWB颜色模型

image

HWB是一种颜色模型,代表色相(Hue)、白度(Whiteness)和黑度(Blackness)。它是HSL颜色模型的一种替代方案,旨在提供更直观、更易于理解的颜色表示方式。

起源

  1. 1996年:Alvy Ray Smith首次提出HWB颜色模型的概念。
  2. 2000年:Michael Bourgoin完善了HWB颜色模型,并与HSB(HSV)模型进行比较。
  3. 2005年:W3C的SVG工作组开始讨论在SVG中支持HWB。
  4. 2011年:CSS Color Module Level 4草案发布,包括了对HWB的支持。
  5. 2021年:CSS Color Module Level 4候选推荐标准发布,完善了HWB的定义和用法。

工作原理

HWB颜色模型使用三个分量来描述颜色:

  1. 色相(Hue):表示颜色的基本属性,如红色、绿色、蓝色等。色相用一个0到360度的角度表示,与HSL中的色相概念相同。
  2. 白度(Whiteness):表示颜色中白色的占比,用0%到100%表示。白度为100%时,颜色为纯白色;白度为0%时,颜色由色相和黑度决定。
  3. 黑度(Blackness):表示颜色中黑色的占比,用0%到100%表示。黑度为100%时,颜色为纯黑色;黑度为0%时,颜色由色相和白度决定。

通过调整这三个分量的值,可以得到各种不同的颜色。例如:

  • hwb(0, 0%, 0%):纯红色
  • hwb(120, 0%, 0%):纯绿色
  • hwb(240, 0%, 0%):纯蓝色
  • hwb(0, 100%, 0%):白色
  • hwb(0, 0%, 100%):黑色
  • hwb(60, 50%, 0%):浅黄色
  • hwb(180, 0%, 50%):深青色

HWB颜色模型尚未得到普遍支持

CMYK

image

CMYK是一种减色模型,主要用于印刷行业。它代表青色(Cyan)、品红色(Magenta)、黄色(Yellow)和黑色(Key)。

起源

  1. 1906年,美国印刷商Ira Washington Rubel发明了偏移印刷技术,奠定了现代印刷行业的基础。
  2. 20世纪30年代,印刷行业开始使用青色、品红色和黄色三种油墨进行彩色印刷。
  3. 20世纪50年代,黑色油墨被引入印刷过程,以提高图像的对比度和清晰度。这标志着CMYK颜色模型的诞生。
  4. 1970年代,美国印刷工业协会(GATF)制定了CMYK颜色标准,促进了CMYK在印刷行业的广泛应用。
  5. 1980年代,随着计算机技术的发展,CMYK颜色模型开始被用于数字图像处理和打印机驱动程序。

工作原理

CMYK颜色模型基于光的减色原理,通过吸收特定波长的光来呈现颜色。

  1. 青色(Cyan)油墨吸收红光,反射绿光和蓝光。
  2. 品红色(Magenta)油墨吸收绿光,反射红光和蓝光。
  3. 黄色(Yellow)油墨吸收蓝光,反射红光和绿光。
  4. 黑色(Key)油墨用于提高图像的对比度和清晰度,并补偿其他三种油墨的不足。

在印刷过程中,青色、品红色、黄色和黑色油墨以不同的比例叠加在白色纸张上,通过减色混合形成各种颜色。例如:

  • 青色 + 黄色 = 绿色
  • 青色 + 品红色 = 蓝色
  • 品红色 + 黄色 = 红色
  • 青色 + 品红色 + 黄色 + 黑色 = 深黑色

CMYK颜色模型中,每种颜色的值通常以百分比表示,范围从0%到100%。例如:

  • C=100%, M=0%, Y=0%, K=0%:纯青色
  • C=0%, M=100%, Y=0%, K=0%:纯品红色
  • C=0%, M=0%, Y=100%, K=0%:纯黄色
  • C=0%, M=0%, Y=0%, K=100%:纯黑色

CSS目前不直接支持CMYK颜色模型

结束了!今日循环歌曲,鹿先森风格不太一样了,

image

image

还有一些其它的,就不再介绍了,就我当前的工作和日常使用领域,基本上也跟它们没有交集了。相见不如不见,相见了还要让我去阅读。对于一个互联网刷漆的来说,上面的这些颜色模型已经能让我刷新五颜六色的互联网世界了。

CIE LAB:一种基于人类感知的颜色模型,用L表示亮度,A和B表示色度。广泛用于色彩管理和印刷行业。

CIE XYZ:国际照明委员会(CIE)制定的一种基于人眼感知的颜色模型,是许多其他颜色模型的基础。

YUV:一种常用于视频编码和传输的颜色模型,将亮度(Y)与色度(U和V)分离,以减少带宽占用。

YCbCr:与YUV类似,也是一种用于视频编码和传输的颜色模型,常用于JPEG图像压缩。

Munsell(孟塞尔颜色系统):一种基于人类感知的颜色组织方式,包括色相、明度和彩度三个维度,常用于艺术、设计和色彩教学领域。

Pantone(潘通色):一种标准化的颜色匹配系统,提供了大量预定义的颜色,广泛用于平面设计、印刷和纺织行业。

NCS(自然颜色系统):一种基于人类感知的颜色模型,用于描述和沟通颜色,常用于建筑、室内设计和色彩教学领域。

参考资料:

adobe官方的關於色彩管理

BenQ官网

颜色空间理论.pdf