所以我正在研究一种方法来提取人类从图像中感知到的主色。
例如,这是一张照片:https ://500px.com/photo/63897015/looking-out-for-her-kittens-by-daniel-paulsson
大多数人会认为“主导”颜色是眼睛那刺眼的天蓝色。但是,使用标准量化时,当您降至 16 种颜色以下时,蓝色会完全消失。眼睛只占画布的 0.2%,所以取平均值根本行不通。
项目详细信息:我正在构建一个 Rails 应用程序,它将接受上传的照片或特定颜色,并返回一堆具有相似主色的其他照片。设计师将使用该工具来查找与其预先存在的配色方案相匹配的库存照片。如果我能整理出技术部分,我还有其他很酷的想法。
当前研究:在过去的 24 小时里,我一直在阅读有关这些内容的所有内容。在我尝试过的所有服务中,TinEye 是唯一一个做得很好的服务,但它们是闭源的。我不能提供超过 1 个链接,但您可以通过 google 'TinEye Color' 找到它。
使用的工具:我正在使用 ImageMagick 进行图像转换和直方图生成。
期望的结果:当给定那张照片时,我想创建一个 5-6 种颜色的调色板,饱和的天蓝色就是其中之一。
当前方法:我现在的做法是将其减少到 32 或 64 种颜色,并寻找饱和度/色调异常值。如果标准差很低并且离群值很远,我会将其添加到调色板中。然后,我将进一步将照片减少到 4 种颜色,并将它们组合成 5-6 个调色板。
我的问题:我的问题是 ImageMagick 的量化算法。我不想取颜色的平均值,我想将它们按相似的颜色分组并取中值,偏爱饱和颜色。当我将猫图片减少到 32 种颜色时,眼睛会变成不饱和的灰色。
所以我问你们是否知道任何算法或颜色原理,可以让我找到从图像中脱颖而出的颜色,而不会将它们模糊在一起。我想要一种实际存在于图像中的颜色,而不是 4-5 种颜色组合的模糊平均值。
在更一般的意义上,TinEye 做得很完美,我想弄清楚他们是如何做到的。