Формула преобразования Java RGB в YCbCr дает неверные результаты - PullRequest
0 голосов
/ 13 декабря 2018

Я пытаюсь преобразовать изображение 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;
            } 

Я использовал формулу, которую дал мне мой профессор.

...