TP2 Matlab M2Pro
TP2 Matlab M2Pro
TP2 Matlab M2Pro
(
(
<
=
sinon ) signe(
si 0
x
T
x
T x
k
> +
=
<
=
0 si 0.5) (k
0 k si 0
0 si ) 5 . 0 (
k T
k T k
x
Cette quantification, et sa fonction inverse sont fournies par la fonction perform_quantization qui peut
traiter aussi bien des scalaires que des matrices.
x = [-10:0.01:10]; T = 2.0;
[xhat, k] = perform_quantization(x, T, 1);
Tracer le graphe exprimant la valeur quantifie x en fonction de x. Tracer galement le graphe de
lerreur x x x e = ) ( en fonction de x. Illustrer la notion de zone morte.
8. Quantifier les coefficients dondelettes avec zone morte en utilisant le mme pas T pour tous les
cadrans :
[W_quant, W_int] = perform_quantization(W, T);
9. On dfinit lerreur RMS (ou erreur L
2
) comme la racine carre de lerreur quadratique moyenne entre
limage initiale I et limage reconstruite aprs quantification I
=
=
N n
n I n I
N
RMS
.. 1
2
)) ( ) (
(
1
Il est galement courant dutiliser le facteur de qualit PSNR (Peak Signal to Noise Ratio = Rapport
Signal sur Bruit), dfini comme le ratio entre la puissance crte du signal (255
2
dans notre cas) et la
puissance du bruit (erreur entre les images). Exprim en dB :
|
.
|
\
|
=
e
dB
P
PSNR
2
10
255
log 10 avec ( )
=
=
N n
e
n I n I
N
P
.. 1
2
) ( ) (
1
Observer la reconstruction Ir_quant, limage derreur Ir_quant-I, la valeur de lerreur L
2
et le
PSNR pour plusieurs pas de quantification (par exemple 1, 16, 64, 256).
4
Ir_quant = perform_wavelet_transform(W_quant,Jmin,-1,options);
imagesc(Ir_quant); colorbar;
rms_val = norm(I(:)-Ir_quant(:))
psnr_val = psnr(I,Ir_quant)
Quels effets visuels sont introduits par cette quantification ? O se trouvent les dgradations les plus
visibles ?
Tracer la courbe du PSNR en fonction du pas de quantification T pour T variant entre 1 et 256 (une
dizaine de valeurs de T suffisent, justifiez votre faon de les choisir).
10. Enfin comparer leffet de la quantification et du seuillage sur une image, pour T=1.
III) Codage
On tudie prsent la performance de compression obtenue aprs transformation par ondelettes. Pour
simplifier, le codage sera effectu par un parcours simple de la transforme associ une quantification
globale (en pratique le codage est plutt contextuel pour de meilleures performances : EBCOT, EZW).
11. Calculer et afficher lhistogramme de limage originale. Calculer galement lentropie totale et
lentropie par pixel de cette image.
[hI, bins_I]=integerhist(I(:),[0:255]);
bar(bins_I, hI);
[HI, HI_pix] = integerentropy(I(:)); % Entropie de limage I
12. Quantifier la transforme W pour un pas T=5. Calculer et afficher lhistogramme aprs quantification,
ainsi que lentropie totale et par pixel.
T=5;
[W_quant, W_int]=perform_quantization(W, T);
[hW, bins_W]=integerhist(W_int(:));
bar(bins_W, hW);
[HW, HW_pix] = integerentropy(W_int(:)); % Entropie de W_int
13. Comparer lhistogramme et lentropie de limage originale et du rsultat de cette quantification.
Rappeler le lien entre lentropie et les performances de codage afin de conclure sur lintrt de la
transforme en ondelette pour la compression dimages.
14. Coder W_int en utilisant le codeur arithmtique (la squence binaire au format uint8 issue du codage
arithmtique se trouve dans le vecteur y, et le nombre de bits total dans nbits).
[y,nbits] = perform_arithmetic_coding(W_int(:),1); % Nb bits total
nbits_pix = nbits / length(W_int(:)); % Nb bits par pixel
15. Tracer la courbe du PSNR en fonction du nombre de bits par pixel pour T variant entre 1 et 256
(fonction psnr ).
16. Comparer les rsultats sur les images "lena256.png" et "rectangles.png" pour les ondelettes
"biorthogonal" et "haar" (superposer les courbes pour pouvoir les comparer). Discuter ces rsultats.
Faire le lien avec la question 3.
17. Ecrire une fonction dwtcompress qui prend une image carre de taille 2
n
et renvoie un flux binaire
sous la forme dun vecteur dentiers [0..255] (uint8) selon la convention suivante : [n (uint8), Jmin
(uint8), T (uint8), y (squence de uint8)]. La compression utilisera londelette biorthogonale.
Vrifier que la fonction dwtuncompress fournie arrive dcoder votre flux binaire.