2

我不知道在这里使用的最佳技术是什么,我知道 PHP 可以做类似的事情,但如果我错了,我会指出正确的方向。

我正在建立一个在线商店,我想要一种简单(自动化)的方式来对每件待售商品的颜色进行分类。

我在 Stack 上看到了很多与此相关的帖子,这里有一些很好的讨论供有兴趣的人讨论:

以编程方式确定人类可读的颜色

获取图像颜色

检测图片的整体平均颜色

这些都很好。但是,我的问题有点不同。有问题的图像都位于不同颜色的背景上,这些会影响图像的“平均颜色”。我尝试将图像大小调整为 1px 以获得颜色平均值,但这并不完全有效。

裤子

钥匙

领带

如您所见,对于图像#1,平均颜色将比产品颜色白很多;对于#2 和#3,它会变得更加棕色。

谁能想到我可以使用任何方法来获得正确的平均颜色,以自动方式,使用 PHP、Ruby、Python 或类似的东西?我的想法是从每张照片的中间(通常是有问题的产品所在的位置)取一个部分,然后取其平均值。例如,在图像中心获取一个 30px x 30px 的正方形并对其进行处理。

不过,这不会是绝对完美的,而且我对这种编程完全陌生——有没有更好的方法来确定前景色?

4

2 回答 2

1

我建议你爆炸图像,给图像的中心赋予重量。

convert image_source.jpg -implode -32 image_destination.jpg

然后计算平均颜色(通过缩放到 1x1)或从居中的框中选择一个平均值。

如果您需要更高的精度,则需要一种计算机视觉算法,将前景与背景分离;你可以看看OpenCV

于 2013-05-18T23:58:25.940 回答
0

这是一项艰巨的任务。

我的建议是你可能会使用更多的输入一张图片只有背景(没有对象)和一张有对象的图片。现在,如果您对减法设置阈值,您可以获得对象像素。(我只是拿那些在两张照片之间变化的人)使用这些像素,您可以获取直方图并选择最常见的那些。

( http://php.net/manual/en/imagick.getimagehistogram.php )

于 2013-05-22T10:17:48.310 回答