Javascript 获取图像的主色调

Javascript 获取图像的主色调,javascript,image,colors,Javascript,Image,Colors,我正在制作一个空间壁纸共享库。我已经使用JavaScript库颜色窃贼来检索图像的主要颜色,但我有一个问题。大多数墙纸是深色的。如果用户在搜索墙纸时选择了#07F之类的蓝色,他将不会得到许多具有这种颜色的深色墙纸,因为这些墙纸的主色调将接近黑色 我可以允许使用多种主色调进行搜索(例如黑色和蓝色),但这会使搜索更加复杂 是否有任何JavaScript库(必须在客户端完成)能够获得图像的主要色调?如果没有,你知道我如何实现一个算法吗 感谢阅读:)这与其说是Javascript,不如说是设计问题。主色

我正在制作一个空间壁纸共享库。我已经使用JavaScript库颜色窃贼来检索图像的主要颜色,但我有一个问题。大多数墙纸是深色的。如果用户在搜索墙纸时选择了#07F之类的蓝色,他将不会得到许多具有这种颜色的深色墙纸,因为这些墙纸的主色调将接近黑色

我可以允许使用多种主色调进行搜索(例如黑色和蓝色),但这会使搜索更加复杂

是否有任何JavaScript库(必须在客户端完成)能够获得图像的主要色调?如果没有,你知道我如何实现一个算法吗


感谢阅读:)

这与其说是Javascript,不如说是设计问题。主色调并不总是覆盖最多像素的颜色。这是吸引你眼球的颜色。例如,如果你给某人看一张黑色背景上的粉红色星系的照片,主色调不是黑色,而是粉红色,因为主体是粉红色的。所以你需要一个更复杂的算法

此外,黑色和白色在技术上不是颜色。它们只是分别完全没有光线或极端高光(或光源)。因此,我会排除比预先定义的阈值暗或浅的任何东西(例如,在计算中排除顶部和底部5%)

编辑:

实际上,我自己可能会尝试将最饱和像素的颜色设置在某个阈值以上(例如,超过X个像素计数以避免噪声造成的误报),并留有一定的误差

编辑2:


您可以更改以测试像素的饱和度和黑暗度。你可能想找到一个可以进行RGB->HSB转换的库,但我不知道是否有好的库。

看,我会找到主色调@bkconrad,你会找到黑色的色调,根据OP的说法。实际上,好主意是找到黑色之后的主色调(也可能是白色).谢谢你的评论。奥列格的解决方案很有趣,我会考虑的。@OlegV.Volkov:没有黑色或白色的色调。
#000001
的色调与
#0000FF
#FEFEFF
的色调完全相同。黑色和白色根本没有色调。谢谢你的回答!看起来和奥列格说的很相似。在数字图像中,说黑白在技术上不是颜色是没有意义的。现在,我没有费心研究这个偷色器是如何工作的,但是如果它不执行任何类型的颜色聚类,那么从中获得的主要色调基本上是无用的。第二,这里有一些误解。没有理由只考虑主导色调,相反,你需要K主导色调,因此搜索单个色调X将返回X在其K显性色调列表中出现的图像。@ MMGP:我们正在讨论将用户意图转化为数据。因此,了解人们如何感知颜色非常重要,而不是机器如何解读像素。@mmgp:我只是想补充一点,我普遍认为使用K主色调也是一种有效的策略。:)@Bvuelic将用户的意图翻译成数据甚至是一个更有力的理由来考虑黑色和白色作为真实的颜色,我不确定你将如何处理这个论点。