OpenCV | SIFT SURF |哈希|图片搜索

时间:2013-06-30 16:34:50

标签: opencv hash information-retrieval sift

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

基本上(A 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)中提取的功能创建哈希?如果有人能说出要遵循的简单步骤或者提出一些前进的建议,我将不胜感激。

1 个答案:

答案 0 :(得分:3)

好的,有很多很好的方法可以匹配各种复杂程度的图像。我将提供一个建议,我认为这对你所描述的问题已经足够好了,并且实现起来非常简单(因为你说你对CV很超新:) :)。

  1. 计算computer1上图像的稀疏或密集SURF特征
  2. 创建词汇表(对于此任务,生成随机词汇可能也足够好)
  3. 将功能分配给词汇表(nn)
  4. 构建kd-tree(用于最近邻居)或学习一些分类器(如sum)
  5. 将分类器应用于计算机2上的图像(计算完冲浪并分配到词汇表后)
  6. 相同的图像最有可能产生最高的分类分数。

    我之所以建议使用这种更快速和散列方法的原因是因为你不太可能因为〜500这样的图像而出现性能问题,并且因为opencv中有一个很好的例子(bagofwords_classification.cpp) ,你可以一步一步地实现你想要的目标。