В компакт-диске Эффорда есть код для квантования изображения в градациях серого:
int n = 8 - numBits;//numBits will be taken as input
float scale = 255.0f / (255 >> n);
byte[] tableData = new byte[256];
for (int i = 0; i < 256; ++i)
tableData[i] = (byte) Math.round(scale*(i >> n));
LookupOp lookup =
new LookupOp(new ByteLookupTable(0, tableData), null);
BufferedImage result = lookup.filter(getSourceImage(), null);
return result;
Я пытаюсь преобразовать этот код в 24-битное цветное изображение.Но не знаете, если я прав?
моя попытка: int n = 24 - numBits;
float scale = 16777216.0f / (16777216 >> n);
byte[] tableData = new byte[16777216];
for (int i = 0; i < 16777216; ++i)
tableData[i] = (byte) Math.round(scale*(i >> n));
LookupOp lookup =
new LookupOp(new ByteLookupTable(0, tableData), null);
result = lookup.filter(img2, null);
//return result;
, и это дает результат в результате до numBits> = 17, если numBits <17, то яполучить полное черное изображение.Я делаю это правильно? </p>
пожалуйста, помогите.Большое спасибо.:)