我对RGB颜色空间的某些方面感到困惑。我正在开发一个工具,它可以帮助转换不同颜色空间中的颜色(针对数字图形(。我想要实现的一个重要功能是将颜色从RGB转换为CIE-Lab。在阅读了多篇文章后,很明显,首先我必须将RGB转换为XYZ,然后将XYZ转换为Lab。有很多网站提到了这些转换背后的数学。最值得注意的是,林布鲁姆的网站。该网站提供了可用于在多个RGB颜色空间之间直接转换的矩阵。
现在,我对使用哪个矩阵感到困惑。在数字图形/可视化的背景下,RGB意味着线性RGB(对吗?(。如果有人给我提供(r,g,b(值,我会使用其中一个转换矩阵来计算X,Y,Z。但我的问题是使用哪个矩阵?我的猜测是"srgb"one_answers"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']
它们中的每一个都由三个组件指定:
- 小学
- 白点
- 传递函数
引用ISO 22028-1标准对附加RGB颜色空间的整体定义以供参考:
3.3
加性RGB颜色空间
具有三种原色的色度颜色空间(通常红色、绿色和蓝色(使得CIE XYZ三刺激值可以是通过形成加权的个人CIE XYZ三刺激值的组合原色,其中权重与对应的无线电度量线性颜色空间值原色
注1:一个简单的线性3×3矩阵变换可以是用于在CIE XYZ三刺激值和附加RGB颜色的无线电度量线性颜色空间值空间
注2:加法RGB颜色空间是通过指定一组附加RGB原色的CIE色度值和色彩空间白点,与色彩成分一起转移作用
使用原色和白点计算从RGB转换为CIE XYZ的归一化主矩阵。考虑到这一点,为了知道你需要使用哪个矩阵,你需要知道哪个RGB颜色空间,也就是说,你的值首先是用RGB的哪种味道编码的。
这是几年前写的一篇文章,解释了RGB色彩空间的一些重要方面:https://www.colour-science.org/posts/the-importance-of-terminology-and-srgb-uncertainty/