% %part 3a
x=imread('mj.jpg');
figure(5);imagesc(xgray);colormap(gray)
title('original')
%x=x(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(2);imagesc(xgray);colormap(gray)
%title('original')
xza=zeros(600,600);
%xb=xgray(181:188,281:288);
%xb
%figure(1); 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(1);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=2; %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(2);imagesc(xza);colormap(gray)
title('p=2')

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=4; %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=4')

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')