知识库

记录点点滴滴

利用HSL色彩空间进行颜色识别(附转换代码)

近期在做一个在复杂背景下识别球颜色的项目。当接到这个任务时,下意识的采用了扫像素点+RGB值找规律设定阈值的方式。这种方法固然简单直白,但是存在以下问题:

1.由于需要尽可能减少背景的干扰,故采用这种方法往往需要写多个if条件进行归类,这也导致程序的复杂度上升

2.光照是单目识别的自然杀手,检测颜色也不例外,该方法受光照影响较大,在较强光照和较弱光照下,如果识别条件写的比较粗糙,容易产生误判

3.通用性不强,对于每一种颜色都需要单独设立判断条件

4.鲁棒性不强,判断条件较为机械

 

HSL

于此,想到了基于RGB的更为合理、通用性更强的HSL色彩空间进行颜色检测的办法。

  • 其中,H(Hue) 代表色相,S(Saturation) 代表饱和度。Hue(色相)是指取值范围在0-360°的圆心角,每个角度可以代表一种颜色。
《利用HSL色彩空间进行颜色识别(附转换代码)》

H

  • 饱和度S为一比例值,范围从0到1,它表示成所选颜色的纯度和该颜色最大的纯度之间的比率。S=0时,只有灰度。
《利用HSL色彩空间进行颜色识别(附转换代码)》

S

  • HSL的L(lightness)分量,指的是色彩的明度,作用是控制色彩的明暗变化。它同样使用了0%至100%的取值范围。数值越小,色彩越暗,越接近于黑色;数值越大,色彩越亮,越接近于白色。
《利用HSL色彩空间进行颜色识别(附转换代码)》

L

RGB转换为HSL

HSL转换为RGB

点赞

发表评论

邮箱地址不会被公开。 必填项已用*标注