颜色空间------RGB、HSV(HSB)、HLS

一.RGB颜色空间

1. 起源

   RGB三原色起源于上世纪初1809年Thomas Young提出视觉的三原色学说,随后Helmholtz在1824年也提出了三原色学说:即:视网膜存在三种视锥细胞,分别含有对红、绿、蓝三种光线敏感的视色素,当一定波长的光线作用于视网膜时,以一定的比例使三种视锥细胞分别产生不同程度的兴奋,这样的信息传至大脑中枢,就产生某一种颜色的感觉。

在显示器发明之后,从黑白显示器发展到彩色显示器,人们开始使用发出不同颜色的光的荧光粉(CRT,等离子体显示器),或者不同颜色的滤色片(LCD),或者不同颜色的半导体发光器件(OLED和LED大型全彩显示牌)来形成色彩,无一例外的选择了Red,Green,Blue这3种颜色的发光体作为基本的发光单元。通过控制他们发光强度,组合出了人眼睛能够感受到的大多数的自然色彩。         

计算机显示彩色图像的时候也不例外,最终显示的时候,要控制一个像素中Red,Green,Blue的值,来确定这个像素的颜色。计算机中无法模拟连续的存储从最暗到最亮的量值,而只能以数字的方式表示。于是,结合人眼睛的敏感程度,使用3个字节(3*8位)来分别表示一个像素里面的Red,Green 和Blue的发光强度数值,这就是常见的RGB格式。我们可以打开画图板,在自定义颜色工具框中,输入r,g,b值,得到不同的颜色。

2. 概述

RGB颜色空间以R(Red:红)、G(Green:绿)、B(Blue:蓝)三种基本色为基础,进行不同程度的叠加,产生丰富而广泛的颜色,所以俗称三基色模式。

RGB空间是生活中最常用的一个颜色显示模型,电视机、电脑的CRT显示器等大部分都是采用这种模型。自然界中的任何一种颜色都可以由红、绿、蓝三种色光混合而成,现实生活中人们见到的颜色大多是混合而成的色彩。

肉眼可以识别世界上的所有颜色,而RGB几乎可以组合成世界上所有的颜色!

2. RGB颜色范围

RGB的每个元素在计算机内存中占用1个字节,1个字节等于8个bit位,所以RGB每个元素的取值范围为:0~256(2的8次方)(从2开始算次方我个人觉得是因为bit位,因为一个bit位可以表示两种状态)

那么三色组合起来256x256x256=16777216(一千六百七十七万七千二百一十六)种颜色,这么多的颜色几乎可以覆盖世界上所有的颜色!所以平常电视机、电脑屏幕、任何显示仪器都会通过这种RGB颜色空间来显示!

3. 组合方法

组合方法是通过互补光的形式来组合成任意颜色的

例如:

红色 + 绿色 = 黄色

4.单通道与多通道

 单通道:

俗称灰度图,每个像素点只能有一个值表示颜色,它的像素值在0到255之间,0是黑色,255是白色,中间值是一些不同等级的灰色,可以说灰度是黑与白之间的过渡色!

注意这个值不是RGB里的任何一个元素,显示设备是直接通过CRT(彩色阴极射线显像管)将单通道里的像素值显示黑白色图像,值越高黑色图越亮,一般灰度值大小不会超过125!

多通道:

多通道也就是RGB三原色,每个像素点有三个字节来表示(RGB),分别最大取值范围是0-255,可以组合成千万种颜色。

图像处理优势对比:

单通道往往应用于图像处理,因为单通道只有一个像素点(一个字节),所以相比多通道三个字节,处理速度上要尤为的快!

而且单通道能将图像以灰度形式显示出来,不会影响图像识别,和特征提取!

多通道以原图的形式将图像展示出来,所以可以提取特征很多,识别率高!

例如:

 

三通道想要组合成黑白色(灰度)必须三原色值相同。

也就是说灰度图不一定是单通道,但是单通道一定是灰度图!

二.HSV颜色空间

HSV 表达彩色图像的方式由三个部分组成:

  • Hue(色调、色相)
  • Saturation(饱和度、色彩纯净度)
  • Value(明度)

色调H(Hue)

用角度度量,取值范围为0°~360°,从红色开始按逆时针方向计算,红色为0°,绿色为120°,蓝色为240°,。它们的补色是:黄色为60°,青色为180°,品红为300°,0°-  359°时颜色会依次变换当角度到达360°时也就是红色,角度也就又回到0°了,所以总共为360°,每变换1°时,色相就会有轻微的变化!如果是顺时针的话这个变换过程会从红色逐渐变换到绿色,在由绿色逐渐变换到蓝色,在由蓝色逐渐变换到红色!逆时针的话就是相反的!

饱和度 S(Saturation)

饱和度S表示颜色接近光谱色的程度。一种颜色,可以看成是某种光谱色与白色混合的结果。其中光谱色所占的比例愈大,颜色接近光谱色的程度就愈高,颜色的饱和度也就愈高。饱和度高,颜色则深而艳。光谱色的白光成分为0,饱和度达到最高。通常取值范围为0%~100%,值越大,颜色越饱和。

明度V(Value)

明度表示颜色明亮的程度,对于光源色,明度值与发光体的光亮度有关;通常取值范围为0%(黑)到100%(白)。

纯度S为一比例值,范围从0到1,它表示成所选颜色的纯度和该颜色最大的纯度之间的比率。S=0时,只有灰度。

V表示色彩的明亮程度,范围从0到1。有一点要注意:它和光强度之间并没有直接的联系。 

HSV对用户来说是一种直观的颜色模型。我们可以从一种纯色彩开始,即指定色彩角H,并让V=S=1,然后我们可以通过向其中加入黑色和白色来得到我们需要的颜色。增加黑色可以减小V而S不变,同样增加白色可以减小S而V不变。例如,要得到深蓝色,V=0.4 S=1 H=240度。要得到浅蓝色,V=1 S=0.4 H=240度。
三、HLS颜色空间

HLS 和 HSV 比较类似,这里一起介绍。HLS 也有三个分量,hue(色相)、saturation(饱和度)、lightness(亮度)。

HLS 和 HSV 的区别就是最后一个分量不同,HLS 的是 light(亮度),HSV 的是 value(明度)。可以到这个 网页 尝试一下。

HLS 中的 L 分量为亮度,亮度为100,表示白色,亮度为0,表示黑色;HSV 中的 V 分量为明度,明度为100,表示光谱色,明度为0,表示黑色。

下面是 HLS 颜色空间圆柱体:

 提取白色物体时,使用 HLS 更方便,因为 HSV 中的Hue里没有白色,白色需要由S和V共同决定(S=0, V=100)。而在 HLS 中,白色仅由亮度L一个分量决定。所以检测白色时使用 HSL 颜色空间更准确。

  • 0
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
GY-33颜色传感器是一种可以获取RGB颜色值的传感器,可以通过Python程序进行数据获取和处理。 在Python中,可以通过调用相应的库来访问传感器,matplotlib、numpy和opencv是一些常用的用于图像处理的Python库。其中,opencv是专门用于图像处理的库,可以进行图像读取、处理、显示等,通常用于计算机视觉应用中。如果你选择使用该库,需要先通过pip安装,安装指令如下: ``` pip install opencv-python ``` 接下来,我们可以通过以下代码进行GY-33颜色传感器数据的读取: ```python import cv2 cap = cv2.VideoCapture(0) # 打开摄像头 while True: ret, frame = cap.read() # 读取摄像头数据 cv2.imshow('GY-33', frame) # 显示图像 if cv2.waitKey(1) & 0xFF == ord('q'): break cap.release() # 关闭摄像头 cv2.destroyAllWindows() # 关闭图像 ``` 以上代码实现了打开摄像头,并可以实时显示摄像头画面。当我们把GY-33传感器放在摄像头前时,我们可以通过以下代码进行数据采集: ```python import cv2 import numpy as np cap = cv2.VideoCapture(0) # 打开摄像头 while True: ret, frame = cap.read() # 读取摄像头数据 # 使用cv2.cvtColor函数将RGB格式转换为HSV格式 hsv = cv2.cvtColor(frame, cv2.COLOR_BGR2HSV) # 通过调整下面这一段中的数值来实现颜色区间的筛选 lower_color = np.array([0,0,0]) upper_color = np.array([255,255,255]) # 将颜色区间在HSV空间中进行筛选 mask = cv2.inRange(hsv, lower_color, upper_color) # 对颜色区域进行处理,并输出RGB值 res = cv2.bitwise_and(frame, frame, mask=mask) b,g,r = cv2.mean(res)[:3] print(int(r),int(g),int(b)) cv2.imshow('GY-33', frame) # 显示图像 if cv2.waitKey(1) & 0xFF == ord('q'): break cap.release() # 关闭摄像头 cv2.destroyAllWindows() # 关闭图像 ``` 以上方法可以实现在流媒体模式下获取GY-33颜色传感器的RGB值。由于颜色区间不同,输出值也会有所不同。我们可以根据具体需要,调整颜色区间来得到我们想要的RGB值。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值