2

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

基本 (A Tineye)

我提到了OpenCV / SURF 如何从描述符中生成图像哈希 / 指纹 / 签名?. 我还检查了 pHash 并尝试通过 opencv simple_matcher.cpp 运行 SIFT SURF

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

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

4

1 回答 1

3

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

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

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

为什么我建议这种方法使用更快和散列方法的原因是,您不太可能遇到少至约 500 个图像的性能问题,并且由于 opencv (bagofwords_classification.cpp) 中有一个很好的示例,您可以循序渐进,达到你想要的。

于 2013-06-30T17:23:47.323 回答