第5の画像処理技術:グレースケール画像(赤外線画像)がRGBプレビュー画面に変換され、黄斑の解決スポット/問題が表示され

I.背景

あるIRチャート赤外線放射赤外線)、ページに表示する必要が、IR画像フォーマットがGRAY8である、すなわち、8ビットグレースケール

Androidで使用されるビットマップ画像フォーマットが、チャンネルあたり8ビットARGB図グレースケールをオンにする必要がある、ARGB_8888あります。

第二に、問題の現象

トランスコードアイデアは、非常に単純であるintは画素を表している、正確に4×8 = 32ビットです。
次にグレー値が等しい各ビットの値は、透明度は0xFFとすることができます。

   

 Canvas canvas = mCameraView.getHolder().lockCanvas();
    // draw ir
    int[] pixels = new int[mImageWidth * mImageHeight];
    for (int i = 0; i < pixels.length; i++) {
        int gray = iru8[i];
        pixels[i] = (0XFF000000) | (gray << 16) | (gray << 8) | gray;
    }
    Bitmap bitmap = Bitmap.createBitmap(pixels, mImageWidth, mImageHeight, Bitmap.Config.ARGB_8888);
    canvas.drawBitmap(bitmap, mIRMatrix, null);


このプレビューは、次のチャートであるときに問題が発生し、明確なスポットが存在していました。

ここに画像を挿入説明
第三に、この問題は解決され

まず、上記の現象は実際には[i]が、確かコード、INTグレー= iru​​8詳しく見正常でないバイト範囲が127 -128であるため、INTに割り当てられた場合、それは、否定的であれば、このステップは、問題がありますエラーが発生した後、大きな問題は、シフト操作(すべての後に、何のJavaの符号なしはありません)。

次のようにだから我々は変更する必要があります。

   

int gray = iru8[i] & 0xFF;



そして、通常の画面を実行します。

ここに画像を挿入説明
シフト操作に注意を払うために小さな問題、注意を払うには、余分な注意する必要があります。

公開された377元の記事 ウォンの賞賛145 ビュー210 000 +

おすすめ

転載: blog.csdn.net/Windgs_YF/article/details/104610985