(Tout le contenu est sous licence GPL ;
Vous avez aucun droit avant d'avoir lu cette page :
http://rzr.online.fr/license.htm
)
|
Le principe de compression est le suivant :
Seuil | nbre de pixels coupées | Taux compression | Qualité visuelle |
---|---|---|---|
5 | 21997 | 1.4014 | pas de différence visuelle |
10 | 39781 | 2.0746 | pas de différence visuelle |
15 | 51944 | 3.0898 | pas de différence visuelle |
20 | 59514 | 4.4429 | Différence à peine visible sur le crépit de la maison |
150 | . | 136.6548 | Scène juste interprétable par un humain |
% Programme Principal de compression spectrale d'images % Auteur : Philippe COVAL - http://RzR.online.FR % DESS Imagerie Numérique / U.P.S. % Date : 2000.01.28 % Filename tcd1.m (Mathlab) function [Bn]=tcd1(n) [U,I]=meshgrid(1:n,1:n); Bn=sqrt(2/n) * cos (pi * ( U -1) .* (2*I - 1) /(2*n) ); Bn(:,1) = Bn(:,1)/sqrt(2);
% Programme Principal de compression spectrale d'images % Auteur : Philippe COVAL - http://RzR.online.FR % DESS Imagerie Numérique / U.P.S. % Date : 2000.01.28 % Filename : main.m (Mathlab) % Lecture de l'image [X,map]=imread('..\data\maison.bmp'); image(X); colormap(map); % Crop [iw,ih]=size(X); str=input('Largeur region ? : '); if ( not (isempty(str) )) iw = str ; end; str=input('Hauteur region ? : '); if ( not (isempty(str) )) ih = str ; end; xoffset=1; yoffset=1; Y=X(xoffset:xoffset+iw-1, ... yoffset:yoffset+ih-1 ); % Affichage de l'image cropée image(Y); map(Y(iw-1,ih-1),:); % convertion en type double imd=double(Y); % Transformee cos disc directe F=tcd1(iw)'*imd*tcd1(ih); figure image(F); colormap(hot); % Saisie du seuil seuil=5 str = input('Seuil ? [(5),10,15,20] : ? '); if ( not (isempty(str) )) seuil = str ; end; % Filtrage par Seuil de l'image des fréquences ncut=0; for i=1:iw for j=1:ih if seuil > abs(F(i,j)) F(i,j)=0; ncut=ncut+1; end end end % Calcul du taux de compression C sprintf( 'nbre_de_pixels_coupées : %d',ncut) C=(iw*ih)/(iw*ih-ncut) figure image(F); colormap(hot); % Transformee Cos Disc Inverse F=tcd1(iw)*F*tcd1(ih)'; %F=uint8(round(F)); figure image(F); colormap(map); % Qualite de l'image : disparitee : % difference des images x 10 D=255+(abs(F-imd)*-10); figure; image(D); colormap(gray);