我正在寻找一种算法来比较两种 RGB 颜色并生成它们的相似性值(其中相似性意味着“在人类平均感知方面相似”)。
有什么想法吗?
编辑:
因为我不能再回答了,所以我决定将我的“解决方案”作为对问题的编辑。
我决定在我的应用程序中使用(非常)小的真彩色子集,这样我就可以自己处理颜色比较。我使用大约 30 种颜色并使用它们之间的硬编码距离。
因为它是一个 iPhone 应用程序,所以我使用 Objective-C 并且实现或多或少是一个表示下表的矩阵,它显示了颜色之间的距离。
最佳答案
RGB distance在euclidean space与“普通人类感知”不太相似。
您可以使用 YUV颜色空间,它考虑了这个因素:
| Y' | | 0.299 0.587 0.114 | | R |
| U | = | -0.14713 -0.28886 0.436 | | G |
| V | | 0.615 -0.51499 -0.10001 | | B |
您还可以使用 CIE用于此目的的颜色空间。
编辑:
我会提到 YUV颜色空间是一种廉价的近似值,可以通过简单的公式计算。但它在感知上并不统一。感知均匀意味着颜色值中相同数量的变化应该产生大致相同视觉重要性的变化。 如果您需要更精确和严格的指标,您一定要考虑 CIELAB颜色空间或另一个感知均匀的空间(即使没有简单的转换公式)。
关于检查颜色相似性的算法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5392061/