clear all; clearvars; close all; clc;
x = imread('baboonbw.png');
x = double(x);
Xgray = x;
figure(1);
imagesc(Xgray);
colormap(gray);
axis square;
p=4;
Q = p*8./hilb(8);
n=8;
C = zeros(n);
for i=1:n
for j=1:n
C(i,j)=cos((i-1)*(2*j-1)*pi/(2*n));
end
end
C=sqrt(2/n)*C;
C(1,:)=C(1,:)/sqrt(2);
Xf = zeros(496,496);
for i= 1:8:496
for j = 1:8:496
X = Xgray(i:i+7,j:j+7);
Xd = double(X);
Xc = Xd - 128;
Y = dct(dct(Xc')');
Yq = round(Y./Q);
Ydq = Yq.*Q;
Xdq = C'*Ydq*C;
Xe = Xdq + 128;
Xf(i:i+7, j:j+7) = uint8(Xe);
end
end
figure(2);
imagesc(uint8(Xf), [0,255]);
colormap(gray)
axis square;