本篇文章从色彩空间与计算机视觉结合的角度来讲解,对于计算机来说,色彩是如何感知的。
一.色彩空间
之间的两篇博客已经有说到一些很基本的操作,那么今天在学习色彩空间之后,就能接触到一些很有意思的操作了。
1.色彩空间是什么?
从本质来说,所谓的颜色,色彩,只是我们视觉对于不同频率光线的不同感受罢了,它既是客观存在的,也是主观感知的,以至于发展至今,人们也无法对色彩有个很定性的概念,😂大家可以自己想想,如果现在让你描述什么是蓝色,描述的出来吗。😂哈哈,没想到吧。色彩空间一词是来源于英语的color space,又称之为色域,在色彩学中,我们可以用一维,二维,三维或者更高维度的坐标系来表示全部色彩,每个坐标代表某种色彩。如下是一个很典型的色彩空间:
HSV色彩空间
H:色调
S:饱和度
V:亮度
↓
又或者是RGB色彩空间:
其实很容易理解,如果觉得有点模糊的话,我们从RGB色彩空间细讲。
如上文的概念所说,每个坐标代表一种颜色,我们从图中可以看到,在某个平面或者超平面内,它的色调是很相似的,从我么你的感官角度来看,就是一样的颜色,因此,我们可以直接将某个区域内定义为某种颜色,这算是从色彩空间角度对颜色进行一个标准的定义了,这里的RGB色彩空间,可以直接将R,G,B看为Z,Y,X轴,至于取什么颜色,将其看为一个F(X,Y,Z)函数,那么久很明白了,在该色彩空间内,所谓的颜色就是带入X,Y,Z的函数值罢了。
这样的话色彩空间就很清楚了。
2.常用的几种色彩空间
目前对于学习计算机视觉来说,我们需要知道的色彩空间有如下:
- RGB色彩空间
- HSV色彩空间
- YUV色彩空间
- HIS色彩空间
- YCrCb色彩空间
其中我们需要重点掌握的几种
RGB色彩空间:OpenCV中最常用的色彩空间
YUV色彩空间:OpenCV中常用
HSV色彩空间:颜色提取中常用
YCrCb色彩空间:人脸检测中常用
二.OpenCV对色彩空间的操作
接下来我们从代码的角度对色彩空间进行操作
1.色彩空间的转化
- 这里我们对某个图像信息进行色彩空间转化,代码如下:
import cv2 as cv
def color_demo(image):
#转化为灰度空间
grey=cv.cvtColor(image,cv.COLOR_BGR2GRAY)
cv.imshow('input_2',grey)
#转化为HSV空间
hsv=cv.cvtColor(image,cv