java RGB颜色空间到YCrCb颜色空间转换

时间:2013-10-27 18:35:42

标签: java image image-processing color-codes

我需要有关色彩空间变化的帮助

我使用转换计算了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,我应该遵循什么。

1 个答案:

答案 0 :(得分:1)

您可以使用java中的bufferedImage类在YCbCr空间中显示图像。为此,创建一个与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"));