TP-compression-streaming-in.../CompressionMPEG.m

51 lines
2.2 KiB
Mathematica
Raw Normal View History

2023-06-25 14:32:14 +00:00
% 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