根据数字图像色彩表示方式的不同,数字图像有几种不同的颜色空间(颜色模型),如RGB颜色空间、HSV颜色空间、YUV颜色空间等。下面就具体介绍一下这几种颜色空间,以及它们在MATLAB中的转换。
2.2.1 RGB颜色空间
RGB颜色空间是由Red(红色)、Green(绿色)、Blue(蓝色)组成的一种颜色空间。红、绿、蓝这三种颜色被国际照明委员会规定为三原色,这三原色的不同分量比例可以合成任何其他颜色。RGB颜色空间类似一个三维的坐标系,红色、绿色和蓝色分别是一个坐标轴,每种颜色都是空间中的点,由三个数值组成,分别表示在红色、绿色、蓝色上的分量。(0,0,0)表示纯黑色,(255,255,255)表示纯白色,(0,0,255)表示蓝色。
2.2.2 HSV颜色空间
HSV颜色空间由Hue(色调)、Saturation(饱和度)和Value(亮度)组成。HSV颜色空间是1978年提出的,它是一种主观的颜色空间。HSV颜色空间类似一个六角椎体,如图2-10所示。色调通常指代颜色名称。饱和度表示掺入白光的分量,掺入白光的分量越多,则饱和度越低,即S值越小;掺入白光的分量越少,则饱和度越高,即S值越大。亮度表示掺入黑光的分量,掺入黑光的分量越多,则亮度越低,即V越小;掺入黑光的分量越少,则亮度越高,即V越大。
图2-10 HSV颜色空间模型
2.2.3 YUV颜色空间
YUV颜色空间是欧洲电视系统使用的一种色彩编码空间,在现代的彩色电视系统中,通过三管彩色摄影机和彩色CCD摄影机得到的彩色图像信号,经过分色、分别放大校正得到RGB,再进一步经矩阵变换电路得到亮度信号Y和两个色差信号R-Y(U)、B-Y(V),最后发送端对这三个信号分别编码,再使用同一信道发出去,这就是YUV颜色空间。若只有亮度Y,没有U和V,则形成了黑白灰度图像。
在数字图像中,图像的色彩空间还有很多种,如CMYK、Lab、HSL、YIQ等,本书在此不多做介绍。
2.2.4 颜色空间的转换
1.RGB颜色空间转换为HSV颜色空间
RGB颜色空间中有三个分量,即R、G、B。HSV颜色空间中也有三个分量,分别是H、S、V。可使用如下算法将RGB颜色空间转换为HSV颜色空间。
在MATLAB中,函数rgb2hsv可以实现RGB到HSV颜色空间的转换,用法如下。
hsv=rgb2hsv(rgb)
rgb是输入的原RGB图像,它是一个三维的M×N×3的数组,分别是图像的红色、绿色和蓝色的分量。hsv是经过转换后的HSV图像,它是一个三维的M×N×3的数组,分别表示图像的色调、饱和度和亮度信息。
下面我们通过Code4了解如何利用函数rgb2hsv进行RGB到HSV颜色空间的转换。
运行Code4后,结果如图2-11所示,有两组图,即Figure1和Figure2。Figure1是原RGB图像和转换后的HSV图像的对比,Figure2是转换后的HSV图像的色度、饱和度和亮度分量图。
图2-11 Code4的运行结果
2.HSV颜色空间转换为RGB颜色空间
在MATLAB中,也有和rgb2hsv类似的函数。函数hsv2rgb就可以实现HSV到RGB颜色空间的转换,格式如下。
rgb=hsv2rgb(hsv)
hsv是输入的原HSV图像,rgb是经过转换后的RGB图像。
下面我们借助Code5了解如何利用函数hsv2rgb进行HSV到RGB颜色空间的转换。
Code5:ch2_5.m
程序Code5首先读取RGB图像“1.jpg”,利用函数rgb2hsv将RGB图像转换为HSV图像,然后再利用函数hsv2rgb将上一步得到的HSV图像转换为一个新的RGB图像。最后显示原RGB图像、转换后的HSV图像和转换后的新RGB图像。
运行Code5后,结果如图2-12所示。可以看到,转换后的RGB图像(c)和原RGB图像(a)是完全相同的。
图2-12 Code5的运行结果
3.RGB颜色空间转换为YUV颜色空间
在MATLAB中,没有用于将RGB颜色空间转换为YUV颜色空间的函数。Code6程序可以实现RGB到YUV颜色空间的转换。
Code6:ch2_6.m
运行Code6后,结果如图2-13所示,有两组图,即Figure1和Figure2。Figure1是原RGB图像和转换后的YUV图像的对比,Figure2是转换后的YUV图像的亮度信号Y和两个色差信号U、V的分量图。
图2-13 Code6的运行结果