我正在构建一个实时闭环图像处理应用程序。我使用cvSmooth()
:
cvSmooth(Obj->ImgOrig,Obj->ImgSmooth,CV_GAUSSIAN,Params->GaussSize*2+1);
这最终成为我整个代码中最慢的操作。我希望能够在进行阈值处理和进一步处理图像之前,根据用户输入将图像模糊到不同的数量。有更快的方法吗?
除了高斯之外,CvSmooth
有other options个。有理由相信他们会表现得更好吗?
我正在运行安装了Intel Primitives的OpenCV 1.1。
答案 0 :(得分:1)
我不认为你能做的太多了。
首先,是的,CV_BLUR而不是CV_GAUSSIAN肯定会跑得更快。当使用高斯平滑时,使用高斯权重计算加权平均值,但是当使用CV_BLUR时,半径内的所有像素被赋予相同的权重。这是一个更简单的操作,因此可以比高斯模糊更快地完成。进行高斯模糊的最快方法是使用卷积,这在计算上更加密集。
如果不是太麻烦,也可以试试OpenCV 2.0。它使用SSE和OpenMP,它们都支持并行处理。虽然它会更快但不确定。