在2018年下半年的时候,曾做过SDR2HDR的尝试(从以前的低/标准动态范围standard dynamic range到高动态范围high dynamic range),了解到平常熟视无睹的颜色概念背后的博大精深,还处于颜色的迷宫中,只是借助线性代数中向量空间的概念,稍微理清了一些概念,当时还和同学一起整理了个关于HDR基本概念的文档。最近看了微信公共号“领略颜色之雅”关于色相、饱和度和明度的视频资料,又碰巧看到了一些资料,在此记录一下对颜色属性的基本知识和个人理解,以免遗忘,。如有差错,肯定来自我的理解,请边怀疑边阅读。总的来说,我的理解是颜色向量空间是个三维空间,通过定义不同的基,于是有了不同的颜色坐标系。

首先无法绕过的是如下所示的CIE1931xy色度图,建立在W. David Wright(Wright 1928)和John Guild(Guild 1931)做的一系列实验之上,具体细节可参看https://medium.com/hipster-color-science/a-beginners-guide-to-colorimetry-401f1830b65a 。 需要说明的是,这是色度图,并不关注亮度信息。

图中所示区域即人眼能感知到的色域区域color gamut,这个形状往往被称为马蹄形或者舌形,其四周曲线上的点对应着可见光中每个波长的颜色,可见光波长范围大致在380nm到700nm。区域内部的每个点,则是各种波长组合的光线进入人眼形成的色度。

人眼能够感知到的色域区域是如此的宽广,以至于显示器受限于实际物理条件只能部分支持,图中最里面三角形所包含区域对应着 ITU-R Recommendation BT.709 (Broadcasting service Television),是高清电视支持的色域范围;而最外面三角形所包含的区域对应BT.2020,是超高清电视支持的色域范围,是代表最新技术的HDR显示器支持的色域范围,即WCG (宽色域Wide Color Gamut)。虽然三角形范围越来越大,但是,离布满整个色域区域还是有不少距离。BT.709和BT.2020等规范都是由ITU-R(国际电信联盟无线电通信部门International Telecommunication Union- Radiocommunication)制定。

如果说,色度表示的是进入人眼光线的各波长可见光的组合比例关系,在CIE1931xy图中可以用坐标值x和y来表示,那么,亮度可以理解为这束光线单位时间进入人眼的光子总能量,可以用坐标值Y来表示,于是,我们有了颜色向量空间的第一组基(x,y,Y),在这个基下的每一个颜色向量,都有唯一对应的坐标值。做个简单推论,当亮度值不同的时候,即使色度坐标值相同,我们感知到的颜色也是不同的。

现在看一下计算机中最常见的RGB颜色表示,每个分量的取值范围在规格化后是0.0到1.0。比如,某个颜色用(0.1,0.2,0.3)来表示,实际上,这是在颜色向量空间的某个基确定后的某个颜色向量的坐标值。这个基本质上就是红绿蓝三原色,具体数值如何确定的呢,以高清显示器为例,在xyY坐标系下,三原色的色度坐标就是CIE1931xy色度图中最里面三角形的三个顶点的坐标,而亮度坐标大概就是显示器能支持的最高亮度值(以前显示器的亮度值都差不多),这个没有查到资料,我觉得只有这样才可能解释得通。所以,在颜色向量空间中,某个颜色向量可以用xyY基下的坐标值表示,也可以用RGB基下的坐标值表示,在明确RGB基在xyY坐标系下的坐标值后,两个坐标系就可以相互转换了(包括规格化)。做个简单推论,基于RGB基的颜色表示,已经内在的包含了亮度信息。

再进一步,随着显示器技术的发展,其能表示的色域范围和可以支持的最大亮度发生了变化,也就意味着不同显示器使用的RGB基是不同的。所以,当我们简单的说到RGB三分量的具体数值的时候,其实,我们背后隐含着这是基于BT.709还是BT.2020等规范规定的基。所以,视频文件往往会指出其属于BT709还是BT2020等信息。所以,我们拿到的RGB颜色值并不是直接适用于所有的显示器。比如,HDR显示器有更宽的色域和更高的亮度,适合HDR显示器的RGB颜色值虽然规格化后取值范围也是0.0到1.0之间,但是,如果要在普通显示器上显示的话,为了人眼看不出现大的差别,必须将颜色值进行坐标系变换(还包括超出范围信息的取舍),因为不同显示器定义了不同的基。反过来,也是一样的。这样的变换,往往可以被称为tone mapping色调映射(tone mapping还有更多的应用)。

在视频中常用的YUV表示,在BT.709和BT.2020等规范中已经有了明确的和RGB之间相互转换的公式,不同规范定义的公式参数不同,本质上,也是一种坐标系转换。

颜色还可以用明度、色相和饱和度来表示。明度和色相大概都可以顾名思义的理解,之前一直不理解饱和度到底是个什么东西。碰巧看到了在 https://zhuanlan.zhihu.com/p/31374619 的资料,才知道,原来色相+饱和度 和 色度xy值 是这样一一对应的。

如下图所示,C是白光点,A点的色度值由其xy坐标确定,而A点的色相和饱和度,则由下面的方法确定。即,连接CA并延长交于马蹄形周边的B点,如前所述,B点对应着某个波长颜色,此即色相值;而A点到C点的距离代表饱和度,距离越远,饱和度越高,颜色越纯,因为越接近B点色相,没有其他光线掺杂进来。

继续饱和度的通俗理解,估计是这样的,多个波长组合而成的光线,构成了一个颜色。逻辑上,还可以将其构造成两个颜色,首先将这些光线组合尽可能的凑成白色,然后剩余部分构成另一个颜色。如果另一个颜色所占的比例越大,白色所占比例越小,那么就是饱和度越高,也意味着,这“另一个颜色”更纯,更接近色相值了。

再重复一下HDR显示器的概念,主要是支持的色域三角形的取值范围更大,支持的亮度范围更高;而HDR电视则还要能够播放HDR视频,也就是要内置一个视频解码播放器。为了能够表达出更多的细节,每个颜色分量用更多的比特数来表示,比如10bit或者12bit等。另外,还有诸如更大分辨率、更快FPS等等支持。一个HDR视频要在不同显示器中播放,为了有类似的观影体验,并不只是一个坐标系转换就够了,比如环境光的影响,艺术加工等,人眼是个复杂系统,具体可以参看OOTF、OETF、EOTF等,那又是一片天地。

以上内容是本人业余时间兴趣之作,限于水平,差错难免,仅代表个人观点,和本人任职公司无关。

本文首发于微信公众号:那遁去的一

几个颜色基本属性的个人理解相关推荐

  1. Python 利用聚类算法对图片进行颜色压缩

    背景 最近看到其他公众号发的一篇文章<三个印度人改变压缩算法,一意孤行整个暑假,却因"太简单"申不到经费>,DCT是最原始的图像压缩算法 全称为Discrete Cos ...

  2. 颜色不变性算法及应用总结

    转自:颜色恒常性 颜色不变性定义:室外光线的彩色成分变化非常大,但人却能正确的感知场景中物体的颜色,并且在大部分情况下不依赖于环境照明的颜色,这种现象叫彩色不变性 成像设备在获取并记录图像时,只能获得 ...

  3. 图像处理-3 彩色空间互转

    Datawhale 计算机视觉基础-图像处理(上)-Task03 彩色空间互转 3.1 简介 图像彩色空间互转在图像处理中应用非常广泛,而且很多算法只对灰度图有效:另外,相比RGB,其他颜色空间(比如 ...

  4. java rgb yuv_RGB和YUV简单学习记录

    RGB和YUV是一种颜色编码格式. 这里简单介绍一下RGB.YUV和HSV. 出处:一文读懂 YUV 的采样与格式 https://glumes.com/post/ffmpeg/understand- ...

  5. 2022寒假字节跳动前端训练营笔记

    已经完成的部分 Day02 如何写好JS - 月影 Day04-2 前端动画实现 - 蒋翔 Day08-1 TypeScript入门 - 林皇 Day09-2 前端设计模式应用 - 吴立宁 Day04 ...

  6. 机器人智能抓取系统:目前几种主流的解决方案

    文章来源:COBOT机器人大脑.新机器视觉 机器人学习中的经典问题之一便是分拣:在一堆无序摆放的物品堆中,取出目标物品.在快递分拣员看来,这几乎是一个不需要思考的过程,但对于机械臂而言,这意味着复杂的 ...

  7. opengl 反走样 混合 多重采样 blend multisample

    1. 反走样         在光栅图形显示器上绘制非水平且非垂直的直线或多边形边界时,或多或少会呈现锯齿状或台阶状外观.这是因为直线.多边形.色彩边界等是连续的,而光栅则是由离散的点组成,在光栅显示 ...

  8. 从零玩转HTML5前端+跨平台开发上

    评价:有激情,非常接地气,谈吐也非常清晰,视频快看完了,记忆中没有一个字是听不懂.而讲课也讲得很详细,称得上是面面俱到的了 关注公众号,免费获取资料 课程目录简介: 章节1基础知识 课时1课程须知 课 ...

  9. 装饰器模式与java.io包

    为什么80%的码农都做不了架构师?>>>    Decorator设计模式是典型的结构型模式(在GOF的那本模式的Bible中将模式分为:1.创建型模式:2.结构型模式:3.行为模式 ...

最新文章

  1. ssh登录一段时间后断开的解决方案
  2. vue从入门到进阶:Vuex状态管理(十)
  3. 细说HTML元素的ID和Name属性的区别
  4. linux之vifm和ranger操作文件管理器使用总结
  5. 朴素贝叶斯算法注意事项(有待完善)
  6. 不得不看之跳槽加薪利器:2019需求最旺盛的十大IT技能
  7. System.ComponentModel.Component : MarshalByRefObject, IComponent, IDisposable
  8. 演练 打印九九乘法表
  9. 两个数相乘积一定比每个因数都大_两个多位数相乘,积一定比每一个因数都大。[ ]...
  10. 可重组合与不相邻组合
  11. ASP.NET 4.0尚未在 Web 服务器上注册 解决方法
  12. 黑体std能商用_用产品诠释商用PC成功之道 惠普战66高性能商用一体机评测
  13. 基于随机森林模型的心脏病患者预测及可视化(pdpbox、eli5、shap、graphviz库)附相关库安装教程
  14. 【宋红康 MySQL数据库 】【高级篇】【01】CentOS7下MySQL的安装与使用
  15. Java面试被问特长,面试官问“你有什么特长”,这三种回答堪称完美,拿走不谢...
  16. 一个index.html怎么添加备案号,ICP备案号怎么添加到自己网页底部?
  17. 委托代理问题------The principal-agent problem
  18. Verilog学习总结
  19. 关于百度站长工具中站点属性LOGO提交申请详解说明
  20. uniapp一套代码打包两个APP 安装失败,提示:与已安装应用签名不同,该文件包与具有同一名称的现有文件包存在冲突

热门文章

  1. ASCII码字符转换,浮点数转换为字符(笔记)
  2. 使用PostGIS+GeoServer+Openlayer+Vue构建简单的web地图应用
  3. QImage实用接口
  4. 德勤 Intern - online assessment prep(二)
  5. 如何评价《自卑与超越》这本书?
  6. 解析高程数据asc文件
  7. 【PSU】AIX 11g RAC自动打GI PSU5
  8. 用HTML和css写一个简单地购物小票
  9. unity 文字BlingBling闪烁效果
  10. TCP、UDP、IP、以太网报文格式以及重要字段详解