图像处理 颜色空间

2014-07-23 21:07:40 aoshilang2249 阅读数 18457
  • 图像色彩空间转换

    掌握OpenCV核心模块,熟练使用相关API 理解各个API背后的相关算法原理,每个参数意义 有能力解决使用应用场景问题,大量工程代码经验分享 掌握图像处理与视频分析,图像分析与测量编码与开发技巧

    73人学习 贾志刚
    免费试看

原理介绍:


颜色空间也称彩色模型(又称彩色空间或彩色系统)它的用途是在某些标准下用通常可接受的方式对彩色加以说明。 本质上,彩色模型是坐标系统和子空间的阐述。位于系统的每种颜色都有单个点表示。现在使用的彩色模型很多,主要是由于彩色科学是一个包括很多应用的很宽的领域。 在彩色图像处理中,选择合适的彩色模型是很重要的。从应用的角度来看,人们提出的众多彩色模型可以分为两类。一类面向诸如彩色显示器或彩色打印机之类输出显示场合使用的硬设备。另一类面向视觉感知或者说以彩色处理分析为目的的应用,如动画中的彩色图形,各种图像处理的算法等。 


RGB(红绿蓝)


RGB是依据人眼识别的颜色定义出的空间,可表示大部分颜色。是图像处理中最基本、最常用、面向硬件的颜色空间,是一种光混合的体系。

RGB颜色空间最常用的用途就是显示器系统,彩色阴极射线管,彩色光栅图形的显示器都使用R、G、B数值来驱动R、G、B 电子枪发射电子,并分别激发荧光屏上的R、G、B三种颜色的荧光粉发出不同亮度的光线,并通过相加混合产生各种颜色。扫描仪也是通过吸收原稿经反射或透射而发送来的光线中的R、G、B成分,并用它来表示原稿的颜色。

模型:


可以看到RGB颜色模式用三维空间中的一个点表示一种颜色,每个点有三个分量,分别表示红、绿、蓝的亮度值,亮度值限定为【0,1】。在RGB模型的立方体中,原点对应的颜色为黑色,它的三个分量值都为0;距离原点最远的顶点对应的颜色为白色,它的三个分量值都为1。从黑色到白色的灰度值分布在这两个点的连线上,该虚线称为灰度线;立方体的其余各点对应不同的颜色,即三原色红、绿、蓝及其混合色黄、品红、青色。

HSI


HSI色彩空间是从人的视觉系统出发,用色调(Hue)、饱和度(Saturation或Chroma)和亮度 (Intensity或Brightness)来描述色彩。

H——表示颜色的相位角。红、绿、蓝分别相隔120度;互补色分别相差180度,即颜色的类别。
S——表示成所选颜色的纯度和该颜色最大的纯度之间的比率,范围:[0,  1],即颜色的深浅程度。
I——表示色彩的明亮程度,围:[0, 1],人眼对亮度很敏感!

模型:



可以看到HSI色彩空间和RGB色彩空间只是同一物理量的不同表示法,因而它们之间存在着转换关系:HSI颜色模式中的色调使用颜色类别表示,饱和度与颜色的白光光亮亮度刚好成反比,代表灰色与色调的比例,亮度是颜色的相对明暗程度。

CMYK


CMYK是一种依靠反光的色彩模式,我们是怎样阅读报纸的内容呢?是由阳光或灯光照射到报纸上,再反射到我们的眼中,才看到内容。它需要有外界光源,如果你在黑暗房间内是无法阅读报纸的。只要在屏幕上显示的图像,就是RGB模式表现的。只要是在印刷品上看到的图像,就是CMYK模式表现的。大多数在纸上沉积彩色颜料的设备,如彩色打印机和复印机,要求输入CMY数据,在内部进行RGB到CMY的转换。

模型:



青色Cyan、品红色Magenta、黄色Yellow是光的二次色,是颜料的颜色。而K取的是black最后一个字母,之所以不取首字母,是为了避免与蓝色(Blue)混淆。当红绿蓝三原色被混合时,会产生白色,当混合青色、品红色、黄色三原色时会产生黑色。从理论上来说,只需要CMY三种油墨就足够了,但是由于目前制造工艺还不能造出高纯度的油墨,CMY相加的结果实际是一种暗红色。

YUV


YUV 颜色空间在 PAL,NTSC和 SECAM复合颜色视频标准中使用。采用YUV色彩空间的重要性是它的亮度信号Y和色度信号U、V是分离的。黑白电视系统只使用亮度信号(Y);彩色电视采用YUV空间正是为了用亮度信号Y解决彩色电视机与黑白电视机的兼容问题,色度信号(U,V)以一种特殊的方式加入亮度信号,这样,黑白电视接收机能够显示正常的黑白图像,而彩色电视接收机能够对对附加的色度信号进行解码从而显示彩色图像。

人眼对色度的敏感程度要低于对亮度的敏感程度。人类视网膜上的视网膜杆细胞要多于视网膜锥细胞,说得通俗一些,视网膜杆细胞的作用就是识别亮度,而视网膜锥细胞的作用就是识别色度。所以,你的眼睛对于亮和暗的分辨要比对颜色的分辨精细一些。正是因为这个,在我们的视频存储中,没有必要存储全部颜色信号。所以把YUV分开存储,Y信号是黑白信号,是以全分辨率存储的,而色度信号并不是用全分辨率存储的。

模式:




颜色空间是一系列颜色的数学表现形式。三种最流行的颜色模型是RGB(用于计算机图形);YIQ,YUV或YCbCr(用于视频系统)和CMYK(用于彩色打印)。但是,这三种颜色没有一种和我们直觉概念上的色调,饱和度,亮度有直接的联系。这就使我们暂时去追寻其它的模型,如HIS和HSV,它们能简化编程,处理和终端用户操作。

RGB与HSI转换


RGB转HSI




HSI转RGB


给定 HSI空间中的 (h, s, l) 值定义的一个颜色,带有 h 在指示色相角度的值域 [0, 360)中,分别表示饱和度和亮度的s 和 l 在值域 [0, 1] 中,相应在 RGB 空间中的 (r, g, b) 三原色,带有分别对应于红色、绿色和蓝色的 r, g 和 b 也在值域 [0, 1] 中,它们可计算为:

首先,如果 s = 0,则结果的颜色是非彩色的、或灰色的。在这个特殊情况,r, g 和 b 都等于 l。注意 h 的值在这种情况下是未定义的。当 s ≠ 0 的时候,可以使用下列过程:



RGB转CMYK




RGB与YUV 转换


伽马校正后的转换




源码


考虑到RGB与CMYK、YUV转换很简单,所以这里展示RGB与HSI颜色互转的C++代码

//================================================================================
/// @brief HLS <====> RGB
///
/// [1]H是色相,代表了6种颜色,分成0~6区域,用一个模型来表述就是一个双(六)棱椎,其中的L是HSL立方体的主对角线。
//     RGB立方体的顶点:红、黄、绿、青、蓝和品红就成为HSL六角形的顶点,0-360度的范围内有6种颜色,但是它不是平均分布的,如绿色最多.
///    H是0-360,L和S是0.00%-100.00%  
//================================================================================
//HLS ---> RGB
void RGBtoHLS (int rgb, double& H, double& L, double& S)
{
	Color color(rgb);
	RGBtoHLS(color.R, color.G, color.B, H, L, S);
}

//HLS ---> RGB
void RGBtoHLS (int r, int g, int b, double& H, double& L, double& S)
{
	int   n_cmax = max(r, max(g, b));
	int   n_cmin = min(r, min(g, b));

	double Delta = 0;
	double Max = 0, Min = 0;
	double Redf = 0, Greenf = 0, Bluef = 0;

	Redf    = (r / 255.0f);
	Greenf  = (g / 255.0f);
	Bluef   = (b / 255.0f); 

	Max     = max(max(Redf, Greenf), Bluef);
	Min     = min(min(Redf, Greenf), Bluef);

	H = 0;
	L = (Max + Min) / 2.0f;
	S = 0;

	if (Max == Min)
	{
		return;
	}

	Delta = (Max - Min);
	if (L < 0.5)
		S = Delta / (Max + Min);
	else
		S = Delta / (2.0 - Max - Min);

	if (Redf == Max)
	{
		if (Greenf >= Bluef)
		{
			H = (Greenf - Bluef) / Delta;
		}
		else
		{
			H = 6.0 + (Greenf - Bluef) / Delta;
		}
	}		
	else if (Greenf == Max)
		H = 2.0 + (Bluef - Redf) / Delta;
	else
		H = 4.0 + (Redf - Greenf) / Delta;

	H /= 6.0; //除以6,表示在那个部分。

	if (H < 0.0)
		H += 1.0;   
	if (H > 1)
		H -= 1;

	H = (int)(H * 360); //转成[0, 360]
}

void Color_HueToRgb(double p, double q, double Ht, double *Channel)
{
	if (Ht < 0.0)
		Ht += 1.0;
	else if (Ht > 1.0)
		Ht -= 1.0;

	if ((6.0 * Ht) < 1.0)
		*Channel = (p + (q - p) * Ht * 6.0);
	else if ((2.0 * Ht) < 1.0)
		*Channel = (q);
	else if ((3.0 * Ht) < 2.0)
		*Channel = (p + (q - p) * ((2.0F / 3.0F) - Ht) * 6.0);
	else
		*Channel = (p);
}

//RGB ---> HLS
void HLStoRGB (double H, double L, double S, BYTE &r, BYTE &g, BYTE &b)
{
	double M1 = 0, M2 = 0;
	double Redf = 0, Greenf = 0, Bluef = 0;

	double hue = H / 360;

	if (S == 0)//灰色
	{
		Redf    = L;
		Greenf  = L;
		Bluef   = L;
	}
	else
	{
		if (L <= 0.5)
			M2 = L * (1.0 + S);
		else
			M2 = L + S - L * S;

		M1 = (2.0 * L - M2);

		Color_HueToRgb(M1, M2, hue + (1.0F / 3.0F), &Redf);
		Color_HueToRgb(M1, M2, hue, &Greenf);
		Color_HueToRgb(M1, M2, hue - (1.0F / 3.0F), &Bluef);
	}

	r = (BYTE)(Redf * 255);
	g = (BYTE)(Bluef * 255);
	b = (BYTE)(Greenf * 255);
}



<span style="font-family: Arial, Helvetica, sans-serif; background-color: rgb(255, 255, 255);">参考文档: http://blog.csdn.net/idfaya/article/details/6770414</span>


2019-03-18 10:01:13 zhangjunp3 阅读数 1665
  • 图像色彩空间转换

    掌握OpenCV核心模块,熟练使用相关API 理解各个API背后的相关算法原理,每个参数意义 有能力解决使用应用场景问题,大量工程代码经验分享 掌握图像处理与视频分析,图像分析与测量编码与开发技巧

    73人学习 贾志刚
    免费试看

1、BGR颜色空间

所具有的特性如下:

1.这是一个加色空间,通过B,G,R,之间的线性组合获得颜色。

2.三通道通过撞击表面的光亮相关联。

2、HSV颜色空间

HSV(Hue, Saturation, Value)是根据颜色的直观特性由A. R. Smith在1978年创建的一种颜色空间, 也称六角锥体模型(Hexcone Model)。、这个模型中颜色的参数分别是:色调(H),饱和度(S),亮度(V)。

通常的取值范围为:H:  0— 180,S:  0— 255,V:  0— 255

用度数表示H时,H:0-360,S:0-1,V:0-1

一般来说对BGR空间的值如下表所示。

3、Lab颜色空间

L:亮度,a:从绿色到品红色的一种颜色成分,b:颜色分量从蓝色到黄色。在Lab色彩空间中,L通道独立于色彩信息,仅对亮度进行编码,另外两个通道编码颜色,这个和BGR不同。

由以上的定义可以知道,光照对L分量的影响较大,a,b受光照影响较小。

各分量的取值范围是:L:0-100         a:[-128,127]            b:[-128,127],颜色空间如下图所示:

 

4、YCrCb颜色空间

Y - 伽马校正后从RGB获得的亮度或亮度(Luma )分量,Cr = R - Y(的红色成分距离Luma有多远),Cb = B - Y(蓝色分量距离Luma的有多远)。YCbCr颜色空间是一种常用的肤色检测的色彩模型,因为BGR空间很容易受光照的影响,将其转换到YCrCb颜色空间后进行通道分离,CrCb通道不易收到光照的影响,对其进行阈值处理后可以对肤色区域进行检测。

 

 

 

2019-03-23 19:55:05 TJC3014583925 阅读数 502
  • 图像色彩空间转换

    掌握OpenCV核心模块,熟练使用相关API 理解各个API背后的相关算法原理,每个参数意义 有能力解决使用应用场景问题,大量工程代码经验分享 掌握图像处理与视频分析,图像分析与测量编码与开发技巧

    73人学习 贾志刚
    免费试看
  1. RGB颜色空间
    RGB(红绿蓝)是依据人眼识别的颜色定义出的空间,可表示大部分颜色。但在科学研究一般不采用RGB颜色空间,因为它的细节难以进行数字化的调整。它将色调,亮度,饱和度三个量放在一起表示,很难分开。它是最通用的面向硬件的彩色模型。该模型用于彩色监视器和一大类彩色视频摄像

    RGB模型

  2. CMY(CMYK)颜色空间
    CMY(CMYK)颜色空间是另一种基于颜色减法混色原理的颜色模型。在工业印刷中它描述的是需要在白色介质上使用何种油墨,通过光的反射显示出颜色的模型。CMYK描述的是青,品红,黄和黑四种油墨的数值。CMYK颜色空间的颜色值与RGB颜色空间中的取值可以通过线性变换相互转换

  3. HSX(HSI/HSV)颜色空间
    HSI颜色空间是为了更好的数字化处理颜色而提出来的,是基于彩色描述的图像处理算法的理想工具,该模型可以消去强度分量的影响,常常利用直方图来分析H和S通道,被用作直方图匹配和反向投影。有许多种HSX颜色空间,其中的X可能是V,也可能是I,依据具体使用而X含义不同。H是色调,色调描述的是一种纯色(纯黄色,纯红色)的颜色属性,S是饱和度,饱和度是纯色被白光稀释程度的度量,其中光谱色所占的比例愈大,颜色接近光谱色的程度就愈高,颜色的饱和度也就愈高,I是强度,即灰度图像中的亮度。
    色调H:用角度度量,取值范围为0°~180°;
    饱和度S:取值范围为0.0~1.0,值越大,颜色越饱和;
    亮度V:取值范围为0.0(黑色)~1.0(白色)。
    RGB到HSI颜色空间的转换是逐像素进行的,具体转换公式可参考冈萨雷斯-数字图像处理-彩色图像处理章节。
    https://img-blog.csdn.net/20140310092838734?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvd2Vpd2VpZ2ZrZA==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center#pic_center
    HSI颜色模型

  4. Lab颜色空间
    Lab颜色空间是由CIE(国际照明委员会)制定的一种色彩模式。自然界中任何一点色都可以在Lab空间中表达出来,它的色彩空间比RGB空间还要大。另外,这种模式是以数字化方式来描述人的视觉感应, 与设备无关,所以它弥补了RGB和CMYK模式必须依赖于设备色彩特性的不足。 由于Lab的色彩空间要 比RGB模式和CMYK模式的色彩空间大。这就意味着RGB以及CMYK所能描述的色彩信息在Lab空间中都能得以影射。Lab颜色空间取坐标Lab,其中L亮度;a的正数代表红色,负端代表绿色;b的正数代表黄色,负端代表兰色。不像RGB和CMYK色彩空间,Lab颜色被设计来接近人类视觉。它致力于感知均匀性,它的L分量密切匹配人类亮度感知。因此可以被用来通过修改a和b分量的输出色阶来做精确的颜色平衡,或使用L分量来调整亮度对比。

2018-07-31 21:42:14 neil3611244 阅读数 1528
  • 图像色彩空间转换

    掌握OpenCV核心模块,熟练使用相关API 理解各个API背后的相关算法原理,每个参数意义 有能力解决使用应用场景问题,大量工程代码经验分享 掌握图像处理与视频分析,图像分析与测量编码与开发技巧

    73人学习 贾志刚
    免费试看

这两天在用TF写黑白图片上色的代码,需要把RGB转LAB空间。在此普及下颜色空间的知识,不同颜色空间只是从不同的角度去衡量同一个对象。颜色空间按照基本结构可以分为两类:1.基色颜色空间,如RGB,XYZ 2.色亮分离颜色空间,如YUV,HSV。

RGB颜色空间

在RGB颜色空间中,这个彩色模型利用三原色叠加从而产生不同的颜色。但是三原色叠加并不能产生所有的颜色。所有这些颜色包含在下图所示的一个正方体中,该正方体内部的每一个点都能由三个通道的坐标确定。对角线是三个分量相等的颜色,就成为一个没有颜色的灰度图。

R:红色,取值范围:0~255

G:绿色,取值范围:0~255

B:蓝色,取值范围:0~255

根据三基色原理,用基色光单位来表示光的量,则在RGB色彩空间,任意色光F都可以用R、G、B三色不同分量的相加混合而成:F=r [ R ] + g [ G ] + b [ B ] 当三基色分量都为0(最弱)时混合为黑色光;当三基色分量都为255(最强)时混合为白色光。任一色彩F是这个立方体坐标中的一点,调整三色系数R、G、B中的任一系数都会改变F的坐标值,也即改变了F的色值。

在RGB模式中,由红、绿、蓝相叠加可以产生其它颜色,因此该模式也叫加色模式。所有显示器、投影设备以及电视机等等许多设备都依赖于这种加色模式来实现的。就编辑图象而言,RGB色彩模式也是最佳的色彩模式,因为它可以提供全屏幕的24bit的色彩范围,即真彩色显示。但是,如果将RGB模式用于打印就不是最佳的了,因为RGB模式所提供的有些色彩已经超出了打印的范围之外,因此在打印一幅真彩色的图象时,就必然会损失一部分亮度,并且比较鲜艳的色彩肯定会失真的。这主要因为打印所用的是CMYK模式,而CMYK模式所定义的色彩要比RGB模式定义的色彩少很多,因此打印时,系统自动将RGB模式转换为CMYK模式,这样就难免损失一部分颜色,出现打印后失真的现象。

 

CMYK颜色空间

CMYK表示青(Cyan),品红(Mangenta),黄(Yellow),黑(Black)四种颜料,该颜色空间是建色混色模型,亮度降低,能表现的色域较小。青色Cyan、品红色Magenta、黄色Yellow是光的二次色。而K取的是Black最后一个字母,之所以不取首字母,是为了避免与蓝色(Blue)混淆。当红绿蓝三原色被混合时,会产生白色,当混合青色、品红色、黄色三原色时会产生黑色。从理论上来说,只需要CMY三种油墨就足够了,但是由于目前制造工艺还不能造出高纯度的油墨,CMY相加的结果实际是一种暗红色。

CMYK与RGB的根本不同在于它是一种减色模式,呈现的是光照射在物体上除去被物体吸收的一部分,剩余被反射的光线颜色,所以CMYK的色域小于RGB颜色空间。常用于打印模式。

YCbCr颜色空间

YCrCb是YUV颜色空间派生出的一种,其重要性是她的亮度信号Y和色度信号Cb,Cr分离。如果只有Y信号分量而没有色度信号分量,那么这样表示的图像就是灰度图片。相比RGB颜色空间,在视频信号传输时YUV只需要占用极少的频宽。“亮度”是透过RGB输入信号来建立的,方法是将RGB信号的特定部分叠加到一起。“色度”则定义了颜色的两个方面─色调与饱和度,分别用Cr和Cb来表示。其中,Cr表示红色色度分量,反映了GB输入信号红色部分与RGB信号亮度值之间的差异。而Cb表示蓝色色度分量,反映的是RGB输入信号蓝色部分与RGB信号亮度值之同的差异。

 

 

HSV颜色空间

HSV是一种将RGB色彩空间中的点在倒圆锥体中的表示方法。HSV即色相(Hue)、饱和度(Saturation)、明度(Value),又称HSB(B即Brightness)。色相是色彩的基本属性,就是平时所说的红橙黄绿青蓝紫等颜色,构成首尾相接的色相环。饱和度(S)是指色彩的纯度,越高色彩越纯,低则逐渐变灰。明度(V),取0-max(计算机中HSV取值范围和存储的长度有关)。HSV颜色空间可以用一个圆锥空间模型来描述。圆锥的顶点处,V=0,H和S无定义,代表黑色。圆锥的顶面中心处V=max,S=0,H无定义,代表白色。

H:色相,取值范围:0~360度

S:饱和度,取值范围:0.0~1.0

V:明度,取值范围:0.0(黑色)~1.0(白色)

 

 

LAB颜色空间

自然界中任何一种颜色都可以在LAB空间中表达出来,它的色彩空间比RGB大,且与设备无关。所以它弥补了RGB和CMYK模式必须依赖设备色彩特性的不足。

L:亮度,取值范围:0~255

A:红色绿色轴,取值范围:-127~128

B:黄色蓝色轴,取值范围:-127~128

任意颜色在LAB空间都会有一个准确的数值表示而且和设备无关,所以LAB作为一个标准颜色空间成为RGB和CMYK的中转站。LAB中的亮度通道(L)专门负责整张图的明暗度,简单的说就是整幅图的黑白版。A通道和B通道只负责颜色的多少。A通道表示从红色至深绿色的范围;b表示从黄色至蓝色的范围;A、B通道里的50%中性灰色表示没有颜色,所以越接近灰色说明颜色越少,而且A通道和B通道的颜色没有亮度。

总的来说:
1、适合RGB通道抠的图大部分LAB模式能完成,反之不成立。
2、任何单一色调背景下,用通道抠有明显颜色区别的部分,用LAB模式很快能完成
3、LAB模式下对明度(L)通道做任何操作(如锐化、模糊等)不会影响到色相。

 

Ohta颜色空间

Ohta空间中包含三个颜色分量,I1,I2,I3,为一组正交的颜色特征集,它们也可由RGB颜色空间经过线性变换得到,三个分量各自互相独立。

利用该模型也可以对彩色图像进行分割,可以得到很好的效果

 

各颜色空间转换图如下:

备注:在表达色彩范围上:LAB空间 > RGB空间 > CMYK空间

各颜色空间转换公式:

1.RGB转YUV颜色空间:
 R = Y + 1.14V
 G = Y - 0.39U - 0.58V
 B = Y + 2.03U

2.YUV转RGB颜色空间:

 Y = 0.299R + 0.587G + 0.114B
 U = -0.147R - 0.289G + 0.436B
 V = 0.615R - 0.515G - 0.100B

3.RGB转LAB颜色空间

RGB颜色空间不能直接转换为Lab颜色空间,需要借助XYZ颜色空间,把RGB颜色空间转换到XYZ颜色空间,之后再把XYZ颜色空间转换到Lab颜色空间。

4.LAB转RGB颜色空间

5.RGB转HSV颜色空间

设max等于r、g和b中的最大者,min为最小者。对应的HSV空间中的(h,s,v)值为:

h在0到360°之间,s在0到100%之间,v在0到max之间。

6.HSV转RGB颜色空间

7.RGB转CMYK颜色空间

 

 

 

 

2017-04-19 09:59:35 u011574296 阅读数 16471
  • 图像色彩空间转换

    掌握OpenCV核心模块,熟练使用相关API 理解各个API背后的相关算法原理,每个参数意义 有能力解决使用应用场景问题,大量工程代码经验分享 掌握图像处理与视频分析,图像分析与测量编码与开发技巧

    73人学习 贾志刚
    免费试看

颜色空间 

近100多年来,为了满足不同用途的需要,人们开发了许多不同名称的颜色空间,“可以说表示颜色空间的数目是无穷的”,但是,现有的颜色空间还没有一个完全符合人的视觉感知特性、颜色本身的物理特性或发光物体或反光物体的特性。人们还在继续开发各种新的颜色空间。

不同的颜色空间有着不同的特性,使用在不同的领域。因此在实际中需要进行不同颜色空间的转换。不同颜色空间的转换可以是直接转换,也可以通过与设备无关的颜色空间进行转换。这时就会遇到选择颜色空间和转换方法的问题。

 

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

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等

 

一.彩色色度学模型

1.CIE-RGB彩色模型

CIE-RGB彩色模型是国际照明委员会(CIE)制定了第一个彩色色度学模型。它是在三原色学说下,以红色、绿色、蓝色作为三种基色建立起来的颜色模型。其不足点是:在某些情况下,颜色值会出现负值。

2.CIE-XYZ彩色模型

CIE-XYZ彩色模型是为消除CIE—RGB色度坐标中负值而设计的。其中三刺激值X、Y、Z,并不代表真实的物理彩色。其颜色空间包含了人类能够发觉的所有颜色,但并不是均匀色差空间。

3.均匀色差空间

在均匀色差空间中,相同距离的彩色色差与人眼主观感觉基本一致。有Luv和Lab两种均匀色差彩色模型。普遍认为,Lab彩色模型更接近人眼的主观感觉。

Buchsbaum等人对色彩迁移进行了研究,利用一些正交线性变换将人类视觉系统所能感受到的红、绿、蓝三色信号变换到三个不相关的色彩分量。在他们的研究基础上,Ruderman等人经过对大量的自然界图像进行颜色分布统计,得到了图像的颜色分布统计结果,并用转化色彩空间的方法形成一个统计意义上具有近似正交基的均匀色彩空间lαβ,并给出了简单的3×3矩阵运算实现RGB到lαβ空间的转化。lαβ色彩空间是基于数据驱动对人类感觉的研究,它假设人类的视觉系统理想地适应自然景色的处理,由亮度分量l,和两个色度分量α和β组成。其中,α表示黄一蓝通道(yellow—blue opponent),β表示红一绿通道(red—green opponent),如图:

 

Ruderman等人在一幅用lαβ色彩空间表示的图像中随机抽取1000个像素点,生成了图4所示的坐标关系图。从中可以看出,lαβ色彩空间不仅基本消除了颜色分量之间的强相关性,而且有效地将图像的灰度信息和颜色信息分离开来。所以可以分别对三个通道图像进行独立的运算,而不需要修改另外两个通道的信息,从而不会影响原图像的自然效果。

 

                                                                                                   lab空间l-a、l-b、a-b关系图

色彩空间的转换

       色彩空间一方面要符合人眼的视觉感知特性,另一方面应方便图像的处理。图像色彩迁移的过程是一个改变图像颜色基调的过程,通常希望在改变图像的一个颜色属性时,不改变图像其它的颜色属性。由前面的介绍可知,RGB空间的三通道具有很强的相关性,而lαβ空间的各通道具有最小的相关性。所以,在lαβ空间对图像的颜色进行出来将会变得十分方便。因此,选择在lαβ空间进行图像间的色彩迁移,这就需要将图像从RGB空间转换到lαβ空间。

1.从RGB空间到lαβ空间的转换

需要进行3次变换,即RGB->CIEXYZ->LMS->lαβ,具体步骤如下:

1)从RGB空间到CIE XYZ空间的转换

 

2)从CIE XYZ空间到LMS空间的转换

 

通过1、2可以得到RGB空间到LMS空间的转换。由于数据在LMS空间比较分散,所以进一步将其转换到以10为底的对数空间,这样不仅使数据分布更加聚敛,而且符号人类对于颜色感觉的心理物理学研究结果。

 

3)从LMS空间到lαβ空间的转换

这一变换是基于对数据的主成分分析(PCA,Principal ComponentAnalysis)得到的,其中l为第一主成分,α为第二主成分,β为第三主成分。

 

经过这三个步骤就完成了从RGB空间到lαβ空间的转换。

色彩空间的逆转换

当图像在lαβ空间进行处理之后,为了显示处理的结果,需要把图像转换到RGB空间,具体步骤为:

1)从lαβ空间到LMS对数空间的转换

 

2)从LMS对数空间到LMS线性空间的转换

 

3)从LMS空间到RGB空间的转换

 

 

二.工业彩色模型

1.RGB彩色显示模型

RGB模型是一种加色系统,色彩源于红、绿、蓝三基色。用于CRT显示器、数字扫描仪、数字摄像机和显示设备上,是当前应用最广泛的一种彩色模型。RGB彩色模型可用一个三维空间的立方体来表示,在此系统中计算的任何颜色都该立方体内,其彩色空间在L*a*b*彩色空间内。但人眼不能直接感觉红、绿、蓝三色的比例,因此对图像进行增强处理结果难以控制。

2.CMYK彩色印制模型

CMYK彩色模型是一种减色模型,色彩来源于青、品红、黄3种基色,其彩色空间小于RGB彩色空间。主要适用于印刷油墨和调色剂等实体物质产生颜色的场合,广泛用于彩色印刷领域。

3.彩色传输模型

彩色传输模型主要用于彩色电视机信号传输标准,他们的共同特点是都能向下兼容黑白显示器,即在黑白显示器上也能显示彩色图像,只不过显示为灰度图像。YUV彩色传输模型适用于PAL、SECAM彩色电视制式。YIQ彩色传输模型适用于美国国家电视标准委员会(NTSC)彩色电视制式,它是经YUV模型旋转色差分量而形成的彩色空间。YCrCb彩色传输适用于计算机用的显示器。

 

三.视觉彩色模型

根据人眼视觉特性提出的,用色调(Hue)、饱和度(Saturation)、亮度(luminance)来描述彩色模型。其彩色空间能更好的与人的视觉特性相匹配。

1.   基于孟塞尔彩色系统的HVC模型

蒙塞尔系统是比较经典和理想的均匀的颜色表示系统。它在视觉上是等色差的,即沿色调、亮度值、或饱和度方向上等量的变化产生相同的视觉差异。遗憾的是,蒙塞尔系统没有具体的描述公式,是依靠大量的实验数据,以查表方式(表的大小为256*256*256)和蒙塞尔色品卡建立起来的,因此和其它的彩色模型的转换十分复杂,必须通过数据查询和线性插值,计算量繁多。

2.   HSB彩色模型

HSB彩色模型是一个单锥体,红、绿、蓝以及各自的补色色调均匀分布于圆周上,是基于孟塞尔彩色系统的一种理想情况。其彩色模型问题在于:

① 除白色外,R、G、B三值中只要其中一个值是255,饱和度就等于最大值100;同一亮度下,各种颜色的饱和度都相等。这和孟塞尔系统颜色模型不一致。

② HSB模型中,在同一亮度平面上(如亮度最大的平面上),可见到所有的颜色。这与人眼的视觉特性相违背。

③ 只要R、G、B中有一个值为255,那么亮度B就达到最大值100。这与Grassman的三色调配公理和格拉斯曼定律内容不符。

3.   HLS彩色模型

HLS彩色模型是一个双锥体,其色调H与HSV模型中的色调分布完全一样。不同的是:HLS模型中的最亮纯色位于L=0.5处,亮度为最大时,只能看到白色。它也是基于孟塞尔彩色系统的一种理想模型,其自身也同样存在一些不足:

① 除白色外,R、G、B三值中只要其中一个值是255,饱和度就等于最大值100;同一亮度下,各种颜色的饱和度都相等;且饱和度随着亮度L均匀的变化。

②HLS模型中的三个属性(H、L、S)并不完全独立。可由公式亮度看出,这给人们单独处理某一属性时带来麻烦。

③ 在L=0.5的平面上能够看到所有的纯彩色;而实际上这些颜色看起来并不一样亮,但看起来一样亮的颜色,其亮度值未必相等,与人眼之间有误差。这个问题在HSB模型中也同样存在。

4.    HSY彩色模型

HSY模型是一种彩色传输模型,传输基本的色差和亮度信号,被用于摄像机传输模式。YCrCb模型、YUV模型以及YIQ模型都是在HSY模型基础上对色差信号进行调制和压缩而形成的彩色电视机信号的传输标准。

①它的亮度变化(在各种纯彩色之间)完全符合人眼的实际视觉感受。它的亮度公式是根据人的视觉特性,由美国国家电视制式委员会的NTSC制式推导得到的

②在 HSY模型饱和度最大的颜色并不在一个圆周上,同一亮度平面上的各颜色的饱和度也不一样大,这很接近人眼的实际视觉感受,和孟塞尔颜色系统理论相符。

③基色色调与其补色近似互补,但是各基色及其补色在圆周上的分布不均匀。

有关研究表明:人眼对亮度、饱和度信息的变化比色调信号所携带的信息的变化要敏感的得多,也就是说人眼对色调的变化相对不敏感。

基于以上综合分析,采用HSY彩色模型作为测量工具,进行实际测试。测试结果和预期分析的结果非常符合,亮度和饱和度相对于HSB和HLS彩色模型,更符合人眼的实际视觉感受,色调分布无大的差别。从总体上说HSY彩色模型的测试效果更好。

5.    HSI彩色模型

 

HSI (hue、saturation、intensity) 和HSV (hue、saturation、value)颜色空间在设计上使得颜色感知和解释的方式与人很接近,在需要手动指定颜色值时经常需要使用它们。HLS (hue、lightness、saturation) 类似于HSI,只是使用了术语lightness,而不是光强度intensity来表示亮度。

HSI和HSV颜色空间的差异在于亮度分量(I or V)的计算方式。HSI颜色空间适合传统的图像处理函数,如卷积、均化、直方图等,可以通过处理亮度值来实现这些操作,因为亮度I对R、G、B值的依赖程度是一样的。HSV颜色空间适合处理色度和饱和度,因为它使得饱和度具有更大的动态取值范围

6.    Ohta颜色空间

Ohta颜色空间是1980年Ohta 等人提出的颜色空间,该空间中三个颜色分量,I1,I2,I3,为一组正交的颜色特征集,它们也可由RGB颜色空间转换得到,三个分量各自互相独立。

 

 

利用该模型也可以对彩色图像进行分割,可以得到很好的效果(黄色的图像背景)

 

数字图像处理和计算机视觉领域,遇到应用问题,应该怎么选择合适的色彩空间,下面是葛老师总结的一个表格,供参考

小结:图象处理使用HIS较多,图形学使用HSV较多。图象分割使用HSV较多,Ohta较新。

 

 OpenCV转换图像的色彩空间的方法,参见博客:

【OpenCV图像处理】颜色空间转换函数 cvtColor()