颜色空间
一 颜色空间
颜色空间也称彩色模型(又称彩色空间或彩色系统)它的用途是在某些标准下用通常可接受的方式对彩色加以说明。
本质上,彩色模型是坐标系统和子空间的阐述。位于系统的每种颜色都有单个点表示。采用的大多数颜色模型都是面向硬件或面向应用的。颜色空间从提出到现在已经有上百种,大部分只是局部的改变或专用于某一领域。
当前常用的颜色空间主要有RGB、HSV、HSL等。
二 RGB
最常见的颜色空间模型是RGB,RGB颜色空间以R(Red红)、G(Green绿)、B(Blue蓝)三种基本色为基础,进行不同程度的叠加,产生丰富而广泛的颜色,所以俗称三基色模式。RGB(红绿蓝)是依据人眼识别的颜色定义出的空间,可表示大部分颜色。但在科学研究一般不采用RGB颜色空间,因为它的细节难以进行数字化的调整。它将色调,亮度,饱和度三个量放在一起表示,很难分开。它是最通用的面向硬件的彩色模型。该模型用于彩色监视器和一大类彩色视频摄像。
特点:
- 主要用于老的显示系统,R,G,B三原色混合产生各种颜色.扫描仪也是通过吸收原稿经反射或者投射的光线的R,G,B部分来还原原稿的颜色.
- RGB色彩空间是设备相关的,即不同的显示器显示同一图像,有不同的色彩显示结果,不同的扫描仪扫描相同的图像,也会得到不同的图像数据.
- 其中,R=G=B=0表示黑;R=B=G=255表示白.
缺点:
- RGB颜色空间利用三个颜色分量的线性组合来表示颜色,因此不同的色彩难以用精确的数值来表示,定量分析困难.例如海棠红,银河灰,难以有一个直观的表达
- 在RGB颜色系统中,三个颜色分量是亮度相关的,即只要亮度改变,三个分量都会改变,如果一个颜色的某一个分量发生了一定程度的改变,那么这颜色也可能要发生改变.例如如果要在某一颜色的基础上增加一点亮度,则需要依次改变RGB的值,而没有一种更直观的方式来表达.
- RGB颜色空间是一种均匀性较差的颜色空间,人眼对于三种颜色分量的敏感程度是不一样的, 在单色中,人眼对红色最不敏感,蓝色最敏感.如果颜色的相似性直接用欧氏距离来度量,其结果与人眼视觉会有较大的偏差.
应用领域:
三 HSV/HSL/HSI
HSL和HSV、HSI是最常见的圆柱坐标表示的颜色模型,它重新影射了RGB模型,从而能够视觉上比RGB模型更具有视觉直观性。
注意三者之间的差异。
HSV颜色空间
HSV分别代表H(hue, 色相),S(Saturation, 饱和度),V(Value, 值) , 一个像素值用(h, s, v)表示。
HSV颜色空间的模型对应于圆柱坐标系中的一个圆锥形子集,圆锥的顶面对应于V=1. 它包含RGB模型中的R=1,G=1,B=1 三个面,所代表的颜色较亮。色彩H由绕V轴的旋转角给定。红色对应于角度0° ,绿色对应于角度120°,蓝色对应于角度240°。在HSV颜色模型中,每一种颜色和它的补色相差180°。 饱和度S取值从0到1,所以圆锥顶面的半径为1。HSV颜色模型所代表的颜色域是CIE色度图的一个子集,这个模型中饱和度为百分之百的颜色,其纯度一般小于百分之百。在圆锥的顶点(即原点)处,V=0,H和S无定义, 代表黑色。圆锥的顶面中心处S=0,V=1, H无定义,代表白色。从该点到原点代表亮度渐暗的灰色,即具有不同灰度的灰色。对于这些点,S=0, H的值无定义。可以说,HSV模型中的V轴对应于RGB颜色空间中的主对角线。 在圆锥顶面的圆周上的颜色,V=1,S=1,这种颜色是纯色。HSV模型对应于画家配色的方法。画家用改变色浓和 色深的方法从某种纯色获得不同色调的颜色,在一种纯色中加入白色以改变色浓,加入黑色以改变色深,同时 加入不同比例的白色,黑色即可获得各种不同的色调。
- V方向最下面为0,表示黑,最上面圆心为1,表示白.V轴表示明度,范围是0~1,与光强度无直接关系.
- H方向表示色度,分别为红绿蓝,相隔120度.
- S方向表示饱和度,位于外圆周的颜色饱和度越高,越靠近圆心饱和度越低S是一个比例值,表示所选颜色纯度与最大的纯度之间的比例.当S=0时,表示灰度.
一般的,人的眼睛最大能区分128种色彩,130种饱和度和23种明暗度。若仅使用16bits表示HSV值的话,可用7位存放H,4位存放S,5位存放V,即H7S4V5或者H6S5V5就能满足需求。
HSV模式与RGB模型的相互转换关系这里不详细展开.
HSI颜色空间
HSI色彩空间是从人的视觉系统出发,用色调(Hue)、色饱和度(Saturation或Chroma)和亮度 (Intensity或Brightness)来描述色彩。HSI色彩空间可以用一个圆锥空间模型来描述。用这种描述HSI色彩空间的圆锥模型相当复杂,但确能把色调、亮度和色饱和度的变化情形表现得很清楚。 通常把色调和饱和度通称为色度,用来表示颜色的类别与深浅程度。由于人的视觉对亮度的敏感程度远强于对颜色浓淡的敏感程度,为了便于色彩处理和识别,人的视觉系统经常采用HSI色彩空间, 它比RGB色彩空间更符合人的视觉特性。在图像处理和计算机视觉中大量算法都可在HSI色彩空间中 方便地使用,它们可以分开处理而且是相互独立的。因此,在HSI色彩空间可以大大简化图像分析和处理的工作量。HSI色彩空间和RGB色彩空间只是同一物理量的不同表示法,因而它们之间存在着转换关系。
HSI 色彩模型是从人的视觉系统出发,用 H 代表色相 (Hue)、S 代表饱和度 (Saturation) 和 I 代表亮度 (Intensity) 来描述色彩。饱和度与颜色的白光光量刚好成反比,它可以说是一个颜色鲜明与否的指标。因此如果我们在显示器上使用 HIS 模型来处理图像,将能得到较为逼真的效果。
色相 (Hue):指物体传导或反射的波长。更常见的是以颜色如红色,橘色或绿色来辨识,取 0 到 360 度的数值来衡量。
饱和度 (Saturation):又称色度,是指色彩的强度或纯度。饱和度代表灰色与色调的比例,并以 0% (灰色) 到 100% (完全饱和) 来衡量。
亮度 (Intensity):是指颜色的相对明暗度,通常以 0% (黑色) 到 100% (白色) 的百分比来衡量。
HSL颜色空间
HSL代表色调(Hue),饱和度(Saturation)和亮度(Lightness),通常也称为HLS。HSV代表色调,饱和度和值(Value)。注意HSL和HSV的两个H的含义是相同的,而饱和度的定义是不同的,虽然都叫饱和度,从后面的定义可以看出二者的不同。
HSL 和 HSV 二者都把颜色描述在圆柱体内的点,这个圆柱的中心轴取值为自底部的黑色到顶部的白色而在它们中间是的灰色,绕这个轴的角度对应于“色相”,到这个轴的距离对应于“饱和度”,而沿着这个轴的距离对应于“亮度”,“色调”或“明度”。 HSV 以人类更熟悉的方式封装了关于颜色的信息:“这是什么颜色?深浅如何?明暗如何?”。HSL 颜色空间类似于 HSV,在某些方面甚至比它还好。HSL的模型为双圆锥形状。
这两种表示在用目的上类似,但在方法上有区别。二者在数学上都是圆柱,但 HSV(色相,饱和度,明度)在概念上可以被认为是颜色的倒圆锥体(黑点在下顶点,白色在上底面圆心),HSL 在概念上表示了一个双圆锥体和圆球体(白色在上顶点,黑色在下顶点,最大横切面的圆心是半程灰色)。HSV 模型在 1978 年由埃尔维*雷*史密斯创立。下图给出了HSL和HSV的圆柱模型。
在圆锥上,角度代表色调H,饱和度S表示为点到中心竖线的距离,而亮度或者值V用中心竖线表示。红色的角度为0度,依次为黄色、绿色、青色、蓝色、橙色。连续两种颜色的角度相差60度。
四 颜色空间转换
1 RGB转HSV
转换原理非常简单,对于图像中任意坐标点,其RGB颜色空间为(R,G,B),HSV颜色空间为(H,S,V),首先需要将R、G、B值转换到0~1之间:
然后计算H、S、V值:
如果计算得到的H值小于0,将该值再加上360,得到最终的H值:
由于Opencv需要做HSV图像的可视化,因此最后还需要将各个值转换到0~255之间:
2 HSV转RGB
对于图像中任意坐标点,其RGB颜色空间为(R,G,B),HSV颜色空间为(H,S,V)。首先将可视化图像的H、S、V值分别转换到0~360、0~1、0~1的范围:
那么R、G、B的计算如以下公式,其中floor表示向下取整运算:
3 基于OpenCV的颜色空间转换
Opencv提供了cvtColor函数(CV_BGR2HSV/CV_HSV2BGR),调用该函数可以非常方便地实现不同颜色空间的转换。不过为了可视化,调用该函数得到的HSV图像,其H、S、V三通道的取值范围并不是0~360、0~1、0~1,而是经过转换的0~180、0~255、0~255。
五 颜色映射表
各种颜色空间的映射表:
RGB颜色与灰度值对照表:
参考文档:
https://baike.baidu.com/item/%E9%A2%9C%E8%89%B2%E7%A9%BA%E9%97%B4/10834848?fr=aladdin
https://www.jianshu.com/p/29eeb320491e
https://blog.csdn.net/taily_duan/article/details/51506776