我正在尝试优化我的Harris角点检测器,使其足够快,以便最终用于SLAM应用程序的实时特征提取。
传统的哈里斯角探测器遵循以下步骤:
到目前为止一切顺利。我已经实施了上述步骤并制定了工作计划。但是我们知道卷积是一个可交换的代数,意思是:
其中(#)是卷积运算。
因此,本质上我们可以组合各种内核以减少计算时间 我希望利用这个优势将步骤(1)中使用的图像梯度内核与步骤(3)中使用的高斯内核相结合,以减少计算时间。不幸的是,第(2)步阻止了我这样做,如: [( IM # k_dx )^ 2]# k_gaussian =! ( IM # k_dx # k_gaussian )^ 2
其中 IM 是图片。所以这两个内核无法组合。
我的问题:有没有办法做到这一点,还是根本不可能?如果不可能,那么有没有办法计算近似真正答案的组合内核。即使它是一个很差的近似值,也可能值得降低计算成本。
如果您想知道,我已经在使用CUDA在GPU上执行我的图像卷积并且角点检测器已经相当快。但我需要进一步改进它,以便为剩余的SLAM算法分配更大的时间片。
答案 0 :(得分:2)
使用卷积的内核的直接组合是不可能的。卷积不能找到Ixx = Ix ^ 2,Iyy = Iy ^ 2和Ixy = Ix * Iy(它不是线性的)。
优化的一些技巧可以在“LOCOCO:低复杂度角探测器”中找到