开放简历 |筛选冲浪 |散列 |图片搜索

标签 opencv hash information-retrieval sift

我对图像处理和图像匹配很陌生,不是很清楚。我需要做的是 a) 拍照 b) 从中提取特征(SIFT、SURF更适合匹配) c) 创建哈希(如 MD5 或 SHA1) d) 存储在数据库中,如果有相似的图像,则搜索不同的图像。

基本上(Tineye)

我提到了 OpenCV / SURF How to generate a image hash / fingerprint / signature out of the descriptors? .我还检查了 pHash 并尝试通过 opencv simple_matcher.cpp 运行 SIFT SURF

阅读一些有关几何哈希/局部敏感哈希的内容,但不确定我是否朝着正确的方向前进。

我如何根据从 SIFT/SURF (OpenCV) 中提取的特征创建散列?如果有人能告诉我要遵循的简单步骤或一些前进的引用,我将不胜感激。

最佳答案

好的,有很多很好的方法可以匹配具有不同复杂程度的图像。我将提供一个我认为足以解决您描述的问题并且实现起来非常简单的建议(因为您说您是 CV 的 super 新手 :))。

  1. 在计算机 1 上计算图像上的稀疏或密集 SURF 特征
  2. 创建词汇表(对于此任务,生成一个随机词汇表可能也足够好)
  3. 将特征分配给词汇表(nn)
  4. 构建一个 kd 树(用于最近邻)或学习一些分类器(如求和)
  5. 将分类器应用于 computer2 上的图像(在计算 surfs 并分配给词汇表之后)

相同的图像很可能会产生最高的分类分数。

我之所以建议使用这种方法来处理更快的散列方法,是因为对于少至 500 张的图像,您不太可能遇到性能问题,并且因为在 opencv (bagofwords_classification.cpp) 中有一个很好的示例,您可以一步一步地实现您想要的。

关于开放简历 |筛选冲浪 |散列 |图片搜索,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17392516/

相关文章:

python - Python 如何将 2 个对象视为不相等且不相同,但具有相同的 ID?

php - 在哪里散列密码(服务器 || 客户端)

php - 加盐和散列在 php 登录中不起作用

algorithm - 数据挖掘中数据集稀疏性的影响

nlp - 如何检测文本中是否发生了事件/ Action ?

c++ - 对 `cvCreateBGCodeBookModel' 的 undefined reference

python - 如何编码以修复检测到的 fatal error : Failed to execute script BoxDetection after use auto-py-to-exe compile python code to exe file?

php - 如何将 PHP 中从网络摄像头捕获的图像发送到 Python

c# - emguCV 3.1 - 人脸检测