私はAndroidでの画像処理の初心者です。私は、画像からカラーチャンネルを分離し、それらのカラーチャンネル上で計算を実行する必要があるアプリケーションを構築しようとしています。AndroidのJPEG画像から近赤外線(NIR)チャンネルを抽出する
イメージからRGBチャンネルを正常に抽出しました。私はこれらのチュートリアルで指定されたコードの断片を使用しています:https://xjaphx.wordpress.com/2011/06/21/image-processing-filter-color-channels/ここ
は、コード断片である:
public static Bitmap doColorFilter(Bitmap src, double red, double green, double blue) {
int width = src.getWidth();
int height = src.getHeight();
Bitmap bmOut = Bitmap.createBitmap(width, height, src.getConfig());
int A, R, G, B;
int pixel;
for(int x = 0; x < width; ++x) {
for(int y = 0; y < height; ++y) {
pixel = src.getPixel(x, y);
A = Color.alpha(pixel);
R = (int)(Color.red(pixel) * red);
G = (int)(Color.green(pixel) * green);
B = (int)(Color.blue(pixel) * blue);
bmOut.setPixel(x, y, Color.argb(A, R, G, B));
}
}
return bmOut;
}
}
しかし、私は、画像からNIRチャンネルを抽出する方法を考え出すことができません。 NDIR(Normalized Difference Vegetation Index)インジケータを分析のために画像に適用する必要があるため、このNIRチャンネルを抽出するという私の目的があります。
また、このコードでは、複数のforループを実行することによってbrute-forceアプローチが使用されています。したがって、プログラムは非常に複雑になり、-O(width * height)になります。これらの別々のチャネルを計算するための効率的な方法は何でしょうか?画像のプロパティの
スクリーンショット:
親切にこの問題で私を助けて。
NIRチャネルなどはありません。 – Piglet
NIRはマルチスペクトル画像のスペクトルバンドです。私はNDVIのためにこの式を適用する必要があります:(NIR - 赤)/(NIR +赤)。そこで私は、画像からNIRを抽出することもできると仮定しました。私は間違った道を歩いていますか? @ピググラム –
このマルチスペクトル画像はどのような形式ですか?どうやってそれを作りますか? – Piglet