gpt4 book ai didi

sql - 给定 RGB 值,在数据库中找到最接近匹配的最佳方法是什么?

转载 作者:行者123 更新时间:2023-11-29 20:32:38 37 4
gpt4 key购买 nike

我有一个 RGB 值,如果它不存在于我的数据库的颜色表中,我需要找到最接近的颜色。我正在考虑比较所有值并找出差异(红色、绿色和蓝色),然后取平均值。最低平均偏差应该是最接近的颜色。在我看来应该有更好的方法。有什么想法吗?

最佳答案

将颜色视为 3 维空间中的向量,然后您可以使用 3d 毕达哥拉斯轻松计算差异:

d = sqrt((r2-r1)^2 + (g2-g1)^2 + (b2-b1)^2)

但是,请注意,由于颜色容易被不太完美的眼睛解释,您可能需要调整颜色以避免它们具有相同的重要性。

例如,使用 a typical weighted approach :

d = sqrt(((r2-r1)*0.3)^2 + ((g2-g1)*0.59)^2 + ((b2-b1)*0.11)^2)

由于眼睛对绿色最敏感,对蓝色最不敏感,因此仅在蓝色分量上不同的两种颜色必须具有更大的数字差异,才能被认为比在蓝色分量中具有相同数字差异的颜色“更不同”绿色组件。

还有多种方法可以优化此计算。例如,由于您对实际的 d 值并不真正感兴趣,因此可以省略平方根:

d =   ((r2-r1)*0.30)^2
+ ((g2-g1)*0.59)^2
+ ((b2-b1)*0.11)^2

请注意,在许多基于 C 语法的编程语言(如 C#)中,^ 并不表示“求幂”,而是表示“二进制异或”。

因此,如果这是 C#,您将使用 Math.Pow 来计算该部分,或者只是展开并进行乘法。

已添加:从Color difference on Wikipedia上的页面来看,有各种标准试图处理感知差异。例如,名为 CIE94 的颜色模型在 L*C*h 颜色模型中使用了不同的公式,看起来值得研究,但这取决于您希望它的精确度。

关于sql - 给定 RGB 值,在数据库中找到最接近匹配的最佳方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38961427/

37 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com