% %part 3a
x=imread('mj.jpg');
%x=xg(1:600,1:600);
%x=double(x);
r=x(:,:,1);g=x(:,:,2);b=x(:,:,3);
xgray=0.2126*r+0.7152*g+0.0722*b;
figure(1);imagesc(xgray);colormap(gray)
title('original')
xza=zeros(600,600);
qy = [16,11,10,16,24,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];
%xb=xgray(181:188,281:288)
%xb
%figure(2); imagesc(uint8(xb));colormap(gray)
for i=1:75 %since 600/8 = 75
   for j=1:75
    xz=xgray(i*8-7:i*8,j*8-7:j*8);

    %part 3b
    xd=double(xz);
    xc=xd-128;
    y=dct(dct(xc')'); %since y=dct(dct(x')')=> y=c*xc*c';

    %part 3c
    p=1; %also p=2 and p=4
    q=p*8./hilb(8);
    yq=round(y./q);

    %part 3d
    ydq=yq.*q;
    xdq=idct(idct(ydq')');
    xe=xdq+128;
    xf=uint8(xe);

    xza(i*8-7:i*8,j*8-7:j*8)=xf;
   end
end
figure(3);imagesc(xza);colormap(gray)
title('p=1')
for i=1:75 %since 600/8 = 75
   for j=1:75
    xz=xgray(i*8-7:i*8,j*8-7:j*8);

    %part 3b
    xd=double(xz);
    xc=xd-128;
    y=dct(dct(xc')'); %since y=dct(dct(x')')=> y=c*xc*c';

    %part 3c
    p=10; %also p=2 and p=4
    q=p*8./hilb(8);
    yq=round(y./q);

    %part 3d
    ydq=yq.*q;
    xdq=idct(idct(ydq')');
    xe=xdq+128;
    xf=uint8(xe);

    xza(i*8-7:i*8,j*8-7:j*8)=xf;
   end
end
figure(4);imagesc(xza);colormap(gray)
title('p=10')