RGBimage = imread('barns_grand_tetons.jpg');
[height,width,depth]=size(RGBimage);
YCbCrimage=RGB2YCbCr(RGBimage); % If you don't have the right version/toolkit this function
% might not be available. Luckily, it's easy to implement
% ourselves. Drop me (Mike1024) a message and I'll send you
% my code to do it.
% Newer versions of matlab need outputimage=zeros(height*4,width,depth,'uint8');
outputimage=uint8(zeros(height*4,width,depth));
for w=1:width,
for h=1:height,
outputimage(h,w,1) = YCbCrimage(h,w,1); % Copy Y, Cb and Cr for normal image
outputimage(h,w,2) = YCbCrimage(h,w,2);
outputimage(h,w,3) = YCbCrimage(h,w,3);
outputimage(h+height,w,1) = YCbCrimage(h,w,1); % Copy Y only for first component
outputimage(h+height,w,2) = 128;
outputimage(h+height,w,3) = 128;
outputimage(h+(2*height),w,2) = YCbCrimage(h,w,2); % Cb only for second component
outputimage(h+(2*height),w,1) = 128;
outputimage(h+(2*height),w,3) = 128;
outputimage(h+(3*height),w,3) = YCbCrimage(h,w,3); % Cr only for third component
outputimage(h+(3*height),w,1) = 128;
outputimage(h+(3*height),w,2) = 128;
end
end
image(YCbCr2RGB(outputimage));
imwrite(YCbCr2RGB(outputimage),'YCbCr_separation.jpg','jpeg');