RGB颜色原理
参考: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颜色原理的更多相关文章
- RGB颜色二值化
原理:RGB颜色根据计算'灰度'的公式,可以转化为黑白2种颜色,实现二值化. 业务场景的应用:可以根据背景颜色,取一个黑色或白色的颜色,作为背景色上的文案字体颜色 具体代码: function get ...
- Sass函数--颜色函数--RGB颜色函数
RGB颜色函数-RGB()颜色函数 主要分为 RGB , HSL 和 Opacity 三大函数,当然其还包括一些其他的颜色函数,比如说 adjust-color 和 change-color 等.1. ...
- 如何将24位RGB颜色转换16位RGB颜色
有许多朋友第一次使用16位彩色显示屏会遇到如何将24位RGB颜色转换为对应的16位RGB颜色的问题, 通过查阅相关资料,就写一下其中的转换原理吧,希望对大家会有所帮助. 我们知道24位RGB是分别由8 ...
- 基于OpenCV的火焰检测(二)——RGB颜色判据
上文跟大家分享了在做火焰检测中常用到的图像预处理方法,从这一篇博文开始,我将向大家介绍如何一步一步地检测出火焰区域.火焰提取要用 到很多判据,今天我要向大家介绍的是最简单的但是很有效的判据--RGB判 ...
- RGB颜色 三者都是0为黑色而255是白色 解释
问题: RGB颜色 都是0为黑色而255是白色 与日常生活的黑色白色差距怎么那么大,(与物理学中的黑色吸收光是否相悖)而且为什么要这样定义呢? 链接:https://www.zhihu.com/que ...
- RGB颜色中的参数是变量的时候,为什么要加上两个+号在左右?
<script> function draw(){ var c=document.getElementById("mycanvas"); var cxt=c.getCo ...
- HTML中RGB颜色查询对照表
RGB颜色查询对照表 因为兼容性问题,色阶板功能只能在IE浏览器中运行 RGB颜色对照表 #FFFFFF #FFFFF0 #FFFFE0 #FFFF00 #FFFAFA ...
- RGB颜色查询对照表
RGB颜色查询对照表 RGB颜色对照表 #FFFFFF2015-02-05 #FFFFF0 #FFFFE0 #FFFF00 #FFFAFA #FFFAF0 #FFF ...
- iOS中RGB颜色转换
iOS中RGB常用的色值,同时可将对颜色的设置定义成宏,方便开发应用,如: // RGB颜色转换(16进制->10进制) #define UIColorFromRGB(rgbValue) [UI ...
随机推荐
- MyEclipse - 问题集 - Java compiler level does not match the version of the installed Java project facet
右键项目“Properties”,在弹出的“Properties”窗口左侧,单击“Project Facets”,打开“Project Facets”页面. 在页面中的“Java”下拉列表中,选择相应 ...
- javascript的优美与鸡肋
--总结来自:<javascript语言精粹> 任何语言都有其优美的地方和其鸡肋的地方.避归一些语言的糟粕,能相应的降低bug出现的几率. 优美处: 函数是头等对象 基于原型继承的动态对象 ...
- Android Google Maps 开始
由于工作需要,最近对Android的各大地图进行了试用. 其中有Google地图,百度地图,高德地图,还有开源的OSM. 在使用Google地图的时候,官网流程写的非常清楚,但是其中也遇到一些问题.这 ...
- [转]struct2 拦截所有没有登录的用户,强行转到登录界面AuthorizationInterceptor
package com.sise.action; import java.util.Map; import com.opensymphony.xwork2.Action; import com ...
- 一个关于sql更新的小笔记
一直在sqlserver下写东西,突然用mysql有些语法发生了改变,有点折腾 (MS SQL Server)语句:update A set a.Name = b.Name from A ...
- linux中wget 、apt-get、yum rpm区别
wget 类似于迅雷,是一种下载工具, 通过HTTP.HTTPS.FTP三个最常见的TCP/IP协议下载,并可以使用HTTP代理名字是World Wide Web”与“get”的结合. yum: 是r ...
- 【性能调优】一次关于慢查询及FGC频繁的调优经历
以下来分享一个关于MySQL数据库慢查询和FGC频繁的性能案例. 一.系统架构 一个简单的dubbo服务,服务提供者提供接口,并且提供接口的实现,提供方注册服务到Zookeeper注册中心,然后消费者 ...
- react实现换肤功能
一.目标 提供几种主题色给用户选择,然后根据用户的选择改变应用的主题色: 二.实现原理 1.准备不同主题色的样式文件: 2.将用户的选择记录在本地缓存中: 3.每次进入应用时,读取缓存 ...
- font and face, 浅探Emacs字体选择机制及部分记录
缘起 最近因为仰慕org-mode,从vim迁移到了Emacs.偶然发现org-mode中调出的calendar第一行居然没有对齐,排查一下发现是字体的问题.刚好也想改改Emacs的字体,于是我就开始 ...
- linux备忘录-日志档案
linux的日志档案 linux的日志档案记录系统或程序在运行过程中产生的一些信息,例如事件的记录,错误的记录等等.特别是在发生错误时,我们可以通过日志档案找到错误发生的根源,例如当我们无法启动邮件服 ...