私はIntelのC++でいくつかの画像処理ソフトウェアを開発しています。これは、小さな(約1kpx)画像に対してバイキュービック補間アルゴリズムを何度も実行する必要があります。これにはかなりの時間がかかりますが、私はそれをスピードアップすることを目指しています。私が今持っているのは、文献に基づく基本的な実装です。これは、行列の乗算を行わず、補間多項式の一部に事前に計算された式を使用し、最後に固定された、多少改善された(速度に関して)バージョンです。 -行列乗算コードのポイントバージョン(実際には動作が遅くなります)。実装が最適化された外部ライブラリもありますが、それでも私のニーズには遅すぎます。次に考えていたのは:
- 浮動小数点バージョンと固定小数点バージョンの両方で、MMX/SSEストリーム処理を使用したベクトル化
- 畳み込みを使用してフーリエ領域で補間を行う
- OpenCLなどを使用して作業をGPUにシフトする
これらのアプローチのどれが最大のパフォーマンス向上をもたらすことができますか?別のものを提案してもらえますか?ありがとう。