参考:http://www.cnblogs.com/harrytian/archive/2012/12/12/2814210.html

工作中经常和颜色打交道,但却从来没有从原理上了解一下,这篇文章希望给同样感兴趣的人一些启发。文章来源大多为各种文章阅读后,整理而来。

颜色是光给人的一种视觉感知现象。说到颜色,首先要了解自然光在人的眼睛中的反应。在电磁波普中,可见光波长在400-700nm之间,还有些人能感知到380-780nm之间的电磁波,并且人对555nm的电磁波(绿光区域)最为敏感。

颜色基本参数为:色相,色阶,饱和度。

色相,是用来区别颜色的标志,是光由于光波、频率的不同而产生的颜色性质。人们把易于识别的颜色分类,如红色、绿色,都叫色相。但是黑、白、灰,不成为色相。色相是在光谱上自然分割的结果,而黑、白、灰是各种中和、配色后产生的颜色。

色阶(明度),是指颜色的亮度指数,由物体反射出来光波的多少来量化。图像的色彩丰满度和精细度是由色阶决定的。最亮的定义为白色,最不亮的定义为黑色。色阶与色相无关,颜色色阶一般由两种情况:一种是同色相,不同明度,如红色,加白色或者加黑色后,能够产生不同的明亮层次。

饱和度(纯度),是只色彩的鲜艳程度,饱和度取决于颜色中“含色成分(色相)”和“消色成分(灰色)”之间的比例。含色成为越大,饱和度越高,反之越低。当饱和度为零时,就是灰色。任何色相饱和度趋近于零的时候,就产生灰色,这也是为什么灰色不成为色相。

从小我们学到的三原色是由红、黄、蓝基色组成,在印刷、绘画标准中,基础色纸张是白色的,采用消减型原理,理论上可以调配出除了三原色以外的任意颜色。

回到工业领域,计算机显示设备、电视机、手机的屏幕基础颜色是黑色,而且越黑越好。在黑色基础上,如果要想显示颜色,就要采用叠加型原理,因此采用的三原色就是红、绿、蓝,就是我们常说的RGB。而叠加原理,是要发光叠加的,这也是为什么在黑暗中,我们看不到消减原理产生的印刷品,却可以看见叠加原理产生的屏幕颜色。

由于基础色是黑色的叠加原理,如果三种颜色都没有,就是黑色#000000,如果三种颜色都是饱和的全部叠加在一起就是白色#FFFFFF,因此当R-G-B三种颜色,或者两种、甚至一种,以不同比例混合后,就可以产生任意多的颜色。

在32 Bit显示模式下,前3个Byte,即24Bit用来显示三种颜色的分量,最后一个Byte用来显示透明度,即ALPHA值。这样每一个颜色分量有0~255,一共256种取值,则显示设备可以显示256*256*256 = 16777216种不同颜色,这就是16M色的由来。

而现实情况下,人们只能识别1000万种颜色,也就是咱们看不出#131313和#141414的区别。

我们看看叠加原理上,颜色是如何产生的,初识屏幕是黑色的,即没有任何颜色叠加RGB(0,0,0),红色全开启是RGB(255,0,0),绿色全开启RGB(0,255,0),红色和绿色调配在一起就是黄色RGB(255,255,0)。

讲到绘画、图像,自然离不开谈颜色,所有的图案都是由基本形状和颜色组成,颜色构成了我们图像处理的一个重要部分,下面我们将要了解颜色的原理,它将是我们美工的基础。

一、RGB三色原理

  在中学的物理课中我们可能做过棱镜的试验,白光通过棱镜后被分解成多种颜色逐渐过渡的色谱,颜色依次为红、橙、黄、绿、青、蓝、紫,这就是可见光谱。其中人眼对红、绿、蓝最为敏感,人的眼睛就像一个三色接收器的体系,大多数的颜色可以通过红、绿、蓝三色按照不同的比例合成产生。同样绝大多数单色光也可以分解成红绿蓝三种色光。这是色度学的最基本原理,即三基色原理。三种基色是相互独立的,任何一种基色都不能有其它两种颜色合成。红绿蓝是三基色,这三种颜色合成的颜色范围最为广泛。红绿蓝三基色按照不同的比例相加合成混色称为相加混色。

  红色+绿色=黄色 
  绿色+蓝色=青色 
  红色+蓝色=品红 
  红色+绿色+蓝色=白色

  黄色、青色、品红都是由两种及色相混合而成,所以它们又称相加二次色。另外:

  红色+青色=白色 
  绿色+品红=白色 
  蓝色+黄色=白色

  所以青色、黄色、品红分别又是红色、蓝色、绿色的补色。由于每个人的眼睛对于相同的单色的感受有不同,所以,如果我们用相同强度的三基色混合时,假设得到白光的强度为100%,这时候人的主观感受是,绿光最亮,红光次之,蓝光最弱。

  除了相加混色法之外还有相减混色法。在白光照射下,青色颜料能吸收红色而反射青色,黄色颜料吸收蓝色而反射黄色,品红颜料吸收绿色而反射品红。也就是:

  白色-红色=青色 
  白色-绿色=品红 
  白色-蓝色=黄色

  另外,如果把青色和黄色两种颜料混合,在白光照射下,由于颜料吸收了红色和蓝色,而反射了绿色,对于颜料的混合我们表示如下:

  颜料(黄色+青色)=白色-红色-蓝色=绿色 
  颜料(品红+青色)=白色-红色-绿色=蓝色 
  颜料(黄色+品红)=白色-绿色-蓝色=红色

  以上的都是相减混色,相减混色就是以吸收三基色比例不同而形成不同的颜色的。所以有把青色、品红、黄色称为颜料三基色。颜料三基色的混色在绘画、印刷中得到广泛应用。在颜料三基色中,红绿蓝三色被称为相减二次色或颜料二次色。在相减二次色中有:

  (青色+黄色+品红)=白色-红色-蓝色-绿色=黑色

  用以上的相加混色三基色所表示的颜色模式称为RGB模式,而用相减混色三基色原理所表示的颜色模式称为CMYK模式,它们广泛运用于绘画和印刷领域。

  RGB模式是绘图软件最常用的一种颜色模式,在这种模式下,处理图像比较方便,而且,RGB存储的图像要比CMYK图像要小,可以节省内存和空间。

  CMYK模式是一种颜料模式,所以它属于印刷模式,但本质上与RGB模式没有区别,只是产生颜色的方式不同。RGB为相加混色模式,CMYK为相减混色模式。例如,显示器采用RGB模式,就是因为显示器是电子光束轰击荧光屏上的荧光材料发出亮光从而产生颜色。当没有光的时候为黑色,光线加到最大时为白色。而打印机呢?它的油墨不会自己发出光线。因而只有采用吸收特定光波而反射其它光的颜色,所以需要用减色法来解决。

二、HLS(色相、亮度、饱和度)原理

  HLS 是Hue(色相)、Luminance(亮度)、Saturation(饱和度)。色相是颜色的一种属性,它实质上是色彩的基本颜色,即我们经常讲的红、橙、黄、绿、青、蓝、紫七种,每一种代表一种色相。色相的调整也就是改变它的颜色。

  亮度就是各种颜色的图形原色(如RGB图像的原色为R、G、B三种或各种自的色相)的明暗度,亮度调整也就是明暗度的调整。亮度范围从 0 到255,共分为256个等级。而我们通常讲的灰度图像,就是在纯白色和纯黑色之间划分了256个级别的亮度,也就是从白到灰,再转黑。同理,在RGB模式中则代表个原色的明暗度,即红绿蓝三原色的明暗度,从浅到深。

  饱和度是指图像颜色的彩度.对于每一种颜色都有一种人为规定的 标准颜色,饱和度就是用描述颜色与标准颜色之间的相近程度的物理量。调整饱和度就是调整图像的彩度。将一个图像的饱和度条为零时,图像则变成一个灰度图像,大家在电视机上可以试一式调整饱和度按钮。

  另外还有一个概念,就是对比度。对比度是指不同颜色之间的差异。对比度越大,两种颜色之间的相差越大,反之,就越接近。如,一幅灰度图像提高它的对比度会更加黑白分明,调到的极限时,变成黑白图像,反之,我们可以得到一幅灰色的画布。

  我们了解了颜色的原理,我们在图像处理中就不会茫然,并且对于调整颜色也可以更快,更准确。

RGB颜色原理的更多相关文章

  1. RGB颜色二值化

    原理:RGB颜色根据计算'灰度'的公式,可以转化为黑白2种颜色,实现二值化. 业务场景的应用:可以根据背景颜色,取一个黑色或白色的颜色,作为背景色上的文案字体颜色 具体代码: function get ...

  2. Sass函数--颜色函数--RGB颜色函数

    RGB颜色函数-RGB()颜色函数 主要分为 RGB , HSL 和 Opacity 三大函数,当然其还包括一些其他的颜色函数,比如说 adjust-color 和 change-color 等.1. ...

  3. 如何将24位RGB颜色转换16位RGB颜色

    有许多朋友第一次使用16位彩色显示屏会遇到如何将24位RGB颜色转换为对应的16位RGB颜色的问题, 通过查阅相关资料,就写一下其中的转换原理吧,希望对大家会有所帮助. 我们知道24位RGB是分别由8 ...

  4. 基于OpenCV的火焰检测(二)——RGB颜色判据

    上文跟大家分享了在做火焰检测中常用到的图像预处理方法,从这一篇博文开始,我将向大家介绍如何一步一步地检测出火焰区域.火焰提取要用 到很多判据,今天我要向大家介绍的是最简单的但是很有效的判据--RGB判 ...

  5. RGB颜色 三者都是0为黑色而255是白色 解释

    问题: RGB颜色 都是0为黑色而255是白色 与日常生活的黑色白色差距怎么那么大,(与物理学中的黑色吸收光是否相悖)而且为什么要这样定义呢? 链接:https://www.zhihu.com/que ...

  6. RGB颜色中的参数是变量的时候,为什么要加上两个+号在左右?

    <script> function draw(){ var c=document.getElementById("mycanvas"); var cxt=c.getCo ...

  7. HTML中RGB颜色查询对照表

    RGB颜色查询对照表     因为兼容性问题,色阶板功能只能在IE浏览器中运行 RGB颜色对照表   #FFFFFF   #FFFFF0   #FFFFE0   #FFFF00   #FFFAFA   ...

  8. RGB颜色查询对照表

    RGB颜色查询对照表     RGB颜色对照表   #FFFFFF2015-02-05   #FFFFF0   #FFFFE0   #FFFF00   #FFFAFA   #FFFAF0   #FFF ...

  9. iOS中RGB颜色转换

    iOS中RGB常用的色值,同时可将对颜色的设置定义成宏,方便开发应用,如: // RGB颜色转换(16进制->10进制) #define UIColorFromRGB(rgbValue) [UI ...

随机推荐

  1. 源码解析:解析掌阅X2C 框架

    前言 掌阅出品了X2C 框架,听说可以加快性能.喜欢研究源码的我,肯定要来看下是怎么回事. 作为一个开发,应该不屑于只会使用开源框架. OK,来尝试下. 项目地址: https://github.co ...

  2. SpringCloud项目,接口调用返回http 500 - Internal Server Error的错误

    今天上班的时候,自己正在参与的Spring Cloud项目出现了问题,原本上周五还正常的项目突然所有接口调用都是返回http 500的错误. 项目的状态是在Eureka上可以看到对应微服务是在线状态, ...

  3. Java输出日历写法

    package TestString_2; import java.text.ParseException;import java.util.Calendar;import java.util.Gre ...

  4. Vue-router用法

    #全局守卫- router.beforeEach(to,from,next){} #全局后置钩子- router.afterEach(to,from){} #路由独享守卫- beforeEnter(t ...

  5. iOS中的数据库应用

    iOS中的数据库应用 SLQLite简介 什么是SQLite SQLite是一款轻型的嵌入式数据库 它占用资源非常的低,在嵌入式设备中,可能只需要几百K的内存就够了 它的处理速度比Mysql.Post ...

  6. 论文翻译 - Multiagent Bidirectionally-Coordinated Nets Emergence of Human-level Coordination in Learning to Play StarCraft Combat Games

    (缺少一些公式的图或者效果图,评论区有惊喜) (个人学习这篇论文时进行的翻译[谷歌翻译,你懂的],如有侵权等,请告知) Multiagent Bidirectionally-Coordinated N ...

  7. python基础训练营01

    一.基础讲解: 1.1 文件末尾的.py后缀,指出这个文件,是一个python文件,因此,系统将使用python解释器来运行该文件,确定文件中每一个单词的含义. 1.2 python编辑/运行方法: ...

  8. 可以随着SeekBar滑块滑动显示的Demo

    //关于Seek的自定义样式,之前也有总结过,但是,一直做不出随着滑块移动的效果,查询了很多资料终于解决了这个问题,现在把代码写出来有bug的地方 希望大家批评指正. Step 1 :自定义一个Vie ...

  9. [Mac]Mac OS X中WireShark的使用,及找不到网卡问题的解决方法

    1.WireShark依赖X11: 2.默认情况下Mac OS X是不安装X11的: 因此,在Mac上安装WireShark,首先找出Mac OS 安装DVD安装X11. 安装完以后 echo $DI ...

  10. PAT 1040 有几个PAT

    https://pintia.cn/problem-sets/994805260223102976/problems/994805282389999616 字符串 APPAPT 中包含了两个单词 PA ...