But

 

Le but de ce TP est de :

  • réaliser et analyser une analyse multirésolutions d'un signal
  • étudier les coefficients issus d'une AMR, rangés par "sous-bande"
  • commencer la réalisation d'une analyse 2D

On ne considèrera que le jeu de filtres biorthogonaux 9/7.
On demande aussi de commenter les résultats obtenus et d'afficher les signaux générés à l'aide d'un outil de tracé de courbe comme gnuplot, scilab ou matlab.
Enfin, on veillera à conserver les fonctions définies ci-dessus, car elle seront réutilisées dans la suite des TPs.

Notes

Les fonctions effectuent les transformations sur place, signifiant qu'elles effectuent la transformation directement sur le signal d'entrée. Certaines opérations, comme le produit de convolution, ne sont pas possibles à réaliser directement sur place, et on pourra avoir recours à des tableaux temporaires.
Tous les signaux seront representés en C/C++ par des tableaux de double.
Un mémento des fonctions C ANSI utiles est disponible ici.

TP

 

1 - Analyse multirésolutions (AMR)

Définition
La définition de l'analyse multirésolutions (ou AMR) a été vue en cours.
D'un point de vue pratique, elle consiste à faire une succession de décompositions en coefficients d'ondelettes sur le signal original tout d'abord puis sur les signaux d'approximations résultants.
Ainsi, en présence d'un signal x de taille p, on obtient, par une première décomposition, un signal d'approximation xa et un signal de détail xd, de tailles p/2. Dans le processus d'une AMR, on effectue alors une seconde décomposition, mais cette fois sur le signal xa : on obtient alors deux nouveaux signaux xaa et xda de taille p/4. Le processus peut alors être continué, selon un nombre de décompositions arbitraire.
On appelle "niveau de decomposition" le nombre de décompositions réalisées dans une AMR. On appelle "sous-bande" un signal issu d'une étape de décomposition de l'AMR.
Ainsi, après une AMR de niveau 2 appliquée sur un signal x de taille p, on obtient donc un signal concaténant les trois signaux, nommés aussi sous-bandes, xaa, xda et xdd, de tailles respectives p/4, p/4 et p/2.
Utilisée avec une décomposition en coefficients d'ondelettes satisfaisant la "condition de reconstruction parfaite", l'AMR est un processus inversible, qui permet la reconstruction parfaite du signal.
TP
Implantez une fonction réalisant l'analyse multirésolutions void amr(double* x,int p,int niveau), en utilisant une décomposition utilisant les filtres biorthogonaux 9/7 faite au TP précédent (on pourra utiliser au choix, la version en banc de filtres ou la version en structure lifting).
Implantez une fonction réalisant la réciproque de l'AMR void iamr(double* x,int p,int niveau).
Si un signal est de taille p, quel est le niveau maximal de décompositions que l'on peut faire par AMR de ce signal?
Faites une AMR en utilisant les filtres biorthogonaux 9/7, sur le signal test précedemment étudié, aux niveaux de décompositions 2, 4 et maximal.
Tracez et commentez les courbes obtenues.
Vérifiez que votre AMR est correcte, en reconstruisant les signaux, et en montrant de manière objective que les signaux reconstruits sont identiques aux signaux originaux.

2 - Etude des sous-bandes issues de l'AMR

TP
Implantez les fonctions statistiques suivantes :
  • Calcul de la valeur minimale d'une sous-bande issue d'une AMR
  • Calcul de la valeur maximale d'une sous-bande issue d'une AMR
  • Calcul de la valeur moyenne d'une sous-bande issue d'une AMR
Si on réalise une AMR de niveau j, combien de sous-bandes obtient-on ?
Calculez les valeurs minimale, maximale et moyenne des sous-bandes obtenues par l'AMR de niveau 2 et 4, utilisée avec les filtres biorthogonaux 9/7, sur le signal test.
Commentez ces valeurs.
Quel est, à votre avis, l'interêt de l'AMR ?

3 - Décomposition 2D

Définition
La décomposition 2D est une extension simple du processus de décomposition 1D. La décomposition 2D d'une image m (matrice carrée), de taille p*p se fait successivement par :
  • décomposition de toutes les lignes de m, donnant une matrice ml.
  • décomposition de toutes les colonnes de ml, donnant alors md.
La matrice md est le résultat de la décomposition 2D de m, illustré par le schéma suivant :



m md
Notes
On donne les fonctions C suivantes, ici capables de lire et d'écrire des images au format BMP, en 256 niveaux de gris:
  • double* charge_bmp256(char* fichier,int* largeur,int* hauteur)
  • int ecrit_bmp256(char* fichier,int largeur,int hauteur,double* m)
Ces fonctions manipulent des matrices m, où la luminance des pixels de coordonnées (x,y) est contenue dans m[x+y*largeur], le noir étant la valeur 0, le blanc la valeur 255.
Ici, on manipulera ainsi les matrices sur des tableaux continus de taille p*p.
TP
Implantez la fonction analyse2D_97() réalisant la décomposition de matrices en 2 dimensions, selon les filtres biorthogonaux 9/7.
Chargez l'image lena.bmp et réalisez sa décomposition 2D.
Sauvez les coefficients sous forme d'une image.