2

I am using OpenCV 2.4 (C++) for line finding on grayscale images. This involves some basic image processing steps like blurring, threshold, Canny edge detector, gradient filter or Hough transformation. I have to apply the line finding algorithm on thousands of images.

Is there a way to speed up the calculation considering the large number of images?

Does one of the following provide help? Intel TBB, IPP or OpenCV GPU? I heard that OpenCV GPU can speed up calculations but data transfer is slowly. So using GPU might not be the right choice here?

Thank You!

EDIT:

Is there any sense in using parallel_for from TBB to speed up image processing? If I use a for loop like this:

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

Can I improve performance by using parallel_for instead? Can anyone provide examples how to use parallel_for including some opencv operations?

4

1 に答える 1

2

あなたの質問の範囲は事実上無制限です。

まず、実際のボトルネックを検出するためにアプリケーションのパフォーマンスを測定しましたか?私の推測ではハフ変換ですが、あなたのコードが他に何をしているのか誰が知っていますか。さて、ハフ変換が遅い部分であり、OpenCVがそれを高速に実装していると仮定すると、これが問題があると私が言う理由です。すでに多数の画像を増やすことにした場合、多少優れた実装に変更してもあまり役に立ちません。問題はアプローチ自体にあります。

本当にハフを使う必要がありますか?多分あなたは形態学的演算子を使って似たような/より良い何かを達成することができますか?いくつかの一般的なドメインからの画像ですか?それらの例を含めてもらえますか?等

于 2012-11-29T01:23:21.310 に答える