【发布时间】:2011-01-09 22:22:52
【问题描述】:
这里有一些主题对如何找到相似的图片很有帮助。
我想做的是获取照片的指纹并在数码相机拍摄的不同照片上找到相同的照片。 SURF 算法似乎是独立于缩放、角度和其他失真的最佳方式。
我正在使用带有 SURF 算法的 OpenCV 来提取样本图像上的特征。现在我想知道如何将所有这些特征数据(位置、拉普拉斯、大小、方向、粗麻布)转换为指纹或散列。
此指纹将存储在数据库中,搜索查询必须能够将该指纹与具有几乎相同特征的照片的指纹进行比较。
更新:
似乎没有办法将所有描述符向量转换为简单的哈希。那么将图像描述符存储到数据库中以便快速查询的最佳方法是什么?
词汇树是一种选择吗?
如果能提供任何帮助,我将不胜感激。
【问题讨论】:
-
代码执行所谓的“最近邻”匹配 - 获取描述符(大小为 N 的向量)并将其与一组其他大小为 N 的向量进行比较(这可以通过计算欧几里得距离它们之间或任何其他距离度量)并选择最接近的那个。名称中的朴素意味着该向量与所有其他向量进行比较。还有其他算法使用近似最近邻,虽然不太准确但效率更高
-
为了简短起见 - 你不能用图像制作散列函数(这太不合时宜了,太冒昧了)。您可以参考文献了解最近邻分类或图像相似性度量。
-
好的,存储任何查询图像描述符的最佳方式是什么?
-
你所寻求的一切都包含在我的答案中,真的没有更多。
-
非常感谢 Liza 的所有帮助!通过您的提示,我对这一切都变得更加清楚。
标签: opencv image-processing data-structures surf