为什么YCbCr频道保存为jpeg图像,像素'价值变化?

时间:2015-01-14 02:03:10

标签: matlab image-processing rgb

我在matlab R2013a中使用函数rgb2ycbcr将RGB更改为YCBCR颜色空间。并且我将YCBCR的每个通道保存为jpeg图像。然后我读取了jpeg图像,例如CB通道,但我发现jpeg图像中的像素值与保存之前的通道CB不同。为什么会这样?这是我的代码:

I = imread('pic.jpg');  % // 'pic.jpg' is an unin8 rgb image
YCBCR = rgb2ycbcr(I);
Y = YCBCR(:,:,1);
CB = YCBCR(:,:,2);
CR = YCBCR(:,:,3);

imwrite(Y,'F:\CASIA V1.0\Y.jpg','jpg');
imwrite(CB,'F:\CASIA V1.0\CB.jpg','jpg');
imwrite(CR,'F:\CASIA V1.0\CR.jpg','jpg');

然后我读了CB.jpg,我发现像素值与YCBCR(:,:,2)中的像素值不同。我的代码有什么问题吗?如果有人能回答我的问题,我将非常感激。

1 个答案:

答案 0 :(得分:2)

当您使用imwrite将图像存储为jpg时,它会在将图像保存到文件之前对图像运行jpeg压缩。默认情况下,压缩质量设置为原始的75%。我猜这是一些像素值从未压缩图像变为压缩图像的原因。

相关问题