【问题标题】:optimizing harris corner detector优化哈里斯角检测器
【发布时间】:2014-12-14 17:44:33
【问题描述】:

我正在尝试优化我的 Harris 角点检测器,以使其足够快,以进行最终将用于 SLAM 应用程序的实时特征提取。

传统的哈里斯角检测器遵循以下步骤:

  1. 使用图像卷积核(k_dxk_dy)计算图像导数(梯度)Ix 和 Iy。
  2. 计算二阶导数 Ixx = Ix^2、Iyy = Iy^2 和 Ixy = Ix*Iy。
  3. 使用高斯核 (k_gaussian) 过滤步骤 2 中的三个二阶导数。
  4. 使用文献中所述的公式计算 Harris 响应。

到目前为止一切顺利。我已经实施了上述步骤并有一个工作程序。但是我们知道卷积是一个交换代数,这意味着:

  1. f#g=g#f
  2. f#(g#h)=(f#g)#h
  3. f # (g + h) = (f # g) + (f # h)
  4. 常数 * (f # g) = (常数 * f) # g

其中 (#) 是卷积运算。

所以本质上我们可以组合各种内核以减少计算时间。
我希望利用这一点将步骤(1)中使用的图像梯度内核与步骤(3)中使用的高斯内核相结合,以减少计算时间。不幸的是,步骤 (2) 阻止我这样做,因为:
[(IM # k_dx)^2] # k_gaussian =! (IM # k_dx # k_gaussian)^2

其中 IM 是图像。所以这两个内核不能合并。

我的问题:有没有办法做到这一点,还是根本不可能?如果不可能,那么有没有办法计算出近似真实答案的组合内核。即使它的近似值很差,降低计算成本也可能是值得的。

如果您想知道,我已经在使用 CUDA 在 GPU 上执行图像卷积,并且角点检测器已经相当快了。但我需要进一步改进它,以便为剩余的 SLAM 算法分配更大的时间范围。

【问题讨论】:

  • 已经有了很好的答案。我想到了两件事:(a) 选择一个针对 GPU/CUDA 优化的特征检测器。 (b) 过早优化。如果拐角检测器很快,如果你将速度加倍,你将获得多少?听起来它可能会从 5% 的时间变为 2.5% 的时间......

标签: algorithm computer-vision convolution corner-detection


【解决方案1】:

使用卷积的内核直接组合是不可能的。卷积找不到 Ixx = Ix^2、Iyy = Iy^2 和 Ixy = Ix*Iy(它不是线性的)。

一些优化技巧可以在“LOCOCO: LOW COMPLEXITY CORNER DETECTOR”中找到

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-12-20
    • 2016-03-16
    • 2020-04-15
    • 2011-09-08
    • 2020-10-14
    • 2020-10-15
    • 1970-01-01
    相关资源
    最近更新 更多