计算机视觉基础-图像处理-彩色空间互转

一、简介

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

二、相关颜色空间的原理介绍

或许你会有疑惑,上面提到的RGB是什么?HSV是什么?它们都是颜色空间。

2.1 RGB

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

RGB颜色空间基于颜色的加法混色原理,从黑色不断叠加Red,Green,Blue的颜色,最终可以得到白色,如图:
在这里插入图片描述
将R、G、B三个通道作为笛卡尔坐标系中的X、Y、Z轴,就得到了一种对于颜色的空间描述,如图:
在这里插入图片描述
这就相当于,每个点对应每一种颜色,每种颜色都有一个坐标,如图:
在这里插入图片描述

2.2 HSV

HSV即色相(Hue)、饱和度(Saturation)、明度(Value),又称HSB(B即Brightness)。色相是色彩的基本属性,就是平常说的颜色的名称,如红色、黄色等;饱和度(S)是指色彩的纯度,越高色彩越纯,低则逐渐变灰,取0-100%的数值;明度(V),取0-max(计算机中HSV取值范围和存储的长度有关),表示色彩的明亮程度,但与光强无直接联系。

HSV是一种将RGB色彩空间中的点在倒圆锥体中的表示方法,圆锥的顶点处,V=0,H和S无定义,代表黑色。圆锥的顶面中心处V=max,S=0,H无定义,代表白色。用一个圆锥空间模型来描述:
在这里插入图片描述
RGB颜色空间中,三种颜色分量的取值与所生成的颜色之间的联系并不直观。而HSV颜色空间,更类似于人类感觉颜色的方式,封装了关于颜色的信息:“这是什么颜色?深浅如何?明暗如何?”

三、颜色空间互转理论的介绍

3.1 RGB转灰度图

对于彩色转灰度,有一个很著名的心理学公式:Gray = R * 0.299 + G * 0.587 + B * 0.114

3.2 RGB与HSV转换

1、由RGB到HSV有以下公式:
在这里插入图片描述
或:
在这里插入图片描述
2、由HSV到RGB有以下公式:
在这里插入图片描述

四、基于OpenCV代码实现

在 OpenCV 中有 超过150 种进行颜色空间转换的方法。但是你以后就会发现我们经常用到的也就两种:BGR↔Gray 和BGR↔HSV。
我们用到的函数是cv2.cvtColor(img,flag),img表示图片,flag表示转换类型。
对于BGR↔Gray的转换,我们使用的flag是cv2.COLOR_BGR2GRAY。
同样对于BGR↔HSV的转换我们用的flag是cv2.COLOR_BGR2HSV。

import cv2
import numpy as np

img = cv2.imread('C:\\Users\\Administrator\\Pictures\\icecream.jpg')
rows,cols,channel=img.shape
resized = cv2.resize(img, (int(rows*0.4),int(cols*0.4)), interpolation=cv2.INTER_LINEAR)  # 0.4.倍缩小,双线性插值
hsv = cv2.cvtColor(resized,cv2.COLOR_BGR2HSV)
gray = cv2.cvtColor(resized,cv2.COLOR_BGR2GRAY)
cv2.imshow("hsv",hsv)
cv2.imshow("gray",gray)
cv2.waitKey(0)
cv2.destroyAllWindows()

由于图片太大截不了全部,所以先0.4倍缩放,方便截图
BGR↔HSV:
在这里插入图片描述
BGR↔Gray:
在这里插入图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值