我对RGB色彩空间的某些方面感到困惑。我正在开发一个工具,帮助在不同的色彩空间转换颜色(目标是数字图形)。我想实现的一个重要功能是将颜色从RGB转换为CIE-Lab。在阅读了多篇文章后,很明显,首先我必须将RGB转换为XYZ,然后将XYZ转换为Lab。有很多网站都提到了这些转换背后的数学原理。最值得注意的是Lindbloom的website。该网站提供了可用于在多个RGB颜色空间之间直接转换的矩阵。
现在,我对使用哪个矩阵感到困惑。在数字图形/可视化的上下文中,RGB表示线性RGB(对吗?)。如果有人给我提供(r,g,b)值,我将使用其中一个转换矩阵并计算X,Y,Z。但我的问题是使用哪个矩阵?我的猜测是“srgb”和“D65”作为白色引用,但我不确定。当用户提供线性RGB时,有什么关于使用哪个矩阵的提示吗?
我知道我可以通过应用伽马变换将sRGB转换为RGB,但我对这些转换矩阵感到困惑。
发布于 2020-08-31 11:40:34
在数字图形/可视化的上下文中,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三刺激值的加权组合来从RGB色彩空间值中确定,其中权重与用于相应原色的无线电计量线性色彩空间值成比例
输入注释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/
https://stackoverflow.com/questions/63655821
复制相似问题