OpenCV HSV颜色模型及 颜色分量范围

                      OpenCV HSV颜色模型及 颜色分量范围 

 

HSV颜色模型

HSV(Hue, Saturation, Value)是根据颜色的直观特性由A. R. Smith在1978年创建的一种颜色空间, 也称六角锥体模型(Hexcone Model)。、这个模型中颜色的参数分别是:色调(H),饱和度(S),亮度(V)。

 

色调H:用角度度量,取值范围为0°~360°,从红色开始按逆时针方向计算,红色为0°,绿色为120°,蓝色为240°。它们的补色是:黄色为60°,青色为180°,品红为300°;

饱和度S:取值范围为0.0~1.0;

亮度V:取值范围为0.0(黑色)~1.0(白色)。

 

RGB和CMY颜色模型都是面向硬件的,而HSV(Hue Saturation Value)颜色模型是面向用户的。

HSV模型的三维表示从RGB立方体演化而来。设想从RGB沿立方体对角线的白色顶点向黑色顶点观察,就可以看到立方体的六边形外形。六边形边界表示色彩,水平轴表示纯度,明度沿垂直轴测量。

 

HSV颜色分量范围

一般对颜色空间的图像进行有效处理都是在HSV空间进行的,然后对于基本色中对应的HSV分量需要给定一个严格的范围,下面是通过实验计算的模糊范围(准确的范围在网上都没有给出)。

H:  0— 180

S:  0— 255

V:  0— 255

此处把部分红色归为紫色范围:

 

HSV六棱锥

H参数表示色彩信息,即所处的光谱颜色的位置。该参数用一角度量来表示,红、绿、蓝分别纯度S为一比例值,范围从0到1,它表示成所选颜色的纯度和该颜色最大的纯度之间的比率。S=0时,只有灰度。相隔120度。互补色分别相差180度。

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

 

1、RGB转化到HSV的算法:

max=max(R,G,B)

min=min(R,G,B)

V=max(R,G,B)

S=(max-min)/max

ifR = max,H =(G-B)/(max-min)* 60

ifG = max,H = 120+(B-R)/(max-min)* 60

ifB = max,H = 240 +(R-G)/(max-min)* 60

ifH < 0,H = H+ 360

 

2、HSV转化到RGB的算法:

if s = 0

R=G=B=V

else

H /= 60;

i = INTEGER(H)

f = H - i

a = V * ( 1 - s )

b = V * ( 1 - s * f )

c = V * ( 1 - s * (1 - f ) )

switch(i)

case 0: R = V; G = c; B = a;

case 1: R = b; G = v; B = a;

case 2: R = a; G = v; B = c;

case 3: R = a; G = b; B = v;

case 4: R = c; G = a; B = v;

case 5: R = v; G = a; B = b;

 

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

  一般说来,人眼最大能区分128种不同的色彩,130种色饱和度,23种明暗度。如果我们用16Bit表示HSV的话,可以用7位存放H,4位存放S,5位存放V,即745或者655就可以满足我们的需要了。

  由于HSV是一种比较直观的颜色模型,所以在许多图像编辑工具中应用比较广泛,如Photoshop(在Photoshop中叫HSB)等等,但这也决定了它不适合使用在光照模型中,许多光线混合运算、光强运算等都无法直接使用HSV来实现。 

 

原文地址:https://www.cnblogs.com/wangyblzu/p/5710715.html

 

 

 

 

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: OpencvSharp是一个在C#中使用OpenCV库的开源项目,它提供了一系列用于图像处理和计算机视觉的函数和工具。在OpencvSharp中进行颜色筛选可以通过以下步骤实现: 首先,导入所需的命名空间: ```csharp using OpenCvSharp; ``` 然后,读取输入图像: ```csharp Mat inputImage = Cv2.Imread("input.jpg"); ``` 接下来,将输入图像转换为HSV颜色空间(色相、饱和度、亮度): ```csharp Mat hsvImage = new Mat(); Cv2.CvtColor(inputImage, hsvImage, ColorConversionCodes.BGR2HSV); ``` 然后,使用InRange函数根据颜色范围创建一个二值图像: ```csharp Scalar lowerBound = new Scalar(0, 50, 50); // 设置颜色下限 Scalar upperBound = new Scalar(10, 255, 255); // 设置颜色上限 Mat colorMask = new Mat(); Cv2.InRange(hsvImage, lowerBound, upperBound, colorMask); ``` 最后,应用颜色掩码到输入图像上以获得筛选后的结果: ```csharp Mat filteredImage = new Mat(); Cv2.BitwiseAnd(inputImage, inputImage, filteredImage, colorMask); ``` 上述代码中,我们将输入图像转换为HSV颜色空间,然后根据设定的颜色上下限使用InRange函数创建一个二值图像。最后,通过应用颜色掩码到输入图像上,我们可以得到进行颜色筛选后的结果。 这是一个简单的OpencvSharp颜色筛选的实现示例,你可以根据具体需求进行调整和优化。请记住,此示例仅涵盖了基本的颜色筛选操作,实际的应用可能需要更复杂的算法和技术来实现更精确的筛选效果。 ### 回答2: 在OpenCvSharp中,可以使用颜色筛选来提取图像中指定颜色的区域。 首先,需要将图像转换为HSV颜色空间,因为HSV颜色空间对颜色的描述更加直观。可以使用Cv2的cvtColor函数来实现这一转换。 然后,根据需要筛选的颜色范围,可以使用inRange函数来将图像中落在指定颜色范围内的像素设置为白色,而其他像素则设置为黑色。这样就得到了颜色筛选后的二值图像。 接下来,可以使用findContours函数来提取二值图像中的轮廓。或者,如果只关心颜色筛选结果的整体信息,也可以使用moments函数计算图像的矩来获取颜色筛选区域的中心点坐标、面积等属性。 最后,可以根据需要对筛选结果进行处理,比如在原始图像上绘制轮廓、标记出中心点等。 需要注意的是,颜色筛选的准确性受到多方面因素的影响,比如光照条件、摄像机设置等,因此在实际应用中可能需要根据具体情况进行调整和优化。另外,OpenCvSharp还提供了其他图像处理功能,比如滤波、形态学操作等,可以进一步对筛选结果进行加工和改进。 ### 回答3: OpenCvSharp是一个用于图像处理和计算机视觉的开源库。在OpenCvSharp中,我们可以使用不同的方法来进行颜色筛选。 一种常用的方法是使用inRange函数。该函数可以帮助我们选择在指定颜色范围内的像素。我们需要提供一个包含最低和最高HSV(色相、饱和度、值)值的掩码,函数将返回一个二进制图像,其中包含了属于指定颜色范围内的像素。这在分割图像中的特定颜色区域时非常有用。 另一种方法是使用cvtColor函数将图像转换为HSV颜色空间。HSV颜色空间是一种更直观的表示颜色的方式,其中色相表示颜色的主要属性,饱和度表示颜色的鲜艳程度,而值表示颜色的亮度。一旦我们将图像转换为HSV颜色空间,就可以使用inRange函数来筛选出符合我们要求的像素。 除了基本的颜色筛选方法之外,我们还可以使用其他技术来检测和识别特定颜色。例如,我们可以使用HSV颜色直方图来分析图像中的颜色分布,找到最频繁出现的颜色,从而进行筛选。我们也可以使用颜色特征和机器学习算法来训练一个模型来识别特定颜色。 总而言之,OpenCvSharp提供了多种方法来进行颜色筛选,包括inRange函数和颜色特征分析。这些方法可以帮助我们有效地处理图像中的颜色信息,从而实现各种应用,例如目标检测、图像分割和图像识别等。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值