我正在使用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操作吗?
答案 0 :(得分:1)
你问题的范围几乎没有限制。
首先,您是否测量过应用程序的性能以检测实际的瓶颈?我的猜测是霍夫变换,但谁知道你的代码还在做什么。现在,如果Hough变换是缓慢的,并假设OpenCV快速实现它,那么这就是我告诉你问题是有问题的原因。当您决定增加已经大量的图像时,更改为更好的实现并没有多大帮助,问题在于方法本身。
你真的需要用霍夫吗?也许你可以使用形态学运算符来实现类似/更好的东西?这些图像来自一些常见域吗?你能举出一些例子吗?等等。