RGB色彩空间:
最典型、最常用的面向硬件设备的彩色模型是三原色模型,即RGB模型。?每种颜色利用8位二进制数(两位十六进制数)表示该颜色的强度,其中颜色在为0x00表示颜色强度最弱,当为0xff颜色强度最强。当RGB均为0xff即三原色为0xffffff时总体显示白色,而当RGB三原色均为0x00即颜色为0x000000时图像表示黑色。模型图如下:
图 1 RGB颜色模型
在RGB颜色空间中,任意色光F都可以使用R、G、B三色不同的分量混合相加而成即: F = R + G + B.
RGB色彩空间根据每个分量在计算机中占用的存储字节数可以分为以下几种类型:
(1) RGB555
RGB555是一种16bit的RGB格式,各分量都用5bit表示,剩下一位不用
(2) RGB565
RGB565是一种16bit的RGB格式,其中R占用5bit,G占用6bit,B占用5bit
(3) RGB24
RGB24是一种24bit的RGB格式,各分量占用8bit,取值范围为0-255
(4) RGB32
RGB24是一种32bit的RGB格式,各分量占用8bit,剩下的为alpha通道或者不使用。
YUV色彩空间:
YUV(亦称YCrCb)是被欧洲电视系统所采用的的一种颜色编码方法。在现代彩色电视系统中,通常采用三管彩色摄像机或彩色CCD摄影机进行取像,然后把取得的彩色图像信号经分色、分别放大校正后得到RGB,再经过矩阵变换电路得到亮度信号Y和两个色差信号R-Y(即U)、B-Y(即V),最后发送端将亮度和两个色差总共三个信号分别进行编码,用同一信道发送出去。这种色彩表示方法就是所谓的YUV色彩空间。YUV色彩空间的重要性是它的亮度信号Y和色度信号U、V是分离的。如果只有Y分量而没有U、V信号分量,那么就是黑白灰度图像。
YUV主要用户优化彩色视频信号的传输,使其向后相容老式黑白电视,与RGB视频信号传输相比。它最大的优点在于只需要极少的频宽(RGB要求三个独立的视频信号同时传输)。其中Y表示明亮度(Luminance或Luma),也就是灰阶值;而“U”和“V”表示的则是色度(Chrominance或者Chroma),作用是描述影像色彩和饱和度,用于指定像素的颜色。“亮度”是透过RGB输入信号来建立的,方法是将RGB信号的特定部分叠加到一起。“色度”则定义了颜色的两个方面─色调与饱和度,分别用Cr和Cb来表示。其中,Cr反映了RGB输入信号红色部分与RGB信号亮度值之间的差异。而Cb反映的是RGB输入信号蓝色部分与RGB信号亮度值之同的差异。
YUV与RGB的转换公式为:
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
HSV色彩空间:
HSV(Hue, Saturation, Value)是根据颜色的直观特性由A. R. Smith在1978年创建的一种颜色空间, 也称六角锥体模型(Hexcone Model)。这个模型中颜色的参数分别是:色调(H),饱和度(S),明度(V)。
色调H
用角度度量,取值范围为0°~360°,从红色开始按逆时针方向计算,红色为0°,绿色为120°,蓝色为240°。它们的补色是:黄色为60°,青色为180°,紫色为300°;
饱和度S
饱和度S表示颜色接近光谱色的程度。一种颜色,可以看成是某种光谱色与白色混合的结果。其中光谱色所占的比例愈大,颜色接近光谱色的程度就愈高,颜色的饱和度也就愈高。饱和度高,颜色则深而艳。光谱色的白光成分为0,饱和度达到最高。通常取值范围为0%~100%,值越大,颜色越饱和。
明度V
明度表示颜色明亮的程度,对于光源色,明度值与发光体的光亮度有关;对于物体色,此值和物体的透射比或反射比有关。通常取值范围为0%(黑)到100%(白)。HSV模型的三维表示从RGB立方体演化而来。设想从RGB沿立方体对角线的白色顶点向黑色顶点观察,就可以看到立方体的六边形外形。六边形边界表示色彩,水平轴表示纯度,明度沿垂直轴测量。其模型图如下:
RGB转换到HSV:
HSV转换到RGB:
参考资料:
1、RGB to HSV conversion | color conversion
http://www.rapidtables.com/convert/color/rgb-to-hsv.htm
2、HSV to RGB conversion | color conversion