algorithm - 如何比较两种颜色的相似性/差异性

标签 algorithm colors compare rgb hsv

我想设计一个程序来帮助我在 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 色彩空间中
  • 找到sRGBL*a*b*的转换公式
  • 将您的 sRGB 颜色转换为 L*a*b*
  • 计算两个 L*a*b* 值之间的 deltaE

它的计算量并不大,只是一些非线性公式和一些乘法和加法。

关于algorithm - 如何比较两种颜色的相似性/差异性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9018016/

相关文章:

algorithm - 查找庞大数据集的子集总数

CSS - 背景前景对比文字颜色

java - 如何比较两条曲线(点数组)

algorithm - 对于想要了解动态规划的人的一个简单示例

python - 欧拉计划没有。 17 - 简化 Python

vb.net - 每种颜色的 25 种颜色渐变

java - 你能用==比较字符吗?

java - 如何比较两个泛型类型变量?

algorithm - 使用来自多个点的多个图像构建 3d 模型(kinect)

android - 如何更改警报对话框标题分隔线颜色android