moset的个人博客分享 http://blog.sciencenet.cn/u/moset 以心为绢,绘山河;以思为海,汇百流;以文为宴,会高朋。

博文

色彩空间笔记

已有 8351 次阅读 2011-6-21 13:27 |系统分类:科研笔记| 色彩空间, HSI, HSV, HSL, CMY

人们根据人眼对光线的感觉定义了色彩。可见光线的波长在400nm~760nm之间。然而我们所定义的色彩,并不能通用于自然界其它物种。人具有三色觉,源自人眼的视锥细胞对光谱感知的类别可以分为红、绿、蓝这3类主视锥细胞。自然界,哺乳类中除去最接近人类的灵长类,一般只具有二色觉,像猫、狗都只有两色觉。蜂蜜和大黄蜂有三色视觉,但它们的敏感色不是红色,而是紫外线。而有的物种具有4个,甚至更多的色觉,像鸟通常有4色觉,蝴蝶有6色觉。不仅如此,不同的人对色彩的感知也不尽相同,也许某人的可见谱区与通常定义的红外谱区有交集。因此红、绿、蓝的定义是在基于大量的实验统计的基础上得出的。红、绿、蓝称为三原色,CIE关于主原色的特定波长定义:红=700nm,绿=546.1nm,蓝=435.8nm

需要特别提到的是,原色不同于主原色波长定义这么泾渭分明,人的三类主视锥细胞对三原色的感知是连续的、渐变的,交叉的。如下图:

在波长550nm600nm之间的区域,人的感觉是黄色,以人们通常对于RGB三种颜色的认知来说,会认为黄色是由RG混合而成的,其实不然,红与绿混合成的黄色,但这两主原色特定波长的光组合是不会是550nm600nm的,因为线性叠加,谱线不会平移。两原色混叠而成的纯色称为2次色。自然界中的色彩(包括纯色盒亮度的信息)可以由(人所认为的)三原色通过线性组合放式 获得,但这并不是能混合成各种颜色谱线的光线。为什么?这么奇怪的事,该怪我们的只有三类主视锥细胞,人脑就只能这么判断了,当相同强度的绿色加红色的光 和代表黄色波长的光对我们的视锥细胞的刺激差不多时,红绿混叠的光的颜色就被判断成黄色了。那红色有了,绿色有了,蓝色有了,而且感觉差不多,好了因该是 什么都有了,于是“我”决定它是白色。白光被认为具有所有谱线,所以人脑的这个判断还是合情合理的。这是简单的可怕,还是进化的伟大?

    下图是以uint8表达的RGB色彩空间,0xff对应上文中的“1”,RGB线性组合,那么该空间就可以表示2^2416M种颜色。

 

上面提到了RGB的概念,RGB是常采用的色彩模型之一,按照上文提到的二次色原理,利用眼睛和人脑颜色判断的局限,通过这种“欺骗”手段建立了色彩模型。另一种常见的模型是CMYCyan,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各个分量,却不能直接观的回答出它是什么颜色的。于是从人的直观感觉上提出了色彩模型HIShue saturation intensity),H定义的是色调,对于非混叠而成的颜色的纯色来说还代表了它的波长;S表示纯色的深浅,也可以反过来看,认为是被亮度I所稀释的程度,它被称为饱和度;亮度I,表示光的强度,图像处理中称该信息为“灰度”,它是人的主观感觉的描述子。HSI模型符合人对色彩的直观感觉,因此利用这个模型来处理图像,可以很方便的取得与直观相符的预期效果。

RGB彩色空间至HSI彩色空间是立方体到柱体的投影。如下图(from wikipedia)所示。

HISRGB空间的变换,如下图:

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};得出:

GBH =θGBH =2pi-θ;

有时也可以表示为:;当min(R,G,B)=R时,H=pi+θ;其它情况时,HH =θ+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三个分量在表达式中刚好BR交换位置。

HSII =(R+B+G)/3; M = max(R,G,B);m = min(R,G,B); 即,若H[0,2pi/3],则m = BH[2pi/34pi/3],则m =RH[4pi/3,2pi],则m = GS = 1-m/I; IS在取值区间[0,1],而H[0,2pi]区间的的弧度。

HSV中,V = MC = M-mS = 1-m/M =C/VHHSI中表达式相同。

HSL中,L = (M+m)/2 S = (M-m)/(1-|2L-1|)HHSI中表达式相同。

有时H的表达式也有下面的形式(from wikipedia):

两种定义形式,只有在pi/6的整数倍时值相同。两种形式区别在于弧度分割方式。因此,其实只要保证分割方式不是独立于3原色RGB,亦可以认为是某种H的定义,同样的只要空间变换的其余分量与H可以构成三维基坐标系,并且逆变换存在且唯一,这种变换就是可行的。

    

色调分为3600份每份表示0.1°,浓度“1”(HSIHSVHSL),亮度恒定

在相同的亮度下,人眼应该对绿色更为敏感,我感觉绿色最亮。

 

色调分为3600份每份表示0.1°,浓度“1”(HSIHSVHSL),M=1

 



https://blog.sciencenet.cn/blog-567861-457669.html

上一篇:整数分拆matlab代码
下一篇:曾经的报数游戏
收藏 IP: 59.46.83.*| 热度|

4 张天翼 曾新林 王春艳 crossludo

该博文允许注册用户评论 请点击登录 评论 (8 个评论)

数据加载中...

Archiver|手机版|科学网 ( 京ICP备07017567号-12 )

GMT+8, 2024-11-23 12:22

Powered by ScienceNet.cn

Copyright © 2007- 中国科学报社

返回顶部