% This function does the following processing on each block: DCT, quantize DCT, % inverse DCT % This function is called by dct_exp % Yao Wang 4/10/2003 function qimblock=blkdct_quant(imblock,QP) Qmatrix=[16,11,10,16,26,40,51,61; 12,12,14,19,26,58,60,55; 14,13,16,24,40,57,69,56; 14,17,22,29,51,87,80,62; 18,22,37,56,68,109,103,77; 24,35,55,64,81,104,113,92; 49,64,78,87,103,121,120,101; 72,92,95,98,112,100,103,99]; dctblock=dct2(imblock); QM=Qmatrix*QP; qdct=floor((dctblock+QM/2)./QM); iqdct=qdct.*QM; qimblock=round(idct2(iqdct));
function qimg=dct_exp(img,QP) % img=imread(fname); qimg=blkproc(img,[8 8],'blkdct_quant',QP); % figure; % imagesc(qimg),axis image, truesize, axis off; colormap(gray); % title('DCT Domain Quantized Image');