这里有一些主题对如何查找相似图片非常有帮助。
我想做的是获取一张图片的指纹,在数码相机拍摄的不同照片上找出同一张照片。 SURF 算法似乎是独立于缩放、角度和其他失真的最佳方法。
我使用 OpenCV 和 SURF 算法来提取示例图像的特征。现在我想知道如何将所有这些特征数据(位置、拉普拉斯算子、大小、方向、hessian)转换为指纹或哈希。
此指纹将存储在数据库中,搜索查询必须能够将该指纹与具有几乎相同特征的照片的指纹进行比较。
更新:
似乎没有办法将所有的描述符向量转换成一个简单的散列。那么将图像描述符存储到数据库中以便快速查询的最佳方式是什么?
词汇树是一种选择吗?
如有任何帮助,我将不胜感激。
最佳答案
您提到的特征数据(位置、拉普拉斯算子、大小、方向、粗麻布)不足以满足您的目的(如果您想进行匹配,这些实际上是描述符中不太相关的部分)。您要查看的数据是“描述符”(第 4 个参数):
这些是 128 或 64(取决于参数)向量,其中包含特定特征的“指纹”(每个图像将包含可变数量的此类向量)。 如果你获得最新版本的 Opencv,他们有一个名为 find_obj.cpp 的示例,它向你展示了它是如何用于匹配的
更新:
您可能会找到 this讨论有帮助
关于OpenCV/SURF 如何从描述符中生成图像哈希/指纹/签名?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2146542/