1. 程式人生 > >RGB 與 (RGB轉 YCbCr再轉為 RGB)的圖像

RGB 與 (RGB轉 YCbCr再轉為 RGB)的圖像

sdn ati red b+ component matlab trac ews div

? ? ? ?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(‘藍色分量差異‘);

技術分享圖片技術分享圖片

RGB 與 (RGB轉 YCbCr再轉為 RGB)的圖像