私は、次のような特徴があるComericallyオープンソースでJavaライブラリを探しています: 低レベルのピクセル操作のために商業的にオープンソース/フリーのJava画像処理ライブラリとしては最高のものは何ですか?
コンボリューションは
ハフ変換
はグレースケール
に変換し最も重要なこと:が簡単にRGBに変換int/char/short [] [] [3](RGB値ごとに1 2D配列)
私は、次のような特徴があるComericallyオープンソースでJavaライブラリを探しています: 低レベルのピクセル操作のために商業的にオープンソース/フリーのJava画像処理ライブラリとしては最高のものは何ですか?
コンボリューションは
ハフ変換
はグレースケール
に変換し最も重要なこと:が簡単にRGBに変換int/char/short [] [] [3](RGB値ごとに1 2D配列)
- コメントに反応して編集 -
あなたは信号処理を理解することができるが、画像への信号処理のアプリケーション、または画像処理はあなたの場合に注意を払うべきものですシグナルの処理をの画像に無駄に(ホイールを再構成する)方法で活用する予定です。
2D APIを使用することで、「スクラッチから描画する」ことにより、約4行でグレースケールの色空間変換が実行されます。支払うにはあまりにも重い値段ではない。ページから175
public static Color coverToGrayscale(Color color) {
ColorSpace graySpace = ColorSpace.getInstance(ColorSpace.CS_GRAY);
float[] gray = color.getColorComponents(graySpace, null);
return new Color(graySpace, gray, 1.0f);
}
たたみ込みは、たたみ込み運動は、ページ206-208の3×3のブラーカーネルを実証章10で処理されます。フレームワークは任意の種類の畳み込みに使用できます。
ヒュートランスフォームは、一般的な画像処理ライブラリでは検出されません。エッジ検出/オブジェクト検出ライブラリを見てください。 Fernandes/Oliveiraスタイルのアルゴリズムを移植/変更する場合は、2D APIのカーネルエンジンを活用して、変換結果を表す画像をレンダリングすることもできます。
ピクセルデータを配列として取得することは奇妙な要件です。すでに配列形式です。
もう一度この本をお勧めします。一週間読んでください。低レベルの信号処理の概念を使用して「やりなおしながら学びましょう」アプローチを試みると、文字通り数週間のプログラミング時間を節約できます。つまり、カーネルエンジンの詳細に到達すると、信号処理に関する知識がスペードで払い戻されます。
- オリジナルのポストは、以下 -
この質問には2つの側面があるようです。一つは低レベルの画像操作のためのオープンソースのJava APIに関するもので、もう一つは低レベルの画像操作(カラーモデルなど)に関するより一般的なドキュメントです。
Jonathan Knudsenの "Java 2D Graphics"のコピーを入手することをお勧めします。これは、Java 2D以外の構文(スレッドの安全な方法でウィンドウを起動しない例は、描画サブシステムに古いものがチェーン化されている)について話したときに少し古くなっています。しかし、それは変更されていない実際の2Dグラフィックスシステムの良い学習基準です。
この本では、詳細なカラーモデル、およびその他の低レベルのピクセル関連項目(フォントヒント、アンチエイリアス、変換など)に入ります。それは非常に貴重なツールになる可能性があります。
2D APIは、Java標準ライブラリの一部です。 「下位」の画像処理ライブラリは必要ありませんが、必要に応じて、ライブラリをその上に置いて(一般的な画像処理タスクを単純化する)ことができます。プリミティブを把握したら、以前にレビューしたライブラリの1つで、ニーズを満たすための十分なドキュメントを入手できます。
Javaにはハフのような変換が組み込まれていません。私は一からそれを書いて、ピクセルデータが必要なことをする必要があります。 – Adam
@Adam、編集済みの投稿を見てください。本の古いコピーを見つけてください。既存のフレームワークを活用することは貴重な時間です。 –
可能な複製http://stackoverflow.com/questions/2407113/open-source-image-processing-lib-in-java –
私はそれらを見てきました。私は本当によく文書化されているものを探しています。 私が見ているものの多くは、Javaに新しい人にとっては明確ではない、多くの前提文書を必要とします。 BufferedImageを使用するのは、カラーモデルとは何かを理解する必要があります。カラーモデルが理解していることを理解するなど....などです。 – Adam
残念ながら、これらのことが何であるかを知ること以外に選択肢はありません。 Javaに新しいものではない人でも、これらの画像処理の基礎を理解していなければ、画像処理を行うのは難しいでしょう。その知識ドメインは異なるので、Javaを使用するかどうかにかかわらず、異なるスキルセットが必要になります。これを行うには、画像処理ドメインとJavaドメインの両方を学習する必要があります。 –