画像の (平均) グレースケールを作成しようとしていますが、各ピクセルの値を取得していないようです。平均を集計するときに正しい計算をしていないと思いますが、何が間違っているのかわかりません。
public byte[] changePixelValues(byte blue, byte green, byte red) {
//Convert to greyscale by average
byte avg;
int sum = 0;
sum +=blue;
sum += green;
sum += red;
avg = (byte) (sum / 3);
//System.out.println("avg: " + avg);
byte[] values = new byte[3];
values[0] = avg;
values[1] = avg;
values[2] = avg;
return values;
型変換で見逃したものはありますか?
編集:
入力は次のとおりです。ここで、byte[] データは BufferedImage からの生データであり、この場合は alphaRaster を持っていません。
for (int i = 0; i < data.length; i += 3) {
byte [] newData = changer.changePixelValues(data[i], data[i+1], data[i+2]);
System.arraycopy(newData,0,data,i,3);
}