【问题标题】:OpenCV-Python dense SIFTOpenCV-Python 密集 SIFT
【发布时间】:2013-11-22 13:55:01
【问题描述】:

OpenCV 有very good documentation on generating SIFT descriptors,但这是“弱 SIFT”的一个版本,其中的关键点由原始的Lowe algorithm 检测。 OpenCV 示例如下所示:

img = cv2.imread('home.jpg')
gray= cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)

sift = cv2.SIFT()
kp = sift.detect(gray,None)
kp,des = sift.compute(gray,kp)

我正在寻找的是强/密集 SIFT,它不会检测关键点,而是计算一组补丁(例如 16x16 像素,8 像素填充)的 SIFT 描述符,将图像覆盖为网格。据我了解,在 OpenCV 中有两种方法可以做到这一点:

  • 我可以自己将图像划分为网格,然后以某种方式将这些补丁转换为关键点
  • 我可以使用基于网格的特征检测器

换句话说,我必须将sift.detect() 行替换为能够提供所需关键点的内容。

我的问题是 OpenCV 文档的其余部分,尤其是 wrt Python,严重缺乏,所以我不知道如何实现这些东西。我在 C++ 文档中看到网格有关键点检测器,但我不知道如何在 Python 中使用它们。

另一种方法是切换到 VLFeat,它具有非常好的 DSift/PHOW 实现,但意味着我必须从 python 切换到 matlab。

有什么想法吗?谢谢。

【问题讨论】:

  • OpenCV 的最新版本(或者至少是它的 Python 绑定)似乎不再支持 .detect 和 .compute...相反,您必须使用 .detectAndCompute,这意味着它不再支持可以生成自己的关键点。
  • opencv3 不是这样

标签: python opencv sift


【解决方案1】:

你可以在 opencv 2.4.6 中使用 Dense Sift <.>

cv2.FeatureDetector_create(detectorType)

然后"Dense"字符串代替detectorType

例如:-

dense=cv2.FeatureDetector_create("Dense")
kp=dense.detect(imgGray)
kp,des=sift.compute(imgGray,kp)

【讨论】:

  • 不是我想劫持这个答案,但是在 c++ 中可以做同样的事情吗?有人能指出我正确的方向吗?
  • @SemicolonWarrier 是的,这是可能的。看这里docs.opencv.org/modules/features2d/doc/…
【解决方案2】:

我不确定您的目标是什么,但请注意,SIFT 描述符的计算速度非常慢,并且从未设计为以密集方式使用。话虽如此,OpenCV 让这样做变得相当简单。

基本上,您无需使用 sift.detect(),而是自己填写 keypoint 数组,方法是将网格设为关键点,无论您希望它们有多密集。然后,当您将关键点传递给 sift.compute() 时,将为每个关键点计算一个描述符。

根据图像的大小和机器的速度,这可能需要很长时间。如果计算时间是一个因素,我建议您查看 OpenCV 必须提供的一些 binary 描述符。

【讨论】:

  • 谢谢大卫。那么我的问题是:我到底用什么填充关键点数组?我可以从 OpenCV API 页面以某种方式推断出正确的格式吗?感谢您对 SIFT 速度的提醒,VLFeat 密集 sift 的实现似乎非常快,所以我想我将不得不这样做。
  • 此外,目标是将其用于场景/对象分类,密集筛选似乎比“普通”筛选更适合。
  • 我刚刚在stackoverflow.com/a/33702400/2156909 举了一个例子回答了这个问题,如果它仍然感兴趣的话。
【解决方案3】:

尽管 OpenCV 方式是标准,但它对我来说太慢了。为此,我使用了 pyvlfeat,它基本上是 python 与 VL-FEAT 的绑定。这些函数的语法与 Matlab 函数相似

【讨论】:

    猜你喜欢
    • 2016-01-12
    • 2018-07-01
    • 2011-10-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-01-02
    • 2020-05-20
    • 2021-07-21
    相关资源
    最近更新 更多