Преобразование цветового пространства java RGB в YCrCb

Пожалуйста, мне нужна помощь относительно изменения цветового пространства

Я вычислил значения Y, Cr, Cb, используя преобразование

            int Y = (int)(0.299*r+0.587*g+0.114*b);
            int Cb=(int)(128-0.169*r-0.331*g+0.500*b);
            int Cr =(int)(128+0.500*r-0.419*g-0.081*b);

Теперь мне нужно сохранить новое изображение с новым цветовым пространством, например, YCrCb, а не RGB, чему я должен следовать.


person Rajni Kant Sharma    schedule 27.10.2013    source источник
comment
Мне нужно изображение в формате jpg   -  person Rajni Kant Sharma    schedule 27.10.2013


Ответы (1)


Вы можете отобразить изображение в пространстве YCbCr, используя класс bufferedImage в java. Для этого создайте пустое буферизованное изображение такого же размера, как ваше изображение RGB, и установите все значения пикселей с помощью метода setRGB, как показано ниже.

BufferedImage ycb =  new BufferedImage(w,h,BufferedImage.TYPE_INT_RGB);

int val = (y<<16) | (cb<<8) | cr;
    ycb.setRGB(i,j,val);

ImageIO.write(ycb,"png", new File("E:\\Rose\\ycbcr\\ycbcr.png"));
person Rosemary    schedule 27.02.2015