目录

HSV(HSL)与RGB转换详解


HSV(HSL)

  • HSL 和HSV(也叫做 HSB)是对RGB 色彩空间中点的两种有关系的表示,它们尝试描述比 RGB 更准确的感知颜色联系,并仍保持在计算上简单。

  • HSL: hue(色相)、saturation(饱和度)、lightness(亮度)

  • HSV: hue、saturation、value(色调)

  • HSB :hue、saturation、brightness(明度)。

  • HSL 和 HSV 二者都把颜色描述在圆柱体内的点,这个圆柱的中心轴取值为自底部的黑色到顶部的白色而在它们中间是的灰色,绕这个轴的角度对应于“色相”,到这个轴的距离对应于“饱和度”,而沿着这个轴的距离对应于“亮度”,“色调”或“明度”。

  • 这两种表示在用目的上类似,但在方法上有区别。二者在数学上都是圆柱,但 HSV(色相,饱和度,明度)在概念上可以被认为是颜色的倒圆锥体(黑点在下顶点,白色在上底面圆心),HSL 在概念上表示了一个双圆锥体和圆球体(白色在上顶点,黑色在下顶点,最大横切面的圆心是半程灰色)。

  • 注意尽管在 HSL 和 HSV 中“色相”指称相同的性质,它们的“饱和度”的定义是明显不同的。

  • 因为 HSL 和 HSV 是设备依赖的 RGB 的简单变换,(h,s, l) 或 (h, s, v) 三元组定义的颜色依赖于所使用的特定红色、绿色和蓝色“加法原色”。每个独特的RGB 设备都伴随着一个独特的 HSL 和 HSV 空间。但是 (h, s, l) 或 (h,s, v) 三元组在被约束于特定 RGB 空间比如 sRGB 的时候就变成明确的了。

  • HSV 模型在 1978 年由埃尔维·雷·史密斯创立。

  • http://image.catbro.cn/71fa217c0250e.png

  • HSV 色轮允许用户快速的选择众多颜色。

  • http://image.catbro.cn/432de08d8e9e5.png


HSV的多重表示

  • HSV 模型的圆锥表示适合于在一个单一物体中展示整个 HSV 色彩空间。

  • HSV 模型通常用于计算机图形应用中。在用户必须选择一个颜色应用于特定图形元素各种应用环境中,经常使用 HSV 色轮。在其中,色相表示为圆环;可以使用一个独立的三角形来表示饱和度和明度。典型的,这个三角形的垂直轴指示饱和度,而水平轴表示明度。在这种方式下,选择颜色可以首先在圆环中选择色相,在从三角形中选择想要的饱和度和明度。

  • HSV 模型的另一种可视方法是圆锥体。在这种表示中,色相被表示为绕圆锥中心轴的角度,饱和度被表示为从圆锥的横截面的圆心到这个点的距离,明度被表示为从圆锥的横截面的圆心到顶点的距离。某些表示使用了六棱锥体。这种方法更适合在一个单一物体中展示这个 HSV 色彩空间;但是由于它的三维本质,它不适合在二维计算机界面中选择颜色。

  • HSV 色彩空间还可以表示为类似于上述圆锥体的圆柱体,色相沿着圆柱体的外圆周变化,饱和度沿着从横截面的圆心的距离变化,明度沿着横截面到底面和顶面的距离而变化。这种表示可能被认为是 HSV 色彩空间的更精确的数学模型;但是在实际中可区分出的饱和度和色相的级别数目随着明度接近黑色而减少。此外计算机典型的用有限精度范围来存储 RGB 值;这约束了精度,再加上人类颜色感知的限制,使圆锥体表示在多数情况下更实用。


HSL 与 HSV 的比较

  • http://image.catbro.cn/4169596938304.png

与其他颜色模型的比较

  • HSV 颜色空间在技术上不支持到辐射测定中测量的物理能量谱密度的一一映射。所以一般不建议做在 HSV 坐标和物理光性质如波长和振幅之间的直接比较。

形式定义

  • HSL 和 HSV 在数学上定义为在 RGB 空间中的颜色的R, G 和 B 的坐标的变换。

从 RGB 到 HSL 或 HSV 的转换

  • 设 (r,g, b) 分别是一个颜色的红、绿和蓝坐标,它们的值是在 0 到 1 之间的实数。设 max 等价于 r, g 和 b 中的最大者。设 min 等于这些值中的最小者。要找到在 HSL 空间中的 (h,s, l) 值,这里的 h ∈ [0, 360)是角度的色相角,而 s, l ∈ [0,1] 是饱和度和亮度,计算为:

http://image.catbro.cn/4d857681842bd.png

  • h 的值通常规范化到位于 0 到 360°之间。而 h = 0 用于 max = min 的(就是灰色)时候而不是留下h 未定义。

HSL 和 HSV 有同样的色相定义,但是其他分量不同。HSV 颜色的s 和 v 的值定义如下: http://image.catbro.cn/4d4199b233caf.png


从 HSL 到 RGB 的转换

  • 给定 HSL 空间中的 (h,s, l) 值定义的一个颜色,带有 h 在指示色相角度的值域 [0, 360)中,分别表示饱和度和亮度的s 和l 在值域 [0, 1] 中,相应在 RGB 空间中的 (r, g, b) 三原色,带有分别对应于红色、绿色和蓝色的r, g 和 b 也在值域 [0, 1] 中,它们可计算为:

  • 首先,如果 s = 0,则结果的颜色是非彩色的、或灰色的。在这个特殊情况,r,g 和 b 都等于 l。注意 h 的值在这种情况下是未定义的。

  • 当 s ≠ 0 的时候,可以使用下列过程:[1] http://image.catbro.cn/db29162ff3bd4.png

  • 对于每个颜色向量$Color = (Color_R,Color_G, Color_B) = (r,g, b),$ http://image.catbro.cn/de8697e593199.png


从 HSV 到 RGB 的转换

  • 类似的,给定在 HSV 中 (h,s, v) 值定义的一个颜色,带有如上的 h,和分别表示饱和度和明度的 s 和 v 变化于 0 到 1 之间,在 RGB 空间中对应的 (r,g, b) 三原色可以计算为:

  • http://image.catbro.cn/6b87dd42eaaaf.png

  • 对于每个颜色向量 (r, g, b),

  • http://image.catbro.cn/d81e3e3c37c4b.png


展示的 RGB 值的范围是 0.0 到 1.0。

  • http://image.catbro.cn/0a1105d4690f9.png

HSV颜色空间

  • HSV(hue,saturation,value)颜色空间的模型对应于圆柱坐标系中的一个圆锥形子集,圆锥的顶面对应于V=1。它包含RGB模型中的R=1,G=1,B=1三个面,所代表的颜色较亮。色彩H由绕V轴的旋转角给定。红色对应于角度0°,绿色对应于角度120°,蓝色对应于角度240°。 在HSV颜色模型中,每一种颜色和它的补色相差180°。饱和度S取值从0到1,所以圆锥顶面的半径为1。HSV颜色模型所代表的颜色域是CIE色度图的一个子集,这个模型中饱和度为百分之百的颜色,其纯度一般小于百分之百。在圆锥的顶点(即原点)处,V=0,H和S无定义,代表黑色。圆锥的顶面中心处S=0,V=1,H无定义,代表白色。从该点到原点代表亮度渐暗的灰色,即具有不同灰度的灰色。对于这些点,S=0,H的值无定义。可以说,HSV模型中的V轴对应于RGB颜色空间中的主对角线。在圆锥顶面的圆周上的颜色,V=1,S=1,这种颜色是纯色。HSV模型对应于画家配色的方法。画家用改变色浓和色深的方法从某种纯色获得不同色调的颜色,在一种纯色中加入白色以改变色浓,加入黑色以改变色深,同时加入不同比例的白色,黑色即可获得各种不同的色调。

  • HSV颜色空间可以用一个圆锥空间模型来描述。 http://image.catbro.cn/dda3f983d4912.png

  • 设 (r, g, b) 分别是一个颜色的红、绿和蓝坐标,它们的值是在 0 到 1 之间的实数。设 max 等价于 r,g 和 b 中的最大者。设 min 等于这些值中的最小者。要找到在 HSV 空间中的 (h,s, v) 值,这里的 h ∈ [0, 360)是角度的色相角,而 s, v ∈ [0,1] 是饱和度和亮度,计算为:

  • http://image.catbro.cn/c8d477bb0c931.png

  • h 的值通常规范化到位于 0 到 360°之间。而 h = 0 用于max = min 的(就是灰色)时候而不是留下 h 未定义。

  • 以上摘录自https://blog.csdn.net/xiahailong90/article/details/78854780