HSL和HSV色彩模型

HSL(Hue,Saturation,Lightness)和HSV(Hue,Saturation,Value)是二十世纪七十年代由计算机图形学研究人员设计的RGB色彩模型的两种替代表现形式,用于更贴近人类视觉感知颜色属性的方式。在这些模型中,每种色调的颜色排列在径向切片中,围绕中性颜色的中心轴,范围从底部的黑色到顶部的白色。 HSV表示法模拟不同颜色的油漆混合在一起的方式,饱和度尺寸类似于各种色彩鲜艳的油漆,以及类似于这些油漆与不同黑色或白色油漆的混合物的值尺寸。 HSL模型尝试类似更多感知颜色模型,例如NCS或Munsell,将亮度值为1或2的完全饱和的颜色分别放置在亮度值为1/2的圆上,亮度值分别为0或1。

基本原则
HSL和HSV均为圆柱形几何形状,其色调为角度尺寸,从0°的红色原色开始,经过120°的绿色原色,240°的蓝色原色,然后在360°处回折成红色。在每个几何图形中,中心垂直轴包含中性,无色或灰色,范围从亮度为0或值0的黑色到底部为白色,亮度为1或值1为白色,顶部。

在这两种几何形状中,相邻成对色彩之间的红色,黄色,绿色,青色,蓝色和品红色以及线性混合物(有时称为纯色)的添加性主色和次色色彩以饱和度1排列在圆柱体外缘周围。这些饱和颜色在HSL中亮度为1/2,而在HSV中它们的值为1.将这些纯色与黑色产生的所谓色调混合 – 保持饱和度不变。在HSL中,饱和度也不因白色而变化,只有具有黑色和白色调色调的混合物的饱和度小于1.在HSV中,单独着色会降低饱和度。

因为这些饱和度的定义 – 其中非常暗(在两个模型中)或非常轻(在HSL中)近中性色彩被认为是完全饱和的(例如,从切片HSL柱体的右下方或从右上角) – 与色彩纯度的直观概念相冲突,通常是圆锥形或双锥形固体,取而代之的是本文所称的色度作为其径向尺寸,而不是饱和度。令人困惑的是,这些图通常将这个径向维度标记为“饱和度”,模糊或擦除饱和度和色度之间的区别。如下所述,计算色度是推导每个模型的有用步骤。因为这样的中间模型 – 具有色调,色度和HSV值或HSL亮度 – 呈锥形或双锥形,HSV通常被称为“hexcone模型”,而HSL通常被称为“双十六进制模型”。

动机
HSL色彩空间是由Georges Valensi于1938年发明的,它将彩色编码添加到现有的单色(即只包含L信号)广播,使现有的接收器无需修改即可接收新的彩色广播(黑白) (黑白)信号未经修改而广播。它已用于所有主要的模拟广播电视编码,包括NTSC,PAL和SECAM以及所有主要的数字广播系统,并且是复合视频的基础。

大多数电视机,计算机显示器和投影仪通过组合不同强度的红色,绿色和蓝色光来产生颜色,即所谓的RGB加色原色。在RGB色彩空间中产生的混合物可以再现各种颜色(称为色域);然而,红色,绿色和蓝色光的组成量与所得颜色之间的关系是不直观的,特别是对于没有经验的用户以及熟悉颜料的减色混色或基于色调和阴影的传统艺术家模型的用户。此外,加法和减色模型都不会像人眼一样定义颜色关系。

例如,假设我们有一个RGB显示屏,其颜色由三个滑块控制,范围从0-255,其中一个控制红色,绿色和蓝色原色的强度。如果我们从一个相对丰富多彩的橙色开始,其中sRGB的值为R = 217,G = 118,B = 33,并且想要将它的鲜艳度减少一半到饱和度较低的橙色,我们需要拖动滑块以将R减少31 ,G增加24,B增加59,如下图所示。

为了适应更传统和直观的颜色混合模型,PARC和NYIT的计算机图形开拓者在1970年代中期开发了HSV模型,由Alvy Ray Smith在1978年8月的Computer Graphics中正式描述。在同一个问题上,Joblove和Greenberg描述了HSL模型 – 它们的尺寸标注了色调,相对色度和强度 – 并将其与HSV进行了比较。他们的模型更多地基于颜色在其他颜色属性(如色调,亮度和色度)方面的组织和概念,以及传统的颜色混合方法 – 例如在绘画中 – 涉及混合颜色鲜艳的颜料与黑色或白色,以实现更轻,更暗或颜色鲜艳的颜色。

1979年,在SIGGRAPH上,Tektronix推出了使用HSL进行颜色标识的图形终端,计算机图形标准委员会在其年度状态报告中推荐它。这些模型非常有用,不仅因为它们比原始RGB值更直观,而且还因为RGB和RGB之间的转换速度非常快,可以在20世纪70年代的硬件上实时运行。因此,从那时起,这些模型和类似的模型在整个图像编辑和图形软件中变得无处不在。

形式派生

颜色属性
另见:颜色视觉
HSL和HSV几何的尺寸 – 基于非感知型RGB模型的简单转换 – 与CIE或ASTM等科学家所定义的相同名称的光度测色属性并不直接相关。尽管如此,在跳出我们模型的推导之前,值得重新审视这些定义。有关以下颜色属性的定义,请参阅:

色调
“一种视觉感受的属性,根据这种感觉,一个区域看起来与其中一种感知颜色相似:红色,黄色,绿色和蓝色,或者是其中两种颜色的组合。

光辉(Le,Ω)
每单位投影面积每单位立体角穿过特定表面的光辐射功率,单位为瓦每立方米每立方米(W•sr-1•m-2)。

亮度(Y或Lv,Ω)
由典型人类观察者每个波长的影响加权的辐射度,以国际单位制每平方米烛光单位(cd / m2)测量。通常术语亮度用于相对亮度Y / Yn,其中Yn是参考白点的亮度。

Luma(Y’)
伽马校正后的R’,G’和B’值的加权和,用于Y’CbCr,用于JPEG压缩和视频传输。

亮度
“视觉感受的属性,根据该感觉区域看起来发出或多或少的光”。

轻盈,价值
“亮度相对于同样照亮的白色的亮度”。

多彩
“区域的感知颜色看起来或多或少是彩色的视觉感受的属性”。

浓度
“与相似照明的白色的亮度相关的色彩”。

饱和
“刺激相对于自身亮度的多彩性”。

亮度和色彩是绝对的措施,它通常描述进入眼睛的光的光谱分布,而亮度和色度是相对于某个白点测量的,因此经常用于表面颜色的描述,即使亮度和色彩鲜明也保持大致恒定随着不同的照明改变。饱和度可以定义为色彩与亮度的比率,或者色度与亮度的比率。

一般的做法
HSL,HSV和相关模型可以通过几何策略导出,或者可以被认为是“广义LHS模型”的特定实例。 HSL和HSV模型制造商拍摄了一个RGB立方体 – 包含红色,绿色和蓝色光的组成数量,颜色表示为R,G,B∈[0,1],并将其倾斜在角上,以便黑色休息在沿着垂直轴的白色正上方的原点处,然后通过围绕该轴的角度测量立方体中的颜色的色调,从0°开始以红色开始。然后他们提出了亮度/值/亮度的表征,并且定义了饱和度,从而沿着轴线从0到最大色彩点处的1为其他参数对。

在我们的每一个模型中,我们都可以用Joblove和Greenberg(1978)以同样的方式计算色相和本文将称之为色度 – 也就是说,在所有这些模型中色彩的色调具有相同的数值,其色度也一样。如果我们将我们倾斜的RGB立方体投影到垂直于中性轴的“色度平面”上,我们的投影呈现六角形的形状,其角落处为红色,黄色,绿色,青色,蓝色和洋红色。色调大致为矢量与投影中某一点的角度,红色为0°,色度大致为该点与原点的距离。

更确切地说,该模型中的色调和色度都是相对于投影的六边形形状而定义的。色度是从原点到六边形边缘的距离的比例。在相邻图的下部,这是OP / OP’长度的比率,或者是两个六边形半径的比率。该比率是R,G或B中颜色中最大值和最小值之间的差值。为了使我们的定义更易于编写,我们将分别将这些最大值,最小值和色度分量值定义为M,m和C.


要理解为什么色度可以写成M-m,请注意,任何R = G = B的中性色都会投影到原点,因此色度为0。因此,如果我们从R,G和B的全部三个中加入或减去相同的量,我们会在倾斜的立方体内垂直移动,并且不会改变投影。因此,任何两种颜色(R,G,B)和(R-m,G-m,B-m)都投射在同一点上,并具有相同的色度。其中一个分量等于零(m = 0)的颜色的色度就是其他两个分量的最大值。该色度在具有零分量的颜色的特定情况下为M,并且一般为M-m。

色调是通过投影点的六边形边缘周围距离的比例,最初在范围[0,1]上测量,但现在通常以度[0°,360°]度量。对于投射到色度平面中的原点(即,灰度)的点,色调是不确定的。在数学上,这种色调定义是分段编写的:


有时,为了便于表示,中性色(即C = 0)被指定为0°的色调。

这些定义相当于六边形的几何变形为圆形:六边形的每一侧都线性映射到圆的60°弧上(图10)。经过这样的转换后,色调恰好是原点周围的角度,与原点之间的距离是色度:指向颜色的矢量的角度和大小。

我们可以在平面中定义色度坐标α和β,而不是通过参考RGB立方体投影的六边形边缘来测量色调和色度,而是使用α指向红色的方向, β垂直于它 – 然后定义色相H2和色度C2作为它们的极坐标。也就是说,色调的正切值在alpha上是beta,色度的平方是alpha平方加上beta平方。

有时对于图像分析应用,这种六边形到圆形的转换会被跳过,并且色调和色度(我们将表示这些H2和C2)是由通常的直角坐标到极坐标转换定义的。最简单的方法是通过一对笛卡尔色度坐标,我们称之为α和β:

请注意,色调(H和H2)的这两个定义几乎相同,对于大约1.12°的任何颜色(它们出现在12个特定色相,例如H = 13.38°,H2 = 12.26°)以及与每30°的倍数H = H2。色度(C和C2)的两个定义有更大的区别:它们在我们六边形的拐角处相等,但在两个拐角之间的中点处,例如H = H2 = 30°,我们有C = 1,但C2 = √≈≈0.866,相差约13.4%。

亮度
当我们绘制HSV值与色度的关系曲线时,无论色相如何,结果都是倒置的等腰三角形,底部为黑色,顶部为白色,顶部右侧和左侧的两个互补色调的色彩最为鲜艳角落。当我们绘制HSL亮度与色度的关系曲线时,结果是一个菱形,底部是黑色,顶部是白色,但是在它们之间的中间线的水平端处有丰富多彩的补充。当我们绘制分量平均值(有时称为HSI强度)与色度的关系曲线时,结果是一个平行四边形,其形状根据色调而变化,因为每种色调的最大色彩在黑色和白色之间变化三分之一至三分之二。对色度的亮度产生平行四边形的多样化形状:蓝色占据了从黑色到白色的10%左右,而其补色黄色占据了90%的路程;相比之下,绿色是从黑色到白色的约60%,而其补色洋红色是那里的40%。

虽然色调的定义是相对无争议的 – 它大致满足了相同感知色调的颜色应该具有相同数值色调的标准 – 亮度或值维度的定义不太明显:取决于目的和目标有几种可能性的表示。这里有四个最常见的:

最简单的定义只是三个组成部分的平均值,在HSI模型中称为强度。这只是一个点到中性轴上的投影 – 我们倾斜的立方体中点的垂直高度。其优点是,与色调和色度的欧几里德距离计算一起,该表示保留了RGB立方体几何图形的距离和角度。

在HSV“hexcone”模型中,数值被定义为颜色的最大组成部分,即我们上面的M.这将所有三原色,以及所有的“次色” – 青色,黄色和洋红色 – 放入一个白色的平面中,从RGB立方体中形成一个六角形金字塔。

在HSL“双十六锥”模型中,亮度被定义为最大和最小颜色分量的平均值。这个定义也把主要和次要的颜色放到一架飞机上,但是一架经过白色和黑色之间的飞机。由此产生的颜色固体是一个类似于Ostwald’s的双锥体,如上所示。

更感知相关的替代方法是使用亮度Y’作为亮度维度。亮度是伽玛校正的R,G和B的加权平均值,基于它们对感知亮度的贡献,长期用作彩色电视广播中的单色维度。对于Rec。用于sRGB的709原色,Y’709 = 0.21R + 0.72G + 0.07B;为Rec。 601个NTSC原色,Y’601≈0.30R+ 0.59G + 0.11B;对于其他初选,应该使用不同的系数。

所有这四个都离开中性轴。也就是说,对于R = G = B的颜色,四种配方中的任何一种均可产生等于R,G或B值的亮度。

饱和
当使用色调/亮度/色度或色调/值/色度模型(使用前两节中的定义)对模型进行编码时,并非明度(或值)和色度的所有组合都是有意义的:即一半颜色使用H∈[0°,360°),C∈[0,1]和V∈[0,1]可以指定为RGB色域(图14中的灰度部分)。这些模型的创造者认为这是一些用途的问题。例如,在一个颜色选择界面中,矩形中的两个尺寸和滑块上的第三个尺寸,该矩形的一半由未使用的空间组成。现在想象一下,我们有一个轻量级的滑块:用户在调整此滑块时的意图可能不明确:软件应该如何处理色域外颜色?或者相反,如果用户已经选择了尽可能多彩的深紫色,然后将亮度滑块向上移动,那么应该做什么:用户喜欢看到对于给定的色调和亮度,尽可能丰富多彩的浅紫色,或与原始色彩完全相同色度的浅紫色?

为了解决这些问题,HSL和HSV模型对色度进行缩放,使其对于色调和亮度或值的每种组合都始终适合范围[0,1],在这两种情况下调用新的属性饱和度。要计算其中任何一个,只需将色度除以该值或亮度的最大色度即可。

通常用于计算机视觉的HSI模型,其将H2作为色调维度并将分量平均I(“强度”)作为亮度维度,并不试图通过饱和度的定义来“填充”柱面。 HSI的目标不是向最终用户展示颜色选择或修改界面,而是促进图像中形状的分离。因此,饱和度根据心理测量定义来定义:与亮度相关的色度。请参阅本文的图像分析中的使用部分。


对这三种不同的饱和度定义使用相同的名称会导致一些混淆,因为这三个属性描述了实质上不同的颜色关系;在HSV和HSI中,术语大致与心理测量学定义相一致,即颜色相对于其自身亮度的色度,但在HSL中它并不接近。更糟的是,饱和度这个词通常也用于我们称之为色度(C或C2)的测量之一。

用于最终用户软件
HSL和HSV以及类似模型的最初目的以及它们最常见的当前应用在于颜色选择工具。最简单的是,一些这样的拾色器提供三个滑块,每个属性一个。然而,大多数情况下,通过模型显示一个二维切片,以及一个控制显示哪个特定切片的滑块。后一种类型的图形用户界面展现出多种多样的效果,因为模型建议选择圆柱体,六角棱镜或圆锥/双锥体。从90年代开始的几种颜色选择器显示在右侧,其中大部分在这段时间内几乎保持不变:现在,几乎所有计算机颜色选择器都至少使用HSL或HSV作为选项。一些更复杂的变体设计用于选择整套颜色,根据它们之间的HSL或HSV关系提供兼容颜色的建议。

大多数需要颜色选择的Web应用程序也将其工具建立在HSL或HSV上,并且大多数主要Web前端框架都存在预打包的开源颜色选择器。 CSS 3规范允许网页作者使用HSL坐标直接为页面指定颜色。

HSL和HSV有时用于定义数据可视化的渐变,如地图或医学图像。例如,流行的GIS程序ArcGIS在历史上将可定制的基于HSV的梯度应用于数字地理数据。

图像编辑软件通常还包括用于根据HSL或HSV坐标调整颜色的工具,或基于上述定义的“强度”或亮度模型中的坐标。尤其是,具有一对“色调”和“饱和度”滑块的工具是司空见惯的,至少可以追溯到20世纪80年代后期,但各种更复杂的颜色工具也已经实现。例如,Unix图像查看器和颜色编辑器xv允许旋转和调整大小的六个用户可定义的色调(H)范围,包括拨号式饱和度控制(SHSV)以及用于控制值的曲线式界面(V ) – 。图像编辑器Picture Window Pro包含一个“色彩校正”工具,可以在色相/饱和度平面上对HSL或HSV空间中的点进行复杂的重新映射。

视频编辑也使用这些模型。例如,Avid和Final Cut Pro都包含基于HSL或类似几何体的色彩工具,用于调整视频中的色彩。使用Avid工具,用户通过单击色调/饱和度圆内的某个点来选择矢量,以将某个亮度级(阴影,中间色调,高光)的所有颜色移动该矢量。

从版本4.0开始,Adobe Photoshop的“亮度”,“色调”,“饱和度”和“颜色”使用亮度/色度/色调颜色几何体混合模式复合图层。这些已被广泛复制,但是一些模仿者使用HSL(例如PhotoImpact,Paint Shop Pro)或HSV(例如GIMP)几何体代替。

用于图像分析
HSL,HSV,HSI或相关模型通常用于计算机视觉和图像分析以进行特征检测或图像分割。这些工具的应用包括对象检测,例如机器人视觉;物体识别,例如脸部,文字或车牌;基于内容的图像检索;和医学图像分析。

在大多数情况下,彩色图像上使用的计算机视觉算法是针对灰度图像设计的算法的直接扩展,例如k-均值或像素颜色的模糊聚类,或Canny边缘检测。最简单的方法是,每个颜色成分分别通过相同的算法。因此,重要的是感兴趣的特征可以在所使用的色彩维度上加以区分。因为数字图像中物体颜色的R,G和B分量都与撞击物体的光量相关,因此相互之间存在相互关系,因此这些分量的图像描述使得物体辨别困难。关于色调/亮度/色度或色调/亮度/饱和度的描述通常更相关。

从20世纪70年代后期开始,像HSV或HSI这样的转换被用作分割效率和计算复杂度之间的折衷。它们可以被认为与人类色彩视觉所使用的神经处理方法和意图类似,但没有详细说明:如果目标是物体检测,大致分离色调,亮度和色度或饱和度是有效的,但是没有严格模仿人类肤色反应的特殊原因。约翰肯德的1976年硕士论文提出了HSI模型。 Ohta et al。 (1980)改为使用由我们称之为I,α和β的维度组成的模型。近年来,这些模型继续被广泛使用,因为它们的性能与更复杂的模型相比有优势,并且其计算简单性仍然令人信服。

数字视频专家Charles Poynton在他的Color FAQ中列出了HSL和HSV的上述问题,并得出结论:

开发HSB和HLS是为了在用户必须数字化指定颜色的时代指定数值色调,饱和度和亮度(或色相,亮度和饱和度)。 HSB和HLS通常的配方在色觉特性方面存在缺陷。现在用户可以直观地选择颜色,或者选择与其他媒体相关的颜色(如PANTONE),或者使用基于感知的系统(如L * u * v *和L * a * b *),则应放弃HSB和HLS。