RGB 与 (RGB转 YCbCr再转为 RGB)的图像 不可逆,能够从 矩阵的逆运算看出来。
附上 matlab 代码:
clc,clear;
Source=imread('1.jpg');%读入原始RGB图像 figure(1);
subplot(1,2,1);
imshow(Source):title('original image');%显示图像
[r c d]=size(Source);%计算图像大小
%------计算红色分量并显示分解图------%
R(:,:,1)=Source(:,:,1);
R(:,:,2)=zeros(r,c);
R(:,:,3)=zeros(r,c);
R=uint8(R);
whos;
figure(2);
subplot(1,3,1);
imshow(R)
title('Red Component');
%-------计算绿色分量并显示分解图-------%
G(:,:,2)=Source(:,:,2);
G(:,:,1)=zeros(r,c);
G(:,:,3)=zeros(r,c);
G=uint8(G);
figure(2);
subplot(1,3,2);
imshow(G)
title('Green Component');
%--------计算蓝色分量并显示分解图-------%
B(:,:,3)=Source(:,:,3);
B(:,:,1)=zeros(r,c);
B(:,:,2)=zeros(r,c);
B=uint8(B);
figure(2);
subplot(1,3,3)
imshow(B)
title('Blue Component');
%------------合成-------------%
Comp(:,:,1)=R(:,:,1);
Comp(:,:,2)=G(:,:,2);
Comp(:,:,3)=B(:,:,3);
figure(5);
subplot(1,2,2);
imshow(Comp):title('composition image');
Y=0.213*R+0.715*G+0.072*B;
Cb=0.511*B-0.117*R-0.394*G+128;
Cr=0.511*R-0.464*G-0.047*B+128;
%red=Y+1.402*(Cr-128);
%green=Y-0.34414*(Cb-128)-0.71414*(Cr-128);
%blue=Y+1.772*(Cb-128);
red = 1.164*(Y-16)+1.793*(Cr-128);
green = 1.164*(Y-16)-0.534*(Cr-128)-0.213*(Cb-128);
blue =1.164*(Y-16)+2.115*(Cb-128);
Comp2(:,:,1)=red(:,:,1);
Comp2(:,:,2)=green(:,:,2);
Comp2(:,:,3)=blue(:,:,3);
Comp5(:,:,1)=Y(:,:,1);
Comp5(:,:,2)=Cb(:,:,2);
Comp5(:,:,3)=Cr(:,:,3);
figure(5);imshow(Comp5);title('显示11YCBcr');
figure(1);subplot(1,2,2);imshow(Comp2);title('RGB转换为YCrCb后又转换为RGB的图像');
RD=R(:,:,1)-red(:,:,1);
GD=G(:,:,2)-green(:,:,2);
BD=B(:,:,3)-blue(:,:,3);
figure(4);subplot(1,3,1);imshow(RD);title('红色分量差异');
subplot(1,3,2);imshow(GD);title('绿色分量差异');
subplot(1,3,3);imshow(BD);title('蓝色分量差异');