色彩空间中的HSL、HSV、HSB有什么区别?

2023-05-16

作者:大蔚陈
链接:https://www.zhihu.com/question/22077462/answer/29483467
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

这是特别容易混淆的几个概念。

RGB 是对机器很友好的色彩模式,但并不够人性化,因为我们对色彩的认识往往是”什么颜色?鲜艳不鲜艳?亮还是暗?”。HSL 模式和 HSV(HSB) 都是基于 RGB 的,是作为一个更方便友好的方法创建出来的。
  • HSB 为 色相,饱和度,明度,
  • HSL 为 色相,饱和度,亮度,
  • HSV 为色相,饱和度,明度。

HSB 和 HSV 是是一样的,只是叫法不同,HSL 则还有一些细微的区别:

  • 在所有的情况下,H(Hue) 代表色相,S(Saturation) 代表饱和度。Hue(色相)是指取值范围在0-360°的圆心角,每个角度可以代表一种颜色。B 在 HSB 模式中是 Brightness 的意思, V 在 HSV 中是值,但是所表述的是一个东西:对光的量或光源的功率的感知。色相和明度(值)可以在0 - 1或者0% - 100%间取值。

  • HSL 稍微有一些不同,Hue(色相)和 HSB/HSV 模式中一样用数值表示,但是, S,同样代表“饱和度”,定义不一样,且需要转换。 L 代表亮度,和 Brightness/Value 不一样。Brightness(明度)是被认为是”光的量“,可以是任何颜色。

  • 而 Lightness(亮度)是作为”白的量“来理解的。Saturation(饱和度)不一样,因为在两个模型中,饱和度都按比例缩放以适应明度或亮度的定义。

两者的区别,和他们之间对于饱和度的定义的不同。咱们拿案例看吧,先选同一个色 #f200ff
  • 放入 HSL Color Picker,显示 HSL 数值为:H(297), S(100), L(50)
<img src="https://pic3.zhimg.com/50/4af6abf0370ee6b6dc0f03716cba7f26_hd.jpg" data-rawwidth="771" data-rawheight="361" class="origin_image zh-lightbox-thumb" width="771" data-original="https://pic3.zhimg.com/4af6abf0370ee6b6dc0f03716cba7f26_r.jpg">
  • 但是我们放在 Sketch 里面看一下,显示的 HSB 数值为,H(297), S(100), B(100) :

<img src="https://pic4.zhimg.com/50/9f02c36cc4b4e55db2bf6a5238e2fc6b_hd.jpg" data-rawwidth="214" data-rawheight="423" class="content_image" width="214">
同样,需要提醒一下的是,CSS 里头支持的是 HSL,而不是 HSB,不要把 HSB 的数值直接套用了,不然的话你看到的可能会是不一样的颜色。

HSL 和 HSB 哪一个更适合人机界面,是有争议的,实际运用的区别会和我上面的例子一样,具体的区别和优劣势,可移步到这看:
Color Models: RGB, HSV, HSL

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

色彩空间中的HSL、HSV、HSB有什么区别? 的相关文章

  • 颜色空间RGB与HSV(HSL)的转换

    一般的3D编程只需要使用RGB颜色空间就好了 xff0c 但其实美术人员更多的是使用HSV HSL xff0c 因为可以方便的调整饱和度和亮度 有时候美术需要程序帮助调整饱和度来达到特定风格的渲染效果 xff0c 这时候就需要转换颜色空间了
  • CentOS Stream8 与CentOS7有什么区别?

    工作中一直在用CentOS7和CentOS6 本来想抽空尝试一下CentOS8玩一玩 结果CentOS8已经走完了生命周期 一直好奇Centos Linux 和 CentOS Stream有什么区别 xff0c 今天就来安装一下 CentO
  • Visual Studio C++与Visual C++ 有什么区别(两个都是一种IED工具,不是某种编程语言!!!)

    主要是最近看数字图像处理 xff0c 发现有Visual Studio C 43 43 与Visual C 43 43 xff0c 一开始还以为是一种编程语言 xff0c 实际似乎是像matlab一样的IDE工具 xff0c 所以像下面这本
  • CMMI2.0和CMMI1.3有什么区别?

    CMMI资质认证想必已经有不少企业已经了解过了 xff0c 很多企业只了解到CMMI的基础知识 xff0c 却不明白CMMI也有不同的版本 xff0c CMMI1 3版本自动20年10月更改为2 0版本 xff0c 那CMMI的一个版本升级
  • int和Integer有什么区别

    面试中会问道int和Integer的区别 xff0c 这里我们详细说一下 Integer是int的包装类 xff1b int是基本数据类型 Integer变量必须实例化后才能使用 xff1b int变量不需要 Integer实际是对象的引用
  • c语言和c++有什么区别

    差不多是win98跟winXP的关系 C 43 43 是在C的基础上增加了新的理论 xff0c 玩出了新的花样 所以叫C加加 C是一个结构化语言 xff0c 它的重点在于算法和数据结构 C程序的设计首要考虑的是如何通过一个过程 xff0c
  • C语言中‘a‘和“a“有什么区别?

    1 本质区别 双引号里面的是字符串 xff0c 而单引号里面的代表字符 2 输出区别 str 61 a 输出的就是a这个字母 xff1b str 61 a 输出的测试65 3 底层区别 用单引号引起的一个字符实际上代表一个整数 xff0c
  • &与&&有什么区别?

    一 简要说明 按位与 xff1a a amp b 是把 a 和 b 都转换成二进制数然后再进行与的运算 xff1b 逻辑与 xff1a a amp amp b 就是当且仅当两个操作数均为 true 时 xff0c 其结果才为 true xf
  • C++ STL中判断list为空,size()==0和empty()有什么区别

    关于两个的区别 xff0c 首先size 61 61 0为bool表达式 xff0c empty 为函数调用 xff0c 这一点很明显 查看源代码 xff0c bool empty const return M node gt M next
  • java核心内容——int和Integer有什么区别?

    java核心内容 int和Integer有什么区别 xff1f 1 典型回答2 知识扩展1 理解自动装箱 拆箱2 源码分析3 原始类型线程安全4 Java 原始数据类型和引用类型局限性 1 典型回答 int 是我们常说的整形数字 xff0c
  • LoRa和NB-IoT有什么区别?LoRa的优势在哪些方面?

    对于LoRa技术 xff0c 行业内人士都不会陌生 xff0c 它也经常会被拿来和NB IoT技术比较 作为低功耗广域网 xff08 LPWAN xff09 的新兴技术 xff0c 两种技术都备受关注 对于LoRa技术 xff0c 行业内人
  • 色彩空间中的HSL、HSV、HSB有什么区别?

    作者 xff1a 大蔚陈 链接 xff1a https www zhihu com question 22077462 answer 29483467 来源 xff1a 知乎 著作权归作者所有 商业转载请联系作者获得授权 xff0c 非商业
  • RGB 值到 HSL 转换器

    Google 地图 API v3 允许将 样式 应用于地图 包括设置各种要素的颜色 然而 它使用的颜色格式是 HSL 或者看起来像这样 色调 RGB 十六进制字符串 亮度 100 到 100 之间的浮点值 饱和度 100 到 100 之间的
  • python opencv HSV测距仪创建轨迹栏

    我想使用 opencv 和 python 查找激光点的 HSV 值 我得到了代码http opencv srf blogspot com au 2010 09 object detection using color seperation
  • 如何获取HSV和LAB色彩空间?

    我正在使用 OpenCV 和 Python 我的代码是 img hsv cv2 cvtColor image cv CV BGR2HSV img lab cv2 cvtColor image cv CV BGR2Lab 当我访问像素值时 我
  • 从 HSV 直方图中获取主色值

    我正在根据如下图像创建 HSV 直方图 void processImageWithHsv Mat image Mat image hsv cvtColor image image hsv CV BGR2HSV int hbins 50 sb
  • 彩色滤光片的 HSV 范围

    我正在开发一个在 opencv 中检测交通标志的项目 我需要一个良好的 HSV 范围来过滤城市环境中的红色 蓝色和黄色交通标志 这只是为了让我有一个更小的兴趣区域 所以我不需要一个高精度的范围 而是一个粗略的估计 谁能帮我吗 你可能想读一下
  • 将 HSB/HSV 颜色转换为 HSL

    如何将 HSB 颜色转换为 HSL Photoshop 在其颜色选择器中显示 HSB 颜色 HSB 颜色不能在 CSS 中使用 但 HSL 可以 我尝试了这个JS function hsb2hsl h s b return h h s s
  • 如何在 CSSStyleDeclaration 对象上设置 hsl 颜色?

    如何设置hsl颜色CSSStyleDeclaration object CSS background color hsl 155 100 30 JavaScript divElement style backgroundColor 我不想在
  • 如何在C中将RGB转换为HSL?

    如何在 C C 中将 RGB 转换为 HSL Note This is a short self answer I posted it here so people can find it quickly with a search 翻译代

随机推荐

  • ESP8266WiFi模块实现代码

    ESP8266WiFi模块实现TCP连接服务器 在前面的博客里 xff08 STM32 ESP8266wifi模块实现 xff09 说到了通过AT命令配置ESP8266实现TCP连接 他的流程是 xff0c 1 xff0c 使能串口 xff
  • 2021-05-14 Redis面试题 redis 部署生产环境

    redis 部署生产环境 redis cluster xff0c 10 台机器 xff0c 5 台机器部署了 redis 主实例 xff0c 另外 5 台机器部署了 redis 的从实例 xff0c 每个主实例挂了一个从实例 xff0c 5
  • 实现Basic认证

    Basic认证是一种较为简单的HTTP认证方式 xff0c 客户端通过明文 xff08 Base64编码格式 xff09 传输用户名和密码到服务端进行认证 xff0c 通常需要配合HTTPS来保证信息传输的安全 Maven依赖 lt par
  • STM32的串口空闲中断

    STM32串口使用DMA方式接收数据可以减小CPU的开销 对于接收定长数据 xff0c 可以将DMA接收缓冲区的长度设定为待接收数据的长度 xff0c 这样利用DMA的传输完成中断DMAx IT TCy就可以知道已经接收了一帧数据 对于接收
  • C#完整的通信代码(点对点,点对多,同步,异步,UDP,TCP)

    C code namespace UDPServer class Program static void Main string args int recv byte data 61 new byte 1024 构建TCP 服务器 得到本机
  • http digest认证(Java server)

    背景 xff1a 服务器接收客户端请求 xff0c 处理并验证 并返回服务器的验证结果 关于digest认证的相关概念及验证原理查看相关的说明 xff0c 此处只对处理进行贴码 CODE import com alibaba fastjso
  • 测试apache时出现[error] [client 192.168.6.1] File does not exist: /etc/httpd/htdocs

    问题 xff1a 测试apache时出现 error client 192 168 6 1 File does not exist etc httpd htdocs 解决方法 xff1a 1 创建文件夹htdocs xff08 etc ht
  • HAL库 STM32 串口通信函数

    HAL UART Receive IT串口 xff01 HAL UART Receive IT amp UART1 Handler u8 aRxBuffer RXBUFFERSIZE HAL UART Receive IT函数使用的时候 简
  • linux环境下安装QT超详细

    QT安装 1 首先下载QT安装包 QT官网 xff1a Index of archive qt 我这里使用的是qt opensource linux x64 5 14 0 run版本 2 打开终端 xff0c 输入命令 xff0c 赋予安装
  • 使用ssh连接虚拟机保姆级教程

    首先安装SSH 安装先检测是否已经安装SSH xff1a service ssh status 如果出现提示 xff1a ssh unrecognized service 说明没有安装openSSH xff0c 则需安装ssh SSH 服务
  • 小游戏2048设计思路超简单

    2048作为一个经典的小游戏 xff0c 对于C语言的逻辑练习是一个比较好的案例了 xff0c 看似很复杂 xff0c 但是如果掌握了设计思路 xff0c 那么就不会觉得难了 xff0c 而且会了这个之后对今后编程的也会有很大的帮助 先分析
  • ES-Elasticsearch查看所有索引及查看某索引下的信息

    1 查看所有索引 xff0c 地址栏直接访问下面的连接 http localhost 9200 cat indicesv amp pretty 2 查看某索引下存的信息 xff0c 查询的信息为索引结构信息 xff08 indexName为
  • 教你十分钟搭建博客,已在多台电脑测试,无坑

    1 前期工作 1 注册Github账号 官网地址 xff1a GitHub 2 下载安装git Git软件下载地址 xff1a Git Downloading Package git scm com 安装的话一直点next就可以了 3 绑定
  • MQTT使用TLS加密

    使用TLS加密在MQTT的使用中是比较常见的 xff0c TLS加密过程在网上有很多说明 xff0c 但是没几个应用教程的 xff0c MQTT软件中的EMQX软件是支持TLS加密的 xff0c 只不过要进行一些设置 安装EMQX软件 首先
  • linux下将QT移植至arm环境

    前言 讲下整个项目流程 xff0c 我们的目标是把qt编出来程序放在arm开发板上面跑 xff0c 首先下载QT源码和tslib源码 xff08 QT源码编译和QT程序运行需要tslib库的支持 xff09 xff0c 在虚拟机里使用交叉编
  • linux下移植onvif至arm环境

    前言 onvif是一种网络摄像头协议 xff0c linux网络摄像头这一块是需要移植onvif协议的 xff0c 整个移植过程是这样的 xff0c 首先onvif协议是依赖于gsoap的 xff0c 所以需要先将gsoap编译安装 xff
  • C语言使用二级指针实现字符串分割

    话不多说 xff0c 直接上代码 include lt stdio h gt int opt char p char ch char res char q 61 p if q 61 61 NULL q 61 61 39 0 39 retur
  • 已include包却提示未定义标识符

    已 include lt string gt xff0c include lt vector gt 却提示string xff0c vector未定义的标识符 因为没定义默认的命名空间 xff0c 改为std string xff0c st
  • jpg和png的区别小结

    png图像的大小是jpg图像大小的数倍 xff0c png为可移植网络图形格式 xff0c 也是一种位图文件存储格式 xff0c 可以进行无损压缩 xff0c jpg是最常见的图像格式 xff0c 图像占用的存储较小 xff0c 但是牺牲了
  • 色彩空间中的HSL、HSV、HSB有什么区别?

    作者 xff1a 大蔚陈 链接 xff1a https www zhihu com question 22077462 answer 29483467 来源 xff1a 知乎 著作权归作者所有 商业转载请联系作者获得授权 xff0c 非商业