Я делаю обработку изображения, которая требует преобразования растрового изображения RGB в цветовое пространство YCbCr. Я получил значение RGB для каждого пикселя и применил к нему матрицу преобразования.
public void convertRGB (View v) {
if (imageLoaded) {
int width = inputBM.getWidth();
int height = inputBM.getHeight();
int pixel;
int alpha, red, green, blue;
int Y,Cb,Cr;
outputBM = Bitmap.createBitmap(width, height, inputBM.getConfig());
for (int x = 0; x < width; x++) {
for (int y = 0; y < height; y++) {
pixel = inputBM.getPixel(x, y);
alpha = Color.alpha(pixel);
red = Color.red(pixel);
green = Color.green(pixel);
blue = Color.blue(pixel);
Y = (int) (0.299 * red + 0.587 * green + 0.114 * blue);
Cb = (int) (128-0.169 * red-0.331 * green + 0.500 * blue);
Cr = (int) (128+0.500 * red - 0.419 * green - 0.081 * blue);
int p = (Y << 24) | (Cb << 16) | (Cr<<8);
outputBM.setPixel(x,y,p);
}
}
comImgView.setImageBitmap(outputBM);
}
}
Проблема в том, что у него выходной цвет отличается от исходного. Я пытался использовать BufferedImage, но он не работает в Android
Оригинал:
![Original](https://i.stack.imgur.com/NRk4q.png)
После преобразования:
![After Convert](https://i.stack.imgur.com/htkoi.png)
Могу ли я узнать, как правильно обрабатывать изображение YCbCr в Android Java.