加速OpenCV

时间:2012-11-28 09:45:00

标签: c++ image opencv gpu tbb

我正在使用OpenCV 2.4(C ++)在灰度图像上进行线条查找。这涉及一些基本的图像处理步骤,如模糊,阈值,Canny边缘检测器,梯度滤波器或Hough变换。我必须在数千张图像上应用线寻找算法。

考虑到大量图像,有没有办法加速计算?

以下其中一项是否提供了帮助?英特尔TBB,IPP或OpenCV GPU? 我听说OpenCV GPU可以加速计算,但数据传输速度很慢。那么使用GPU可能不是正确的选择吗?

谢谢!

编辑:

使用TBB的parallel_for来加速图像处理有什么意义吗?如果我像这样使用for循环:

for(int i=0; i<image_location.size();++i)
{
Mat img=imread(image_location[i]);
blur(img...);
threshold(img...);
...
}

我可以使用parallel_for改善性能吗?任何人都可以提供如何使用parallel_for的例子,包括一些opencv操作吗?

1 个答案:

答案 0 :(得分:1)

你问题的范围几乎没有限制。

首先,您是否测量过应用程序的性能以检测实际的瓶颈?我的猜测是霍夫变换,但谁知道你的代码还在做什么。现在,如果Hough变换是缓慢的,并假设OpenCV快速实现它,那么这就是我告诉你问题是有问题的原因。当您决定增加已经大量的图像时,更改为更好的实现并没有多大帮助,问题在于方法本身。

你真的需要用霍夫吗?也许你可以使用形态学运算符来实现类似/更好的东西?这些图像来自一些常见域吗?你能举出一些例子吗?等等。