我正在将Color类作为c ++中非常基本的图形API的一部分。所以我决定看一下微软的.NET框架,发现他们的Color类有HSB的功能。
然后我开始研究以确定我是否应该在课堂上提供HSB,HSL或HSV或所有这些。
所以,我有3个关于HSB,HSL,HSV的问题:
HSB与HSL相同吗?
如果没有,为什么没有HSBL甚至HSBLV?
我发现有很多不同的计算这些值的方法,有人能给我看最快的吗?
答案 0 :(得分:34)
HSB与HSL相同吗?
不,HSB与HSV相同,但HSL不同。所有这些都用作表示RGB颜色的友好方式。关于HSL和HSV的维基百科文章解释了使用彩色光谱仪的差异:HSL and HSV 基本上,Hue与HSB和HSL相同,但饱和度取不同的值,亮度和亮度也不同。
如果没有,为什么没有HSBL甚至HSBLV?
我不明白这一点。 HSB / HSV和HSL都可以表示任何RGB颜色。由于它们的定义方式,不可能独立地具有B和L.给定的HSB亮度和饱和度与固定的亮度相关联。事实上,在它们之间进行转换非常容易。
我发现有很多不同的计算这些值的方法,有人能告诉我最快的吗?
这里有一个类似的问题用于从RGB计算HSB:Fast, optimized and accurate RGB <-> HSB conversion code in C那里有一个Java实现可能有所帮助。要在HSB / HSV和HSL之间进行转换,请参阅HSL vs HSB vs HSV
答案 1 :(得分:2)
最初,亮度和亮度之间的区别是。 “亮度”用于减色,“亮度”用于加色。现在,如果您的程序要处理像CMYK系统这样的减色,最好使用HSB,否则最好使用HSL。
答案 2 :(得分:0)
答案 3 :(得分:0)
HSB和HSV相同,但HSL不同。 HSB代表色相,饱和度和亮度,HSV代表色相,饱和度和值。 HSL代表色相,饱和度,光。这是与Medium.com的视觉区别:https://i.stack.imgur.com/nX8NL.png。
答案 4 :(得分:0)
如果您正在做 UI,那么使用 HSL 而不是 HSV 更有意义,因为您需要控制调色板的亮度 (L) 值。