I am doing some image processing and have found that my code does not quite work, the image will not recombine properly after a DCT is applied. The relevant part of the code is below:
%Clear command window.
clc; %Clear workspace.
clear; %Load the image file, change to Lena, Airplane, or any other 512x512 file.
RGB = imread ('Lena.tiff'); %Display the result of the conversion.
figure, imshow(RGB), title('Original Image') %Convert RGB image to YCbCr Components.
YCbCr = rgb2ycbcr(RGB); %Isolate Y.
Y = YCbCr(:,:,1); %Isolate Cb.
Cb = YCbCr(:,:,2); %Isolate Cr.
Cr= YCbCr(:,:,3); %Perform a 2D DCT operation on Y, Cb, and Cr, in blocks of 8x8 pixels.
YDCT = blkproc(Y,[8 8],@dct2);CbDCT = blkproc(Cb,[8 8],@dct2);CrDCT = blkproc(Cr,[8 8],@dct2); %Perform an inverse DCT operation.
IDCTY = blkproc(YDCT,[8 8],@idct2);IDCTCb = blkproc(CbDCT,[8 8],@idct2);IDCTCr = blkproc(CrDCT,[8 8],@idct2); %Recombine the YCbCr components.
Recombined = cat(3, IDCTY, IDCTCb, IDCTCr); %Convert the recombined YCbCr matrix to RGB.
RecombinedIMG = ycbcr2rgb(Recombined); %Display the recombined image.
figure, imshow(RecombinedIMG), title('Recombined')
Best Answer