0

该问题类似于在 M x N 图像上应用滑动 2D 窗口最大滤波器。然而,与正常情况相比,滑动窗口不是简单地滑动超过 1 个像素,而是通过 k 像素跳跃。因此,例如,如果 k = 2,则滑动窗口将水平应用于 (0,0)、(2,0)、(4,0)、... 处的像素,同样垂直应用。

对于 1 跳的情况,CUDA NPP(性能原语)库中已经有一个现有的实现。更具体地说,这些函数被称为nppiFilterMax*。但是,我还没有找到更通用的 k-hop 滑动版本。作为一种解决方法,我可以简单地使用 NPP 函数来执行 1-hop filter max 并简单地在相应的位置选择结果,尽管这看起来既浪费又低效。这个问题是否有任何现有的实现或白皮书?

4

1 回答 1

2

那些图像卷积函数通常是为hop == 1. 当 时> 1,不同偏移量之间共享的数据较少,因此性能可能会下降。

对于hop > 1,您可能需要编写自己的内核以获得更好的性能。您可以查看此 CUDA 示例“可分离卷积”以获取更多信息。

http://docs.nvidia.com/cuda/cuda-samples/index.html#cuda-separable-convolution

它附带一份讨论细节的白皮书。幸运的是,最大卷积也是可分离的。您将获得一些关于如何在此任务上编写内核的想法

http://docs.nvidia.com/cuda/samples/3_Imaging/convolutionSeparable/doc/convolutionSeparable.pdf

于 2013-10-27T23:51:48.927 回答