||
人们根据人眼对光线的感觉定义了色彩。可见光线的波长在400nm~760nm之间。然而我们所定义的色彩,并不能通用于自然界其它物种。人具有三色觉,源自人眼的视锥细胞对光谱感知的类别可以分为红、绿、蓝这3类主视锥细胞。自然界,哺乳类中除去最接近人类的灵长类,一般只具有二色觉,像猫、狗都只有两色觉。蜂蜜和大黄蜂有三色视觉,但它们的敏感色不是红色,而是紫外线。而有的物种具有4个,甚至更多的色觉,像鸟通常有4色觉,蝴蝶有6色觉。不仅如此,不同的人对色彩的感知也不尽相同,也许某人的可见谱区与通常定义的红外谱区有交集。因此红、绿、蓝的定义是在基于大量的实验统计的基础上得出的。红、绿、蓝称为三原色,CIE关于主原色的特定波长定义:红=700nm,绿=546.1nm,蓝=435.8nm。
需要特别提到的是,原色不同于主原色波长定义这么泾渭分明,人的三类主视锥细胞对三原色的感知是连续的、渐变的,交叉的。如下图:
在波长550nm到600nm之间的区域,人的感觉是黄色,以人们通常对于RGB三种颜色的认知来说,会认为黄色是由R和G混合而成的,其实不然,红与绿混合成的黄色,但这两主原色特定波长的光组合是不会是550nm到600nm的,因为线性叠加,谱线不会平移。两原色混叠而成的纯色称为2次色。自然界中的色彩(包括纯色盒亮度的信息)可以由(人所认为的)三原色通过线性组合放式 获得,但这并不是能混合成各种颜色谱线的光线。为什么?这么奇怪的事,该怪我们的只有三类主视锥细胞,人脑就只能这么判断了,当相同强度的绿色加红色的光 和代表黄色波长的光对我们的视锥细胞的刺激差不多时,红绿混叠的光的颜色就被判断成黄色了。那红色有了,绿色有了,蓝色有了,而且感觉差不多,好了因该是 什么都有了,于是“我”决定它是白色。白光被认为具有所有谱线,所以人脑的这个判断还是合情合理的。这是简单的可怕,还是进化的伟大?
下图是以uint8表达的RGB色彩空间,0xff对应上文中的“1”,RGB线性组合,那么该空间就可以表示2^24即16M种颜色。
上面提到了RGB的概念,RGB是常采用的色彩模型之一,按照上文提到的二次色原理,利用眼睛和人脑颜色判断的局限,通过这种“欺骗”手段建立了色彩模型。另一种常见的模型是CMY(Cyan,Magenta,yellow)青色、品红、黄色、这三种颜色称之为三基色,分别为红,绿,蓝的补色(W-R,W-G,W-B)。有:
[R G B]=[1 1 1]-[C M Y]
当[C Y M]=[1 1 1]时,[R G B]=[0 0 0]也就是黑色(白光强度为0)。 有的时候有提到的CMYK,是指CMY模型除去三基色外加进黑色,是针对彩色打印机提出的(纯黑色从打印技术上说不太方便直接由三基色等量混合产生,一般混合成的黑色较灰,而且这么做也挺浪费)。
RGB ValueShort Name Long Name
[0 1 1] c cyan
[1 1 0] y yellow
[1 0 1] m magenta
[1 0 0] r red
[0 1 0] g green
[0 0 1] b blue
[1 1 1] w white
[0 0 0] k black
RGB模型从人视觉的原理上来说,非常的匹配。然而如果我们不从色彩感知原理来讨论,而是直接地问这是什么颜色?用RGB色彩模型就不好回答了,我们知道RGB各个分量,却不能直接观的回答出它是什么颜色的。于是从人的直观感觉上提出了色彩模型HIS(hue saturation intensity),H定义的是色调,对于非混叠而成的颜色的纯色来说还代表了它的波长;S表示纯色的深浅,也可以反过来看,认为是被亮度I所稀释的程度,它被称为饱和度;亮度I,表示光的强度,图像处理中称该信息为“灰度”,它是人的主观感觉的描述子。HSI模型符合人对色彩的直观感觉,因此利用这个模型来处理图像,可以很方便的取得与直观相符的预期效果。
RGB彩色空间至HSI彩色空间是立方体到柱体的投影。如下图(from wikipedia)所示。
HIS与RGB空间的变换,如下图:
当RGB空间矢量P ={R,G,B},它到平面γ:R+G+B=0的投影矢量 S={si,sj,sk},S与矢量r ={1,0,0}到平面γ投影矢量的夹角(顺时针)定为HIS彩色空间中的H。
P ={R,G,,B};平面γ的单位法向量N ={3^-0.5, 3^-0.5, 3^-0.5};得出:
当G≥B时H =θ,G<B时H =2pi-θ;
有时也可以表示为:;当min(R,G,B)=R时,H=pi+θ;其它情况时,H =θ或H =θ+2pi (θ<0)。
如下:
点矢量P’ 为矢量P ={R,G,,B}到平面γ的投影,在平面γ上建立直角坐标系(U,V),U的方向同矢量R :r ={1,0,0}到平面γ的投影化为单位矢:U ={0.8165,-0.4082,-0.4082}。
那么V的方向为:
化为单位矢:V ={0,0.7071,-0.7071}那么矢量P’= { 2/3*R-1/3*G-1/3*B ,2/3*G-1/3*R-1/3*B,
2/3*B-1/3*R-1/3*G};则P’可以表示为:P’ = (P’ ,U)U+(P’,V)V
则 。
Field Max Min
1 red blue
2 green blue
3 green red
4 blue red
5 blue green
6 red green
H转过pi/6:
H转过pi/3:
H转过2*pi/3:
旋转,色调的规律如上面3式子,例如在旋转2*pi/3的弧度后,RGB三个分量在表达式中刚好B与R交换位置。
HSI中I =(R+B+G)/3; M = max(R,G,B);m = min(R,G,B); 即,若H在[0,2pi/3],则m = B;H在[2pi/3,4pi/3],则m =R;H在[4pi/3,2pi],则m = G;S = 1-m/I; I、S在取值区间[0,1],而H为[0,2pi]区间的的弧度。
HSV中,V = M,C = M-m,S = 1-m/M =C/V,H与HSI中表达式相同。
HSL中,L = (M+m)/2 ,S = (M-m)/(1-|2L-1|),H与HSI中表达式相同。
有时H的表达式也有下面的形式(from wikipedia):
两种定义形式,只有在pi/6的整数倍时值相同。两种形式区别在于弧度分割方式。因此,其实只要保证分割方式不是独立于3原色RGB,亦可以认为是某种H的定义,同样的只要空间变换的其余分量与H可以构成三维基坐标系,并且逆变换存在且唯一,这种变换就是可行的。
色调分为3600份每份表示0.1°,浓度“1”(HSI、HSV、HSL),亮度恒定
在相同的亮度下,人眼应该对绿色更为敏感,我感觉绿色最亮。
色调分为3600份每份表示0.1°,浓度“1”(HSI、HSV、HSL),M=“1”
Archiver|手机版|科学网 ( 京ICP备07017567号-12 )
GMT+8, 2024-11-23 12:22
Powered by ScienceNet.cn
Copyright © 2007- 中国科学报社