画像処理入門 > 初級編 > ビット変換(8bit⇔16bitなど)

ビット変換(8bit⇔16bitなど)


ビット変換(8bit⇔16bitなど)
8bitから16bitへ、16bitから8bitへ変換できます。
10bit、12bitにも対応しています。
10bit、12bitの場合は、データ型は16bitの型で定義し、
10bitであれば0〜1023、12bitであれば0〜4095の値を使います。

サンプルプログラム
プログラムはこちら void bitConvert(void *out, int outBit, void *in, int inHeight, int inWidth, int inChannel, int inBit){ int i, j; unsigned short tmp; double coefficient; unsigned short max; unsigned char *tmpAd8; unsigned short *tmpAd16; // 係数 coefficient = pow(2.0, (outBit - inBit)); // 最大値 max = (unsigned short)(pow(2.0, outBit) - 1); for(i = 0; i < inHeight; ++i){ for(j = 0; j < inWidth; ++j){ switch(inBit){ case 8: tmp = (unsigned short)(*((unsigned char *)in + i * inWidth + j) * coefficient); break; case 10: case 12: case 16: tmp = (unsigned short)(*((unsigned short *)in + i * inWidth + j) * coefficient); break; } // max超えることはないが、念のため if(tmp > max){ tmp = max; } switch(outBit){ case 8: *((unsigned char *)out + i * inWidth + j) = tmp; break; case 10: case 12: case 16: *((unsigned short *)out + i * inWidth + j) = tmp; break; } } } }