|
|
1
6
这实际上是一个 大量 比你想象的更棘手。原因有很多。 主要问题是RGB空间是一个依赖于设备的空间——在一个设备上看起来相似的RGB值在另一个设备中不必看起来相似。(如果你认为这听起来不太可能——由于操作系统对监视器gamma的不同假设,在mac/win/SGI之间获得良好的颜色对应关系之间存在大量问题。) 第二个问题是,对两种颜色之间差异的感知在很大程度上取决于周围的颜色/观看环境。也就是说,两种颜色在黑暗环境中的黑暗环境中看起来可能不同,但在明亮环境中的白色环境中看起来相似。 考虑到这些前提条件,ΔCIE 94是颜色相似性的适当度量。 您将通过将每种颜色从RGB转换为XYZ,然后再转换为Lab来计算它。 RGB到XYZ的转换取决于设备——有一些简单的标准转换,例如 sRGB ,但它们对实际设备的适用性值得怀疑。从XYZ到Lab的转换是复杂的,可以找到 here -对于你的参考白点,你会使用你的设备的白点(或者sRGB,如果你使用的是标准)。 最后,您可以使用上面列出的公式来进行最后的转换。 由于这一切都是相对痛苦的,你可能会更幸运地求助于一个合适的颜色管理工具,比如 LCMS |
|
2
0
这比你想象的要复杂一些。您需要转换以从RGB XYZ LAB LCH和 只有 则可以应用CIE94公式。看看Chroma.js中的实现,并将您需要的部分移植到Ruby: |