将HSV空间和RGB空间互相转换知识

来源:互联网 发布:程序员如何赚外快 编辑:程序博客网 时间:2024/04/29 17:17

理论知识,将HSV空间和RGB空间互相转换:

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

Hhue色相)、Ssaturation饱和度)、Llightness亮度)、Vvalue(色调)Bbrightness明度)。

§ 色相H)是色彩的基本属性,就是平常所说的颜色名称,如红色黄色等。

§ 饱和度S)是指色彩的纯度,越高色彩越纯,低则逐渐变灰,取0-100%的数值。

§ 明度V),亮度(B),取0-100%

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

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

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

HSV 模型在 1978 年由埃尔维··史密斯创立,它是三原色光模式的一种非线性变换。

动机

艺术家有时偏好使用 HSLHSV 而不选择 三原色光模式(即RGB模型) 或 印刷四分色模式(即CMYK模型),因为它类似于人类感觉颜色的方式,具有较强的感知度。RGB 和 CMYK 分别是加法原色减法原色模型,以原色组合的方式定义颜色,而 HSV 以人类更熟悉的方式封装了关于颜色的信息:这是什么颜色?深浅如何?明暗如何?

但是色彩属性和物理学中的光谱并不是完全对应的,物理学的人类可见光谱是有两个端点的直线形,并不能形成一个环。当然每种颜色都可以找到相应的光波长,但都有一个范围,并不是单一的波长。明度一般和具体某种颜色的光波能量相当,但和整个光谱的能量无关(因为每种波长的光的能量都不相同)。HSV 颜色空间在技术上不支持到辐射测定中测量的物理能量谱密度的一一映射。所以一般不建议做在 HSV 坐标和物理光性质如波长振幅之间的直接比较。HSL不清楚。

[编辑]用途

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

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

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

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

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

从 RGB 到 HSL 或 HSV 的转换

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

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

HSL 和 HSV 有同样的色相定义,但是其他分量不同。HSV 颜色的 s 和 v 的值定义如下:


从 HSV 到 RGB 的转换

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


对于每个颜色向量 (rgb),


原创粉丝点击