如何才能最好地改善双三次插值算法的执行时间?

neu*_*rte 2 c++ performance interpolation image-processing bicubic

我正在开发一些英特尔的C++图像处理软件,它必须一次又一次地在小(约1kpx)图像上运行双三次插值算法.这需要花费很多时间,我的目标是加快速度.我现在所拥有的是一个基于文献的基本实现,一个稍微改进的(关于速度)版本,它不进行矩阵乘法,而是使用预先计算的插值多项​​式部分和最后一个,固定的矩阵乘法码的点版本(实际上工作得慢).我还有一个带有优化实现的外部库,但它对我的需求来说仍然太慢了.我接下来要考虑的是:

  • 在浮点和定点版本上使用MMX/SSE流处理进行矢量化
  • 使用卷积在傅里叶域中进行插值
  • 使用OpenCL或类似工具将工作转移到GPU上

哪种方法可以获得最大的性能提升?你能建议另一个吗?谢谢.

det*_*zed 5

我认为GPU是要走的路.对于这种类型的硬件来说,这可能是最自然的任务.我将首先研究CUDAOpenCL.像简单的DirectX/OpenGL像素/片段着色器这样的旧技术也可以正常工作.

我找到的一些链接,也许他们可以帮助你: