最速の C/C++ 画像サイズ変更ライブラリ

Intel IPP (Integrated Performance Primitives) (Wiki リンクは Intel のものより優れています...) を見てください。AMD でも動作し、画像のサイズを変更する機能 (バイリニア、最近傍など) があり、Linux と Windows で動作します。

無料ではありませんが (銀行を壊すことはありません)、見つけることができる最速のものです。


VIPSをご覧ください。これは私がこれまでに見つけた中で最も高速で、商用利用は無料です。

https://github.com/libvips/libvips/wiki/Speed-and-memory-use

そのベンチマークでは、Pillow-SIMD の 2 倍、imagemagick の 5 倍、opencv の 6 倍、freeimage の 8 倍などです。メモリ使用量も劇的に少なく、たとえば imagemagick の 10 分の 1 以下です。


@Chris Becke のコメント:

「そのステートメントについて少し考えてみてください。単一の (複雑な) ステップでそれを行うことのどの部分が高速化するのでしょうか? 画像デコード ルーチンは、フィルター ルーチンがそれらをフィルター処理するために、すべてのピクセルをデコードする必要があります。 "

いつもそうであるとは限りません。たとえば、JPEG をデコードするときに、JPEG ライブラリに 1/2、1/4、1/8 サイズの画像 (またはそのようなもの。詳しく調べたのでしばらく時間がかかります) を提供するように依頼できます。 JPEG の仕組みにより、余分な詳細をまったくデコードする必要はありません。完全なデコードとスケーリングよりもはるかに高速です。

(明らかに、小さい画像が希望する正確なサイズでない場合は、後で少し拡大縮小する必要があるかもしれません。)

(評判がないため、この返信はコメントとしてのみ投稿できます。初めてここに何かを投稿しようとしました。誰かがこれまたは同様のものをコメントとして再投稿し、私の回答を削除したい場合は、お気軽に!)