关于RGB色彩空间转换的困惑

如何解决关于RGB色彩空间转换的困惑

我对RGB颜色空间的某些方面感到困惑。我正在研究一种工具,可以帮助转换不同颜色空间(定位到数字图形)中的颜色。我要实现的重要功能之一是将颜色从RGB转换为CIE-Lab。阅读了多篇文章后,很明显,首先我必须将RGB转换为XYZ,然后将XYZ转换为Lab。很多网站都提到了这些转换背后的数学原理。最值得注意的是Lindbloom的website。该网站提供了可用于在多个RGB颜色空间之间直接转换的矩阵。

现在,我对使用哪个矩阵感到困惑。在数字图形/可视化的上下文中,RGB表示线性RGB(对吗?)。如果有人提供我(r,g,b)的值,我将使用这些转换矩阵之一并计算X,Y,Z。但是我的问题是要使用哪个矩阵?我的猜测是“ srgb”和“ D65”作为白色参考,但我不确定。用户提供线性RGB时,对使用哪个矩阵有任何提示吗?

我知道我可以通过应用伽马变换将sRGB转换为RGB,但是我对这些转换矩阵感到困惑。

解决方法

在数字图形/可视化方面,RGB表示线性RGB(对吗?)。

RGB是一种颜色模型,是一种使用RGB组件指定颜色信息的方法,它确实是一种内在的线性模型,但是您不能真正地安全地进行该假设,并且必须知道您要操纵的RGB值代表什么。 RGB口味很多,即RGB色彩空间,以下是最常见的色彩列表:

['ACES2065-1','ACEScc','ACEScct','ACESproxy','ACEScg','Adobe RGB (1998)','Adobe Wide Gamut RGB','Apple RGB','ALEXA Wide Gamut','Best RGB','Beta RGB','ITU-R BT.470 - 525','ITU-R BT.470 - 625','ITU-R BT.709','ITU-R BT.2020','CIE RGB','Cinema Gamut','ColorMatch RGB','DCDM XYZ','DCI-P3','DCI-P3+','Display P3','DJI D-Gamut','Don RGB 4','ECI RGB v2','Ekta Space PS 5','FilmLight E-Gamut','Protune Native','Max RGB','P3-D65','Pal/Secam','REDcolor','REDcolor2','REDcolor3','REDcolor4','REDWideGamutRGB','DRAGONcolor','DRAGONcolor2','ROMM RGB','RIMM RGB','ERIMM RGB','F-Gamut','ProPhoto RGB','Russell RGB','Sharp RGB','SMPTE 240M','SMPTE C','NTSC (1953)','NTSC (1987)','S-Gamut','S-Gamut3','S-Gamut3.Cine','Venice S-Gamut3','Venice S-Gamut3.Cine','sRGB','V-Gamut','Xtreme RGB']

其中每个由三个组件指定:

  • 首要
  • Whitepoint
  • 传递函数

引用ISO 22028-1标准对整个RGB附加色空间进行定义,以供参考:

3.3

附加RGB颜色空间

具有三个原色的色度色空间(通常是 红色,绿色和蓝色),这样CIE XYZ三刺激值可以是 通过形成加权从RGB颜色空间值确定 个人的CIE XYZ三刺激值的组合 颜色原色,其中权重与 相应的射线线性色彩空间值 颜色原色

注1:可以进行简单的线性3×3矩阵变换 用于在CIE XYZ三刺激值和 附加RGB颜色的射线度量线性色彩空间值 空间。

条目的注2:通过指定以下项定义加法RGB颜色空间 一组附加RGB原色和一组CIE的CIE色度值 色彩空间白点,以及色彩分量转移 功能。

使用原色和白点计算从RGB到CIE XYZ的归一化基本矩阵。考虑到这一点,为了知道您需要使用哪个矩阵,您需要知道哪种RGB色彩空间,即,您的值首先使用哪种RGB风格编码。

这是几年前写的一篇文章,解释了构成RGB色彩空间的一些重要方面:https://www.colour-science.org/posts/the-importance-of-terminology-and-srgb-uncertainty/

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


依赖报错 idea导入项目后依赖报错,解决方案:https://blog.csdn.net/weixin_42420249/article/details/81191861 依赖版本报错:更换其他版本 无法下载依赖可参考:https://blog.csdn.net/weixin_42628809/a
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下 2021-12-03 13:33:33.927 ERROR 7228 [ main] o.s.b.d.LoggingFailureAnalysisReporter : *************************** APPL
错误1:gradle项目控制台输出为乱码 # 解决方案:https://blog.csdn.net/weixin_43501566/article/details/112482302 # 在gradle-wrapper.properties 添加以下内容 org.gradle.jvmargs=-Df
错误还原:在查询的过程中,传入的workType为0时,该条件不起作用 <select id="xxx"> SELECT di.id, di.name, di.work_type, di.updated... <where> <if test=&qu
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct redisServer’没有名为‘server_cpulist’的成员 redisSetCpuAffinity(server.server_cpulist); ^ server.c: 在函数‘hasActiveC
解决方案1 1、改项目中.idea/workspace.xml配置文件,增加dynamic.classpath参数 2、搜索PropertiesComponent,添加如下 <property name="dynamic.classpath" value="tru
删除根组件app.vue中的默认代码后报错:Module Error (from ./node_modules/eslint-loader/index.js): 解决方案:关闭ESlint代码检测,在项目根目录创建vue.config.js,在文件中添加 module.exports = { lin
查看spark默认的python版本 [root@master day27]# pyspark /home/software/spark-2.3.4-bin-hadoop2.7/conf/spark-env.sh: line 2: /usr/local/hadoop/bin/hadoop: No s
使用本地python环境可以成功执行 import pandas as pd import matplotlib.pyplot as plt # 设置字体 plt.rcParams['font.sans-serif'] = ['SimHei'] # 能正确显示负号 p
错误1:Request method ‘DELETE‘ not supported 错误还原:controller层有一个接口,访问该接口时报错:Request method ‘DELETE‘ not supported 错误原因:没有接收到前端传入的参数,修改为如下 参考 错误2:cannot r
错误1:启动docker镜像时报错:Error response from daemon: driver failed programming external connectivity on endpoint quirky_allen 解决方法:重启docker -> systemctl r
错误1:private field ‘xxx‘ is never assigned 按Altʾnter快捷键,选择第2项 参考:https://blog.csdn.net/shi_hong_fei_hei/article/details/88814070 错误2:启动时报错,不能找到主启动类 #
报错如下,通过源不能下载,最后警告pip需升级版本 Requirement already satisfied: pip in c:\users\ychen\appdata\local\programs\python\python310\lib\site-packages (22.0.4) Coll
错误1:maven打包报错 错误还原:使用maven打包项目时报错如下 [ERROR] Failed to execute goal org.apache.maven.plugins:maven-resources-plugin:3.2.0:resources (default-resources)
错误1:服务调用时报错 服务消费者模块assess通过openFeign调用服务提供者模块hires 如下为服务提供者模块hires的控制层接口 @RestController @RequestMapping("/hires") public class FeignControl
错误1:运行项目后报如下错误 解决方案 报错2:Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.8.1:compile (default-compile) on project sb 解决方案:在pom.
参考 错误原因 过滤器或拦截器在生效时,redisTemplate还没有注入 解决方案:在注入容器时就生效 @Component //项目运行时就注入Spring容器 public class RedisBean { @Resource private RedisTemplate<String
使用vite构建项目报错 C:\Users\ychen\work>npm init @vitejs/app @vitejs/create-app is deprecated, use npm init vite instead C:\Users\ychen\AppData\Local\npm-