HSV 颜色空间

将颜色表示为色调(Hue)、饱和度(Saturation)和明度(Value)

色调(Hue)

定义:色调表示颜色的类型或名称,例如红色、绿色、蓝色等。
表示方法:色调用一个角度表示,通常范围是0到360度。例如,0度代表红色,120度代表绿色,240度代表蓝色。

饱和度 (Saturation)

定义:饱和度表示颜色的纯度或强度。饱和度越高,颜色越纯;饱和度越低,颜色越灰。
表示方法:饱和度通常用百分比表示,0%代表灰色(无色),100%代表纯色。

明度(Value)

定义:明度表示颜色的亮度,值越高颜色越亮,值越低颜色越暗。
表示方法:明度也通常用百分比表示,0%代表黑色(无亮度),100%代表白色(全亮度)。

从 RGB 转换为 HSV

将离散的rgb数值转换为概率

首先我们将RGB 各自的数值转换为 0-1 的概率,即 R=R255R' = \frac{R}{255}

找最大最小

Cmax=max(R,G,B)C_{max}​=\max(R',G',B')

Cmin=min(R,G,B)C_{min}=\min⁡(R',G',B')

计算色调

定义色差 Δ=CmaxCmin\Delta = C_{max} - C_{min}, 如果 Δ=0\Delta = 0 则 色调为 0

  • Cmax=RC_{\text{max}} = R' 时:

H=60×(GBΔmod6)H = 60 \times \left(\frac{G' - B'}{\Delta} \mod 6 \right)

  • Cmax=GC_{\text{max}} = G'′ 时:

H=60×(BRΔ+2)H = 60 \times \left( \frac{B' - R'}{\Delta} + 2 \right)

  • Cmax=BC_{\text{max}} = B' 时:

H=60×(RGΔ+4)H = 60 \times \left( \frac{R' - G'}{\Delta} + 4 \right)

如果计算出的色调为负值,需加上360度使其为正。

计算饱和度、明度

饱和度(S)表示为:

S={0if Cmax=0ΔCmaxotherwiseS = \begin{cases} 0 & \text{if } C_{\text{max}} = 0 \\ \frac{\Delta}{C_{\text{max}}} & \text{otherwise} \end{cases}

这里要注意一个误区:并不是说饱和度在 100%100\% 的时候只能由 红绿蓝三色,只是说 Cmin=0C_{min} = 0, 事实上可能有无数个颜色
明度(V)表示为:

V=CmaxV = C_{\text{max}}

视觉理解

hsv

饱和度

在Hue一定的情况下,饱和度减小,就是往光谱色中添加白色,光谱色所占的比例也在减小,饱和度减为0,表示光谱色所占的比例为零,导致整个颜色呈现白色。

  • 光滑表面会有更高的饱和度,而粗糙表面会散射光线,降低饱和度。
  • 金属表面通常会有高饱和度的反射,而布料表面可能会显得较为暗淡。

明度

明度减小,就是往光谱色中添加黑色,光谱色所占的比例也在减小,明度减为0,表示光谱色所占的比例为零,导致整个颜色呈现黑色。
这个属性类似于我们在灯光环境不是很好的情况下看到的颜色效果,调节这个值的阈值范围可以增强光照较暗的环境下的物体识别率
当然在光暗条件下,颜色的饱和度也会降低

色调

色调(Hue)从0到360度的颜色变化

基本上和彩虹的颜色变化一样

  • 0度:红色
  • 60度:黄色
  • 120度:绿色
  • 180度:青色(青绿)
  • 240度:蓝色
  • 300度:洋红(紫红)
  • 360度:回到红色

opencv 的独特性

为了使用8位整数表示,OpenCV将色调的范围缩小到0到179,这样刚好可以用一个8位整数来表示。其 H 值就是标准 H 值除以二

颜色空间和强度空间的对比

我们什么时候倾向于使用颜色空间呢?

颜色 优点

图像中的目标具有独特的颜色特征

  • 示例:交通标志识别、水果分类、医学图像中的特定染色。
  • 红色的交通标志或特定染色的细胞。
    背景和前景颜色差异显著
  • 示例:绿色背景中的红色水果、蓝天中的白云。
  • 原因:当前景和背景颜色差异显著时,使用颜色空间可以更容易地区分和分割出前景对象。

强度 优点

图像内容主要基于亮度差异

  • 示例:文本图像、黑白文档扫描、X光片。
    图像背景与前景颜色相似但亮度不同
  • 示例:某些工业检测图像,前景物体与背景颜色相似但亮度不同。
    简化计算和提高效率
  • 示例:实时图像处理系统、嵌入式系统。
  • 原因:灰度图像只包含单个通道,相比颜色图像(通常包含3个通道),处理速度更快,计算资源消耗更低。