58 lines
2.3 KiB
Mathematica
58 lines
2.3 KiB
Mathematica
|
|
||
|
% TP Codages JPEG et MPEG-2 - 3SN-M - 2022
|
||
|
|
||
|
%--------------------------------------------------------------------------
|
||
|
% Exercice_7 : Compression MPEG et calcul d'entropie
|
||
|
%--------------------------------------------------------------------------
|
||
|
% Fonctions a coder / utiliser : CompressionJPEG.m
|
||
|
% CompressionMPEG.m
|
||
|
%--------------------------------------------------------------------------
|
||
|
|
||
|
clear;
|
||
|
close all;
|
||
|
clc;
|
||
|
|
||
|
taille_ecran = get(0,'ScreenSize');
|
||
|
L = taille_ecran(3);
|
||
|
H = taille_ecran(4);
|
||
|
figure('Name','Test de la compression MPEG',...
|
||
|
'Position',[0.1*L,0.05*H,0.8*L,0.7*H]);
|
||
|
|
||
|
%--------------------------------------------------------------------------
|
||
|
|
||
|
% Chargement des images de test
|
||
|
Ir_for_MPEG = load('Donnees_TP_MPEG-2.mat').Ir_for_MPEG;
|
||
|
Ic_for_MPEG = load('Donnees_TP_MPEG-2.mat').Ic_for_MPEG;
|
||
|
% Choix du canal pour la quantification
|
||
|
canal = 'Luminance';
|
||
|
% Methode de calcul de la DCT 2D par blocs ('Matlab' ou 'Rapide')
|
||
|
methode = 'Matlab';
|
||
|
% Choix du facteur de qualite (ici vecteur allant de 1% a 97%)
|
||
|
F_Qualite = 30;
|
||
|
% Compression JPEG avec entropie des coefficients AC/DC separes
|
||
|
[Ic_Codee,PCou] = CompressionJPEG(Ic_for_MPEG,canal,methode,F_Qualite);
|
||
|
[IRes_Codee,MVdr,Ir_Codee,PRes,Compression] = ...
|
||
|
CompressionMPEG(Ic_for_MPEG,Ir_for_MPEG,canal,methode,F_Qualite);
|
||
|
% Affichage de l'image avant compression
|
||
|
subplot 211
|
||
|
imagesc(Ic_for_MPEG)
|
||
|
colormap gray
|
||
|
axis image off
|
||
|
title({'Image courante d''origine' ...
|
||
|
['Poids = ' num2str(PRes.Origine,'%.3g') ' ko (attendu : 413 ko)']})
|
||
|
% Affichage de l'image courante apres DCT et quantification
|
||
|
subplot 223
|
||
|
imagesc(abs(Ic_Codee))
|
||
|
colormap gray
|
||
|
axis image off
|
||
|
title({'Image courante quantifiee' ...
|
||
|
['Poids = ' num2str(PCou.H_JPEG,'%.3g') ' ko (attendu : 13.3 ko)']})
|
||
|
% Affichage de l'image residuelle apres DCT et quantification
|
||
|
subplot 224
|
||
|
imagesc(abs(IRes_Codee))
|
||
|
colormap gray
|
||
|
axis image off
|
||
|
title({'Image residuelle quantifiee de l''image courante' ...
|
||
|
['Poids total = ' num2str(PRes.H_MPEG,'%.3g') ' ko (attendu : 5.96 ko)'] ...
|
||
|
['Poids des mouvements = ' num2str(PRes.MVdr,'%.3g') ' ko (attendu : 0.996 ko)']})
|