用 php 和 Graphic Draw (GD) Library 比较两个图像的最佳方法是什么? ?
这是场景:
我有一张图片,我想找出给定集合中的哪张图片与它最相似。 最相似的图片其实就是同一张图片,不是像素完美匹配而是同一张图片。 为了便于理解我的意思,我用示例中的第一张图片夸大了两张图片之间的差异。
尽管没有带来一致的结果,我的方法是使用 imagecopyresampled 将图像缩小到 1px函数并查看图像之间的 RGB 值有多接近。
从可能匹配的红色、绿色和蓝色十进制当量值中减去每个红色、绿色和蓝色十进制当量值的总和给了我一个差异指数,即使它没有按预期工作,因为并不总是 RGB 最相似的图像是目标图像,我可以用来从可用目标中选择图像。
这是将 4 张图像与目标图像进行比较时的输出示例,在本例中为苹果 Logo ,与其中一张图像匹配但不完全相同:
原图:
对比:
http://a1.twimg.com/profile_images/571171388/logo-twitter_normal.png 红色:183 绿色:212 蓝色:212 相似度指数为 56
红色:218 绿色:221 蓝色:221 和差异指数 13 正确匹配。
红色:061 绿色:063 蓝色:063 相异指数491
可能甚至没有更好的结果比我已经得到的更好,我在这里浪费我的时间但是因为似乎有很多经验丰富的 php 程序员我想你可以为我指明正确的方向如何改进这一点。
我对其他图像库开放,例如 iMagick , Gmagick或 Cairo对于 php,但我宁愿避免使用 php 以外的其他语言。
提前致谢。
最佳答案
我原以为您的方法似乎是合理的,但将整个图像的大小缩小到 1x1 像素可能有点过头了。
但是,如果您将每个图像转换为相同大小,然后计算每个 16x16(或 32x32、64x64 等,具体取决于您希望使用多少处理时间/功率)单元格的平均颜色,您应该能够形成某种明智的(-ish)比较。
关于php - 与php + gd的图像对比,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2037205/