如何识别稍微修改的图像?
image-processing
6
0

我有一个非常庞大的jpeg图片数据库,大约有200万个。我想对这些图像之间的重复进行模糊搜索。重复图像是两张图像,它们的像素很多(大约一半)具有相同的值,其余图像的R / G / B值相差大约+/- 3。图像与肉眼相同。这是您通过重新压缩jpeg所获得的差异。

我已经有了一种万无一失的方法来检测两个图像是否相同:我将所有像素的亮度差相加,然后与阈值进行比较。这种方法已被证明100%准确,但是对200万张照片进行1张照片的速度却非常慢(每张照片数小时)。

我希望以一种可以对哈希表中的指纹进行比较的方式对图像进行指纹识别。即使我可以可靠地将需要比较的图像数量减少到只有100,也可以比较1到100的状态。对于这种情况,什么是好的算法?

参考资料:
Stack Overflow
收藏
评论
共 3 个回答
高赞 时间 活跃

天真的想法:创建一个小的缩略图(50x50像素)以查找“可能相同”的图像,然后增加缩略图的大小以丢弃更多图像。

收藏
评论

看看O. Chum,J。Philbin和A. Zisserman的“ 几乎重复的图像检测:min-hash和tf-idf加权” ,在2008年英国机器视觉会议论文集中。他们解决了您遇到的问题并进行了演示对于146k图像的结果。但是,我对他们的方法没有亲身经验。

收藏
评论

以minHash的想法为基础...

我的想法是使用数据库中当前的所有图像制作100个查询表。查找表从特定像素的亮度映射到在相同像素中具有相同亮度的图像列表。要搜索图像,只需将其输入哈希表中,获得100个列表,并在列表中显示每个图像时为其打分。每张图像的得分从0到100。得分最高的图像获胜。

如何在合理的内存限制内以及如何快速执行此操作存在许多问题。需要适当的数据结构来存储在磁盘上。也可以调整哈希值,表数等。如果需要更多信息,我可以对此进行扩展。

我的成绩很好。我能够在一台计算机上约24小时内为一百万张图像建立索引,并且每秒可以查找20张图像。据我所知,准确性是惊人的。

收藏
评论
新手导航
  • 社区规范
  • 提出问题
  • 进行投票
  • 个人资料
  • 优化问题
  • 回答问题

关于我们

常见问题

内容许可

联系我们

@2020 AskGo
京ICP备20001863号