%part 3a
x=imread('mj.jpg');
x=double(x);
r=x(:,:,1);g=x(:,:,2);b=x(:,:,3);
xgray=0.2126*r+0.7152*g+0.0722*b;
%imagesc(xgray);colormap(gray)
xb=xgray(381:388,181:188);
xb;
figure(1); imagesc(uint8(xb));colormap(gray)
title('original')
%part 3b,p=1
%xd=double(xb);
xc=xb-128;
y=dct(dct(xc')'); %since y=dct(dct(x')')=> y=c*xc*c';
%y=dct2(xc')');

%part 3c
p=1;
q=p*8./hilb(8);
yq=round(y./q);
%yq
%imagesc(yq)
%part 3d
ydq=yq.*q;
%xdq=idct2(ydq); %since xdq=c'*ydq*c = idct2(ydq);
xdq=idct(idct(ydq')');
xe=xdq+128;
xf=uint8(xe);
figure(2);imagesc(xf);colormap(gray)
title('p=1')
%part 3b,p=2
%xd=double(xb);
xc=xb-128;
y=dct(dct(xc')'); %since y=dct(dct(x')')=> y=c*xc*c';
%y=dct2(xc')');

%part 3c
p=2;
q=p*8./hilb(8);
yq=round(y./q);
%yq
%imagesc(yq)
%part 3d
ydq=yq.*q;
%xdq=idct2(ydq); %since xdq=c'*ydq*c = idct2(ydq);
xdq=idct(idct(ydq')');
xe=xdq+128;
xf=uint8(xe);
figure(3);imagesc(xf);colormap(gray)
title('p=2')
%part 3b,p=4
%xd=double(xb);
xc=xb-128;
y=dct(dct(xc')'); %since y=dct(dct(x')')=> y=c*xc*c';
%y=dct2(xc')');

%part 3c
p=4;
q=p*8./hilb(8);
yq=round(y./q);
%yq
%imagesc(yq)
%part 3d
ydq=yq.*q;
%xdq=idct2(ydq); %since xdq=c'*ydq*c = idct2(ydq);
xdq=idct(idct(ydq')');
xe=xdq+128;
xf=uint8(xe);
figure(4);imagesc(xf);colormap(gray)
title('p=4')

%part 3b,p=10
%xd=double(xb);
xc=xb-128;
y=dct(dct(xc')'); %since y=dct(dct(x')')=> y=c*xc*c';
%y=dct2(xc')');

%part 3c
p=10;
q=p*8./hilb(8);
yq=round(y./q);
%yq
%imagesc(yq)
%part 3d
ydq=yq.*q;
%xdq=idct2(ydq); %since xdq=c'*ydq*c = idct2(ydq);
xdq=idct(idct(ydq')');
xe=xdq+128;
xf=uint8(xe);
figure(5);imagesc(xf);colormap(gray)
title('p=10')