opencv スティッチャー クラスで 2 つ以上の画像をステッチするときに計算時間を短縮する可能性はありますか? ステッチしたい画像が増えると、指数関数的に大きくなることに気付きました (なぜですか?)。画像をステッチする順序が定義されているため、opencv スティッチャーがすべての画像を他のすべての画像とステッチしようとする可能性はありますか? したがって、これは計算時間を短縮する方法になるかもしれません。私の言いたいことを理解していただければ幸いです。私の問題を解決するためのアドバイスをいただけないでしょうか。
2 に答える
利用可能な GPU はありますか?
処理時間を大幅に短縮する簡単な方法は、可能であれば GPU を使用することです。Opencv は毎日の作業を楽にしてくれます。ドキュメントを見ると、スティッチャー用の GP フラグがあることがわかります。
その要素で遊びたい:
--try_gpu (yes|no) GPU の使用を試みます。デフォルト値は「いいえ」です。すべてのデフォルト値は CPU モード用です。
これを機能させるには、OpenCV を GPU サポートでコンパイルする必要があることに注意してください。OPencv での GPU サポートの詳細については、こちらを参照してください。
GPU を使用できない場合は、@perfanoff が言ったように、画像をダウンサンプリングすることは、99% の確率で画像処理の良いアイデアです。
OpenCV の Stitcher クラスは、すべての入力画像を他のすべての画像と照合するため、指数関数的なランタイムになります。実際、OpenCV が提供するサンプル コードを変更して、最初の画像を 2 番目の画像に、2 番目の画像を 3 番目の画像に、というように一致させることができます。これにより、多かれ少なかれ線形のランタイムが得られます。
ランタイムをさらに短縮するには、入力画像のサイズ、特徴の種類 (sift と surf は低速ですが、他よりも堅牢です)、およびバンドル調整のしきい値を減らすことができます。