clear all; clearvars; close all; clc;
x=imread('Sedona_AZ.JPG');
figure(1);
axis on;
imagesc(x);
title('Sedona, AZ');
x=double(x);
r=x(:,:,1);
g=x(:,:,2);
b=x(:,:,3);
xgray=0.2126*r+0.7152*g+0.0722*b;
xgray=uint8(xgray);
n=8;
C = zeros(n);
for i=2:n
for j=1:n
C(i,j)=sqrt(2/n)*cos((i-1)*(j-1/2)*pi/n);
end
end
C(1,1:n)=ones(1,n)/sqrt(n);
size8 = zeros(size(xgray)/8);
[row,col] = size(size8);
for i=1:row
for j=1:col
rb=r(i*8-7:i*8, j*8-7:j*8);
gb=g(i*8-7:i*8, j*8-7:j*8);
bb=b(i*8-7:i*8, j*8-7:j*8);
rd=double(rb);
rc=rd-128;
gd=double(gb);
gc=gd-128;
bd=double(bb);
bc=bd-128;
ry=C*rc*C';
gy=C*gc*C';
by=C*bc*C';
p=1;
Q=p*8./hilb(8);
ryq=round(ry./Q);
gyq=round(gy./Q);
byq=round(by./Q);
rydq=ryq.*Q;
rxdq=C'*rydq*C;
rxe=rxdq+128;
gydq=gyq.*Q;
gxdq=C'*gydq*C;
gxe=gxdq+128;
bydq=byq.*Q;
bxdq=C'*bydq*C;
bxe=bxdq+128;
Xe(i*8-7:i*8, j*8-7:j*8, 1)=rxe;
Xe(i*8-7:i*8, j*8-7:j*8, 2)=gxe;
Xe(i*8-7:i*8, j*8-7:j*8, 3)=bxe;
end
end
figure(3);
axis on;
imagesc(uint8(Xe));
title(['p = ',num2str(p)]);