我正在尝试将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;
}
我用了教授给我的公式。