首页 文章

与php gd的图像比较

提问于
浏览
9

用php和Graphic Draw (GD) Library比较两个图像的最佳方法是什么?

这是场景:

alt text http://img262.imageshack.us/img262/4849/imagecomparison.jpg

我有一个图像,我想找到给定集合中哪个图像与它最相似 . 最相似的图像实际上是相同的图像,而不是像素完美匹配但是相同的图像 . 我把这两个图像之间的区别与示例中的第一个进行了戏剧化,以便于理解我的意思 .

尽管它没有带来一致的结果,但我的方法是使用imagecopyresampled函数将图像缩小到1px,并查看图像之间RGB值的接近程度 .

从可能匹配的红色,绿色和蓝色十进制等值中扣除每个红色,绿色和蓝色十进制等值的值的总和给了我一个相异指数,即使它自 not always 以来没有按预期工作RGB相似图像是目标图像,我可以用来从可用目标中选择图像 .

以下是将4个图像与目标图像进行比较时的输出示例,在本例中为苹果徽标,与其中一个匹配,但不完全相同:

Original image:

http://www.lshtm.ac.uk/its/remote/images/os-apple.png红色:222绿色:226蓝色:232

Compared against:

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程序员,我想你可以指出我正确的方向如何改进这个 .

我对其他图像库开放,如iMagickGmagickCairo for php,但我宁愿避免使用除php以外的其他语言 .

提前致谢 .

3 回答

  • 4

    使用middparka的方法,您可以将每个图像转换为数值序列,然后使用the Levenshtein algorithm查找最接近的匹配 .

  • 0

    我认为你的方法看起来很合理,但是将整个图像缩小到1x1像素大小可能是一个过程 .

    但是,如果您将每个图像转换为相同的大小,然后计算每个16x16(或32x32,64x64等的平均颜色,取决于您希望使用多少处理时间/功率)单元格,您应该能够形成某种形式明智的( - )比较 .

  • -1

    我建议,像middaparka一样,你不下采样到1像素的图像,因为你丢失了所有的空间信息 . 下采样到16x16(或32x32等)肯定会提供更好的结果 .

    那么它还取决于颜色信息对您是否重要 . 根据我的理解,你实际上可以没有它,并从彩色图像(例如亮度)开始计算灰度图像并计算互相关 . 如果像你说的那样,有几个图像完全匹配(除了颜色信息),这应该会给你一个非常好的可靠性 .

相关问题