function [Imacompress,Imadctbloc,ImaQuantizeddctbloc]=compress(Ima,K)
% compression "à la JPEG"
% F. Sur
% Ima: image de taille [M,N] (M et N divisibles par 8)
% K: facteur de qualité
% Imacompress: image Ima après compression
% Imadctbloc: coefficients DCT bloc à bloc de Ima
% ImaQuantizeddctbloc: coefficients DCT quantifiés bloc à bloc

% matrice de quantification
Q=zeros(8,8);
for i=1:8,
    for j=1:8,
	    Q(i,j)=(1+K*(1+i+j));
    end;
end;

nblocx=size(Ima,1)/8;
nblocy=size(Ima,2)/8;
Ima=Ima-128;

Imacompress=zeros(size(Ima));
Imadctbloc=zeros(size(Ima));
ImaQuantizeddctbloc=zeros(size(Ima));

for i=0:nblocx-1,
    for j=0:nblocy-1;
      dctbloc=dct2(Ima(8*i+1:8*(i+1),8*j+1:8*(j+1))); 
      Quantizeddctbloc=round(dctbloc./Q);
      dct2Imacompress=Quantizeddctbloc.*Q;
      Imacompress(8*i+1:8*(i+1),8*j+1:8*(j+1))=128+idct2(dct2Imacompress); 
      ImaQuantizeddctbloc(8*i+1:8*(i+1),8*j+1:8*(j+1))=dct2Imacompress;
      Imadctbloc(8*i+1:8*(i+1),8*j+1:8*(j+1))=dctbloc;
   end;
end;

Imacompress=uint8(Imacompress);

