OpenCV——彩色空间互转(python实现和c++实现)

OpenCV——彩色空间互转

3.1 简介

图像彩色空间互转在图像处理中应用非常广泛,而且很多算法只对灰度图有效;另外,相比RGB,其他颜色空间(比如HSV、HSI)更具可分离性和可操作性,所以很多图像算法需要将图像从RGB转为其他颜色空间,所以图像彩色互转是十分重要和关键的。

3.2 学习目标

  • 了解相关颜色空间的基础知识
  • 理解彩色空间互转的原理
  • 掌握OpenCV框架下颜色空间互转API的使用

3.3 内容介绍

1.几种色彩空间

  • GRAY色彩空间
  • RGB色彩空间
  • HSV色彩空间

2.颜色空间互转原理的介绍

3.OpenCV代码实践

  • c++实现
  • python实现

3.4 几种色彩空间

3.4.1 GRAY色彩空间

GARY色彩空间(灰度图像)通常指8位灰度图,具有256个灰度级,像素值的范围是[0,255]。不同数值表示不同程度的灰色。像素值越低,灰色越深。0表示纯黑色,255表示纯白色。

GARY色彩空间为单通道,所以通常用二维数组表示一幅灰度图像。

二值图像:只有0和255两种像素值的灰度图像。

3.4.2 RGB色彩空间

从神经生理学角度出发,在视网膜上存在三种不同的颜色感受器,能够感受三种不同的颜色:红色、绿色和蓝色,即三基色。自然界中常见的大部分颜色都可以通过将三基色按照一定比例混合得到。

在RGB色彩空间中,存在R(red)、G(green)、B(blue)三个通道。每个色彩通道值的范围都在[0,255]之间,我们用这三个色彩通道的组合表示颜色。
下图表示不同RGB对应的颜色:

R值 G值 B值 RGB值 颜色
0 0 0 (0,0,0) 黑色
255 255 255 (255,255,255) 白色
255 0 0 (255,0,0) 红色
0 255 0 (0,255,0) 绿色
0 0 255 (0,0,255) 蓝色

三个通道都是0表示黑色,三个通道都是255表示白色。RGB空间共可以表示256×256×256种颜色。

RGB颜色空间基于颜色的加法混色原理,从黑色不断叠加Red,Green,Blue的颜色,最终可以得到白色,如图:

在这里插入图片描述

RGB模型

将R、G、B三个通道作为笛卡尔坐标系中的X、Y、Z轴,就得到了一种对于颜色的空间描述,如图:

在这里插入图片描述

RGB颜色空间立方体:

在这里插入图片描述

通常用一个三维数组表示一幅RGB色彩空间的彩色图像。

一般情况下,RGB色彩空间的通道顺序是R→G→B。但是在OpenCV中,通道顺序是B→G→R。

RGB(红绿蓝)是依据人眼识别的颜色定义出的空间,可表示大部分颜色。但在科学研究一般不采用RGB颜色空间,因为它的细节难以进行数字化的调整。它将色调,亮度,饱和度三个量放在一起表示,很难分开。它是最通用的面向硬件的彩色模型。该模型用于彩色监视器和一大类彩色视频摄像。

3.4.3 HSV色彩空间

HSV色彩空间从心理学和视觉的角度出发,提出人眼的色彩知觉主要包含三要素:

  • H:色调(Hue)
  • S:饱和度(Saturation)
  • V:亮度(Value)
1.色调(H)

色调是色彩的基本属性,就是平常说的颜色的名称,如“赤橙黄绿青蓝紫”等。色调与混合光谱中的主要波长相关,从波长的角度考虑,不同波长的光变现为不同的颜色,实际上体现的是色调的差异。色调的取值区间为[0,360]。色调取不同值,所代表的颜色如下表:

色调值 颜色
0 红色
60 黄色
120 绿色
180 青色
240 蓝色
300 品红色

两个角度之间的角度对应两个颜色之间的过渡色。

2.饱和度(S)

饱和度指色彩的纯度,通俗的说就是颜色的深浅。饱和度越高色彩越纯,饱和度越低则逐渐变灰。饱和度与所加白光的数量成反比。
饱和度的取值区间是[0,1]。灰度颜色的饱和度值是0。如果颜色的饱和度很低,那么它计算所得的色调不可靠。在OpenCV内,饱和度要映射到[0,255]范围内。

3.亮度(V)

反应的是人眼感受到的光的明暗程度。如果其中掺入的白色越多,则亮度越高;如果在其中掺入的黑色越多,则亮度越低。
亮度的取值区间是[0,1]。当亮度值是0时,图象是纯黑色。在OpenCV内,亮度也要映射到[0,255]范围内。

RGB颜色空间中,三种颜色分量的取值与所生成的颜色之间的联系并不直观。而HSV颜色空间,更类似于人类感觉颜色的方式,封装了关于颜色的信息:“这是什么颜色?深浅如何?明暗如何?

HSV模型

HSV颜色空间可以用一个倒圆锥体空间模型来描述。圆锥的顶点处,V=0,H和S无定义,代表黑色。圆锥的底面中心处V=360,S=0,H无定义,代表白色。
在这里插入图片描述

这个模型就是按色彩、深浅、明暗来描述的。

在这里插入图片描述

应用:可以用于偏光矫正、去除阴影、图像分割等

3.5 色彩空间互转

对于一张图片,进行色彩空间转换,只是把它每个像素点的表示形式改变了,不管用RGB的表示形式,还是HSV的表示形式,把像素值按相应色彩空间的规则转换成对应的颜色后,表示的还是这张图片。

3.5.1 RGB与灰度图互转

1、RGB2GRAY

将图像由RGB色彩空间转换为GRAY色彩空间时,处理方式如下: G r a y = R ∗ 0.299 + G ∗ 0.587 + B ∗ 0.114 Gray = R * 0.299 + G * 0.587 + B * 0.114 Gray=R0.299+G0.587+B0.114

2、GRAY2RGB

将图像由GRAY色彩空间转换为RGB色彩空间时,处理方式如下: R = G r a y G = G r a y B = G r a y R=Gray\\ G=Gray\\ B=Gray R=GrayG=GrayB=Gray

3.5.2 RGB与HSV互转

1、RGB2HSV

将图像由RGB色彩空间转换为HSV色彩空间时,处理方式如下: V = m a x ( R , G , B ) V=max(R,G,B) V=max(R,G,B)
S = { V − m i n ( R , G , B ) V V ≠ 0 0 其 他 S = \left\{ \begin{array}{rcl} &\frac{V-min(R,G,B)}{V}&{V≠0}\\\\ & 0&{其他} \end{array} \right. S=VVmin(R,G,B)0V=0
H = { 60 ( G − B ) V − m i n ( R , G , B ) V = R

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值