与数据库的图像比较

时间:2013-03-07 02:39:23

标签: image matlab opencv image-recognition

我想知道我想要做的事情是否可能,或者我只是想做不可能的事情/解决一个无法解决的问题。

我的目标是使用图像数据库比较图像(它们将会产生噪声,但所有噪声都具有非常相似的噪声),并告诉我它是否找到了匹配项。例如:img1 img2

我想指出我已经搜索过了,但是我从未找到实际应用的理论讨论,并且我无法理解到目前为止如何应用这些想法(在这种情况下,直方图比较扁平化失败,我无法实现数据树,phash也失败了。)

我怎么能告诉他们两者都相似?是否有我可以实现的算法告诉我?

我想我应该首先使用某种降​​噪/边缘检测(我已经尝试了一些并且实际上已成功进行边缘检测)。所以,假设我有一个不错的边缘检测,我怎么能比较它们呢?

我知道这不是一个容易的话题,但我想知道我是否正在打一场失败的战斗,应该接受并放弃。

1 个答案:

答案 0 :(得分:1)

这是计算机视觉和模式识别方面的长期研究挑战,正如@AndrewMao所说,有很多博士论文和学术出版物专门讨论这一主题。一个基本问题是你想要什么样的输出:(1)来自你的数据库的单个“匹配”图像,或(2)匹配信心降低的数据库图像的排序列表。 (1)通常称为“图像近重复检测”,(2)更广泛地称为“基于内容的图像检索”。

今天,对这两个问题的流行方法是(A)提取低级描述符的一些变体,例如,最显着的是SIFT,在检测到的特征点,例如由MSER识别的斑点区域,(B)应用一些几何验证,例如RANSAC,(C)测量图像对中剩余描述符之间的距离,例如:通过欧几里德距离,(D)阈值处理以保持匹配的描述符,以及(E)计算从查询图像到数据库中每个图像的匹配数。

可视化,适用于以下图像: http://www.vlfeat.org/demo/sift_match_1.jpg.pagespeed.ce.Ch9_KgDq8u.jpg

匹配会产生(SIFT点为绿色,匹配为蓝色): http://www.vlfeat.org/demo/sift_match_2.jpg.pagespeed.ce.JvQxRCluzm.jpg