HSLHSV都是一种将RGB色彩模型中的点在圆柱坐标系中的表示法。这两种表示法试图做到比基于笛卡尔坐标系的几何结构RGB更加直观。

HSL即色相、饱和度、亮度(英语:Hue, Saturation, Lightness)。HSV即色相、饱和度、明度(英语:Hue, Saturation, Value),又称HSB,其中B即英语:Brightness。

  • 色相(H)是色彩的基本属性,就是平常所说的颜色名称,如红色、黄色等。
  • 饱和度(S)是指色彩的纯度,越高色彩越纯,低则逐渐变灰,取0-100%的数值。
  • 明度(V),亮度(L),取0-100%。

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

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

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

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

维基百科,自由的百科全书

HSL(a~d)和HSV(e~h)。上半部分(a、e):两者的3D模型截面。下半部分:将模型中三个参数的其中之一固定为常量,其它两个参数的图像。

目录

  • 1动机
  • 2用途
  • 3HSL与HSV的比较
  • 4形式定义
    • 4.1从RGB到HSL或HSV的转换
    • 4.2从HSL到RGB的转换
    • 4.3从HSV到RGB的转换
  • 5例子
  • 6注释
  • 7引用书目
  • 8外部链接

动机[编辑]

大多数电视机、显示器、投影仪通过将不同强度的红、绿、蓝色光混合来生成不同的颜色,这就是RGB 三原色的加色法。通过这种方法可以在RGB色彩空间生成大量不同的颜色,然而,这三种颜色分量的取值与所生成的颜色之间的联系并不直观。

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

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

用途[编辑]

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

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

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

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

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

HSL与HSV的比较[编辑]

HSL和HSV色彩空间比较。

HSL类似于HSV。对于一些人,HSL更好的反映了“饱和度”和“亮度”作为两个独立参数的直觉观念,但是对于另一些人,它的饱和度定义是错误的,因为非常柔和的几乎白色的颜色在HSL可以被定义为是完全饱和的。对于HSV还是HSL更适合于人类用户界面是有争议的。

W3C的CSS3规定声称“HSL的优点是它对称于亮与暗(HSV就不是这样)…”,这意味着:

  • 在HSL中,饱和度分量总是从完全饱和色变化到等价的灰色(在HSV中,在极大值V的时候,饱和度从全饱和色变化到白色,这可以被认为是反直觉的)。
  • 在HSL中,亮度跨越从黑色过选择的色相到白色的完整范围(在HSV中,V分量只走一半行程,从黑到选择的色相)。

在软件中,通常以一个线性或圆形色相选择器和在其中为选定的色相选取饱和度和明度/亮度的一个二维区域(通常为方形或三角形)形式提供给用户基于色相的颜色模型(HSV或HSL)。通过这种表示,在HSV和HSL之间的区别就无关紧要了。但是很多程序还允许你通过线性滑块或数值录入框来选择颜色的明度/亮度,而对于这些控件通常使用要么HSL要么HSV(而非二者)。HSV传统上更常用。下面是一些例子:

GIMP支持在HSV色彩空间内的选取颜色的多种方法,包括带有色相滑块的色轮和色方。

  • 使用HSV(HSB)的应用:

    • Apple Mac OS X系统颜色选择器(有一个H/S颜色碟和一个V滑块)
    • Xara Xtreme
    • Paint.NET(有一个H/S颜色碟和一个V滑块)
    • Adobe图形应用程序(Illustrator,Photoshop,等等)
    • Turbo Photo
  • 使用HSL的应用:

    • CSS3规定
    • Inkscape(从版本0.42开始)
    • Macromedia Studio
    • Microsoft Windows系统颜色选择器(包括Microsoft Paint)
    • Paint Shop Pro
    • ImageMagick
  • 使用HSV和HSL二者的应用:

    • Pixel image editor(从Beta5开始)
    • Pixia
    • Bryce
    • GIMP(HSV用于颜色选择,HSL用于颜色调整)

形式定义[编辑]

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

从RGB到HSL或HSV的转换[编辑]

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

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

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

从HSL到RGB的转换[编辑]

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

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

s ≠ 0的时候,可以使用下列过程:

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

从HSV到RGB的转换[编辑]

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

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

例子[编辑]

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

RGB HSL HSV 结果
(1, 0, 0) (0°, 1, 0.5) (0°, 1, 1)  
(0.5, 1, 0.5) (120°, 1, 0.75) (120°, 0.5, 1)  
(0, 0, 0.5) (240°, 1, 0.25) (240°, 1, 0.5)  

展示的RGB值的范围是0到255。

名称 颜色 色光 色料 色相 代码 MS-DOS
角度 饱和 明度
红色   255 0 0 0 255 255 0 100% 100% #FF0000 12
黄色   255 255 0 0 0 255 0 60° 100% 100% #FFFF00 14
绿色   0 255 0 255 0 255 0 120° 100% 100% #00FF00 10
青色   0 255 255 255 0 0 0 180° 100% 100% #00FFFF 11
蓝色   0 0 255 255 255 0 0 240° 100% 100% #0000FF 9
品红色   255 0 255 0 255 0 0 300° 100% 100% #FF00FF 13
栗色   128 0 0 0 255 255 127 100% 50% #800000 4
橄榄色   128 128 0 0 0 255 127 60° 100% 50% #808000 6
深绿色   0 128 0 255 0 255 127 120° 100% 50% #008000 2
蓝绿色   0 128 128 255 0 0 127 180° 100% 50% #008080 3
深蓝色   0 0 128 255 255 0 127 240° 100% 50% #000080 1
紫色   128 0 128 0 255 0 127 300° 100% 50% #800080 5
白色   255 255 255 0 0 0 0 0% 100% #FFFFFF 15
银色   192 192 192 0 0 0 63 0% 75% #C0C0C0 7
灰色   128 128 128 0 0 0 127 0% 50% #808080 8
黑色   0 0 0 0 0 0 255 0% 0% #000000 0

HSL和HSV色彩空间相关推荐

  1. Wiki: HSL和HSV色彩空间

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

  2. 彩色图像--色彩空间 HSI(HSL)、HSV(HSB)

    转自:http://blog.csdn.net/TonyShengTan/article/details/44277191 开篇废话 色彩空间介绍最后两种与人类感知相对较接近的两种空间,彩色图像处理后 ...

  3. RGB色彩空间和HSV色彩空间的理解

    RGB色彩空间和HSV色彩空间的理解 本文的结构如下: 1.RGB色彩空间 2.HSV色彩空间(附HSV颜色分量范围表) 3.RGB到HSV的转换的Demo   使用OpenCV实现RGB转HSV,并 ...

  4. HSV色彩空间表和cv2.inRange()的用法

    HSV色彩空间表和cv2.inRange()的用法 结合cv2.inRange()可以清晰看到某个颜色区域影象位于影象的什么地方. 用法cv2.inRange(img,low,high),函式会将位于 ...

  5. 关于HSL和HSV颜色空间的详细论述

    目前在计算机视觉领域存在着较多类型的颜色空间(color space).HSL和HSV是两种最常见的圆柱坐标表示的颜色模型,它重新影射了RGB模型,从而能够视觉上比RGB模型更具有视觉直观性. HSV ...

  6. Atitit  从 RGB 到 HSL 或 HSV 的转换

    Atitit  从 RGB 到 HSL 或 HSV 的转换 1.1. 从 RGB 到 HSL 或 HSV 的转换公式与原理1 1.2. public static HSV RGB2HSV(Color ...

  7. 颜色的前世今生9·HSV色彩空间之父——匠白光

    当你打开PS,准备开始一天的工作,空白的工作区域像盘古开天辟地之前的世界,一片宁静,等待你大笔一挥,给这个新世界赋予生命. 这个时候,你盯着拾色器想要选一个想要的颜色,可是这些H啊L啊C啊M啊都是什么 ...

  8. 前端需要了解的颜色模型,RGB、HSL和HSV

    目录 RGB模型 RGB颜色值 rgb 转 hex hex 转 rgb HSL模型 HSV(B)模型 RGB 与 HSL 的转换 rgb 转 hsl hsl 转 rgb 颜色模型,是用来表示颜色的数学 ...

  9. [Python图像处理] 使用 HSV 色彩空间检测病毒对象

    使用 HSV 色彩空间检测病毒对象 前言 检测病毒对象 相关链接 前言 在本节中,我们将学习如何使用 OpenCV 在 HSV 色彩空间中使用特定颜色检测感兴趣对象.我们需要通过指定颜色值范围识别和提 ...

最新文章

  1. 音频处理中频域转时域的恢复
  2. libxml2_ZC积累
  3. 数据挖掘导论读书笔记7 Apriori算法
  4. 奶源向左配方向右,飞鹤、澳优、贝因美们要如何重振国产奶粉?
  5. python的print
  6. java窗体与Flash交互
  7. npm常用命令(扩展中...)
  8. 类加载过程(时机)略解
  9. xlsx文件打开乱码_excel打不开xlsx文件怎么办 excel打开xlsx文件乱码怎么解决
  10. 【推荐系统】音乐推荐系统02
  11. 2021年上半年国家软考系统分析师论文和案例分析
  12. PS2手柄移植-hal库
  13. 高等数学-函数在线绘图工具推荐(精选好用)
  14. 普中51单片机数码管实例
  15. centos7安装杀毒软件ClamAV
  16. 局域网https安全证书解决方案mkcert
  17. 数据科学家的修行之路---基本功
  18. Mysql数据库root密码管理四法
  19. 计算机太卡了怎么解决,电脑太卡怎么办最有效
  20. 金蝶apusic9.0版本安装包

热门文章

  1. 开机启动卡在主板LOGO界面,并长时间提示检测中,最后启动失败
  2. 【Machine Learning】19.多分类实践:手写数字分类
  3. 什么是工业用计算机,工业电脑和普通电脑有什么不同?
  4. java远程文件管理器_java蓝牙文件远程管理器
  5. Java SE (Java Platform, Standard Edition) 技术资源分享
  6. 基于模板的自动注册工厂模式(C++11实现)
  7. 设计模式之3种工厂模式对比和简单介绍
  8. java比较三个数大小_java算法--三个数字比较大小
  9. 自动驾驶路径规划概况
  10. 程序设计语言(软考)