1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51
| close all;
I = imread('cameraman.tif');
figure()
subplot(2,2,1)
imshow(I)
title('image original')
I = im2double(I);
T = dctmtx(8);
dct = @(x)T * x * T'; %anonymous function dct
B = blkproc(I,[8 8],dct);
subplot(2,2,2)
imshow(B)
title('image DCT')
%QUANTIFICATION
Q= [ 3 5 7 9 11 13 15 17
5 7 9 11 13 15 17 19
7 9 11 13 15 17 19 21
9 11 13 15 17 19 21 23
11 13 15 17 19 21 23 25
13 15 17 19 21 23 25 27
15 17 19 21 23 25 27 29
17 19 21 23 25 27 29 31
];
QQ=@(x)round(x./Q);
V= blkproc(B,[8 8],QQ);
subplot(2,2,3)
imshow(V)
title('image QUANTIFICATION')
%DEQUANTIFICATION
Q= [ 3 5 7 9 11 13 15 17
5 7 9 11 13 15 17 19
7 9 11 13 15 17 19 21
9 11 13 15 17 19 21 23
11 13 15 17 19 21 23 25
13 15 17 19 21 23 25 27
15 17 19 21 23 25 27 29
17 19 21 23 25 27 29 31
];
DQ=@(x)round(x*Q);
G= blkproc(V,[8 8],DQ);
subplot(2,2,4)
imshow(G)
title('image DEQUANTIFICATION')
%dct inverse
invdct = @(x)T' * x * T;
I2 = blkproc(G,[8 8],invdct);
figure(2)
imshow(I2)
title('image invdct') |
Partager