不同的颜色模型
常见的图像颜色模型:RGB模型、YUV模型、HSV模型、Lab模型、GRAY模型。
RGB模型:红色(Red)、绿色(Green)和蓝色(Blue)。在RGB颜色模型中,所有的颜色都是由这三种颜色通过不同比例的混合得到,如果三种颜色分量都为0,则表示为黑色,如果三种颜色的分量相同且都为最大值,则表示为白色。在这个模型的基础上增加第四个通道即为RGBA模型,第四个通道表示颜色的透明度,当透明度都是1的时候,RGBA模型就会退化成RGB模型。
YUV模型:亮度(Y),红色分量与亮度的信号差值(U),蓝色与亮度的差值(V)。YUV模型是电视信号系统所采用的颜色编码方式,主要用于视频和图像的传输。RGB模型与YUV模型之间的转换关系如下,其中RGB取值范围均为0-255。
HSV模型: 色度(Hue),饱和度(Saturation),亮度(Value)。通过名字也可以看出来该模型通过这三个特性对颜色进行描述。相比于RGB模型三个颜色分量与最终颜色联系不直观的缺点,HSV模型更加符合人类感知颜色的方式:颜色、深浅以及亮暗。
色相(0-180)、饱和度(0-255)、亮度(0-255)
Lab模型:弥补了RGB模型的不足,是一种设备无关的颜色模型。在模型中L表示亮度(Luminosity),a和b是两个颜色通道,两者的取值区间都是由-128到+127,其中a通道数值由小到大对应的颜色是从绿色变成红色,b通道数值由小到大对应的颜色是由蓝色变成黄色。其构成的颜色空间是一个球形。
GRAY模型:并不是一个彩色模型,而是一个灰度图像的模型,其命名使用的是英文单词gray的全字母大写。灰度图像只有单通道,灰度值根据图像位数不同由0到最大依次表示由黑到白。常用的RGB模型转成灰度图的方式:
OpenCV的转换调用
函数原型:
void cv::cvtColor(InputArray src,
OutputArray dst,
int code,
int dstCn = 0
)
- src:待转换颜色模型的原始图像。
- dst:转换颜色模型后的目标图像。
- code:颜色空间转换的标志,如由RGB空间到HSV空间。常用标志及含义见下表。
- dstCn:目标图像中的通道数,如果参数为0,则从src和代码中自动导出通道数
cvtColor()函数颜色模型转换常用标志参数:
代码示例:
cvtColor(img32, dstHSV, COLOR_BGR2HSV);
cvtColor(img32, dstYUV, COLOR_BGR2YUV);
cvtColor(img32, dstLab, COLOR_BGR2Lab);
cvtColor(img32, dstgray, COLOR_BGR2GRAY);