Int 配列、Argb32 画像が与えられた場合、どうすればこれを固有行列に最適な方法でロードできますか?
目標は、小さな画像処理ライブラリを作成することです。最初の部分として、RGB からグレースケールに変換したいと思います。
メモリをコピーせずに int[] を 3 つの固有行列にロードする方法はありますか?
(固有値を参照する場合、その線形代数ライブラリ)。
Int 配列、Argb32 画像が与えられた場合、どうすればこれを固有行列に最適な方法でロードできますか?
目標は、小さな画像処理ライブラリを作成することです。最初の部分として、RGB からグレースケールに変換したいと思います。
メモリをコピーせずに int[] を 3 つの固有行列にロードする方法はありますか?
(固有値を参照する場合、その線形代数ライブラリ)。
はい、適切な内部ストライドで Map<> クラスを使用します。次に例を示します。
unsigned char* data = ...;
int w, h; // the width and height
typedef Map<Matrix<unsigned char,Dynamic,Dynamic>, 0, InnerStride<4> > Slide;
Slice red(data, w, h), green(data+1, w, h), blue(data+2, w, h);
次に、グレー レベルの浮動小数点バージョンを作成するなど、それらを使って遊ぶことができます。
MatrixXf gray = (red.cast<float>() * 11 + green.cast<float>() * 16 + blue.cast<float>() * 5)/(32.*255.);