首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >查找重复图像的软件链

查找重复图像的软件链
EN

Stack Overflow用户
提问于 2013-12-27 14:17:08
回答 1查看 995关注 0票数 3

我想要实现的

我正在寻找一个软件链,以找到重复的图像。首先,这里是我如何定义一个重复的图像:有一个原始图像,直接来自一个相机,和修改版本的这个图像。修改映像可以是以下操作的任意操作或组合:

  • 改变亮度、对比度、颜色(图像的修改版本可能是黑白的)
  • 种植
  • 调整大小
  • 旋转
  • 在图像周围添加一个框架
  • 在框架上写字

一个现实世界的例子:

原始图像

光度+亮度变化+大小调整

种植

帧+文本

匹配上述任何一组图像将导致找到一个副本。正如你所看到的,这种修改并不是为了破坏,而是为了改善。例如,图像的主体(这里是闹钟)将永远不会被裁剪在它的中间。

修改可以链接(新的修改可以基于以前的修改,而不是原始图像),导致图像被压缩了很多次。

然后,摄影师可以拍另一张照片:

这个观点和主题已经改变了(现在是0:02!) =>,与上面的任何图像相比,这个新的图像不应该被看作是重复的。

我到目前为止所做的事

#1 :摆脱框架

首先,我使用OpenCV的Canny检测器+ Hough算法在图像上找到垂直和水平线。然后,根据算法找到的线条对图像进行裁剪。

我一直面临这个解决方案的问题:当原始图片的背景中有水平线或垂直线时,很难区分哪些线条是从框架中,哪些是从图片=>手动检查。

我还设置了一个更高的阈值,以避免获得太多的假阳性:不幸的是,一些精心设计的框架(例如,具有梯度)会通过。

是否有更好的算法来检测这些帧?

#2 :寻找重复

到目前为止,我一直在使用pHash及其DCT图像哈希。它计算一个可视散列,并提供了一种在大型数据库中搜索类似图像的非常有效的方法。

优势:

  • 它非常快
  • 你可以搜索数千张图片
  • 它对我所有的标准(裁剪,调整大小,重新压缩图像,旋转)都足够好。

缺点:

  • 许多假阳性
  • 查找从完全不同的视图获取的图像的副本。
  • 当图像进行了组合修改时,可能会丢失一些副本。

所有重复的pHash发现的结果也是手工评审。这不是问题,除非输入的数据是同一主题的数千张图像。要审查的重复数量则呈二次增长,这不太方便。

关于改进重复检测的几点思考

我一直在研究如何减少来自pHash的假阳性。我的第一个想法是将OpenCV的模板匹配到我现有的软件链中。问题:它不适用于旋转图像。

然后,我学到了特征检测,我认为这可能是一条路。然而,这是一个非常广阔的领域,这是我需要帮助的地方。

我在本PDF第81页发现了一个有趣的特征检测器的比较。如果我做得对,我需要“旋转不变”、“尺度不变”,而不是“仿射不变”(这似乎是观点的改变)。这将给我以下几种选择:

  • 哈里斯-拉普拉斯
  • 拉普拉斯
  • 浪花

这些算法能满足我的需求吗?我应该将它们整合到我现有的链中,还是应该重新创建一个新的链?特征检测到重复匹配似乎还有很长的路要走,最好的方法是什么?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-01-03 07:37:03

您应该采用本地特性匹配方法(SURF/ORB/ should .)您可以在这里找到一个很好的教程:matcher.html--如果效率非常重要,您可以用一个定制的查找-刚性转换代码替换OpenCV的findHomography,但是如果它不是一个大问题,findHomography可能会很好地为您服务。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20802211

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档