joh*_*Art 9 php gd image image-processing similarity
使用php和Graphic Draw(GD)库比较两个图像的最佳方法是什么?
这是场景:
alt text http://img262.imageshack.us/img262/4849/imagecomparison.jpg
我有一个图像,我想找到给定集合中哪个图像与它最相似.最相似的图像实际上是相同的图像,而不是像素完美匹配但是相同的图像.我已经将两个图像之间的区别与示例中的第一个进行了戏剧化,以便于理解我的意思.
即使它没有带来一致的结果,我的方法是使用imagecopyresampled函数将图像缩小到1px,并查看图像之间RGB值的接近程度.
从可能的匹配的红色,绿色和蓝色的十进制等效值扣除每个红色,绿色和蓝色的十进制等值的价值的总和给了我一个相异指数,尽管它因为没有按预期工作并不总是在大多数RGB相似的图像是目标图像,我可以用来从可用目标中选择一个图像.
以下是将4个图像与目标图像进行比较时的输出样本,在本例中为苹果徽标,与其中一个匹配,但不完全相同:
原始图片:
http://www.lshtm.ac.uk/its/remote/images/os-apple.png 红色:222绿色:226蓝色:232
比较:
http://a1.twimg.com/profile_images/571171388/logo-twitter_normal.png 红色:183绿色:212蓝色:212和相似度指数56
http://icons-search.com/img/fasticon/fruits_lnx.zip/fruits_lnx-Icons-48X48-apple.png-48x48.png 红色:117绿色:028蓝色:028和相异指数530
http://www.1sd.org/wp-content/uploads/2008/10/48x48-apple.png 红色:218绿色:221蓝色:221和不相似的指数13 正确匹配.
红色:061绿色:063蓝色:063和不相似度指数491
甚至可能更好,结果比我已经得到的更好,我浪费我的时间在这里,但因为似乎有很多经验丰富的PHP程序员,我想你可以指出我正确的方向如何改善这个.
我开放其他图像库,如iMagick,Gmagick或Cairo for php,但我宁愿避免使用除php以外的其他语言.
提前致谢.
我认为你的方法似乎是合理的,但将整个图像减小到 1x1 像素大小可能有点太过了。
但是,如果您将每个图像转换为相同的大小,然后计算每个 16x16(或 32x32、64x64 等,具体取决于您希望使用多少处理时间/功率)单元格中的平均颜色,您应该能够形成某种类型明智的(-ish)比较。
归档时间: |
|
查看次数: |
6071 次 |
最近记录: |