颜色空间_颜色空间转换 - CSDN
精华内容
参与话题
  • 颜色空间总结

    万次阅读 2018-06-19 14:22:17
    颜色空间总结RGB、HSV、YUV转自 http://blog.csdn.net/lg1259156776/。 https://blog.csdn.net/LG1259156776/article/details/48317339什么是颜色Wiki是这样说的:颜色色彩是通过眼、脑和我们的生活经验所产生的一...

    颜色空间总结

    RGB、HSV、YUV,LAB


    转自 http://blog.csdn.net/lg1259156776/。  https://blog.csdn.net/LG1259156776/article/details/48317339

    什么是颜色

    Wiki是这样说的:颜色或色彩是通过眼、脑和我们的生活经验所产生的一种对光的视觉效应。嗯,简单点说,颜色就是人对光的一种感觉,由大脑产生的一种感觉。感觉是一个很主观的东西,你怎么确定你看到的红色和我看到的是一样的呢?这个视频解释的很不错。我们需要先假设正常人对于同一种光产生的感觉基本是一致的,讨论才能继续下去。

    人的视网膜上布满了感光细胞,当有光线传入人眼时,这些细胞就会将刺激转化为视神经的电信号,最终在大脑得到解释。视网膜上有两类感光细胞:视锥细胞和视杆细胞。

    视锥细胞大都集中在视网膜的中央,每个视网膜大概有700万个左右。每个视锥细胞包含有一种感光色素,分别对红、绿、蓝三种光敏感。这类细胞能在较明亮的环境中提供辨别颜色和形成精细视觉的功能。


    视杆细胞分散分布在视网膜上,每个视网膜大概有1亿个以上。这类细胞对光线更为敏感(敏感程度是视锥细胞的100多倍),一个光子就足以激发它的活动。视杆细胞不能感受颜色、分辨精细的空间,但在较弱的光线下可以提供对环境的分辨能力(比如夜里看到物体的黑白轮廓)。

    当一束光线进入人眼后,视细胞会产生4个不同强度的信号:三种视锥细胞的信号(红绿蓝)和视感细胞的信号。这其中,只有视锥细胞产生的信号能转化为颜色的感觉。三种视锥细胞(S、M和L类型)对波长长度不同的光线会有不同的反应,每种细胞对某一段波长的光会更加敏感,如下图。这些信号的组合就是人眼能分辨的颜色总和。 
    三种视锥细胞(S、M和L类型)对单色光谱刺激的反应,横坐标为光的波长,纵坐标为产生信号的强度 
    此处输入图片的描述


    这里有一个重要的理论:我们可以用3种精心选择的单色光来刺激视锥细胞,模拟出人眼所能感知的几乎所有的颜色(例如红绿光的混合光,和单色黄光,刺激视锥细胞产生的视神经信号是等效的),这就是三色加法模型。所以说”三原色”的原理是由生理因素造成的。


    颜色的数字化

    根据上面的理论,只需要选定三原色,并且对三原色进行量化,那就可以将人的颜色知觉量化为数字信号了。三色加法模型中,如果某一种颜色(C),和另外一种三色混合色,给人的感觉相同时,这三种颜色的份量就称为该颜色(C)的三色刺激值。对于如何选定三原色、如何量化、如何确定刺激值等问题,国际上有一套标准——CIE标准色度学系统。

    CIE(国际照明委员会)是位于欧洲的一个国际学术研究机构,1931年,CIE在会议上根据之前的实验成果提出了一个标准——CIE1931-RGB标准色度系统。

    CIE1931-RGB系统选择了700nm(R) 546.1nm(G) 435.8nm(B) 三种波长的单色光作为三原色。之所以选这三种颜色是因为比较容易精确地产生出来(汞弧光谱滤波产生,色度稳定准确)。

    此处输入图片的描述 
    从上图可以看到,三个颜色的刺激值R、G、B如何构成某一种颜色:例如580nm左右(红绿线交叉点)的黄色光,可以用1:1(经过亮度换算..)的红绿两种原色混合来模拟. 
    如果要根据三个刺激值R、G、B来表现可视颜色,绘制的可视图形需要是三维的。为了能在二维平面上表现颜色空间,这里需要做一些转换。颜色的概念可以分为两部分:亮度(光的振幅,即明暗程度)、色度(光的波长组合,即具体某种颜色)。我们将光的亮度(Y)变量分离出来,之后用比例来表示三色刺激值: 

    r=RR+G+Bg=GR+G+Bb=BR+G+Br=RR+G+Bg=GR+G+Bb=BR+G+B

    这样就能得出r+g+b=1。由此可见,色度坐标r、g、b中只有两个变量是独立的。这样我们就把刺激值R、G、B转换成r、g、Y(亮度)三个值,把r、g两个值绘制到二维空间得到的图就是色域图。 
    此处输入图片的描述 
    上图中,马蹄形曲线就表示单色的光谱(即光谱轨迹)。例如540nm的单色光,可以看到由r=0、g=1、b=(1-r-g)=0三个原色的分量组成。再例如380-540nm波段的单色光,由于颜色匹配实验结果中红色存在负值的原因,该段色域落在了r轴的负区间内。自然界中,人眼可分辨的颜色,都落在光谱曲线包围的范围内。

    CIE1931-RGB标准是根据实验结果制定的,出现的负值在计算和转换时非常不便。CIE假定人对色彩的感知是线性的,因此对上面的r-g色域图进行了线性变换,将可见光色域变换到正数区域内。CIE在CIE1931-RGB色域中选择了一个三角形,该三角形覆盖了所有可见色域,之后将该三角形进行如下的线性变换,将可见色域变换到(0,0)(0,1)(1,0)的正数区域内。即假想出三原色X、Y、Z,它们不存在于自然界中,但更方便计算。 

    XYZ=1b21b11b21b31b12b22b32b13b23b33RGB=10.176970.490.176970.000.310.812400.010.200.010630.99RGB[XYZ]=1b21[b11b12b13b21b22b23b31b32b33][RGB]=10.17697[0.490.310.200.176970.812400.010630.000.010.99][RGB]

    得到的结果就是下图: 
    此处输入图片的描述 
    注意这里的颜色只是示意,事实上没有设备能完全还上面所有的自然色域

    这个图有些有意思的性质:

    该色度图所示意的颜色包含了一般人可见的所有颜色,即人类视觉的色域。色域的马蹄形弧线边界对应自然界中的单色光。色域下方直线的边界只能由多种单色光混合成。 
    在该图中任意选定两点,两点间直线上的颜色可由这两点的颜色混合成。给定三个点,三点构成的三角形内颜色可由这三个点颜色混合成。 
    给定三个真实光源,混合得出的色域只能是三角形(例如液晶显示器的评测结果),绝对不可能完全覆盖人类视觉色域。 
    这就是CIE1931-XYZ标准色度学系统。该系统是国际上色度计算、颜色测量和颜色表征的统一标准,是几乎所有测色仪器的设计与制造依据。


    常见颜色模型

    颜色模型就是描述用一组数值来描述颜色的数学模型。例如coding时最常见的RGB模型,就是用RGB三个数值来描述颜色。通常颜色模型分为两类:设备相关和设备无关。

    设备无关的颜色模型:这类颜色模型是基于人眼对色彩感知的度量建立的数学模型,例如上面提到的CIE-RGB、CIE-XYZ颜色模型,再比如由此衍生的CIE-xyY、CIE-L*u*v、CIE-L*a*b等颜色模型。这些颜色模型主要用于计算和测量。

    设备相关的颜色模型:以最长见的RGB模型为例,一组确定的RGB数值,在一个液晶屏上显示,最终会作用到三色LED的电压上。这样一组值在不同设备上解释时,得到的颜色可能并不相同。再比如CMYK模型需要依赖打印设备解释。常见的设备相关模型有:RGB、CMYK、YUV、HSL、HSB(HSV)、YCbCr等。这类颜色模型主要用于设备显示、数据传输等。

    下面就对这些颜色模型一一作出解释。

    CIE-RGB

    正如上面写的,这个模型是由真实的人眼颜色匹配实验得出的模型,RGB分别表示那三个固定波长的光的份量。 
    此处输入图片的描述

    CIE-XYZ

    上面也有,就是根据CIE-RGB进行变换得到的颜色模型,XYZ分别表示三个假想色的光的份量。通常简写为XYZ颜色模型。 
    此处输入图片的描述

    CIE-Yxy

    该模型由CIE-XYZ衍生得来。其中x=XX+Y+Z,y=YX+Y+Zx=XX+Y+Z,y=YX+Y+Z, Yxy中的Y表示光的亮度。这个模型投影到x-y平面上即上面的CIE1931-XYZ色度图。其中x、y分量的取值范围是[0,1]。有时该模型也被称作CIE-xyY。 
    此处输入图片的描述 
    还有许多,不再详尽说明。


    RGB

    最常见的颜色模型,设备相关。三个数值代表R、G、B分量,取值均为[0,255]。 
    此处输入图片的描述 
    通常设备(例如笔记本的液晶显示屏)能表现的色域大概是下面这样。 
    此处输入图片的描述

    CMYK、CMY

    这个颜色模型常用于印刷出版。CMYK表示青(Cyan)品红(Magenta)黄(Yellow)黑(BlacK)四种颜料。由于颜料的特性,该模型也是与设备相关的。相对于RGB的加色混色模型,CMY是减色混色模型,颜色混在一起,亮度会降低。之所以加入黑色是因为打印时由品红、黄、青构成的黑色不够纯粹。 
    此处输入图片的描述 
    通常其能表现的色域很小,如下图。 
    此处输入图片的描述

    HSL、HSV

    HSL和HSV的颜色模型比较相近,它们用来描述颜色相对于RGB等模型显得更加自然。电脑绘画时,这两个模型非常受到欢迎。

    HSL和HSV中,H都表示色相(Hue)。通常该值取值范围是[0°,360°],对应红橙黄绿青蓝紫-红这样顺序的颜色,构成一个首尾相接的色相环。色相的物理意义就是光的波长,不同波长的光呈现了不同的色相。

    HSL和HSV中,S都表示饱和度(Saturation)(有时也称为色度、彩度)即色彩的纯净程度。例如龙袍的金黄色饱和度就比屎黄色高。对应到到物理意义上:即一束光可能由很多种不同波长的单色光构成,波长越多越分散,则色彩的纯净程度越低,而单色的光构成的色彩纯净度就很高。

    两个颜色模型不同的就是最后一个份量。 
    HSL中的L表示亮度(Lightness/Luminance/Intensity)。根据缩写不同HSL有时也称作HLS或HSI(就是说HSL、HLS、HSI是一回事)。 
    HSV中的V表示明度(Value/Brightness)。根据缩写不同,HSV有时也被称作HSB(就是说HSV和HSB是一回事)。

    至于亮度和明度的区别,可以看下面的图。一种纯色的明度是白色的明度,而纯色的亮度等于中灰色的亮度。 
    此处输入图片的描述 
    下面的图能更好的对比HSL和HSV的区别:在圆柱体外围是纯色(红黄绿蓝紫…)HSL中,这圈纯色位于亮度(L)等于1/2的部位,而在HSV中是在明度(Value)等于1的部位。 
    此处输入图片的描述 
    将上面的圆柱体裁掉无用的部分,得到的是如下的锥形,就能更明显的看出HSL和HSV的区别了。 
    此处输入图片的描述

    YUV、YCbCr(YCC)、YPbPr、YDbDr、YIQ

    这些颜色模型大都是用在电视系统、数位摄影等地方。其中的Y分量都表示的是明亮度(Luminance、Luma)。

    YUV颜色模型中,U、V表示的是色度(Chrominance/Chroma)。YUV是欧洲电视系统所采用的颜色模型(属于PAL制式),颜色被分为一个亮度信号和两个色差信号进行传输。

    YCbCr(简称YCC)中,Cb和Cr蓝色(blue)和红色(red)的色度。YCbCr是YUV的压缩和偏移的版本。

    YPbPr类似YCbCr,与之不同的是,YPbPr选用的CIE色度坐标略有不同。一般SDTV传输的色差信号被称作Cb、Cr,而HDTV传输的色差信号被称作Pb、Pr。

    YDbDr也类似YCbCr,同样也是色度坐标不同。YDbDr是SECAM制式电视系统所用的颜色模型。

    YIQ也和上面的类似。。是用在了NTSC制式的的电视系统里。 
    此处输入图片的描述
    全球电视系统制式分布,PAL用YUV、SECAM用YDbDr、NTSC用YIQ


    下面再说一些人听懂的话: 
    YCbCr颜色空间,也就是YUV,YUV主要用于优化彩色视频信号的传输,使其向后相容老式黑白电视。与RGB视频信号传输相比,它最大的优点在于只需占用极少的频宽(RGB要求三个独立的视频信号同时传输)。其中“Y”表示明亮度(Luminance或Luma),也就是灰阶值;而“U”和“V” 表示的则是色度(Chrominance或Chroma),作用是描述影像色彩及饱和度,用于指定像素的颜色。“亮度”是透过RGB输入信号来建立的,方法是将RGB信号的特定部分叠加到一起。“色度”则定义了颜色的两个方面─色调与饱和度,分别用Cr和CB来表示。其中,Cr反映了GB输入信号红色部分与RGB信号亮度值之间的差异。而CB反映的是RGB输入信号蓝色部分与RGB信号亮度值之同的差异。 
      采用YUV色彩空间的重要性是它的亮度信号Y和色度信号U、V是分离的。如果只有Y信号分量而没有U、V分量,那么这样表示的图像就是黑白灰度图像。彩色电视采用YUV空间正是为了用亮度信号Y解决彩色电视机与黑白电视机的兼容问题,使黑白电视机也能接收彩色电视信号。 
       
      Y代表的灰度级较高,而CrCb则相对灰度值要少些。 
    这里写图片描述 
    从上图可以看出区别,Y对应的就是灰度或者说是亮度,而Cb、Cr则相对灰度级较少,人眼分辨差异较大。


    补充:

    YCrCb即YUV,主要用于优化彩色视频信号的传输,使其向后相容老式黑白电视。与RGB视频信号传输相比,它最大的优点在于只需占用极少的频宽(RGB要求三个独立的视频信号同时传输)。其中“Y”表示明亮度(Luminance或Luma),也就是灰阶值;而“U”和“V” 表示的则是色度(Chrominance或Chroma),作用是描述影像色彩及饱和度,用于指定像素的颜色。“亮度”是透过RGB输入信号来建立的,方法是将RGB信号的特定部分叠加到一起。“色度”则定义了颜色的两个方面─色调与饱和度,分别用Cr和CB来表示。其中,Cr反映了RGB输入信号红色部分与RGB信号亮度值之间的差异。而CB反映的是RGB输入信号蓝色部分与RGB信号亮度值之间的差异。   采用YUV色彩空间的重要性是它的亮度信号Y和色度信号U、V是分离的。如果只有Y信号分量而没有U、V分量,那么这样表示的图像就是黑白灰度图像。彩色电视采用YUV空间正是为了用亮度信号Y解决彩色电视机与黑白电视机的兼容问题,使黑白电视机也能接收彩色电视信号。   

    YUV与RGB相互转换的公式如下(RGB取值范围均为0-255)︰  

     Y = 0.299R + 0.587G + 0.114B   

       U = -0.147R - 0.289G + 0.436B   

       V = 0.615R - 0.515G - 0.100B   

       R = Y + 1.14V

       G = Y - 0.39U - 0.58V   

       B = Y + 2.03U   

    在DirectShow中,常见的RGB格式有RGB1、RGB4、RGB8、RGB565、RGB555、RGB24、RGB32、ARGB32等;常见的YUV格式有YUY2、YUYV、YVYU、UYVY、AYUV、Y41P、Y411、Y211、IF09、IYUV、YV12、YVU9、YUV411、YUV420等。   

    在人脸检测中也常常用到YCrCb空间,因为一般的图像都是基于RGB空间的,在RGB空间里人脸的肤色受亮度影响相当大,所以肤色点很难从非肤色点中分离出来,也就是说在此空间经过处理后,肤色点是离散的点,中间嵌有很多非肤色,这为肤色区域标定(人脸标定、眼睛等)带来了难题。如果把RGB转为YCrCb空间的话,可以忽略Y(亮度)的影响,因为该空间受亮度影响很小,肤色会产生很好的类聚。

    这样就把三维的空间将为二维的CrCb,肤色点会形成一定得形状,如:人脸的话会看到一个人脸的区域,手臂的话会看到一条手臂的形态,对处理模式识别很有好处,根据经验某点的CrCb值满足:133≤Cr≤173,77≤Cb≤127 那么该点被认为是肤色点,其他的就为非肤色点。


    Lab颜色

    RGB颜色空间相比,Lab是一种不常用的色彩空间。它是在1931年国际照明委员会(CIE)制定的颜色度量国际标准的基础上建立起来的。1976年,经修改后被正式命名为CIELab。它是一种设备无关的颜色系统,也是一种基于生理特征的颜色系统。这也就意味着,它是用数字化的方法来描述人的视觉感应。Lab颜色空间中的L分量用于表示像素的亮度,取值范围是[0,100],表示从纯黑到纯白;a表示从红色到绿色的范围,取值范围是[127,-128]b表示从黄色到蓝色的范围,取值范围是[127,-128]。下图所示为Lab颜色空间的图示;


        需要提醒的是,Lab颜色空间比计算机显示器、打印机甚至比人类视觉的色域都要大,表示为 Lab 的位图比 RGB 或 CMYK 位图获得同样的精度要求更多的每像素数据。虽然我们在生活中使用RGB颜色空间更多一些,但也并非Lab颜色空间真的一无所有。例如,在 Adobe Photoshop图像处理软件中,TIFF格式文件中,PDF文档中,都可以见到Lab颜色空间的身影。而在计算机视觉中,尤其是颜色识别相关的算法设计中,rgb,hsv,lab颜色空间混用更是常用的方法。


    为了使用颜色空间,首先应该了解各种颜色空间的特性。颜色空间的分类有多种方法。

    1.按使用类别分类

    彩色色度学模型:CIE-RGB、CIE-XYZ、均匀色差彩色模型(CIE 1976Luv和CIE Lab)

    工业彩色模型:RGB彩色显示模型、CMYK彩色印制模型、彩色传输模型YUV(PAL)、YIQ(NTSC)、YCrCb(数字高清晰度电视)

    视觉彩色模型:HVC(孟赛尔)、HSB(Photoshop)、HLS(Windows画图和Apple Color Picker)、HSI(图像分割)、HSY(电视)、Ohta(图像分割)等。

    2.按颜色感知分类

    混合颜色模型:按3种基色的比例混合而成的颜色。RGB、CMYK、XYZ等

    非线形亮度/色度颜色模型:用一个分量表示非色彩的感知,用两个分量表示色彩的感知,这两个分量都是色差属性。L*a*b、L*u*v、YUV、YIQ等。

    强度/饱和度/色调模型:用强度描述亮度或灰度等光强的感知,用饱和度和色调描述色彩的感知,这两个分量接近人眼对颜色的感觉。如HIS、HSL、HSV、LCH等


    展开全文
  • 一、数据准备 二、划分训练集-测试集 ... 颜色直方图(Color Histograms) 方向梯度直方图(Histograms of Oriented Gredient,HOG) 局部二值模式(Local Binary Pattern,LBP) 四、分类算法 逻辑回归 ...

    开发环境 jupyter notebook

    一、图像分类的过程

    这里写图片描述

    1. 图片必须经过标注
      图片的类别为有限的集合,如{猫、狗、牛、马、狼}
      每个类别的图片数量接近,如果不同类别图片的数量差异很大,训练出来的分类器容易倾向于图片数量多的类别

    2. 划分训练/测试集
      在训练之前,要把数据集划分为训练集(学习分类器)和测试集(对分类器进行评估)
      训练集和测试集相互独立,不重合!

    3. 特征表示 :对图片进行数值处理,转换成计算机可理解的特征,常用特征:
      颜色直方图(Color Histograms
      方向梯度直方图(Histogram of Oriented Gradients,HOG)
      局部二值模式(Local Binary Pattern,LBP)

    4. 分类算法 :一般分类算法即可:逻辑回归,支持向量机(SVM),随机森林

    5. 模型评估 : 混淆矩阵(Confusion Matrix
      精确度(Precision
      召回率(Recall
      F1值(F1 score) recall与Precision的调和均值

    二、开发环境:(安装)OpenCV 计算机视觉库

    安装:
    方法1:conda install -c menpo opencv 
    方法2:conda install --channel https://conda.anaconda.org/menpo opencv3 
    方法3:pip/conda install opencv-python
    方法4:使用 whl 文件进行安装,进入网站 http://www.lfd.uci.edu/~gohlke/pythonlibs/。 
          下载与当前环境兼容的 opencv 文件。切换到该文件所在的目录,在命令行环境下使用 
          例如:安装文件:opencv_python-3.2.0-cp35-cp35m-win_amd64.whl
          pip install opencv_python-3.2.0-cp35-cp35m-win_amd64.whl
    
    opencv 的导入: 
    import cv2
    cv2.__version__
    	
    	OpenCV的使用
    		在线文档:http://docs.opencv.org/2.4.11/
    

    三、颜色空间(颜色模型:RGB,HSV,Lab)

    RGB颜色空间有:

    RGB :模型容易理解,连续变换颜色时不直观
    (红red 绿green 蓝blue)三原色:取值范围都是:[0,255],[0,255],[0,255]

    HSV 是为了数字化图像提出来了,不能很好的表示人眼解释图像过程

    H (Hue)色相:[0,360]
    S (Saturation)饱和度,即色彩纯净度,0饱和度为白色
    V (Value/Brightness):明度 0明度为纯黑色

    在OpenCV中,颜色范围:
    H = [0,179]
    S = [0,255]
    V = [0,255]

    Lab:颜色之间的欧式距离有具体含义–距离越大,人眼感官两种颜色差距越远

    L 通道:像素亮度,上白下黑 中间灰
    a 通道:左绿 右红
    b 通道:一端纯蓝,一端纯黄

    灰度图:每个像素[0,255]

    根据人眼敏感度,把RGB图片转换为灰度图,不是简单把RGB每个通道取平均值
    而是:Y = 0.299*R + 0.587*G + 0.114*B

    这里写图片描述

    3.1 opencv–HSV颜色空间

    HSV(hue,saturation,value)颜色空间的模型对应于圆柱坐标系中的一个圆锥形子集,圆锥的顶面对应于V=1. 它包含RGB模型中的R=1,G=1,B=1 三个面,所代表的颜色较亮。
    色彩H由绕V轴的旋转角给定。红色对应于 角度0° ,绿色对应于角度120°,蓝色对应于角度240°。

    在HSV颜色模型中,每一种颜色和它的补色相差180° 。 饱和度S取值从0到1,所以圆锥顶面的半径为1。
    在圆锥的顶点(即原点)处,V=0,H和S无定义, 代表黑色。
    圆锥的顶面中心处S=0,V=1,H无定义,代表白色。
    从该点到原点代表亮度渐暗的灰色,即具有不同 灰度的灰色。
    对于这些点,S=0,H的值无定义。可以说,HSV模型中的V轴对应于RGB颜色空间中的主对角线。 在圆锥顶面的圆周上的颜色,V=1,S=1,这种颜色是纯色。

    HSV颜色空间它锥形的钻换模型中可以理解到: hue 通道的取值范围就应该是 0-360度,单数在opencv中其取值范围 [0,180]。
    在这里插入图片描述
    在opencv-hsv取值详情如下:
    在这里插入图片描述
    颜色库:
    在这里插入图片描述
    在这里插入图片描述
    原本输出的 HSV 的取值范围分别是 0-360, 0-1, 0-1;但是为了匹配目标数据类型 OpenCV 将每个通道的取值范围都做了修改,于是就变成了 0-180, 0-255, 0-255,并且同时解释道:为了适应 8bit 0-255 的取值范围,将 hue 通道 0-360 的取值范围做了减半处理

    四、OpenCV处理图片

    4.1 直接读取图片
    import cv2                      #导入 Opencv
    import os 
    import numpy as np
    import matplotlib.pyplot as plt
    
    
    output_dir = 'output2'	        #设置输出文件夹,若不存在则创建
    if not os.path.exists(output_dir):
    	os.mkdir(output_dir)	
    
    img_file = './../image.png'     #读取图片
    img = cv2.imread(img_file)
    
    type(img)                       #读入图片后得到ndarray 对象
    img.shape                       #ndarray的三个维度分别是图片的:高,宽,通道
    
    # pyplot.imgshow 在显示图片时是按照RGB通道顺序显示,cv2则相反
    # 需要通过 np.flip(img,axis = 2) 调整3个通道的顺序(若不调整图片颜色失真)
    plt.imshow(np.flip(img,axis = 2))
    plt.axis('off')
    plt.show()                      #图1
    
    plt.imshow(img)
    plt.axis('off')                 #不显示坐标
    plt.show()                      #图2
    
    #输出并保存图片
    output_image = os.path.join(output_dir,'image.png')
    cv2.imwrite(output_image,img)
    

    这里写图片描述

    4.2 读取图片并简单处理—图像特征:颜色直方图

    OpenCV-Python中调用的直方图计算函数为cv2.calcHist

    """
    hist = cv2.calcHist([image],             # 传入图像(列表)
                        [0],                 # 使用的通道(使用通道:可选[0],[1],[2])
                        None,                # 没有使用mask(蒙版)
                        [256],               # HistSize
                        [0.0,255.0])         # 直方图柱的范围
                                             # return->list
    """
    
    import cv2    
    import numpy as np
    import matplotlib.pyplot as plt
    
    def calcAndDrawHist(image, color):  
        hist= cv2.calcHist([image], [0], None, [256], [0.0,255.0])  
        minVal, maxVal, minLoc, maxLoc = cv2.minMaxLoc(hist)  
        histImg = np.zeros([256,256,3], np.uint8)  
        hpt = int(0.9* 256);  
          
        for h in range(256):  
            intensity = int(hist[h]*hpt/maxVal)  
            cv2.line(histImg,(h,256), (h,256-intensity), color)  
        return histImg
    
    
    if __name__ == '__main__':  
        original_img = cv2.imread("666.png")
        img = cv2.resize(original_img,None,fx=0.6,fy=0.6,interpolation = cv2.INTER_CUBIC)
        b, g, r = cv2.split(img)  
      
        histImgB = calcAndDrawHist(b, [255, 0, 0])  
        histImgG = calcAndDrawHist(g, [0, 255, 0])  
        histImgR = calcAndDrawHist(r, [0, 0, 255])  
    
        cv2.imshow("histImgB", histImgB)  
        cv2.imshow("histImgG", histImgG)  
        cv2.imshow("histImgR", histImgR)  
        cv2.imshow("Img", img)  
        cv2.waitKey(0)  
        cv2.destroyAllWindows() 
    

    在这里插入图片描述

    颜色空间 RGB–HSV–Lab

    RGB颜色空间

    import cv2
    import numpy as np
    from matplotlib import pyplot as plt
    %matplotlib inline 
    
    pic_file = '../data/images/image_crocus_0003.png'
    
    img_bgr = cv2.imread(pic_file, cv2.IMREAD_COLOR) #OpenCV读取颜色顺序:BRG 
    img_b = img_bgr[..., 0]
    img_g = img_bgr[..., 1]
    img_r = img_bgr[..., 2]
    fig = plt.gcf()                                  #图片详细信息
    
    
    fig = plt.gcf()                                  #分通道显示图片
    fig.set_size_inches(10, 15)
    
    plt.subplot(221)
    plt.imshow(np.flip(img_bgr, axis=2))             #展平图像数组并显示
    plt.axis('off')
    plt.title('Image')
    
    plt.subplot(222)
    plt.imshow(img_r, cmap='gray')
    plt.axis('off')
    plt.title('R')
    
    plt.subplot(223)
    plt.imshow(img_g, cmap='gray')
    plt.axis('off')
    plt.title('G')
    
    plt.subplot(224)
    plt.imshow(img_b, cmap='gray')
    plt.axis('off')
    plt.title('B')
    
    plt.show()
    

    这里写图片描述
    HSV颜色空间

    img_hsv = cv2.cvtColor(img_bgr, cv2.COLOR_BGR2HSV)
    img_h = img_hsv[..., 0]
    img_s = img_hsv[..., 1]
    img_v = img_hsv[..., 2]
    
    fig = plt.gcf()                      # 分通道显示图片
    fig.set_size_inches(10, 15)
    
    plt.subplot(221)
    plt.imshow(img_hsv)
    plt.axis('off')
    plt.title('HSV')
    
    plt.subplot(222)
    plt.imshow(img_h, cmap='gray')
    plt.axis('off')
    plt.title('H')
    
    plt.subplot(223)
    plt.imshow(img_s, cmap='gray')
    plt.axis('off')
    plt.title('S')
    
    plt.subplot(224)
    plt.imshow(img_v, cmap='gray')
    plt.axis('off')
    plt.title('V')
    
    plt.show()
    

    这里写图片描述
    L*a*b*颜色空间

    img_lab = cv2.cvtColor(img_bgr, cv2.COLOR_BGR2LAB)
    img_ls = img_lab[..., 0]
    img_as = img_lab[..., 1]
    img_bs = img_lab[..., 2] 
    
    # 分通道显示图片
    fig = plt.gcf()
    fig.set_size_inches(10, 15)
    
    plt.subplot(221)
    plt.imshow(img_lab)
    plt.axis('off')
    plt.title('L*a*b*')
    
    plt.subplot(222)
    plt.imshow(img_ls, cmap='gray')
    plt.axis('off')
    plt.title('L*')
    
    plt.subplot(223)
    plt.imshow(img_as, cmap='gray')
    plt.axis('off')
    plt.title('a*')
    
    plt.subplot(224)
    plt.imshow(img_bs, cmap='gray')
    plt.axis('off')
    plt.title('b*')
    
    plt.show()  
    

    这里写图片描述

    灰度图与其颜色直方图
    img_gray = cv2.cvtColor(img_bgr, cv2.COLOR_BGR2GRAY)
    fig = plt.gcf()
    fig.set_size_inches(5, 7.5)
    
    plt.imshow(img_gray, cmap='gray')
    plt.axis('off')
    plt.title('Gray')
    plt.show()
    
    """
    	cv2.calcHist(images, channels, mask, histSize, ranges[, hist[, accumulate]]) → hist
    	参数说明
    	images:   图片列表
    	channels: 需要计算直方图的通道。[0]表示计算通道0的直方图,[0,1,2]表示计算通道0,1,2所表示颜色的直方图
    	mask:     蒙版,只计算值>0的位置上像素的颜色直方图,取None表示无蒙版
    	histSize: 每个维度上直方图的大小,[8]表示把通道0的颜色取值等分为8份后计算直方图
    	ranges:   每个维度的取值范围,[lower0, upper0, lower1, upper1, ...],lower可以取到,upper无法取到
    	hist:     保存结果的ndarray对象
    	accumulate: 是否累积,如果设置了这个值,hist不会被清零,直方图结果直接累积到hist中
    """ 
    
    img_gray_hist = cv2.calcHist([img_gray], [0], None, [256], [0, 256])
    
    plt.plot(img_gray_hist)
    plt.title('Grayscale Histogram')
    plt.xlabel('Bins')
    plt.ylabel('# of Pixels')
    plt.show()
    

    这里写图片描述

    带蒙版的颜色直方图
    # 读取模板
    mask_file = '../data/masks/mask_crocus_0003.png'
    mask = cv2.imread(mask_file, cv2.IMREAD_UNCHANGED) 
    help(cv2.calcHist)
    img_gray_hist_with_mask = cv2.calcHist([img_gray], [0], mask, [256], [0, 256])
    """
    	图片按位与
    	cv2.bitwise_and(src1, src2[, dst[, mask]]) → dst
    	参数说明
    		src1: 图片1
    		src2: 图片2
    		dst: 保存结果的ndarray对象
    		mask: 蒙版 
    """
    img_masked = cv2.bitwise_and(img_gray, img_gray, mask=mask)
    
    plt.imshow(img_masked, cmap='gray')
    plt.axis('off')
    plt.title('Image with mask')
    plt.show()
    
    plt.plot(img_gray_hist_with_mask)
    plt.title('Grayscale Histogram')
    plt.xlabel('Bins')
    plt.ylabel('# of Pixels')
    
    plt.show()
    

    这里写图片描述

    多个颜色直方图
    # 按R、G、B三个通道分别计算颜色直方图
    b_hist = cv2.calcHist([img_bgr], [0], None, [256], [0, 256])
    g_hist = cv2.calcHist([img_bgr], [1], None, [256], [0, 256])
    r_hist = cv2.calcHist([img_bgr], [2], None, [256], [0, 256])
    
    # 显示3个通道的颜色直方图
    plt.plot(b_hist, label='B', color='blue')
    plt.plot(g_hist, label='G', color='green')
    plt.plot(r_hist, label='R', color='red')
    plt.legend(loc='best')
    plt.xlim([0, 256])
    plt.show()
    
    # 显示3个通道的颜色直方图
    plt.plot(b_hist, label='B', color='blue')
    plt.plot(g_hist, label='G', color='green')
    plt.plot(r_hist, label='R', color='red')
    plt.legend(loc='best')
    plt.xlim([0, 256])
    plt.show()
    

    这里写图片描述

    按多个通道计算颜色直方图

    关于直方图均衡详情 请点击

    # 把一个像素的多个通道合在一起看作一个值
    hist = cv2.calcHist([img_bgr], [0, 1, 2], None, [8, 8, 8], [0, 256, 0, 256, 0, 256])
    
    hist.shape
    # 含义:B取值在[0, 32), G取值在[0, 32), R取值在[0, 32)的像素个数
    hist[0, 0, 0]
    
    展开全文
  • 几种典型的颜色空间

    千次阅读 2013-11-02 19:27:14
    几种典型的颜色空间 (一)CIE色度模型 国际照明委员会(CIE,Commission Internationale de L'Eclairage / International Commission on Illumination)的色度模型是最早使用的模型之一。它是三维模型,其中,x和y...

    二.几种典型的颜色空间

    (一)CIE色度模型

    国际照明委员会(CIE,Commission Internationale de L'Eclairage / International Commission on Illumination)的色度模型是最早使用的模型之一。它是三维模型,其中,x和y两维定义颜色,第3维定义亮度。

    CIE 在1976 年规定了两种颜色空间。一种是用于自照明的颜色空间,叫做CIE LUV(图06-02-2)。

    图06-02-2 CIE 1976 Lu’v’色度图

    另一种用于非自照明的颜色空间,叫做CIE 1976 L*a*b*,或者叫CIE LAB。CIE LAB 系统使用的坐标叫做对色坐标(opponent color coordinate),如图06-02-3 所示。CIELAB 使用b*, a *和 L*坐标轴定义CIE 颜色空间。其中,L*值代表光亮度,其值从0(黑色)~100(白色)。b*和a*代表色度坐标,其中a* 代表红-绿轴,b* 代表黄-蓝轴,它们的值从0到10。a*= b* = 0表示无色,因此L* 就代表从黑到白的比例系数。使用对色坐标(opponet color coordinate)的想法来自这样的概念:颜色不能同时是红和绿,或者同时是黄和蓝,但颜色可以被认为是红和黄、红和蓝、绿和黄以及绿和蓝的组合。

    图06-02-3 CIE LAB 颜色空间

    CIE XYZ 是国际照明委员会在1931 年开发并在1964 修订的CIE 颜色系统(CIE Color System),该系统是其他颜色系统的基础。它使用相应于红、绿和蓝三种颜色作为三种基色,而所有其他颜色都从这三种颜色中导出。通过相加混色或者相减混色,任何色调都可以使用不同量的基色产生。CIE 1931 色度图(CIE 1931 Chromaticity Diagram),如图06-02-4(a)所示,图(b)是它的轮廓图。图(a)中的A点在色度图上的坐标是x =0.4832,y =0.3045,它的颜色与红苹果的颜色相匹配。

    图06-02-4 CIE 1931

    图06-02-4 CIE 1931色度图是用标称值表示的CIE 色度图,x 表示红色分量,y 表示绿色分量。图中的E 点代表白光,它的坐标为(0.33,0.33);环绕在颜色空间边沿的颜色是光谱色,边界代表光谱色的最大饱和度,边界上的数字表示光谱色的波长,其轮廓包含所有的感知色调。所有单色光都位于舌形曲线上,这条曲线就是单色轨迹,曲线旁标注的数字是单色(或称光谱色)光的波长值;自然界中各种实际颜色都位于这条闭合曲线内;RGB系统中选用的物理三基色在色度图的舌形曲线上。

    (二) RGB颜色空间

    计算机颜色显示器显示颜色的原理与彩色电视机一样,都是采用R、G、B相加混色的原理,通过发射出三种不同强度的电子束,使屏幕内侧覆盖的红、绿、蓝磷光材料发光而产生颜色的。这种颜色的表示方法称为RGB颜色空间表示。在多媒体计算机技术中,用得最多的是RGB颜色空间表示(图06-01-9)。

    根据三基色原理,用基色光单位来表示光的量,则在RGB颜色空间,任意色光F都可以用R、G、B三色不同分量的相加混合而成:

    F=r [ R ] + g [ G ] + b [ B ]

    RGB颜色空间还可以用一个三维的立方体来描述(图06-02-5)。

    fig5-4.gif (11080 bytes)

    图06-02-5 RGB颜色空间

    我们可知自然界中任何一种色光都可由R、G、B三基色按不同的比例相加混合而成,当三基色分量都为0(最弱)时混合为黑色光;当三基色分量都为k(最强)时混合为白色光。任一颜色F是这个立方体坐标中的一点,调整三色系数r、g、b中的任一系数都会改变F的坐标值,也即改变了F的色值。RGB颜色空间采用物理三基色表示,因而物理意义很清楚,适合彩色显像管工作。然而这一体制并不适应人的视觉特点。因而,产生了其他不同的颜色空间表示法。

    (三)HSI颜色空间

    HSI(Hue,Saturation and Intensity)颜色空间是从人的视觉系统出发,用色调(Hue)、色饱和度(Saturation或Chroma)和亮度(Intensity或Brightness)来描述颜色。HSI颜色空间可以用一个圆锥空间模型来描述(图06-02-6)。

    conea.GIF (19468 bytes)

    coneb.GIF (10739 bytes)

    conec.GIF (4108 bytes)

    coned.GIF (23036 bytes)

    conee.GIF (17268 bytes)

    图06-02-6 HSI颜色圆锥空间模型

    用这种描述HIS颜色空间的圆锥模型相当复杂,但确能把色调、亮度和色饱和度的变化情形表现得很清楚。其中:

    (A)HSI圆锥空间模型

    (B)线条示意图:圆锥上亮度、色度和饱和度的关系。

    (C)纵轴表示亮度:亮度值是沿着圆锥的轴线度量的,沿着圆锥轴线上的点表示完全不饱和的颜色,按照不同的灰度等级,最亮点为纯白色、最暗点为纯黑色。

    (D)圆锥纵切面:描述了同一色调的不同亮度和饱和度关系。

    (E)圆锥横切面:色调H为绕着圆锥截面度量的色环,圆周上的颜色为完全饱和的纯色,色饱和度为穿过中心的半径横轴。

    通常把色调和饱和度通称为色度,用来表示颜色的类别与深浅程度。由于人的视觉对亮度的敏感程度远强于对颜色浓淡的敏感程度,为了便于颜色处理和识别,人的视觉系统经常采用HSI颜色空间,它比RGB颜色空间更符合人的视觉特性。在图像处理和计算机视觉中大量算法都可在HSI颜色空间中方便地使用,它们可以分开处理而且是相互独立的。因此,在HSI颜色空间可以大大简化图像分析和处理的工作量。

    HSI颜色空间和RGB颜色空间只是同一物理量的不同表示法,因而它们之间存在着转换关系,如公式所示:

    其中

    (四)YUV(Lab)颜色空间

    在现代彩色电视系统中,通常采用三管彩色摄像机或彩色CCD(电耦合器件)摄像机,它把得到的彩色图像信号,经分色、分别放大校正得到RGB,再经过矩阵变换电路得到亮度信号Y和两个色差信号R-Y、B-Y,最后发送端将亮度和色差三个信号分别进行编码,用同一信道发送出去。这就是我们常用的YUV颜色空间。

    采用YUV颜色空间的重要性是它的亮度信号Y和色度信号U、V是分离的。如果只有Y信号分量而没有U、V分量,那么这样表示的图就是黑白灰度图。彩色电视采用YUV空间正是为了用亮度信号Y解决彩色电视机与黑白电视机的兼容问题,使黑白电视机也能接收彩色信号。

    根据美国国家电视制式委员会NTSC制式的标准,当白光的亮度用Y来表示时,它和红、绿、蓝三色光的关系可用如下式的方程描述:

    Y=0.3 R + 0.59 G + 0.11B

    这就是常用的亮度公式。色差U、V是由B-Y、R-Y按不同比例压缩而成的。YUV颜色空间与RGB颜色空间的转换关系如下:

    如果要由YUV空间转化成RGB空间,只要进行相应的逆运算即可。

    与YUV颜色空间类似的还有Lab颜色空间,它也是用亮度和色差来描述颜色分量,其中L为亮度、a和b分别为各色差分量。

    (五)CMY颜色空间

    彩色印刷或彩色打印的纸张是不能发射光线的,因而印刷机或彩色打印机就只能使用一些能够吸收特定的光波而反射其他光波的油墨或颜料。油墨或颜料的3基色是青(Cyan)、品红(Magenta)和黄(Yellow),简称为CMY。青色对应蓝绿色,品红对应紫红色。理论上说,任何一种由颜料表现的颜色都可以用这三种基色按不同的比例混合而成,这种颜色表示方法称CMY颜色空间表示法。彩色打印机和彩色印刷系统都采用CMY颜色空间。

    用CMY模型产生的颜色被称为相减色,是因为它减少了为视觉系统识别颜色所需要的反射光。在CMY相减混色中,三基色等量相减时得到黑色;等量黄色(Y)和品红(M)相减而青色(C)为0时,得到红色(R);等量青色(C)和品红(M)相减而黄色(Y)为0时,得到蓝色(B);等量黄色(Y)和青色(C)相减而品红(M)为0时,得到绿色(G)。这些三基色相减结果如图06-02-7所示。

    图06-02-7 三基色相减

    CMY空间正好与RGB空间互补,也即用白色减去RGB空间中的某一颜色值就等于同样颜色在CMY空间中的值。RGB空间与CMY空间的互补关系如表06-02-1所示。

    表06-02-1 RGB空间与CMY空间的互补关系

    RGB相加混色

    CMY相减混色

    对应颜色

    0 0 0

    1 1 1

    0 0 1

    1 1 0

    0 1 0

    1 0 1

    0 1 1

    1 0 0

    1 0 0

    0 1 1

    1 0 1

    0 1 0

    1 1 0

    0 0 1

    1 1 1

    0 0 0

    根据这个原理,很容易把RGB空间转换成CMY空间。由于彩色墨水和颜料的化学特性,用等量的CMY三基色得到的黑色不是真正的黑色,因此在印刷术中常加一种真正的黑色(black ink),所以CMY又写成CMYK。

    实际应用中,一幅图像在计算机中用RGB空间显示;用RGB或SHI空间编辑处理;打印输出时要转换成CMY空间;如果要印刷,则要转换成CMYK四幅印刷分色图,用于套印彩色印刷品。

    (六)YIQ模型

    YIQ模型与YUV模型非常类似,是在彩色电视制式中使用的另一种重要的颜色模型,NTSC彩色电视制式中使用。这里的Y表示亮度,I、Q是两个彩色分量。YIQ和 RGB的对应关系用下面的方程式表示:

    Y = 0.299R + 0.587G + 0.114B

    I = 0.596R - 0.275G - 0.321B

    Q = 0.212R - 0.523G + 0.311B

    或者写成矩阵的形式,

    (七)YCrCb模型

    YCrCb模型适用于计算机用的显示器。它也是使用Y、Cr和Cb来分别表示一种亮度分量信号和两种色度分量信号。YCrCb模型与RGB空间的转换关系如下:

    Y=0.299R +0.578G +0.114B

    Cr=( 0.500R -0.4187G -0.0813B )+128

    Cb=( - 0.1687R -0.3313G +0.500B )+128

    或者写成矩阵的形式,

    RGB与YCrCb之间的变换关系可写成如下的形式,

    展开全文
  • 颜色空间及分类

    千次阅读 2013-02-07 16:12:35
    一.颜色空间及分类 (一)颜色空间 颜色常用颜色空间来表示。颜色空间是用一种数学方法形象化表示颜色,人们用它来指定和产生颜色。例如,对于人来说,...颜色空间通常用3维模型表示,空间中的颜色能够看到或者

    一.颜色空间及分类

    (一)颜色空间

    颜色常用颜色空间来表示。颜色空间是用一种数学方法形象化表示颜色,人们用它来指定和产生颜色。例如,对于人来说,我们可以通过色调、饱和度和明度来定义颜色;对于显示设备来说,人们使用红、绿和蓝磷光体的发光量来描述颜色;对于打印或者印刷设备来说,人们使用青色、品红色、黄色和黑色的反射和吸收来产生指定的颜色。

    颜色空间通常用3维模型表示,空间中的颜色能够看到或者使用颜色模型产生。颜色空间中的颜色通常用代表3个参数的3维坐标来描述,其颜色要取决于所使用的坐标。

    为说明颜色空间的概念,图06-02-1表示使用色调、饱和度和明度构造的一种颜色空间,称为HSB(hue, saturation and brightness)颜色空间。色调用角度来标定,通常红色标为0o青色标为180o;在径向方向上饱和度的深浅用离开中心线的距离表示;明度用垂直轴表示。

    图06-02-1色调-饱和度-明度颜色空间

    颜色空间有设备相关和设备无关之分。设备相关的颜色空间是指颜色空间指定生成的颜色与生成颜色的设备有关。例如,RGB颜色空间是与显示系统相关的颜色空间,计算机显示器使用RGB来显示颜色,用像素值(例如,R250,G123,B23)生成的颜色将随显示器的亮度和对比度的改变而改变。设备无关的颜色空间是指颜色空间指定生成的颜色与生成颜色的设备无关,例如,CIE L*a*b*颜色空间就是设备无关的颜色空间,它建筑在HSV(hue, saturation and value)颜色空间的基础上,用该空间指定的颜色无论在什么设备上生成的颜色都相同。

    现在,人们已经构造了各种各样的颜色空间,以适应不同的应用场合。

    在一个典型的多媒体计算机系统中,常常涉及到用几种不同的颜色空间表示图形和图像的颜色,以对应于不同的场合和应用。因此,数字图像的生成、存贮、处理及显示时对应不同的颜色空间需要作不同的处理和转换。

    (二)颜色空间分类

    从颜色感知的角度来分类,颜色空间可考虑分成如下三类:

    Ø 混合(mixture)型颜色空间:按三种基色的比例合成颜色。例如,RGBCMY(K)XYZ等颜色空间就属于这种类型。

    Ø 非线性亮度/色度(luma/chroma)型颜色空间:用一个分量表示非色彩的感知,用两个独立的分量表示色彩的感知。当需要黑白图像时,这样的系统非常方便。例如,L*a*b, L*u*vYUV YIQ 就属于这种类型。

    Ø 强度/饱和度/色调(intensity/saturation/hue)型颜色空间:用饱和度和色度描述色彩的感知,可使颜色的解释更直观,而且对消除光亮度的影响很有用。例如,HSI, HSL, HSV LCH 等。

    从技术上角度区分,颜色空间可考虑分成如下三类:

    Ø RGB 型颜色空间/计算机图形颜色空间:这类模型主要用于电视机和计算机的颜色显示系统。例如,RGBHSI, HSL HSV 等颜色空间。在显示技术和印刷技术中,颜色空间经常被称为颜色模型(color mode)。“颜色空间”侧重于颜色的表示,而“颜色模型”侧重于颜色的生成。

    Ø XYZ 型颜色空间/CIE颜色空间:这类颜色空间是由国际照明委员会定义的颜色空间,通常作为国际性的颜色空间标准,用作颜色的基本度量方法。国际照明委员会定义的颜色空间是与设备无关的颜色表示法,在科学计算中得到广泛应用。对不能直接相互转换的两个颜色空间,可利用这类颜色空间作为过渡性的颜色空间,例如,CIE 1931 XYZL*a*bL*u*vLCH 等颜色空间就可作为过渡性的转换空间。

    Ø YUV 型颜色空间/电视系统颜色空间:由广播电视需求的推动而开发的颜色空间,主要目的是通过压缩色度信息以有效地播送彩色电视图像。例如,YUVYIQITU-R BT.601 Y'CbCr, ITU-R BT.709 Y'CbCr SMPTE-240M Y'PbPr等颜色空间。

    从分量贡献上区分,颜色空间可考虑分成如下三类:

    • 加法模型RGB模型,用不同强度的红、绿和蓝相加来产生各种颜色;CIE色度模型,用xy相加来产生各种颜色.

    • 减法模型CMY(K)YUV模型。

    • 混合模型

      二.几种典型的颜色空间

      (一)CIE色度模型

      国际照明委员会(CIECommission Internationale de L'Eclairage / International Commission on Illumination)的色度模型是最早使用的模型之一。它是三维模型,其中,xy两维定义颜色,第3维定义亮度。

      CIE 1976 年规定了两种颜色空间。一种是用于自照明的颜色空间,叫做CIE LUV(图06-02-2)。

      06-02-2 CIE 1976 Luv色度图

      另一种用于非自照明的颜色空间,叫做CIE 1976 L*a*b*,或者叫CIE LABCIE LAB 系统使用的坐标叫做对色坐标(opponent color coordinate),如图06-02-3 所示。CIELAB 使用b*, a * L*坐标轴定义CIE 颜色空间。其中,L*值代表光亮度,其值从0(黑色)~100(白色)b*a*代表色度坐标,其中a*代表红-绿轴,b*代表黄-蓝轴,它们的值从010a*= b*= 0表示无色,因此L*就代表从黑到白的比例系数。使用对色坐标(opponet color coordinate)的想法来自这样的概念:颜色不能同时是红和绿,或者同时是黄和蓝,但颜色可以被认为是红和黄、红和蓝、绿和黄以及绿和蓝的组合。

      06-02-3 CIE LAB 颜色空间

      CIE XYZ 是国际照明委员会在1931 年开发并在1964 修订的CIE 颜色系统(CIE Color System),该系统是其他颜色系统的基础。它使用相应于红、绿和蓝三种颜色作为三种基色,而所有其他颜色都从这三种颜色中导出。通过相加混色或者相减混色,任何色调都可以使用不同量的基色产生。CIE 1931 色度图(CIE 1931 Chromaticity Diagram),如图06-02-4(a)所示,图(b)是它的轮廓图。图(a)中的A点在色度图上的坐标是x 0.4832y 0.3045,它的颜色与红苹果的颜色相匹配。

      06-02-4 CIE 1931

      图06-02-4 CIE 1931色度图是用标称值表示的CIE 色度图,x 表示红色分量,y 表示绿色分量。图中的E 点代表白光,它的坐标为(0.330.33);环绕在颜色空间边沿的颜色是光谱色,边界代表光谱色的最大饱和度,边界上的数字表示光谱色的波长,其轮廓包含所有的感知色调。所有单色光都位于舌形曲线上,这条曲线就是单色轨迹,曲线旁标注的数字是单色(或称光谱色)光的波长值;自然界中各种实际颜色都位于这条闭合曲线内;RGB系统中选用的物理三基色在色度图的舌形曲线上。

      二) RGB颜色空间

      计算机颜色显示器显示颜色的原理与彩色电视机一样,都是采用RGB相加混色的原理,通过发射出三种不同强度的电子束,使屏幕内侧覆盖的红、绿、蓝磷光材料发光而产生颜色的。这种颜色的表示方法称为RGB颜色空间表示。在多媒体计算机技术中,用得最多的是RGB颜色空间表示(图06-01-9)。

      根据三基色原理,用基色光单位来表示光的量,则在RGB颜色空间,任意色光F都可以用RGB三色不同分量的相加混合而成:

      Fr [ R ] + g [ G ] + b [ B ]

      RGB颜色空间还可以用一个三维的立方体来描述(图06-02-5)。

      fig5-4.gif (11080 bytes)

      图06-02-5 RGB颜色空间

      我们可知自然界中任何一种色光都可由RGB三基色按不同的比例相加混合而成,当三基色分量都为0(最弱)时混合为黑色光;当三基色分量都为k(最强)时混合为白色光。任一颜色F是这个立方体坐标中的一点,调整三色系数rgb中的任一系数都会改变F的坐标值,也即改变了F的色值。RGB颜色空间采用物理三基色表示,因而物理意义很清楚,适合彩色显像管工作。然而这一体制并不适应人的视觉特点。因而,产生了其他不同的颜色空间表示法。

      三)HSI颜色空间

      HSIHueSaturation and Intensity)颜色空间是从人的视觉系统出发,用色调(Hue)、色饱和度(SaturationChroma)和亮度(IntensityBrightness)来描述颜色。HSI颜色空间可以用一个圆锥空间模型来描述(图06-02-6)

      conea.GIF (19468 bytes)

      coneb.GIF (10739 bytes)

      conec.GIF (4108 bytes)

      coned.GIF (23036 bytes)

      conee.GIF (17268 bytes)

      06-02-6 HSI颜色圆锥空间模型

      用这种描述HIS颜色空间的圆锥模型相当复杂,但确能把色调、亮度和色饱和度的变化情形表现得很清楚。其中:

      AHSI圆锥空间模型

      B)线条示意图:圆锥上亮度、色度和饱和度的关系。

      C)纵轴表示亮度:亮度值是沿着圆锥的轴线度量的,沿着圆锥轴线上的点表示完全不饱和的颜色,按照不同的灰度等级,最亮点为纯白色、最暗点为纯黑色。

      D)圆锥纵切面:描述了同一色调的不同亮度和饱和度关系。

      E)圆锥横切面:色调H为绕着圆锥截面度量的色环,圆周上的颜色为完全饱和的纯色,色饱和度为穿过中心的半径横轴。

      通常把色调和饱和度通称为色度,用来表示颜色的类别与深浅程度。由于人的视觉对亮度的敏感程度远强于对颜色浓淡的敏感程度,为了便于颜色处理和识别,人的视觉系统经常采用HSI颜色空间,它比RGB颜色空间更符合人的视觉特性。在图像处理和计算机视觉中大量算法都可在HSI颜色空间中方便地使用,它们可以分开处理而且是相互独立的。因此,在HSI颜色空间可以大大简化图像分析和处理的工作量。

      HSI颜色空间和RGB颜色空间只是同一物理量的不同表示法,因而它们之间存在着转换关系,如公式所示:

      其中

      四)YUVLab)颜色空间

      在现代彩色电视系统中,通常采用三管彩色摄像机或彩色CCD(电耦合器件)摄像机,它把得到的彩色图像信号,经分色、分别放大校正得到RGB,再经过矩阵变换电路得到亮度信号Y和两个色差信号RYBY,最后发送端将亮度和色差三个信号分别进行编码,用同一信道发送出去。这就是我们常用的YUV颜色空间。

      采用YUV颜色空间的重要性是它的亮度信号Y和色度信号UV是分离的。如果只有Y信号分量而没有UV分量,那么这样表示的图就是黑白灰度图。彩色电视采用YUV空间正是为了用亮度信号Y解决彩色电视机与黑白电视机的兼容问题,使黑白电视机也能接收彩色信号。

      根据美国国家电视制式委员会NTSC制式的标准,当白光的亮度用Y来表示时,它和红、绿、蓝三色光的关系可用如下式的方程描述:

      Y0.3 R + 0.59 G + 0.11B

      这就是常用的亮度公式。色差UV是由BYRY按不同比例压缩而成的。YUV颜色空间与RGB颜色空间的转换关系如下:

      如果要由YUV空间转化成RGB空间,只要进行相应的逆运算即可。

      YUV颜色空间类似的还有Lab颜色空间,它也是用亮度和色差来描述颜色分量,其中L为亮度、ab分别为各色差分量。

      五)CMY颜色空间

      彩色印刷或彩色打印的纸张是不能发射光线的,因而印刷机或彩色打印机就只能使用一些能够吸收特定的光波而反射其他光波的油墨或颜料。油墨或颜料的3基色是青(Cyan)、品红(Magenta)和黄(Yellow),简称为CMY。青色对应蓝绿色,品红对应紫红色。理论上说,任何一种由颜料表现的颜色都可以用这三种基色按不同的比例混合而成,这种颜色表示方法称CMY颜色空间表示法。彩色打印机和彩色印刷系统都采用CMY颜色空间。

      CMY模型产生的颜色被称为相减色,是因为它减少了为视觉系统识别颜色所需要的反射光。CMY相减混色中,三基色等量相减时得到黑色;等量黄色(Y)和品红(M)相减而青色(C)0时,得到红色(R);等量青色(C)和品红(M)相减而黄色(Y)0时,得到蓝色(B);等量黄色(Y)和青色(C)相减而品红(M)0时,得到绿色(G)。这些三基色相减结果如图06-02-7所示。

      06-02-7 三基色相减

      CMY空间正好与RGB空间互补,也即用白色减去RGB空间中的某一颜色值就等于同样颜色在CMY空间中的值。RGB空间与CMY空间的互补关系如表06-02-1所示。

      表06-02-1 RGB空间与CMY空间的互补关系

      RGB相加混色

      CMY相减混色

      对应颜色

      0 0 0

      1 1 1

      0 0 1

      1 1 0

      0 1 0

      1 0 1

      0 1 1

      1 0 0

      1 0 0

      0 1 1

      1 0 1

      0 1 0

      1 1 0

      0 0 1

      1 1 1

      0 0 0

      根据这个原理,很容易把RGB空间转换成CMY空间。由于彩色墨水和颜料的化学特性,用等量的CMY三基色得到的黑色不是真正的黑色,因此在印刷术中常加一种真正的黑色(black ink),所以CMY又写成CMYK

      实际应用中,一幅图像在计算机中用RGB空间显示;用RGBSHI空间编辑处理;打印输出时要转换成CMY空间;如果要印刷,则要转换成CMYK四幅印刷分色图,用于套印彩色印刷品。

      六)YIQ模型

      YIQ模型与YUV模型非常类似,是在彩色电视制式中使用的另一种重要的颜色模型,NTSC彩色电视制式中使用。这里的Y表示亮度,IQ是两个彩色分量。YIQ RGB的对应关系用下面的方程式表示:

      Y = 0.299R + 0.587G + 0.114B

      I = 0.596R - 0.275G - 0.321B

      Q = 0.212R - 0.523G + 0.311B

      或者写成矩阵的形式,

      七)YCrCb模型

      YCrCb模型适用于计算机用的显示器。它也是使用YCrCb来分别表示一种亮度分量信号和两种色度分量信号。YCrCb模型与RGB空间的转换关系如下:

      Y0.299R 0.578G 0.114B

      Cr( 0.500R 0.4187G 0.0813B )128

      Cb=( - 0.1687R 0.3313G 0.500B )128

      或者写成矩阵的形式,

      RGBYCrCb之间的变换关系可写成如下的形式,

    展开全文
  • 常用色彩空间介绍

    千次阅读 2018-03-05 11:09:19
    参考博客地址:http://blog.csdn.net/wangjinwj2008/article/details/8272081HSI、HSV、RGB、CMY、CMYK、HSL、HSB、Ycc、XYZ、Lab、YUV色彩空间颜色模型)HSV颜色空间 RGB转化到HSV的算法:max=max(R,G,B);...
  • 常用的颜色空间

    千次阅读 2018-09-08 23:43:05
    颜色空间通常用三个相对独立的属性来描述,三个独立的变量综合作用,自然构成一个空间坐标,这就是颜色空间颜色模型)。而颜色可以由不同的角度,用三个不同属性加以描述,就产生了不同的颜色空间。但被描述的...
  • 图像处理常用的颜色空间

    千次阅读 2019-03-18 10:01:13
    1、BGR颜色空间 所具有的特性如下: 1.这是一个加色空间,通过B,G,R,之间的线性组合获得颜色。 2.三通道通过撞击表面的光亮相关联。 2、HSV颜色空间 HSV(Hue, Saturation, Value)是根据颜色的直观特性由A. R....
  • 彻底搞懂Lab 颜色空间

    万次阅读 2018-09-04 00:53:31
    在开始之前,先明确一下Lab颜色空间(Lab color space)的名字: - Lab的全称是CIELAB,有时候也写成CIE L*a*b* - 这里的CIE代表International Commission on Illumination(国际照明委员会),它是一个关于光照、...
  • 概述本文章会详细的介绍RGB颜色空间与RGB三色中色调、饱和度、亮度之间的关系,最后会介绍HSV颜色空间!一.RGB颜色空间1. 起源 RGB三原色起源于上世纪初1809年Thomas Young提出视觉的三原色学说,随后Helmholtz...
  • 色彩空间

    千次阅读 2018-12-13 12:06:43
    颜色空间按照基本结构可以分两大类:基色颜色空间 和 色、亮分离颜色空间。前者的典型是 RGB,还包括 CMY、CMYK、CIE XYZ 等;后者包括 YCC/YUV、Lab、以及一批“色相类颜色空间”。CIE XYZ 是定义一切颜色空间的...
  • 图像色彩空间之RGB与HSI

    万次阅读 2015-04-24 14:12:24
    2)非线性亮度/色度型颜色空间:这种色彩空间的特点是用一个分量表示非色彩的感知,用两个独立的分量表示色彩的感知。当需要黑白图像时,这样的系统非常方便。例如,YUV等。 3)强度/饱和度/色调型颜色空间:用饱和度...
  • 颜色迁移之一——基础知识(色彩空间及其转换)

    万次阅读 多人点赞 2015-06-16 12:15:25
    因为我的本科毕业论文题目跟颜色迁移有关,我以后我会慢慢总结颜色迁移方面的算法与技术~~~~首先介绍下什么事颜色迁移。  颜色迁移是计算机视觉领域的一个很有趣的问题,它实际上要我们解决这么一个问题:基于图像A...
  • 颜色空间(彩色模型、色彩空间、 彩色系统etc)是对色彩的一种描述方式,定义有很多种,区别在于面向不同的应用背景。  例如显示器中采用的RGB颜色空间是基于物体发光定义的(RGB正好对应光的三原色:Red,Green,...
  • 【图像处理】常用色彩空间

    万次阅读 2016-06-30 14:01:43
    常用色彩空间
  • RGB颜色空间 RGB(red,green,blue)颜色空间最常用的用途就是显示器系统,彩色阴极射线管,彩色光栅图形的显示器 都使用R、G、B数值来驱动R、G、B 电子枪发射电子,并分别激发荧光屏上的R、G、...RGB色彩空间称为与设备相
  • HSV颜色空间 HSV(hue,saturation,value)颜色空间的模型对应于圆柱坐标系中的一个圆锥形子集,圆锥的顶面对应于V=1. 它包含RGB模型中的R=1,G=1,B=1 三个面,所代表的颜色较亮。色彩H由绕V轴的旋转角给定。红色对应...
  • Lab颜色空间

    万次阅读 多人点赞 2012-01-14 11:48:04
    同RGB颜色空间相比,Lab是一种不常用的色彩空间。它是在1931年国际照明委员会(CIE)制定的颜色度量国际标准的基础上建立起来的。1976年,经修改后被正式命名为CIELab。它是一种设备无关的颜色系统,也是一种基于...
  • 图像处理算法——RGB颜色空间

    万次阅读 2019-08-10 21:50:01
    RGB颜色空间 RGB(red,green,blue)颜色空间最常用的用途就是显示器系统,彩色阴极射线管,彩色光栅图形的显示器 都使用R、G、B数值来驱动R、G、B 电子枪发射电子,并分别激发荧光屏上的...RGB色彩空间称为与设备相关的...
  • CIELab和LCH的色彩空间

    千次阅读 2016-08-20 14:01:20
    CIE Lab: LAB色空间是基于一种颜色不能同时既是蓝又是黄这个理论而建立。所以CIE Lab,单一数值可用于描述红/绿色及黄/蓝色特徽。当一种颜色用CIE L*a*b*时,L* 表示明度值...CIE Lab和LCH的色彩空间图 CIE L
  • Unity3D - 颜色空间 (Color Space)

    万次阅读 2017-08-06 19:22:04
    除了选择渲染路径(Rendering Path)之外,在使用照明之前选择“颜色空间(Color Space)”也很重要。
1 2 3 4 5 ... 20
收藏数 265,864
精华内容 106,345
关键字:

颜色空间