【opencv】色彩空间与cv::cvtColor

1.色彩空间分类

RGB---Red,Green,Blue,显示器中采用的RGB颜色空间是基于物体发光定义的;
CMY---Cyan,Magenta,Yellow,工业印刷中常用的CMY颜色空间是基于光反射定义的
HSV---从人视觉的直观反映而提出来的,H是色调,S是饱和度,V是亮度
HSL---从人视觉的直观反映而提出来的,H是色调,S是饱和度,I是亮度
Lab---由CIE(国际照明委员会)制定的一种色彩模式


RGB(red,green,blue)颜色空间
最常用的用途就是显示器系统(计算机、电视机等都是采用RGB颜色空间来进行图像显示).一
般来说,电脑,电视机等是利用三个电子枪分别发射R分量,G分量,B分量的电子束,以此来激
发屏幕上的RGB三种颜色的荧光粉,从而发出不同颜色、不同亮度的像素、进而组成了一幅图像;
很明显,RGB颜色空间利用了物理学中的三原色叠加从而组成产生各种不同颜色的原理.在RGB颜
色空间中,R、G、B三个分量的属性是独立的.也即是说,RGB颜色可以表示为(Red, Green, Blue).
其中,各个分量的数值越小,亮度越低.数值越大,亮度越高;如:(0,0,0)表示黑色,
(255,255,255)表示白色;


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


HSV颜色空间是根据颜色的直观特性由A. R. Smith在1978年创建的一种颜色空间, 也称六角锥
体模型(Hexcone Model).RGB和CMY颜色模型都是面向硬件的,而HSV(Hue Saturation Value)
颜色模型是面向用户的.这个模型中颜色的参数分别是:色调(H:hue),饱和度(S:saturation),亮
度(V:value).这是根据人观察色彩的生理特征而提出的颜色模型(人的视觉系统对亮度的敏感度要
强于色彩值,这也是为什么计算机视觉中通常使用灰度即亮度图像来处理的原因之一).
色调H:用角度度量,取值范围为0°~360°,从红色开始按逆时针方向计算,红色为0°,绿色为120°,
蓝色为240°.它们的补色是:黄色为60°,青色为180°,品红为300°;
饱和度S:取值范围为0.0~1.0;
亮度V:取值范围为0.0(黑色)~1.0(白色).

HSL颜色空间与HSV类似,只不过把V:Value替换为了L:Lightness.这两种表示在用目的上类似,
但在方法上有区别.二者在数学上都是圆柱,但HSV(色相,饱和度,色调)在概念上可以被认为是
颜色的倒圆锥体(黑点在下顶点,白色在上底面圆心),HSL在概念上表示了一个双圆锥体和圆球体
(白色在上顶点,黑色在下顶点,最大横切面的圆心是半程灰色).注意尽管在HSL和HSV中“色相”
指称相同的性质,它们的“饱和度”的定义是明显不同的.对于一些人,HSL更好的反映了“饱和度”和
“亮度”作为两个独立参数的直觉观念,但是对于另一些人,它的饱和度定义是错误的,因为非常柔和
的几乎白色的颜色在HSL可以被定义为是完全饱和的.对于HSV还是HSL更适合于人类用户界面是有
争议的.



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

2.opencv中支持的相关转换的枚举

//extra color conversions supported implicitly
enum
{
    CX_BGRA2HLS      = COLOR_COLORCVT_MAX + COLOR_BGR2HLS,
    CX_BGRA2HLS_FULL = COLOR_COLORCVT_MAX + COLOR_BGR2HLS_FULL,
    CX_BGRA2HSV      = COLOR_COLORCVT_MAX + COLOR_BGR2HSV,
    CX_BGRA2HSV_FULL = COLOR_COLORCVT_MAX + COLOR_BGR2HSV_FULL,
    CX_BGRA2Lab      = COLOR_COLORCVT_MAX + COLOR_BGR2Lab,
    CX_BGRA2Luv      = COLOR_COLORCVT_MAX + COLOR_BGR2Luv,
    CX_BGRA2XYZ      = COLOR_COLORCVT_MAX + COLOR_BGR2XYZ,
    CX_BGRA2YCrCb    = COLOR_COLORCVT_MAX + COLOR_BGR2YCrCb,
    CX_BGRA2YUV      = COLOR_COLORCVT_MAX + COLOR_BGR2YUV,
    CX_HLS2BGRA      = COLOR_COLORCVT_MAX + COLOR_HLS2BGR,
    CX_HLS2BGRA_FULL = COLOR_COLORCVT_MAX + COLOR_HLS2BGR_FULL,
    CX_HLS2RGBA      = COLOR_COLORCVT_MAX + COLOR_HLS2RGB,
    CX_HLS2RGBA_FULL = COLOR_COLORCVT_MAX + COLOR_HLS2RGB_FULL,
    CX_HSV2BGRA      = COLOR_COLORCVT_MAX + COLOR_HSV2BGR,
    CX_HSV2BGRA_FULL = COLOR_COLORCVT_MAX + COLOR_HSV2BGR_FULL,
    CX_HSV2RGBA      = COLOR_COLORCVT_MAX + COLOR_HSV2RGB,
    CX_HSV2RGBA_FULL = COLOR_COLORCVT_MAX + COLOR_HSV2RGB_FULL,
    CX_Lab2BGRA      = COLOR_COLORCVT_MAX + COLOR_Lab2BGR,
    CX_Lab2LBGRA     = COLOR_COLORCVT_MAX + COLOR_Lab2LBGR,
    CX_Lab2LRGBA     = COLOR_COLORCVT_MAX + COLOR_Lab2LRGB,
    CX_Lab2RGBA      = COLOR_COLORCVT_MAX + COLOR_Lab2RGB,
    CX_LBGRA2Lab     = COLOR_COLORCVT_MAX + COLOR_LBGR2Lab,
    CX_LBGRA2Luv     = COLOR_COLORCVT_MAX + COLOR_LBGR2Luv,
    CX_LRGBA2Lab     = COLOR_COLORCVT_MAX + COLOR_LRGB2Lab,
    CX_LRGBA2Luv     = COLOR_COLORCVT_MAX + COLOR_LRGB2Luv,
    CX_Luv2BGRA      = COLOR_COLORCVT_MAX + COLOR_Luv2BGR,
    CX_Luv2LBGRA     = COLOR_COLORCVT_MAX + COLOR_Luv2LBGR,
    CX_Luv2LRGBA     = COLOR_COLORCVT_MAX + COLOR_Luv2LRGB,
    CX_Luv2RGBA      = COLOR_COLORCVT_MAX + COLOR_Luv2RGB,
    CX_RGBA2HLS      = COLOR_COLORCVT_MAX + COLOR_RGB2HLS,
    CX_RGBA2HLS_FULL = COLOR_COLORCVT_MAX + COLOR_RGB2HLS_FULL,
    CX_RGBA2HSV      = COLOR_COLORCVT_MAX + COLOR_RGB2HSV,
    CX_RGBA2HSV_FULL = COLOR_COLORCVT_MAX + COLOR_RGB2HSV_FULL,
    CX_RGBA2Lab      = COLOR_COLORCVT_MAX + COLOR_RGB2Lab,
    CX_RGBA2Luv      = COLOR_COLORCVT_MAX + COLOR_RGB2Luv,
    CX_RGBA2XYZ      = COLOR_COLORCVT_MAX + COLOR_RGB2XYZ,
    CX_RGBA2YCrCb    = COLOR_COLORCVT_MAX + COLOR_RGB2YCrCb,
    CX_RGBA2YUV      = COLOR_COLORCVT_MAX + COLOR_RGB2YUV,
    CX_XYZ2BGRA      = COLOR_COLORCVT_MAX + COLOR_XYZ2BGR,
    CX_XYZ2RGBA      = COLOR_COLORCVT_MAX + COLOR_XYZ2RGB,
    CX_YCrCb2BGRA    = COLOR_COLORCVT_MAX + COLOR_YCrCb2BGR,
    CX_YCrCb2RGBA    = COLOR_COLORCVT_MAX + COLOR_YCrCb2RGB,
    CX_YUV2BGRA      = COLOR_COLORCVT_MAX + COLOR_YUV2BGR,
    CX_YUV2RGBA      = COLOR_COLORCVT_MAX + COLOR_YUV2RGB
};

文章出处登录后可见!

已经登录?立即刷新

共计人评分,平均

到目前为止还没有投票!成为第一位评论此文章。

(0)
xiaoxingxing的头像xiaoxingxing管理团队
上一篇 2022年5月12日
下一篇 2022年5月12日

相关推荐