【发布时间】:2011-01-03 11:29:13
【问题描述】:
用 php 和 Graphic Draw (GD) Library 比较两个图像的最佳方法是什么?
这是场景:
我有一张图片,我想找出给定集合中的哪张图片与它最相似。 最相似的图像实际上是同一幅图像,不是像素完美匹配而是同一幅图像。 为了便于理解我的意思,我用示例中的第一名对两张图片之间的差异进行了戏剧化处理。
尽管它没有带来一致的结果,但我的方法是使用 imagecopyresampled 函数将图像缩小到 1px,并查看图像之间的 RGB 值有多接近。
从可能匹配的红色、绿色和蓝色十进制等效值中减去每个红色、绿色和蓝色十进制等效值的值的总和给了我一个相异指数,即使它没有按预期工作,因为并非总是最 RGB 相似的图像是目标图像,我可以使用它从可用目标中选择图像。
这是将 4 个图像与目标图像(在本例中为苹果徽标)进行比较时的输出示例,它与其中一个图像匹配但不完全相同:
原图:
对比:
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 程序员,我想你可以为我指出正确的方向如何改善这一点。
我对其他图像库持开放态度,例如 php 的 iMagick、Gmagick 或 Cairo,但我更愿意避免使用 php 以外的其他语言。
提前致谢。
【问题讨论】:
-
所以你想打败验证码?
-
不是验证码,图片和我说的一样,没有旋转,中间没有线条,没有模糊。这是我拥有的一个更大项目的一部分,我似乎无法有效地克服这一点。
标签: php image image-processing gd similarity