颜色处理
HSV 颜色空间
将颜色表示为色调(Hue)、饱和度(Saturation)和明度(Value)
色调(Hue)
定义:色调表示颜色的类型或名称,例如红色、绿色、蓝色等。
表示方法:色调用一个角度表示,通常范围是0到360度。例如,0度代表红色,120度代表绿色,240度代表蓝色。
饱和度 (Saturation)
定义:饱和度表示颜色的纯度或强度。饱和度越高,颜色越纯;饱和度越低,颜色越灰。
表示方法:饱和度通常用百分比表示,0%代表灰色(无色),100%代表纯色。
明度(Value)
定义:明度表示颜色的亮度,值越高颜色越亮,值越低颜色越暗。
表示方法:明度也通常用百分比表示,0%代表黑色(无亮度),100%代表白色(全亮度)。
从 RGB 转换为 HSV
将离散的rgb数值转换为概率
首先我们将RGB 各自的数值转换为 0-1 的概率,即
找最大最小
计算色调
定义色差 , 如果 则 色调为 0
- 当 时:
- 当 ′ 时:
- 当 时:
如果计算出的色调为负值,需加上360度使其为正。
计算饱和度、明度
饱和度(S)表示为:
这里要注意一个误区:并不是说饱和度在 的时候只能由 红绿蓝三色,只是说 , 事实上可能有无数个颜色
明度(V)表示为:
视觉理解

饱和度
在Hue一定的情况下,饱和度减小,就是往光谱色中添加白色,光谱色所占的比例也在减小,饱和度减为0,表示光谱色所占的比例为零,导致整个颜色呈现白色。
- 光滑表面会有更高的饱和度,而粗糙表面会散射光线,降低饱和度。
- 金属表面通常会有高饱和度的反射,而布料表面可能会显得较为暗淡。
明度
明度减小,就是往光谱色中添加黑色,光谱色所占的比例也在减小,明度减为0,表示光谱色所占的比例为零,导致整个颜色呈现黑色。
这个属性类似于我们在灯光环境不是很好的情况下看到的颜色效果,调节这个值的阈值范围可以增强光照较暗的环境下的物体识别率
当然在光暗条件下,颜色的饱和度也会降低
色调
色调(Hue)从0到360度的颜色变化
基本上和彩虹的颜色变化一样
- 0度:红色
- 60度:黄色
- 120度:绿色
- 180度:青色(青绿)
- 240度:蓝色
- 300度:洋红(紫红)
- 360度:回到红色
opencv 的独特性
为了使用8位整数表示,OpenCV将色调的范围缩小到0到179,这样刚好可以用一个8位整数来表示。其 H 值就是标准 H 值除以二
颜色空间和强度空间的对比
我们什么时候倾向于使用颜色空间呢?
颜色 优点
图像中的目标具有独特的颜色特征
- 示例:交通标志识别、水果分类、医学图像中的特定染色。
- 红色的交通标志或特定染色的细胞。
背景和前景颜色差异显著 - 示例:绿色背景中的红色水果、蓝天中的白云。
- 原因:当前景和背景颜色差异显著时,使用颜色空间可以更容易地区分和分割出前景对象。
强度 优点
图像内容主要基于亮度差异
- 示例:文本图像、黑白文档扫描、X光片。
图像背景与前景颜色相似但亮度不同 - 示例:某些工业检测图像,前景物体与背景颜色相似但亮度不同。
简化计算和提高效率 - 示例:实时图像处理系统、嵌入式系统。
- 原因:灰度图像只包含单个通道,相比颜色图像(通常包含3个通道),处理速度更快,计算资源消耗更低。
All articles in this blog are licensed under CC BY-NC-SA 4.0 unless stating additionally.
