为什么要从RGB转换为HSV

17

我有一张图片,想要检测其中的一个蓝色矩形。我的老师告诉我:

  • 将其转换为HSV颜色模型
  • 定义一个阈值,使其成为具有我们要检测的颜色的二进制图像

那我们为什么要这样做?为什么不直接针对RGB图像进行阈值处理? 感谢您的回答。 enter image description here

4个回答

17

您可以在这里找到您问题的答案。

基本概括是HSV对于对象检测更好,

OpenCV通常以8位无符号整数BGR格式捕获图像和视频。换句话说,捕获的图像可以看作是三个矩阵—BLUE、RED和GREEN,其整数值范围从0到255。

BGR图像如何形成 在上面的图像中,每个小方格代表图像的一个像素。在真实图像中,这些像素非常小,肉眼无法区分。

通常,人们认为BGR颜色空间更适合基于颜色的分割。但是HSV颜色空间是最适合基于颜色的图像分割的颜色空间。因此,在上述应用程序中,我将视频的原始图像从BGR颜色空间转换为HSV图像。

HSV颜色空间由3个矩阵——'hue'、'saturation'和'value'组成。在OpenCV中,'hue'、'saturation'和'value'的值范围分别为0-179、0-255和0-255。'Hue'表示颜色,'Saturation'表示所述颜色与白色混合的程度,而'value'表示所述颜色与黑色混合的程度。


10
根据http://en.wikipedia.org/wiki/HSL_and_HSV#Use_in_image_analysis
数字图像中对象颜色的R、G和B组件都与照射对象的光量以及彼此相关,因此使用这些组件进行对象区分较为困难。相对而言,使用色相/亮度/色度或色相/亮度/饱和度等描述更为相关。
此外,在这里还有一些很好的信息。

5

HSV颜色空间将颜色(色调)与饱和度和伪光源分离,从而实现了对颜色的抽象。这使得它可以应用于像您提供的实际世界应用程序中。


3

RGB中的R、G、B都与颜色亮度(我们通常称之为强度)相关,即我们无法将颜色信息与亮度分开。HSV或色相饱和度值用于分离图像亮度和颜色信息。当我们需要处理或需要图像/帧的亮度时,这使得工作更加容易。HSV也用于颜色描述起着重要作用的情况。

干杯


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接