我用Forstner算法找特征点,每个像素点对应一个线程,计算各点的兴趣值之后,
需要在局部窗口(比如aa)里取极大值,串行程序是以步长为a的循环,计算aa窗口内的极值
可是核函数是每个像素一个线程,它每个点都算了一遍,我怎么限制局部窗口呢
给些建议好吗?
路过,帮顶~
再写一个kernel,放在你前面计算每个像素点兴趣值后面,block大小设置成为a*a(a最好为32倍数,可以尽量避免warp内分支),然后用reduction来寻找极大值(最简单的方法就是类似于CUDA加法的,reduction后最大值在第一个元素位置),不过如果直接在原数据区做reduction会导致数据被更改,所以还需要开辟出一个内存区域,将窗口覆盖的数据copy过去,再调用kernel做reduction