function [Yqq]=algo(p)
x=imread('a3.jpg');
Q=8*p./hilb(8); %linear quantization matrix

Qc=p*[17 18 24 47 99 99 99 99;... % matrix for part 6
    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;];

Qy=p*[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;];

figure(1)
imagesc(x);colormap(gray) %plots the color picture
 
x=double(x);
r=x(:,:,1);g=x(:,:,2);b=x(:,:,3); %conversion to gray
xgray=0.2126*r+0.7152*g+0.0722*b;
xgray=uint8(xgray);
r=uint8(r);g=uint8(g);b=uint8(b);

figure(2)
imagesc(xgray);colormap(gray)%plotting gray pic

figure(3)
xtry=xgray(71:78,71:78) %extract 8*8
imagesc(xtry);colormap(gray)%plot the little piece

xtry=double(xtry);
xtry=xtry-128;
Y=CreMat(8)*xtry*CreMat(8)';% quantizazing the 8*8 piece
Yqq=round(Y./Q);
Ydq=Yqq.*Q;
Xdq=CreMat(8)'*Ydq*CreMat(8);
Xtry=Xdq+128;
Xtry=uint8(Xtry);

% figure(4)
% imagesc(Xtry);colormap(gray) %plot the new little pic
% 
% for i=1:1:32
%     for h=1:1:32
%         j=8*i;
%         m=8*(i-1)+1;
%         k=8*(h-1)+1;
%         l=8*h;
% 
%         xt=xgray(k:l,m:j);
%         xtry=double(xt);
%         xtry=xtry-128;
%         Y=CreMat(8)*xtry*CreMat(8)';% quantizazing the 8*8 piece
%         Yq=round(Y./Q);
%         Ydq=Yq.*Q;
%         Xdq=CreMat(8)'*Ydq*CreMat(8);
%         Xtry=Xdq+128;
%         Xtry=uint8(Xtry);
%         xnew(k:l,m:j)=Xtry;
%     end
% end
% 
% figure(5)
% imagesc(xnew);colormap(gray)
% 
% 
% for i=1:1:32
%     for h=1:1:32
%         j=8*i;
%         m=8*(i-1)+1;
%         k=8*(h-1)+1;
%         l=8*h;
%         xt=xgray(k:l,m:j);
%         xtry=double(xt);
%         xtry=xtry-128;
%         Y=CreMat(8)*xtry*CreMat(8)';% quantizazing the 8*8 piece
%         Yq=round(Y./Qy);
%         Ydq=Yq.*Qy;
%         Xdq=CreMat(8)'*Ydq*CreMat(8);
%         Xtry=Xdq+128;
%         Xtry=uint8(Xtry);
%         xnew(k:l,m:j)=Xtry;
%     end
% end
% 
% figure(6)
% imagesc(xnew);colormap(gray)
% 
% 
% for i=1:1:32
%     for h=1:1:32
%         j=8*i;
%         m=8*(i-1)+1;
%         k=8*(h-1)+1;
%         l=8*h;
%         
%         xt=r(k:l,m:j);
%         xtry=double(xt);
%         xtry=xtry-128;
%         Y=CreMat(8)*xtry*CreMat(8)';% quantizazing the 8*8 piece
%         Yq=round(Y./Q);
%         Ydq=Yq.*Q;
%         Xdq=CreMat(8)'*Ydq*CreMat(8);
%         Xtry=Xdq+128;
%         Xtry=uint8(Xtry);
%         xnew(k:l,m:j,1)=Xtry;
%         
%         xt=g(k:l,m:j);
%         xtry=double(xt);
%         xtry=xtry-128;
%         Y=CreMat(8)*xtry*CreMat(8)';% quantizazing the 8*8 piece
%         Yq=round(Y./Q);
%         Ydq=Yq.*Q;
%         Xdq=CreMat(8)'*Ydq*CreMat(8);
%         Xtry=Xdq+128;
%         Xtry=uint8(Xtry);
%         xnew(k:l,m:j,2)=Xtry;
%         
%         xt=b(k:l,m:j);
%         xtry=double(xt);
%         xtry=xtry-128;
%         Y=CreMat(8)*xtry*CreMat(8)';% quantizazing the 8*8 piece
%         Yq=round(Y./Q);
%         Ydq=Yq.*Q;
%         Xdq=CreMat(8)'*Ydq*CreMat(8);
%         Xtry=Xdq+128;
%         Xtry=uint8(Xtry);
%         xnew(k:l,m:j,3)=Xtry;
%     end
% end
% figure(7)
% imagesc(xnew);colormap(gray)
% 
% r=double(r);g=double(g);b=double(b);
% Yl=0.299*r+0.587*g+0.114*b;%luminance coordinates
% U=b-Yl;
% V=r-Yl;
% 
% for i=1:1:32
%     for h=1:1:32
%         j=8*i;
%         m=8*(i-1)+1;
%         k=8*(h-1)+1;
%         l=8*h;
%              
%         xt=Yl(k:l,m:j);
%         xtry=double(xt);
%         xtry=xtry-128;
%         Y=CreMat(8)*xtry*CreMat(8)';% quantizazing the 8*8 piece
%         Yq=round(Y./Qy);
%         Ydq=Yq.*Qy;
%         Xdq=CreMat(8)'*Ydq*CreMat(8);
%         Yltry=Xdq+128;
%         
%         xt=U(k:l,m:j);
%         xtry=double(xt);
%         xtry=xtry-128;
%         Y=CreMat(8)*xtry*CreMat(8)';% quantizazing the 8*8 piece
%         Yq=round(Y./Qc);
%         Ydq=Yq.*Qc;
%         Xdq=CreMat(8)'*Ydq*CreMat(8);
%         Utry=Xdq+128;
% 
%         xt=V(k:l,m:j);
%         xtry=double(xt);
%         xtry=xtry-128;
%         Y=CreMat(8)*xtry*CreMat(8)';% quantizazing the 8*8 piece
%         Yq=round(Y./Qc);
%         Ydq=Yq.*Qc;
%         Xdq=CreMat(8)'*Ydq*CreMat(8);
%         Vtry=Xdq+128;
%         
%         bnew=Utry+Yltry;
%         rnew=Vtry+Yltry;
%         gnew=(Yltry-.299*rnew-.114*bnew)/.587;
%         
%         bnew=uint8(bnew);
%         rnew=uint8(rnew);
%         gnew=uint8(gnew);
%         
%         xnew(k:l,m:j,1)=rnew;
%         xnew(k:l,m:j,2)=gnew;
%         xnew(k:l,m:j,3)=bnew;
%     end
% end
% figure(8)
% imagesc(xnew);colormap(gray)
