我想设计一个程序来帮助我在 5 种预定义颜色之间评估哪种颜色与可变颜色更相似,以及百分比是多少。问题是我不知道如何一步一步地手动完成。所以想程序就更难了。
更多细节:颜色来自带有不同颜色凝胶的试管照片。我有 5 个不同颜色的 pipe ,每个 pipe 代表 5 个级别中的 1 个。我想拍摄其他 sample 的照片,然后在计算机上通过比较颜色来评估该 sample 属于哪个级别,我也想知道近似值的百分比。我想要一个程序做这样的事情:http://www.colortools.net/color_matcher.html
如果你能告诉我要采取什么步骤,即使它们是我手动思考和做的事情。这将非常有帮助。
最佳答案
请参阅维基百科关于 Color Difference 的文章寻找正确的线索。 基本上,您想要计算一些多维色彩空间中的距离度量。
但是 RGB
不是“感知均匀”,因此 Vadim 建议的欧几里德 RGB
距离度量与人类感知的距离不匹配颜色之间。首先,L*a*b*
旨在成为感知上统一的色彩空间,并且通常使用 deltaE 度量。但是有更精细的色彩空间和更精细的 deltaE 公式,它们更接近匹配人类感知。
您必须了解有关颜色空间和光源的更多信息才能进行转换。但是对于比欧几里德 RGB
指标更好的快速公式,只需执行以下操作:
- 假设您的
RGB
值在sRGB
色彩空间中 - 找到
sRGB
到L*a*b*
的转换公式 - 将您的
sRGB
颜色转换为L*a*b*
- 计算两个
L*a*b*
值之间的 deltaE
它的计算量并不大,只是一些非线性公式和一些乘法和加法。
关于algorithm - 如何比较两种颜色的相似性/差异性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9018016/