我正在做一个项目,在该项目中,我找到了两种颜色的 patterns ,并试图找到第二种颜色的未知颜色。
例如,如果我有2种颜色(第一个二重奏):
RGB(60、90、80)
RGB(70、50、120)
通过使用最简单的算法,我发现:
距离= sqrt((r2-r1)^ 2 +(g2-g1)^ 2 +(b2-b1)^ 2)
距离为 57 。
然后我有第二个颜色二重奏:
RGB(80,45,150)
RGB(x,y,z)
仅通过了解第一种颜色+距离来查找第二种颜色是不现实的,关于如何找到这样的东西的建议,或者对变通办法的任何深刻见识。
答案 0 :(得分:0)
欢迎使用StackOverflow!
如果只有一种可能的第二种颜色,则可以仅通过每个R,G和B元素的差来计算距离。因此,RGB(60,90,80)和RGB(70,50,120)之间的距离为(-10,+40,-40)。
如果第一种颜色是RGB(80,45,150),则距离相同的第二种颜色是RGB(90,5,190)
另一种方法是将距离用作径向距离,但这将导致无限多种可能的第二种颜色
答案 1 :(得分:0)
您在RGB
空间中的第一个色点周围有一个球形表面(如果距离太长,则切成球形)。对于精确距离,您具有整数方程式
dr^2 + dg^2 + db^2 = distance^2
可能具有:无解,对称情况:4个解,8个解,16/24个解,也许还有更多。因此,任务是找到给出所需总和的三元组(例如2D情况下的毕达哥拉斯三元组-距离2有4个邻居,距离5有8 + 4个邻居,距离1.5没有邻居,依此类推)。
如果允许一些公差,那么您可以找到更多可能的解决方案。
似乎您需要某种约束来限制结果。
另外,考虑另一种颜色模型,例如HSV
(如果颜色感知很重要)可能会很有用