OpenCV4机器学习(三):颜色空间(RGB、HSI

参数值也称为三色系数或基色系数或颜色值,除以255后归一到0-1之间,但不是无穷多个而是有限多个值。由于每个灰度级都定为256,所以,红绿蓝分量全部组合起来共可表示256=2=16777216种不同的颜色。它比人眼能分辨的颜色种数多得多。因此,虽然自然界中的颜色非常多,但用RGB颜色空间来近似表达自然界中的颜色是完全够用了。

在这里插入图片描述
需要注意的是:OpenCV默认的RGB彩色空间的通道顺序为BGR,即蓝色、绿色和红色。例如:(255,0,0)表示蓝色,(0,255,0)表示绿色。

三、HSI颜色空间

HSI(色调、饱和度和亮度)空间可以从彩色图像中消除亮度分量的影响。因此,HIS空间对于开发基于彩色描述的图像处理算法来说是一个理想的彩色空间。在一些基于深度学习的分类识别任务中,通常将原始图像转换成HSI空间来削弱光线变化的影响,增强算法的稳定性。

HSI颜色空间可以用以双锥体表示,数学模型如下图:

在这里插入图片描述

RGB空间中的任何一个点可以转换成HSI空间中的点,具体的转换公式如下:
在这里插入图片描述

四、HSV颜色空间

HSV颜色空间中,H是Hue(色度)的缩写,S是Saturation(饱和度)的缩写,V是Value(亮度)的缩写:

  • 色度通常用来从宏观上区分某一种颜色,例如:白、黄、青、绿、品红、红、蓝、黑等就是色度;
  • 饱和度指的是颜色的纯度,通常情况下,颜色越鲜艳,饱和度越高;颜色越暗淡,饱和度越低;
  • 亮度指的是颜色的明暗程度,颜色越亮,亮度越高;颜色越暗,亮度越低。

HSV颜色空间的数学模型可以用一个圆锥来表示,如下图所示:

在这里插入图片描述
如图所示,某一像素的H可以由该点与白色基准线所形成的圆心角表示,H的取值范围为[0,360];某一点的S可以由该点与所在圆面的圆心之间的距离表示,距离越大,饱和度越高,反之越低;某一点的V可以由该点所在圆面与圆锥顶部之间的距离表示,距离越大,亮度越高,反之则越低。

RGB到HSV的转换公式如下:
在这里插入图片描述
HSV颜色空间不适合显示器系统,但是更符合人眼的视觉特性,因此通常会将颜色从RGB空间域转换到HSV颜色空间进行处理,然后在换回RGB域进行显示。

五、HSL颜色空间

HSL(色调、饱和度、亮度)空间,与HSV类似,只不过把V:Value替换为了L:Lightness。这两种表示在用途上类似,但在方法上有区别。

HSV和HSL二者在数学上都是圆柱,但HSV在概念上可以被认为是颜色的倒圆锥体(黑点在下顶点,白色在上底面圆心),HSL在概念上表示了一个双圆锥体和圆球体(白色在上顶点,黑色在下顶点,最大横切面的圆心是半程灰色)。注意尽管在HSL和HSV中“色调”指称相同的性质,它们的“饱和度”的定义是明显不同的。

RGB到HSL的转换公式如下:
在这里插入图片描述
在这里插入图片描述

六、Lab颜色空间

Lab颜色空间,弥补了RGB和CMYK两种色彩模式的不足。它是一种设备无关的颜色模型,也是一种基于生理特征的颜色模型。Lab颜色模型由三个要素组成:

  • 亮度L,反映光线强度;取值0~100;
  • 颜色通道a,a包括的颜色是从深绿色(低亮度值)到灰色(中亮度值)再到亮粉红色(高亮度值);取值-128~127;
  • 颜色通道b,是从亮蓝色(低亮度值)到灰色(中亮度值)再到黄色(高亮度值);取值-128~127。

这样规定是根据人类的视觉原理,灵长类动物的视觉都有两条通道:红绿通道和蓝黄通道,大多数动物最多只有一条通道,如果有人缺失其中一条,就是我们所说的色盲。

Lab模式对于PS极为重要,它是PS从一种颜色模式转换到另一种颜色模式的内部转化方式,PS从一种颜色模式转换到另一种颜色模式时,总是先转换到Lab模式。Lab色域是所有颜色模式中最宽广的,它囊括了RGB和CMYK的色域。

七、灰度颜色空间

很多类型的图像都没有色彩信息,只有亮度信息,通常使用灰度图表示,例如红外图像。灰度空间也是视觉机器学习任务中最基本的颜色空间。RGB空间转换为灰度空间的公式如下:

Y

=

0.299

×

R

0.587

×

G

0.114

×

B

Y = 0.299 \times R + 0.587 \times G + 0.114 \times B

Y=0.299×R+0.587×G+0.114×B

灰度空间转换为RGB空间的公式如下:

R

=

Y

,

G

=

Y

,

B

=

Y

R=Y, G=Y, B=Y

R=Y,G=Y,B=Y

八、颜色空间转换实战

cvtColor函数将输入的源图从某个颜色空间转换至另一个颜色空间。OpenCV的默认颜色空间为BGR,因此对于一个标准的3字节彩色图,第一个字节为8bit蓝色分量,第二个字节是8bit绿色分量,第三个字节是8bit红色分量。

cvtColor函数定义如下:

void cv::cvtColor(InputArray src, OutputArray dst, int code, int dstCn = 0)

各参数含义:

  • src:输入图像,可以是8位无符号整型(CV_8U)、16位无符号整型(CV_16U)或单精度浮点型数据
  • dst:输出图像,与输入图像的类型、大小和位深度均相等
  • code:颜色空间转换码,指定颜色空间转换的类型
  • dstCn:目标图像的通道数。当dstCn=0时,通道数将根据code与源图通道数自动确定

指定颜色空间转换的类型,将原图转换到不同的颜色空间,代码如下所示:

img
img
img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上大数据知识点,真正体系化!

由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新

需要这份系统化资料的朋友,可以戳这里获取

601)]

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上大数据知识点,真正体系化!

由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新

需要这份系统化资料的朋友,可以戳这里获取

  • 22
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值