前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >OpenCV-色彩空间

OpenCV-色彩空间

作者头像
触摸壹缕阳光
发布2019-11-13 20:28:21
9830
发布2019-11-13 20:28:21
举报

本小节主要介绍色彩空间的一些概念,并使用OpenCV进行色彩空间的转换,并通过通过色彩空间的转换提取视频中的指定颜色。

01

什么是色彩空间

颜色通常是由三个独立的属性来描述的,比如我们熟悉的RGB,任意色光都可以通过R(红色)、G(绿色)以及B(蓝色)相加混合而成,这也是我们常说的三个通道。每一个通道像素值都是0-255,我们可以把三个通道看成是坐标系中的三个轴,由于R、G以及B中取值都是0-255的范围,因此RGB组合表示的颜色可以构成一个包含256*256*256个元素的立方体,其中每一个元素都对用着RGB三个通道的不同取值(你可以简单将元素看成是一个(R值, G值, B值)空间中的一点),如下图所示:

可以看出当三个通道即R = 0,G = 0,B = 0混合后的颜色为黑色,同理如果R = 255,G = 255,B = 255混合的话颜色为白色。 此时坐标轴为0-1,这是因为在计算机中1个字节表示8位,2的8次方为256,因此使用1个字节就可以表示0-255之间的任意数,所以在上面图中使用0-1的坐标轴来进行标示。

将下面RGB图分裂成三个通道,R通道,G通道,B通道,原始图片如下:

分割成三个通道即B,G,R:

我们期望大的结果是红红的绿绿的蓝蓝的三张图片,但是显示的结果并不是我们所期望的那样:

其实原因就在于,分割通道后的图片,仅包含长度和宽度,此时使用imshow函数,可以为其自动加上第三个维度也就是通道数,但是此时的通道数为1,(可以通过将分割后的图片reshape()来对比,得到的结果一致)。单通道俗称灰度图,每个像素点只能有一个值表示颜色,它的像素值在0到255之间,0是黑色,255是白色,中间值是一些不同等级的灰色,可以说灰度是黑与白之间的过渡色。这就是问题的根源所在。如果解决呢?其实也很简单,我们只需要加上两个通道,但是直接reshape肯定不行,因此我们需要创建两个0矩阵然后拼接在分割的单通道图片上,手动组成三通道,也就是组成(B,0,0),(G,0,0),(R,0,0)。具体代码如下:

执行效果:

色彩空间有很多,比如gray、hsv、yuv、ycrcb等,使用OpenCV进行色彩空间的转换很简单。

执行效果:

其中HSV是比较常用的,下面主要介绍一下HSV色彩空间。

02

HSV色彩空间

HSV是一种将RGB色彩空间中的点在倒圆锥体中的表示方法。HSV即色相(Hue)、饱和度(Saturation)、明度(Value),又称HSB(B即Brightness)。色相是色彩的基本属性,就是平常说的颜色的名称,如红色、黄色等。饱和度(S)是指色彩的纯度,越高色彩越纯,低则逐渐变灰,取0-100%的数值。明度(V),取0-max(计算机中HSV取值范围和存储的长度有关)。HSV颜色空间可以用一个圆锥空间模型来描述。圆锥的顶点处,V=0,H和S无定义,代表黑色。圆锥的顶面中心处V=max,S=0,H无定义,代表白色。

RGB颜色空间中,三种颜色分量的取值与所生成的颜色之间的联系并不直观。而HSV颜色空间,更类似于人类感觉颜色的方式,封装了关于颜色的信息:“这是什么颜色?深浅如何?明暗如何?”。我们可以将图片或者视频转换为HSV色彩空间,然后通过其中过滤像素的区间范围来过滤出特定的颜色,下标就是HSV色彩空间中对应颜色的取值范围:

实际上H真实取值是0-360的,但是在OpenCV中取值为0-180。其实有一个归一化问题,因为其他两个通道都是255,如果用uint8,一个字节就可以表示,当0-360的时候超出了1个字节,此时uint8表示不了,会溢出,此时OpenCV为了解决这个问题,将H通道归一化到0-180之间,虽然把尺度空间变小了,但是unit8可以存了。

03

使用HSV检测视频指定颜色

如何应用HSV来过滤出特定的颜呢?本地视频文件名称"love.avi"。

视频就不在展示了,原始视频的起始页面:

转换HSV色彩空间之后提取白色生成的二值图片,mask中的白色为想要提取指定颜色的位置,黑色为其余位置。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2019-05-13,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 AI机器学习与深度学习算法 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档