RGB カラーを 8 ビットから 6 ビットに量子化したいと考えています。私は次のようにJavaコードを書きました:
int ind = 0;
for(int y = 0; y < height; y++){
for(int x = 0; x < width; x++){
byte a = 0;
byte r = bytes[ind];
byte g = bytes[ind+height*width];
byte b = bytes[ind+height*width*2];
int pix = 0xff000000 | ((r & 0xff) << 16) | ((g & 0xff) << 8) | (b & 0xff);
img.setRGB(x,y,pix);
ind++;
}
}
次に、次のように変更しました。
int pix = 0xff000000 | ((r & 0xff) << 16) | ((g & 0xff) << 8) | (b & 0xff);
に:
int pix = 0xff000000 | ((r & 0xff) << 12) | ((g & 0xff) << 6) | (b & 0xff);
チャンネルごとにピクセルごとに6ビットを意味すると思うので、私の理解が正しいか間違っているかはわかりません。出力画像は本当に奇妙です。誰かがそれを理解するのを手伝ってくれることを願っています