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