最高のJava画像処理ライブラリ/アプローチは何ですか? [閉まっている]
-
03-07-2019 - |
質問
JAIメディアAPIとImageMagickの両方を使用していますか
ImageMagickにはスケーラビリティの問題がいくつかあり、JNIベースのJMagickも魅力的ではありません。 JAIは、ImageMagickと比較して、サイズ変更操作を行うと品質が低下します。
ネイティブJavaであり、高品質の結果を提供するオープンソースまたは商用の優れたツールを知っている人はいますか?
解決
ImageJ があります。
世界最速の純粋なJavaイメージ 処理プログラム
他のアプリケーションのライブラリとして使用できます。アーキテクチャは素晴らしいものではありませんが、基本的な画像処理タスクを実行します。
他のヒント
この質問はかなり古いものですが、新しいソフトウェアが登場すると、人々にとって興味深いプロジェクトへの新しいリンクを取得するのに役立ちます。
imgscalr は、純粋なJavaイメージのサイズ変更(およびパディング、トリミング、回転、明るくするなどの単純な操作)です。 / dimmingなど)非常に使いやすいライブラリ-単一のクラスは、画像を渡して結果を取得する static メソッドとして定義された単純なグラフィック操作のセットで構成されています。
ライブラリを使用する最も基本的な例は次のようになります。
BufferedImage thumbnail = Scalr.resize(image, 150);
また、いくつかの品質調整などを使用して画像サムネイルを生成するより一般的な使用法は次のようになります。
import static org.imgscalr.Scalr.*;
public static BufferedImage createThumbnail(BufferedImage img) {
// Create quickly, then smooth and brighten it.
img = resize(img, Method.SPEED, 125, OP_ANTIALIAS, OP_BRIGHTER);
// Let's add a little border before we return result.
return pad(img, 4);
}
すべての画像処理操作は、未加工のJava2Dパイプライン(主要なプラットフォームではハードウェアアクセラレーション)を使用し、コード内のライブラリ競合のようなJNIを介して呼び出す苦痛をもたらしません。
imgscalrは、大規模なプロダクションでもかなりの数の場所で展開されています。AsyncScalrクラスを含めると、サーバー側の画像処理に最適なドロップインになります。
速度と品質のトレードオフに使用できる画質には、GIMPのLancoz3実装よりも優れたスケーリングされた結果を提供する最高のULTRA_QUALITYモードで多数の微調整があります。
別の適切な代替手段: Marvin
私はJavaの男ではありませんが、OpenCVは私のニーズに最適です。自分に合うかどうかわかりません。ここにJavaポートがあります、私は思う: http://docs.opencv.org/2.4/doc/ tutorials / introduction / desktop_java / java_dev_intro.html
処理は新しいですが、非常に優れています。
Catalano Framework を使用してみてください。
キーポイント:
- AForge.NET/Accord.NETのようなアーキテクチャ。
- 同じコード(デスクトップとAndroid)で両方の環境で実行します。
- 複数のフィルターが並行して含まれています。
- 開発は全面的に行われています。
カタラーノフレームワークは、JavaおよびAndroid向けの科学計算のためのフレームワークです。プロジェクトは、.ForのAForge.NETおよびAccord.NETフレームワークの多くの機能の最初の移植として開始されましたが、それらのプロジェクト間で共有されるより高度な機能とともに着実に成長しています。
例:
FastBitmap fb = new FastBitmap(bitmap);
Grayscale g = new Grayscale();
g.applyInPlace(fb);
Threshold t = new Threshold(120);
t.applyInPlace(fb);
bitmap = fb.toBitmap();
//Show the result
imoの最良のアプローチは、 GraphicsMagick Image Processing System と im4java をJavaのコマンドラインインターフェイスとして使用します。
GraphicsMagickには多くの利点がありますが、すべての利点があります:
- GMは何十億もの処理に使用されます 世界最大の写真のファイル サイト(FlickrやEtsyなど)。
http://im4java.sourceforge.net/ -Linuxで新しいforkをフォークしている場合プロセスは高価ではありません。
商用ツールの場合は、Snowboundを試してください。
それらの経験は多少古くなっていますが、Java Imaging APIはJAIよりもはるかに使いやすく、はるかに高速であることがわかりました。
彼らの顧客サポートとコードサンプルも非常に良かった。
RoboRealmビジョンソフトウェアリストは JHLabs および NeatVision 他の多くの非Javaベースのライブラリ。
「最高」だとは言えません。ライブラリですが、これを試すことができると思います: http://algart.net/java/AlgART/ これは、一般化された「スマート」をサポートするオープンソースのJavaライブラリです。 2D、3D、および多次元画像処理およびその他のアルゴリズムを含む、異なるタイプの要素(1ビットから64ビットの浮動小数点)を持つ配列および行列、配列および行列を操作します。 残念ながら、現時点では十分なデモとサンプルで構成されていませんが、一方で、多くのJavaDocが含まれています。それは数年間商用ソフトウェア(SIMAGIS)の基盤にありましたが、現在はオープンソースです。