1. 什么是HSV颜色空间?
HSV颜色空间是一种基于人类视觉感知的颜色模型,由色调(Hue)、饱和度(Saturation)和明度(Value)三个维度组成。与RGB颜色空间不同,HSV更接近人类描述颜色的方式,因此在图像处理和计算机视觉领域应用广泛。
我第一次接触HSV是在做一个车牌识别的项目,当时需要从复杂的背景中提取出黄色车牌区域。用RGB空间怎么调阈值都不理想,后来切换到HSV空间,只需要设置黄色的色调范围就能完美分割,那种豁然开朗的感觉至今难忘。
HSV的三个分量各有特点:
- 色调H:用角度表示颜色种类,0°是红色,120°是绿色,240°是蓝色,形成一个完整的色环。这个设计特别符合艺术家的调色习惯。
- 饱和度S:表示颜色的纯度,0%是完全不饱和(灰色),100%是完全饱和(纯色)。你可以把它想象成颜料里掺入白色的程度 - 掺的白色越多,饱和度越低。
- 明度V:表示颜色的明亮程度,0%是纯黑,100%是最大亮度。这就像调节灯光的亮度旋钮,亮度变化但颜色本质不变。
2. HSV与RGB的转换原理
在实际项目中,我们经常需要在RGB和HSV之间转换。OpenCV提供了现成的cvtColor函数,但理解背后的数学原理很有必要。
RGB转HSV的算法可以这样理解:
- 先把RGB值归一化到[0,1]范围
- 找出R、G、B中的最大值max和最小值min
- 计算明度V = max
- 计算饱和度S = (max - min)/max (当max≠0)
- 色调H的计算稍复杂,取决于哪个分量是最大值:
- 如果max=min,H=0(灰度色)
- 如果max=R,H=60°×((G-B)/(max-min))
- 如果max=G,H=60°×(2+(B-R)/(max-min))
- 如果max=B,H=6

635

被折叠的 条评论
为什么被折叠?



