在算法中,我们在UInt16图像上使用具有257x257大窗口的中值滤波器。我的任务是在GPU上使用OpenCL实现该算法。
事实上,我不仅需要中位数,还需要0.001,0.02和0.999分位数。
显而易见的方法是在每个输出像素上运行一个OpenCL内核,其中内核将窗口中的所有像素从输入图像加载到本地内存,然后对这些值进行排序,最后计算分位数。
现在问题是窗口大小为257x257,这种方法需要至少132098字节的本地内存。但是本地记忆非常有限。我的Quadro K4000只有49152个字节。
那么在GPU上实现这样的中值滤波器会有什么好方法呢?
CUDA的解决方案也是可以接受的。但我猜基本问题是一样的。