Compression jepg

Compression jepg - Divers - Programmation

Marsh Posté le 11-09-2004 à 17:50:05    

Bonjour  
Voilà j'ai réalisé ce prog de compression jpeg sous matlab mais il ne marche pas à savoir que l'image jpeg créee en sortie est vide (aucun apercu disponible)  
Voilà le code  
Si vous pouviez me filer un coup de pousse pour trouver ce qui cloche car là je suis perdu, ce serait vraiment sympa.  
Merci d'avance  
a+  
 
 
%Programme principal de compression d'une image bmp en pseudo jpg
%arguments d'entree:
% - nom de l'image source qui doit etre au format bmp
%   - nom du fichier créé au format pseudo jpg
%   - qualite de la conversion de l'image bmp
%argument de sortie:
%   - temps du traitement en seconde
function[duree_traitement]=main_compression(nom_bmp_source, nom_jpg,  
qualite)
 
t_debut = cputime;
 
%lecture bmp
BMP = lecture_bmp(nom_bmp_source);
 
%conversion de la matrice : application de la DCT sur la matrice
JPG = conversion(BMP, qualite);
 
%ecriture de la matrice traitee par la DCT dans un fichier
ecriture_jpg(JPG, nom_jpg,qualite);
 
t_fin = cputime;
duree_traitement = t_fin - t_debut;
 
%************************************************************************
 
function[RGBdouble]=lecture_bmp(nom_fichier)
 
%lecture du fichier au format unsigned integer de 8 bits
RGBuint8 = imread(nom_fichier,'bmp');
%conversion des coefficients au format double
RGBdouble = double(RGBuint8);
 
%************************************************************************
 
function [a]=maDCT2(m)
%Fonction calculant une dct sur une matrice
%argument d'entree:
% - m matrice 8*8 sur laquelle sera appliquée la DCT
%argument de sortie: a
%    - a matrice 8*8 correspondant à la DCT appliquée sur m
 
%recuperation de la taille de la matrice m
[M,M]=size(m);
%declaration d'une matrice nulle de meme dimension que m
 
a=zeros(M,M);
 
%Calcul des coefficients de a tranformes de la  dct
%u,v sont les indices de la nouvelle matrice a
%i,j sont les indices de la matrice m
for u=0:M-1
    for v=0:M-1
        for i=0:M-1
            for j=0:M-1
                %Test permettant de determiner la valeur des variables C1 et  
C2
                if u==0
                    c1=1/sqrt(2);
                else
                    c1=1;
                end;
                if v==0
                    c2=1/sqrt(2);
                else
                    c2=1;
                end
                 
a(u+1,v+1)=a(u+1,v+1)+1/sqrt(2*M)*c1*c2*m(i+1,j+1)*cos(pi*u/M*(i+1/2))*cos(pi*v/M*(j+1/2));
            end;
        end;
    end;
end;
 
%*********************************************************************************
 
%fonction qui permet d'ajouter ou de retrancher une certaine valeur à tous
%les coefficients d'une matrice
%parametres d'entree
%   -m la matrice sur laquelle va porter le calcul
%   -valeur la valeur a ajouter (ou retrancher si nombre negatif)
%parametres de sortie
%   -res la matrice du resultat
function[res]=ajoute(m,valeur)
 
%recuperation de la taille de la matrice
taille = size(m);
%construction d'une matrice que l'on va ajouter à m
temp = ones(taille(1),taille(2)) * valeur;
 
res = m + temp;
 
%*********************************************************************************
 
%fonction qui fabrique la matrice de quantification
%a partir de l'indice de qualite, on construit une matrice 8x8 que la
%fonction retourne
function[Q]=mat_quant(Fq)
 
for i=1:8

Reply

Marsh Posté le 11-09-2004 à 17:50:05   

Reply

Marsh Posté le 18-05-2006 à 10:18:47    

up

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed