Java RGB到YCbCr的转换公式会产生错误的结果

时间:2018-12-13 17:15:11

标签: java colors formula rgb color-space

我正在尝试将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;
            } 

我用了教授给我的公式。

0 个答案:

没有答案