使用php和Graphic Draw (GD) Library比较两个图像的最佳方法是什么?
这是场景:
我有一个图像,我想找到给定集合中哪个图像与它最相似.
最相似的图像实际上是相同的图像,而不是像素完美匹配但是相同的图像.
我已经将两个图像之间的区别与示例中的第一个进行了戏剧化,以便于理解我的意思.
即使它没有带来一致的结果,我的方法是使用imagecopyresampled功能将图像缩小到1px,并查看图像之间RGB值的接近程度.
从可能匹配的红色,绿色和蓝色十进制等值中扣除每个红色,绿色和蓝色十进制等值的值的总和给了我一个相异指数,即使它没有按预期工作,因为并非总是如此大多数RGB相似的图像是目标图像,我可以用来从可用目标中选择一个图像.
以下是将4个图像与目标图像进行比较时的输出样本,在本例中为苹果徽标,与其中一个匹配,但不完全相同:
原始图片:
红色:222绿色:226蓝色:232
比较:
http://a1.twimg.com/profile_images/571171388/logo-twitter_normal.png
红色:183绿色:212蓝色:212,相似度指数为56
红色:117绿色:028蓝色:028和不相似度指数530
红色:218绿色:221蓝色:221和不相似的指数13正确匹配.
红色:061绿色:063蓝色:063和不相似度指数491
甚至可能更好,结果比我已经得到的更好,我浪费我的时间在这里,但因为似乎有很多经验丰富的PHP程序员,我想你可以指出我正确的方向如何改善这个.
我对其他图像库开放,如iMagick,Gmagick或Cairo for php,但我宁愿避免使用除php以外的其他语言.
提前致谢.
解决方法:
我认为你的方法似乎是合理的,但是将整个图像缩小到1×1像素大小可能是一个太过分了.
但是,如果您将每个图像转换为相同的大小,然后计算每个16×16(或32×32,64×64等的平均颜色,取决于您希望使用多少处理时间/功率)单元格,您应该能够形成某种形式明智的( – )比较.