4

私のシステムでは、大きなウィンドウ サイズ (75 ピクセル) の 5 MP 画像の場合、完了までになんと140 ミリ秒 (線形操作の約 20 倍) かかるため、最適化を検討しています。OpenCV gpu モジュールが gpu バージョンを実装していないことに気付いたadaptiveThresholdので、GPU にそのアルゴリズムを自分で実装することを考えていました。

GPU にメモリをロードするためのオーバーヘッドを無視して、大きなウィンドウ サイズ (50px+) と大きな画像 (5 MP+) に基づいて CUDA に適応しきい値アルゴリズムを実装すると、スピードアップを期待できますか?

adaptiveThresholdopencv.org のドキュメント:

http://docs.opencv.org/modules/imgproc/doc/miscellaneous_transformations.html#adaptivethreshold

4

3 に答える 3

3

エリックの答えに基づいて構築:

Npp CUDA ライブラリは adaptThreshold を実装していませんが、非常に簡単な方法で適応しきい値を取得するのに有益なようです (テストしたところ、逸話的に機能します)。

  1. ボックス フィルターを実行しsrc(つまり、すべてのピクセルの平均ウィンドウ値を計算します)、中間イメージに保存しますtmp
  2. の各ピクセルから数値 K を減算します。tmp
  3. srcと の間で 比較関数を実行tmpdstます。終わり。

コードは次のようになります (ここでは K=0、2 番目のステップは省略されています)。

nppiFilterBox_8u_C1R(oDeviceSrc.data(), oDeviceSrc.pitch(),
                                  oDeviceIntermediate.data(), oDeviceDst.pitch(),
                                  oSizeROI, oAdapThreshWindowSize,oAnchor);
nppiCompare_8u_C1R(oDeviceSrc.data(),oDeviceSrc.pitch(),
                   oDeviceDst.data(),oDeviceDst.pitch(),
                   oDeviceResult.data(),oDeviceResult.pitch(),
                   oSizeROI,NPP_CMP_LESS);

また、ウィキペディアは、ボックス フィルターを 3 回続けて適用すると、ガウス フィルターを 97% の精度で近似すると主張しています。

于 2013-10-01T16:21:51.407 に答える