opencv是否在高斯模糊上使用了某些加速技术(即opencl)?

时间:2019-04-17 17:07:02

标签: opencv opencl neon

我用C ++和霓虹灯实现自己的高斯滤波器。

伪代码:

oneDimensionBlur(src, temp1, width, height)    //implement by C++
transposeMatrix(temp1, temp2, width, height)   //implement by neon
oneDimensionBlur(temp2, temp1, height, width)
transposeMatrix(temp1, dst, height, width)

但是cv :: GaussianBlur()比我的实现快8倍!我几乎对分析结果感到绝望。所以我想问一下,opencv是否在高斯模糊上使用任何加速技术?我尝试跟踪opencv源代码,但失败了。

1 个答案:

答案 0 :(得分:0)

OpenCV可以明确地使用并行技术来加速cv::GaussianBlur。在here中查找其实现。如您所见,该文件中使用OpenCL,IPP或OpenVX至少具有3个并行化的函数版本。

有一些禁用优化的功能,例如setUseOptimizedsetUseOpenCL。有关控制多线程的更多方法,请参见this页面底部的函数。

最后,从源代码构建OpenCV,禁用OpenCL之类的所有功能并在单个线程上运行它(使用setNumThreads)可能更容易。