% TP Codages JPEG et MPEG-2 - 3SN-M - 2022 %-------------------------------------------------------------------------- % Fonction d'encodage MPEG d'une image (+ reference en JPEG) %-------------------------------------------------------------------------- % [IRes_Codee,MVdr,Ir_Codee,Poids,Compression] = ... % CompressionMPEG(Ic_Originale,Ir_Originale,canal,methode,F_Qualite) % % sorties : IRes_Codee = image residuelle (DCT quantifiee) % MVdr = matrice des vecteurs de deplacements relatifs % Ir_Codee = image de reference (DCT quantifiee) % Poids = poids de l'image en ko pour les differentes etapes de % la compression (inclure les mouvements pour MPEG) % Compression = taux de compression final % % entrees : Ic_Originale = image courante originale % Ir_Originale = image de reference originale % canal = canal pour le choix de la table de quantification : % 'Luminance', 'Chrominance' ou 'Residu' % methode = methode de calcul de la DCT : 'Matlab' ou 'Rapide' % F_Qualite = facteur de qualite pour la compression %-------------------------------------------------------------------------- % Fonctions a coder/utiliser : EstimationMouvement.m % PredictionImage.m % CompressionJPEG.m %-------------------------------------------------------------------------- function [IRes_Codee, MVdr, Ir_Codee, Poids, Compression] = ... CompressionMPEG(Ic_Originale, Ir_Originale, canal, methode, F_Qualite) MVdr = EstimationMouvement(Ic_Originale, Ir_Originale); Ip = PredictionImage(Ir_Originale, MVdr); Ires = Ic_Originale - Ip; [Ir_Codee, ~, ~, ~, ~] = CompressionJPEG(Ir_Originale, "Luminance", methode, F_Qualite); [IRes_Codee, Poids_IRes_Codee, ~, ~, ~] = CompressionJPEG(Ires, "Residu", methode, F_Qualite); [entropie_mvt, ~] = CodageEntropique(MVdr(:)); Poids.Origine = numel(Ic_Originale)/1024; Poids.MVdr = entropie_mvt; Poids.H_MPEG = Poids_IRes_Codee.H_JPEG + entropie_mvt; Compression = 100 * (1 - Poids.H_MPEG / Poids.Origine); end