% %part 3a
x=imread('mj.jpg');
%x=double(x);
r=x(:,:,1);g=x(:,:,2);b=x(:,:,3);
figure(1);imagesc(x);
%xgray=0.2126*r+0.7152*g+0.0722*b;
%figure(1);imagesc(xgray);colormap(gray)
xza=zeros(600,600,3);

Y = 0.299*r + 0.587*g + 0.114*b;
U = b - Y;
V = r - Y;
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];

qc = [17,18,24,47,99,99,99,99;18,21,26,66,99,99,99,99;24,26,56,99,99,99,99,99;
47,66,99,99,99,99,99,99;99,99,99,99,99,99,99,99;99,99,99,99,99,99,99,99;
99,99,99,99,99,99,99,99;99,99,99,99,99,99,99,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=Y(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';
    y=dct2(xc);
    %part 3c
    %p=80; %also p=2 and p=4
    %q=p*8./hilb(8);
    yq=round(y./qy);

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

    xzaY(i*8-7:i*8,j*8-7:j*8)=xe;

   end
end
for i=1:75 %since 600/8 = 75
   for j=1:75
    xz1=U(i*8-7:i*8,j*8-7:j*8);

    %part 3b
    xd1=double(xz1);
    xc1=xd1-128;
    %y1=dct(dct(xc1')'); %since y=dct(dct(x')')=> y=c*xc*c';
    y1=dct2(xc1);
    %part 3c
    %p=80; %also p=2 and p=4
    %q=p*8./hilb(8);
    yq1=round(y1./qc);

    %part 3d
    ydq1=yq1.*qc;
    xdq1=idct2(ydq1);
    %xdq1=idct(idct(ydq1')');
    xe1=xdq1+128;
    %xf=uint8(xe);

    xzaU(i*8-7:i*8,j*8-7:j*8)=xe1;

   end
end
for i=1:75 %since 600/8 = 75
   for j=1:75
    xz2=V(i*8-7:i*8,j*8-7:j*8);

    %part 3b
    xd2=double(xz2);
    xc2=xd2-128;
    y2=dct2(xc2);
    %y2=dct(dct(xc2')'); %since y=dct(dct(x')')=> y=c*xc*c';

    %part 3c
    %p=80; %also p=2 and p=4
    %q=p*8./hilb(8);
    yq2=round(y2./qc);

    %part 3d
    ydq2=yq2.*qc;
    xdq2=idct2(ydq2);
    %xdq2=idct(idct(ydq2')');
    xe2=xdq2+128;
    %xf=uint8(xe);

    xzaV(i*8-7:i*8,j*8-7:j*8)=xe2;

   end
end
R=xzaV +xzaY;
B=xzaU +xzaY;
G=(xzaY - 0.299*R -.114*B)/.587;
R=uint8(R);
B=uint8(B);
G=uint8(G);
xza(:,:,1)=R;
xza(:,:,2)=G;
xza(:,:,3)=B;

figure(2);imagesc(xza);
Error using image
TrueColor CData contains element out of range 0.0 <= value <= 1.0

Error in imagesc (line 19)
    hh = image(varargin{1},'CDataMapping','scaled');

Error in q6 (line 109)
figure(2);imagesc(xza);