zoukankan      html  css  js  c++  java
  • 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三种色彩的组合原理

  • 相关阅读:
    Leetcode: Reverse Integer
    Leetcode: Two Sum
    Leetcode: Path Sum
    make distclean
    makefile 中 foreach
    nor flash 和 nand flash
    端口(port)的安全模式(security mode)
    单片机入门(二)
    单片机入门(一)
    kworker
  • 原文地址:https://www.cnblogs.com/aligege/p/7639633.html
Copyright © 2011-2022 走看看