【问题标题】:Finding a second color knowing the distance知道距离寻找第二种颜色
【发布时间】:2019-04-17 01:15:06
【问题描述】:

我正在做一个项目,我正在寻找一种颜色组合的图案,并试图找到第二种颜色组合的未知第二种颜色。

例如,如果我有 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)

只知道第一种颜色+距离在这里找到第二种颜色有点不切实际,任何关于我如何找到这样的东西的建议,或者对解决方法的任何好的见解。

【问题讨论】:

    标签: algorithm colors rgb similarity


    【解决方案1】:

    欢迎来到 StackOverflow!

    如果只有 1 种可能的第二种颜色,您可以简单地通过每个 R、G 和 B 元素的差异来计算距离。因此,RGB(60, 90, 80) 和 RGB(70, 50, 120) 之间的距离为 (-10, +40, -40)。

    如果第一种颜色是RGB(80,45,150),那么等距的第二种颜色就是RGB(90,5,190)

    另一种方法是使用距离作为径向距离,但这会导致无限多种可能的第二种颜色

    【讨论】:

      【解决方案2】:

      您在RGB 空间中的第一个色点周围有一个球面(如果距离太长,则为切割球面)。对于精确的距离,你有整数方程

      dr^2 + dg^2 + db^2 = distance^2
      

      可能有:没有解决方案,对称情况:4 个解决方案、8 个解决方案、16/24 个解决方案,也许更多。所以任务是找到给出所需总和的三元组(参见二维情况下的毕达哥拉斯三元组 - 距离 2 有 4 个邻居,距离 5 有 8+4 个邻居,距离 1.5 没有邻居,依此类推)。

      如果允许一些容忍度,那么您可以找到更多可能的解决方案。

      看来您需要某种约束来限制结果。

      另外,考虑另一种颜色模型,如 HSV(如果颜色感知很重要)可能会很有用

      【讨论】:

        猜你喜欢
        • 2011-01-12
        • 1970-01-01
        • 2020-06-14
        • 2011-01-09
        • 1970-01-01
        • 1970-01-01
        • 2015-02-04
        • 2018-01-30
        • 2016-03-18
        相关资源
        最近更新 更多