关于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/