【问题标题】:how to detect the most similar color?如何检测最相似的颜色?
【发布时间】:2020-07-24 15:34:12
【问题描述】:

我有 2000 多个颜色名称,我希望使用给定颜色(例如:#0087b4)在我的列表中找到与该颜色最相似的颜色。有什么算法可以帮助我做到这一点?

【问题讨论】:

    标签: image image-processing graphics colors drawing


    【解决方案1】:

    如果您有从颜色名称到颜色空间值的映射,则可以使用任何最近邻方法,例如 KNN 或任何快速最近邻变体。如果您只想要一种最接近的颜色,请使用 k=1 的 KNN。

    您可以尝试的另一件事是将矩阵中的所有颜色作为行堆叠并构建颜色矩阵 C,例如,如果您使用 RGB 颜色空间,C 将是一个 2000x3 矩阵,它的第 n 行具有 R,第 n 种颜色的 G 和 B 分量。然后,要找到最接近颜色 x 的颜色,它是具有 R、G 和 B 分量的 3x1 向量,计算乘积 C.x,这应该给您一个 2000x1 向量,找到其最大元素的索引。此行对应的颜色是最接近 x 的颜色。为了获得更好的准确性,您可以对 C 和 x 中的颜色进行归一化。找出 C 中颜色的 R、G 和 B 分量的均值和方差,并使用这些值对 C 中的颜色和颜色 x 进行归一化。

    【讨论】:

      【解决方案2】:

      我不知道这对你有多大帮助!我有类似的问题。当我们谈论人类的可见性时,这一切都取决于观点,它因人而异。对我来说是红色的红色,对我来说可能是红色的,也可能不是红色的。所以很难制作一个适合所有人的模块。 我发现图像的 HSV 格式在这里会很好用。

      作为

      H ---> 表示从波段到另一个波段的颜色变化,如红色、绿色、蓝色、青色、洋红色、黄色

      S ---> 当我们改变 S 时,颜色将在 H 中选择的相同色带中移动

      V ----> 当我们改变 V 时,我们会看到亮度的变化。

      根据The human visual system is more sensitive to contrast than absolute luminance的许多研究对比

      所以我认为,基于上述,您可以提供您需要检测并在该范围内找到它们的颜色的 HSV 值范围

      【讨论】:

        猜你喜欢
        • 2017-11-09
        • 1970-01-01
        • 2014-11-14
        • 1970-01-01
        • 1970-01-01
        • 2011-07-20
        • 2020-01-24
        • 2020-08-17
        • 2013-02-21
        相关资源
        最近更新 更多