PHP(?):确定照片的颜色,忽略背景

时间:2013-05-18 05:51:01

标签: php image image-processing imagemagick

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

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

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

Programmatically determine human readable colours

Get Image Colour

Detect overall average colour of a picture

这些都很好。但是,我的问题有点不同。所讨论的图像都在不同的彩色背景上,这些影响图像的“平均颜色”。我已经尝试将我的图像调整到1px以获得颜色平均值,但这不太有效。

Pants

Keys

Tie

正如您所看到的,对于图像#1,平均颜色将比产品颜色更白;对于#2和#3来说,它会变得更加棕色。

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

虽然这并不是绝对完美的,而且我对这种编程完全不熟悉 - 有没有更好的方法来确定前景色?

2 个答案:

答案 0 :(得分:1)

我建议你爆炸图像,给图像中心增加重量。

convert image_source.jpg -implode -32 image_destination.jpg

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

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

答案 1 :(得分:0)

这是一项非常艰巨的任务。

我的建议是你可以使用更多的输入 一张图片只有背景(没有对象),一张带有对象。 现在,如果您对减法进行阈值处理,则可以获得对象像素。 (我只看那些在两张照片之间改变的人) 使用这些像素,你可以采用直方图并选择最常见的像素。

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