私は、リアルタイムの画像処理のためにJavaでシンプルな(または少なくともそう考えていた)デスクトップアプリケーションを開発しています。Java Media Framework (JMF) を使用してビデオ フレームにアクセスすることにしました。私は PAL カメラを持っており、デジタル化には EasyCAP ビデオ コンバーターを使用しています。このデバイスは、私の Windows マシンでは VFW デバイスとして表示され、YUV および 24 ビット RGB 形式の取得が可能です (32 ビットは利用できません)。
私はすでにフレームワークの基本を理解しました。私はメディアデータの制御にjavax.media.Processorを使用していますが、最初は、さらにレンダリングするためにグレースケールコーデック ( javax.media.Codecを実装) を追加したいと考えていました。コーデックでは、個々のフレームにjavax.media.Bufferオブジェクトとしてアクセスできます。
Javaでグレースケール変換を行う最速の方法は何ですか? 同じフレームワーク/メソッドを使用してさらに変換を簡単に実行できるようにしたいので、JAI などの標準に固執したいと思います。
今まで以下のことを考えていました。
コーデック チェーンの先頭にコーデックを追加して、24 ビット RGB を 32 ビット RGB に変換します。java.nio.ByteBuffer を使用して byte[] を int[] ピクセル配列にキャストし、 javax.awt.imageフィルターでさらに処理するよりも。私はすでにcom.sun.media.codec.video.colorspace.RGBConverterを使用してそれを達成しようとしましたが、成功しませんでした。
誰かがすでにそれを行っていることを願っています。
全体的なアプリケーション アーキテクチャに関する提案もありがたく思います。私の一般的な目標は、オプティカル フロー アルゴリズムを Java で実装して、視覚入力のみを使用してカメラの姿勢をリアルタイムで推定できるようにすることです。