光与色的故事

               ---颜色模型浅析

1.光的故事

光是一种电磁波,同声波相类似,包含了不同频率分量。不同的是,电磁波能够在真空中传播。电磁波通常是由一种频率或多种频率构成。比如非常高频率的电磁波构成了微波;非常低频率的构成了无线电波。然而,人眼能够察觉到的电磁波频率是非常窄的一个范围,频率范围大概在429TH到750THz(1 THz = 1 TeraHertz = 10^12 Hz)。而其他频率的电磁波是不能够被人眼所感知的。

单色光是由一种频率构成的光。(但是大部分情况下,光是由多种频率构成的多色光)。单色光在人眼看来是一种纯色,不可能是白色或是洋红色。既然单色光是由一种频率构成的光,那么单色光的波形能够用sine表示为:

      Sine的高度代表的是光的亮度强度,一个周期的长度代表的是光的波长,波长同频率的倒数相关。光的传播速度为300000000m/s,那么根据光速与波长和频率的关系,可知:

每一种频率所对应的波长为300000000/f,因此,我们可以得出,人眼能够感受到的光的波长大概是在400nm到700nm之间。

可见光光谱表示所可有能够被单色光表示的颜色。有些光源,像激光和钠灯发出的是单色光,但是,一般光源都是发射出多色光。比如太阳光包含了所有颜色的光谱。这意味着红色、黄色、绿色、蓝色以及紫色的加和看起来就是白色。从物理学概念将,其组合并不是真正的白色,上述颜色的加和是由许多不同sine曲线所表示的,只是被人脑所反映为白色。因此,颜色一定程度上来说是属于心理学的范畴,而不是物理学的范畴。

光波是由许多不同频率的sine曲线所加和而成。每一种sine曲线都有其自身的频率和振幅。频谱显示的了每一种频率的振幅。如下图是一种黄色LED等的频谱图。

频谱图中最高分量为主频分量,也即是从该频谱,人眼所能观察到的颜色。如果黄色LED灯能够用单色光表示,那么它的频谱图表示为:

上述两种频谱图所表示的光源,对人眼来说,都表示的是黄色。这个现象揭示了一种有趣的事实:不同频谱的光,对人眼来说,有可能代表的是一种颜色。如果人眼能够区分出不同颜色频谱的微小差别,那么人眼能够观察到无数的颜色。但是,人眼的工作模式是并不是这样,人眼把所有光源的频谱主要分为三种颜色的信号分量:红色、绿色、蓝色分量,这三种颜色分量的所有组合即构成了人眼所能观察到的颜色。

2.颜色的故事

       Wiki是这样说的:颜色或色彩是通过眼、脑和我们的生活经验所产生的一种对光的视觉效应。嗯,简单点说,颜色就是人对光的一种感觉,由大脑产生的一种感觉。感觉是一个很主观的东西,你怎么确定你看到的红色和我看到的是一样的呢?这个视频解释的很不错。我们需要先假设正常人对于同一种光产生的感觉基本是一致的,讨论才能继续下去。

人的视网膜上布满了感光细胞,当有光线传入人眼时,这些细胞就会将刺激转化为视神经的电信号,最终在大脑得到解释。视网膜上有两类感光细胞:视锥细胞和视杆细胞。

视锥细胞大都集中在视网膜的中央,每个视网膜大概有700万个左右。每个视锥细胞包含有一种感光色素,分别对红、绿、蓝三种光敏感。这类细胞能在较明亮的环境中提供辨别颜色和形成精细视觉的功能。

视杆细胞分散分布在视网膜上,每个视网膜大概有1亿个以上。这类细胞对光线更为敏感(敏感程度是视锥细胞的100多倍),一个光子就足以激发它的活动。视杆细胞不能感受颜色、分辨精细的空间,但在较弱的光线下可以提供对环境的分辨能力(比如夜里看到物体的黑白轮廓)。

当一束光线进入人眼后,视细胞会产生4个不同强度的信号:三种视锥细胞的信号(红绿蓝)和视感细胞的信号。这其中,只有视锥细胞产生的信号能转化为颜色的感觉。三种视锥细胞(S、M和L类型)对波长长度不同的光线会有不同的反应,每种细胞对某一段波长的光会更加敏感,如下图所表示的是三种视椎信号对单色光谱刺激的反应。这些信号的组合就是人眼能分辨的颜色总和。

坐标为波长,纵坐标为所对应波长单色光的刺激相应程度

1、L视椎细胞在可见光谱的长波段达到最大峰值

2、M视椎细胞在可见光谱的中波段达到最大峰值

3、S视椎细胞在可见光谱的小波段达到最大峰值

黄色频率位于红色和绿色频率之间,大概在600nm波长左右,从上述三种视椎细胞对单色光频谱的相应可知,黄色频率的光会同时刺激红色和绿色视椎细胞,此时,人脑会根据,同时刺激红色和绿色视椎细胞的情况,把转换这个信号转换为黄色。

假设照射到人眼中的光只有两种频率:红色和绿色,它们也会同时刺激红色和绿色视椎细胞,因此这种光也会被人脑所解释为黄色,即使这种光的而频率中不包含任何黄色频率分量。这就是为什么不同频谱的光,对人眼来说,有可能代表的是一种颜色。

白色光包含了所有的频率,因此,当白光入射到视网膜的时候,三种类型的视椎细胞都被刺激了,人脑把这种红色、绿色、蓝色视椎细胞都被刺激的情况,把这种光解释为白色。

上述解释了不同光入射到视网膜的时候,是如何被解释为不同色彩的。同时也能解释入射光的强度改变光的亮度:如果输入信号够强,人脑解释为入射信号可能为非常明亮的红色…,如果输入信号非常弱,则解释为基本为黑色。饱和度是根据三种视椎信号刺激的相对强度而定,如果红色信号非常非常强,蓝色和绿色信号也非常强,那么颜色会表现出相对较低的饱和度,表现为淡红色;相反,如果红色信号非常强,而蓝色和绿色信号非常弱,那么所表现出来的颜色则为非常鲜艳的红色。

3.颜色模型

3.1 RGB颜色模型

RGB模型工作原理工人眼的工作原理很相似。RGB模型定义了三个变量,分别是红色、绿色、蓝色,这三种分量就好比于人眼中的三种视椎细胞。RGB模型是一种最为重要的模型,被广泛应用于诸如电脑显示屏、电视显示屏等电子设备中。如果你用放大器查看电脑显示屏中白色区域,你能够观察到白色确实是由红色、绿色、蓝色组成。这意味着电脑显示屏所发出来的白光不同于太阳光所发出来的白光,太阳光所发出来的白光包含了所有可见光频率,而电脑显示器所发出来的白光只是包含了三钟频率分量。对人眼来说,区分不出这两种白光的差异。

三基色是这样的三种颜色,它们相互独立,其中任一色均不能由其它二色混合产生。它们又是完备的,即所有其它颜色都可以由三基色按不同的比例组合而得到。

RGB模型基于理论是:所有可能的颜色都能由红色、绿色、蓝色叠加而成。红色、绿色、蓝色为三基色,RGB为这三基色所组成的加色系统模型。其规律为:

红+绿=黄
红+蓝=紫
蓝+绿=青
  红+蓝+绿=白

RGB模型不是很直观,以下表格是RGB模型中常见的RGB值。

根据这个表,我们可以大致知道,当RGB分量分别为128,0,0的时候表示的暗红色,255,128,192表示为粉红色,16,16,16表示的暗灰色。上述表格中的16进制数表示的是在HTML中使用的颜色代码。如果我们以R=x,G=y,B=z建立坐标系的话,可以得到以下RGB模型三维图:

在客户现场或公司调试的时候,不同手机、不同电脑显示器显示ISP传输来的同一幅图像,往往色调、颜色方面有很大的差异。前面已经提到所有这些电子显示设备都是使用的RGB模型,那么可能是由于不同电子设备关于RGB模型参数得设置存在差异,比如色调设置的不同、饱和度设置不同等,导致了ISP输出同样的图像,在不同设备中显示的确实不同的效果。

如上一小节所述,许多电视、电脑显示屏显示的颜色都是通过红色、绿色、蓝色三种颜色不同强度的组合而成。由不同强度组合所构成的最终颜色其红色、绿色、蓝色成分的多少并不是很直观。特别是对于没有经验的使用者和那些减性颜色模型的使用者来说,并不是很容易理解最终的颜色,R、G、B成分究竟各占多少百分比,另外,无论是加性颜色模型,还是减性颜色模型同人眼对颜色的工作原理是不一样的。

比如说,假如我们有一个RGB显示模型,可以通过三个不同的滑条控制其大小范围在0-255之间,每一个滑条只控制其中一个分量,如果起始颜色为橙色,sRGB 值为R=217,G=118,B=33,为了得到亮度和饱和度为其一半的颜色,我们必须控制滑块,使其R减少31,G减小24,并增加59B分量,即表示为:

RGB模型中,为了得到某种颜色必须进行RGB分量的调整,但是三种分量调整的幅度和方向,对于没有经验的使用者来说,根本就不知道该如何调整各个分量的大小,不是很直观易懂。

为了适应更传统和直观的颜色混合模型,计算机图形学的先辈们发明了一些诸如HSL、HSV等更加直观的颜色混合模型。这也是为什么除了RGB模型之外,还需要发展处这么多不同其他的颜色模型。但是为了能够在计算机屏幕上显示图像,必须把其他颜色模型转换为RGB颜色模型。HSL、HSV描述颜色相对于RGB等模型显得更加自然。电脑绘画时,这两个模型非常受到欢迎。

3.2 HSL颜色模型

HSL颜色模型是由三个参数H(hue)、S(saturation)、L(lightness)所组成的三维颜色模型。

Hue表明了对光的感知颜色,即这种颜色是红色、绿色还是蓝色。这种表述方式同可见光光谱的表现方式很类似,只是把可见光光谱中最右端的紫色用品红色代替。如下图所示:

Hue通常取值范围是[0°,360°],对应红橙黄绿青蓝紫-红这样顺序的颜色,构成一个首尾相接的色相环。360度的色相同0度所对应的色相是一样的。色相的物理意义就是光的波长,不同波长的光呈现了不同的色相。如下图所示:

Saturation是用离色相环圆心的距离所表示,在圆心处饱和度为0%,在色相环圆的边缘饱和度为100%。对应到到物理意义上:即一束光可能由很多种不同波长的单色光构成,波长越多越分散,则色彩的纯净程度越低,而单色的光构成的色彩纯净度就很高。

给定色相其饱和度可以表示为如下图趋势:最左端饱和度为0%,最右端饱和度为100%,居中饱和度为50%。

Lightness表示的是光的光照强度。0%表示的是完全黑色的,50% 表示的是纯色的,100%表示的是白色的。在HSL模型中,当颜色分量L=255时,不管这种颜色的色相和饱和度参数如何,其所表示出来的颜色总是白色。给定色相的亮度可以表示为如下图趋势:最左端为黑色,L=0%,最右端为白色,L= 100%,居中表示L= 50%,为纯色。

HLS的三维模型可以表示为:

如上图所示,L为50%的时候,表示的是纯色颜色,,底部为L=0%的时候,所表示的是全黑,顶部为L=100%,表示的是白色。

3.2 HSV颜色模型

HSV颜色模型同HSL颜色模型很相似。唯一的不同就是在第三个分量的表示。Value不同于Lightness,在HSV模型中,Value的最大值V=255可能表示的颜色是红色、绿色、蓝色或其他颜色,而在HSL中L的最大值L= 255时,其表示的颜色只能是白色。Value表示的是最大的颜色分量,MaxColor(R,G,B)表示三个颜色分量中的最大分量。因此(255,0,0)和(255,255,255)Value值都为255。

在HSV模型中,对于给定的色相的Value(明度)可以表示为如下图趋势:最左端为黑色,L=0%,最右端为纯色,L= 100%,居中表示L= 50%,为纯色的一半。

HSV的三维模型可以如下图所示:

下图中,能够很好的表面HSL、HSV这两种颜色模型的差异。在圆柱体外围是纯色(红黄绿蓝紫...)HSL中,这圈纯色位于亮度(L)等于1/2的部位,而在HSV中是在明度(Value)等于1的部位。

将上面的圆柱体裁掉无用的部分,得到的是如下的锥形,就能更明显的看出HSL和HSV的区别了。

由图可知,HSL所代表的白色是在其模型的顶部;而HSV所表示的白色是在圆心位置处。

HSV模型能够更好的表示饱和度,而HSL模型能够更好的表示亮度。

在二维图像中表示S=255时,HSL、HSV两种颜色模型的差异为:

左侧图表示的是HSL颜色模型二维图,顶部为白色,因为其亮度达到最大;右侧图表示的是HSV颜色模型二维图,顶部包含了所有的颜色,因为其饱和度为255,饱和度为0是所表示的颜色才是白色。横向表示的是色调。

从上面的介绍可以直到,颜色模型通常分为设备相关和设备不相关,转换的时候便有很多不同。

设备相关的颜色模型,例如RGB、CMYK,这样的模型只是规定了一个取值的范围,例如RGB每个分量取值是0-255,则该值如何呈现出光来,是需要具体设备来解释的。这样的颜色模型不会关联到人眼的刺激值的具体值,它们之间的转换相对简单。

设备不相关的颜色模型,例如XYZ、Lab,这样的模型是需要反映真实的可见颜色的,所以他们与设备无关,但是转换时相对较麻烦,需要很多条件。

为了在设备相关、设备不相关的颜色模型间互相转换,一般是以RGB和CIEXYZ作为桥梁进行的,如下图。

参考资料:

http://lodev.org/cgtutor/color.html

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

http://www.jianshu.com/p/f03e9ac9c9ef

http://learn.colorotate.org/color-models/#.WY5l1FElHIW

光与色的故事--颜色模型浅析相关推荐

  1. 几种颜色模型的转换公式

    from: 几种颜色模型的转换公式 在做图像处理时,我们一般采用的是RGB空间,但是在某些特殊情况下,我们也会用到其他的颜色空间.本文主要介绍一些常见的颜色空间的概念和转换公式. 颜色的实质是一种光波 ...

  2. color model(颜色模型/色彩模型)

    一.CIE1931-RGB标准色度系统(色彩空间),选择了700nm(R) 546.1nm(G) 435.8nm(B) 三种波长的单色光作为三原色. CIE1931-RGB 三刺激值曲线,根据人类视觉 ...

  3. 引擎系列学习【一】Color Model(颜色模型)

    RGB RGB色彩模式是工业界的一种颜色标准,是通过对红(R).绿(G).蓝(B)三个颜色通道的变化以及它们相互之间的叠加来得到各式各样的颜色的,RGB即是代表红.绿.蓝三个通道的颜色,这个标准几乎包 ...

  4. HSI、HSV、RGB、CMY、CMYK、HSL、HSB、Ycc、XYZ、Lab、YUV颜色模型(转)

    HSV颜色空间 HSV(hue,saturation,value)颜色空间的模型对应于圆柱坐标系中的一个圆锥形子集,圆锥的顶面对应于V=1. 它包含RGB模型中的R=1,G=1,B=1 三个面,所代表 ...

  5. RGB和HSV颜色模型

    RGB颜色空间     RGB(red,green,blue)颜色空间最常用的用途就是显示器系统,彩色阴极射线管,彩色光栅图形的显示器都使用R.G.B数值来驱动R.G.B电子枪发射电子,并分别激发荧光 ...

  6. 颜色模型(color model)

    什么是颜色模型 颜色模型(color model)是一种抽象的数学模型.利用该模型,颜色可以表示为三个或四个值或颜色分量(例如R,G,B)的数字.考虑到视觉感知,颜色模型的每个分量(例如R,G,B)如 ...

  7. [Python模块学习]用colorsys模块转换颜色模型,常见颜色模型简介(RGB/HSV/HSL/YIQ)

    colorsys模块 博主最近又进入了无聊模式,没事就翻Python标准库读源码读着玩.但是里面有几个模块确实规模比较大,所以坑挖了一半就停了-现在电脑桌面上一堆没填完的坑.总之慢慢填吧- 今天发现了 ...

  8. 几种颜色模型(颜色空间):HSV CMYK RGB

    RGB和CMY颜色模型都是面向硬件的,而HSV(Hue Saturation Value)颜色模型是面向用户的. HSV(Hue, Saturation, Value)是根据颜色的直观特性由A. R. ...

  9. 颜色模型HSB-这么强大的工具,你居然还不知道?

    Part1前言 所有的颜色体验都可以从三个维度来描述:色调(hue).饱和度(saturation)和明度(brightness),简称HSB模型. HSB色彩模式以人类对颜色的感觉为基础,描述了颜色 ...

最新文章

  1. Springboot-读取核心配置文件及自定义配置文件
  2. 201521123113 《Java程序设计》第5周学习总结
  3. 纪念第一个正式的java程序
  4. maven 导入数据库
  5. 微软的FreeBSD社区推广活动 北京站,你没看错!微软现在是一家名副其实的开源公司
  6. Mybatis中SQL注入攻击的3种方式,真是防不胜防!
  7. python怎样在一行中捕获多个异常
  8. good archtchre article
  9. 雷达发现 |最新教育行业数据报告
  10. 开发实例系列:一、舒尔特方格小游戏,付源码和APK
  11. 局域网组件拨号连接服务器上网,架设pppoe服务器拨号上网 防止ARP欺骗
  12. ks108x芯片使用体会
  13. Java设计模式——桥接模式(Bridge)(容易,次要)
  14. 【PWN系列】2015-Defcon Qualifier R0pbaby
  15. 文档已完成加载后执行document write整个 HTML 页面将被覆盖
  16. java工具:通过文件头的魔数判断文件类型
  17. PHP单例模式与常驻内存(总结)
  18. css 禅意花园 笔记
  19. 微信安卓最新 7.0.22 版本来了,赶紧抢先内测体验吧!美颜,连麦,刷礼物统统来了...
  20. 《交互式程序设计 第2版》一第1章

热门文章

  1. 用vs20008生成MFC项目,测试wince
  2. rewind java_Java ShortBuffer rewind()用法及代码示例
  3. 一个Roguelike类型H5游戏的服务器开发——成就系统
  4. sticky INTENT
  5. 基本DOS命令---3.修改文件夹和文件属性
  6. 关于ios::sync_with_stdio(false);和cin.tie(0);cout.tie(0);
  7. Word中使用Bibtex4Word快速插入规范的参考文献
  8. 并行分布式计算 并行计算机体系结构
  9. 安全网络通信(SSLJSSE)
  10. 程序员的瓶颈是如何产生的(上)