Я пытаюсь преобразовать изображение RGB в YCbCr вручную, но результаты почему-то отключены - я сравнил их с результатами из http://www.picturetopeople.org/color_converter.html,, где вы можете ввести значения RGB, и он преобразует их в соответствующий YCbCrиз них.и они, кажется, дают случайные цвета.
Например:
R: 71 G: 78 B: 36
приводит к:
Y: 71 Cb: 108 Cr: 127
в то время как должно быть
Y: 77 Cb: 111 Cr: 128
Иногда разница также намного больше.Это моя функция:
public YCbCr[][] RGBtoYCbCr(BufferedImage img){
YCbCr[][] ycrcbimg = new YCbCr[img.getWidth()][img.getHeight()];
for(int i = 0; i < img.getWidth(); i++){
for(int j = 0; j < img.getHeight(); j++){
Color pixel = new Color(img.getRGB(i,j));
int r = pixel.getRed();
int g = pixel.getGreen();
int b = pixel.getBlue();
int y = (int)(0+ (0.299 * r) + (0.587 * g) + (0.114 * b));
int cb = (int)(128-(0.168736 * r) - (0.331264 * g) + (0.50000 * b));
int cr = (int)(128+ (0.50000 * r) - (0.418688 * g) - (0.081312 * b));
ycrcbimg[i][j] = new YCbCr(y,cb,cr);
}
}
return ycrcbimg;
}
Я использовал формулу, которую дал мне мой профессор.