Cours Boîte à outils Ondelettes sous Matlab
![Cours Boîte à outils Ondelettes sous Matlab](/images/remos_downloads/CoursMatlab-id4506.4514.pdf_thumb_prev.jpg)
Université de Bourgogne
Institut Universitaire de Technologie
Laboratoire Électronique, Informatique et Images (Le2i)
U.M.R. C.N.R.S. 5158
12 rue de la Fonderie 71200 Le Creusot tél. 03 85 73 10 00 fax 03 85 73 10 99
Boîte à outils Ondelettes sous Matlab
Matlab Wavelet Toolbox, The MathWorks
Jérôme LANDRÉ
Journées du club E.E.A. : Ecole Analyse Multirésolution pour l'Image 11-13 janvier 2006 – Le Creusot
Table des matières
Conventions: – Les commandes Matlab seront introduites par l'invite de commandes Matlab :
>>
– Les commandes Matlab à taper seront en gras :
>> help Matlab
Matlab est un environnement de calcul intégré basé sur un langage de programmation qui permet le développement rapide d'applications. Le langage permet la manipulation d'objets mathématiques à l'aide de fonctions. Matlab a été conçu à l'origine pour le calcul matriciel (MATrix LABoratory).
Matlab dispose de fonctions de calcul de base ainsi que de bibliothèques plus spécialisées appelées boîtes à outils (toolboxes). Nous allons nous intéresser à l'une d'elles en particulier, la boîte à outils ondelettes.
![](/images/remos_downloads/detail/45/CoursMatlab-id4506.4514.pdf-000.jpg)
La théorie des ondelettes [1] est apparue au début des années 1990, elle touche de nombreux domaines des mathématiques, notamment le traitement du signal et des images. La boîte à outils Ondelettes de Matlab propose de nombreuses fonctions de manipulation des ondelettes.
L'analyse multirésolution donne un ensemble de signaux d'approximation et de détails d'un signal de départ en suivant une approche fin-à-grossier (fine-to-coarse). On obtient une décomposition multi-échelle du signal de départ en séparant à chaque niveau de résolution les basses fréquences
(approximation) et les hautes fréquences (détails) du signal.
V0 : Espace de départ, V-1 : Approx. Niv. 1, W-1 : Détails niv. -1,
La boîte à outils ondelettes se décompose en plusieurs familles de fonctions : familles d'ondelettes, ondelettes continues, ondelettes discrètes, paquets d'ondelettes, lifting scheme
Le résultat complet de la commande « help wavelet » est donné ci-dessous.
>> help wavelet
Wavelet Toolbox
Version 3.0.2 (R14SP2) 21-Jan-2005
Wavelet Toolbox GUI (Graphical User Interface).
wavemenu - Start Wavelet Toolbox graphical user interface tools.
Wavelets: General.
biorfilt - Biorthogonal wavelet filter set. centfrq - Wavelet center frequency. dyaddown - Dyadic downsampling. dyadup - Dyadic upsampling. intwave - Integrate wavelet function psi. orthfilt - Orthogonal wavelet filter set. qmf - Quadrature mirror filter. scal2frq - Scale to frequency. wavefun - Wavelet and scaling functions. wavefun2 - Wavelets and scaling functions 2-D. wavemngr - Wavelet manager. wfilters - Wavelet filters. wmaxlev - Maximum wavelet decomposition level.
Wavelet Families.
biorwavf - Biorthogonal spline wavelet filters. cgauwavf - Complex Gaussian wavelet. cmorwavf - Complex Morlet wavelet. coifwavf - Coiflet wavelet filter. dbaux - Daubechies wavelet filter computation.
dbwavf - Daubechies wavelet filters. fbspwavf - Complex Frequency B-Spline wavelet. gauswavf - Gaussian wavelet. mexihat - Mexican Hat wavelet.
![](/images/remos_downloads/detail/45/CoursMatlab-id4506.4514.pdf-001.jpg)
meyer - Meyer wavelet.
meyeraux - Meyer wavelet auxiliary function. morlet - Morlet wavelet. rbiowavf - Reverse Biorthogonal spline wavelet filters. shanwavf - Complex Shannon wavelet.
symaux - Symlet wavelet filter computation. symwavf - Symlet wavelet filter.
Continuous Wavelet: One-Dimensional.
cwt - Real or Complex Continuous wavelet coefficients 1-D. pat2cwav - Construction of a wavelet starting from a pattern.
Discrete Wavelets: One-Dimensional.
appcoef - Extract 1-D approximation coefficients. detcoef - Extract 1-D detail coefficients. dwt - Single-level discrete 1-D wavelet transform. dwtmode - Discrete wavelet transform extension mode. idwt - Single-level inverse discrete 1-D wavelet transform. upcoef - Direct reconstruction from 1-D wavelet coefficients. upwlev - Single-level reconstruction of 1-D wavelet decomposition. wavedec - Multi-level 1-D wavelet decomposition. waverec - Multi-level 1-D wavelet reconstruction. wenergy - Energy for 1-D wavelet decomposition. wrcoef - Reconstruct single branch from 1-D wavelet coefficients.
Discrete Wavelets: Two-Dimensional.
appcoef2 - Extract 2-D approximation coefficients. detcoef2 - Extract 2-D detail coefficients. dwt2 - Single-level discrete 2-D wavelet transform. dwtmode - Discrete wavelet transform extension mode. idwt2 - Single-level inverse discrete 2-D wavelet transform. upcoef2 - Direct reconstruction from 2-D wavelet coefficients. upwlev2 - Single-level reconstruction of 2-D wavelet decomposition. wavedec2 - Multi-level 2-D wavelet decomposition. waverec2 - Multi-level 2-D wavelet reconstruction. wenergy2 - Energy for 2-D wavelet decomposition. wrcoef2 - Reconstruct single branch from 2-D wavelet coefficients.
Wavelets Packets Algorithms.
bestlevt - Best level tree (wavelet packet).
besttree - Best tree (wavelet packet). entrupd - Entropy update (wavelet packet). wenergy - Energy for a wavelet packet decomposition. wentropy - Entropy (wavelet packet).
wp2wtree - Extract wavelet tree from wavelet packet tree. wpcoef - Wavelet packet coefficients. wpcutree - Cut wavelet packet tree. wpdec - Wavelet packet decomposition 1-D. wpdec2 - Wavelet packet decomposition 2-D. wpfun - Wavelet packet functions. wpjoin - Recompose wavelet packet. wprcoef - Reconstruct wavelet packet coefficients. wprec - Wavelet packet reconstruction 1-D. wprec2 - Wavelet packet reconstruction 2-D. wpsplt - Split (decompose) wavelet packet.
Discrete Stationary Wavelet Transform Algorithms.
iswt - Inverse discrete stationary wavelet transform 1-D. iswt2 - Inverse discrete stationary wavelet transform 2-D. swt - Discrete stationary wavelet transform 1-D. swt2 - Discrete stationary wavelet transform 2-D.
Lifting Functions addlift - Adding primal or dual lifting steps. bswfun - Biorthogonal scaling and wavelet functions. displs - Display lifting scheme. filt2ls - Filters to lifting scheme. ilwt - Inverse 1-D lifting wavelet transform. ilwt2 - Inverse 2-D lifting wavelet transform. liftfilt - Apply elementary lifting steps on filters. liftwave - Lifting scheme for usual wavelets. lsinfo - Information about lifting schemes. lwt - Lifting wavelet decomposition 1-D. lwt2 - Lifting wavelet decomposition 2-D. lwtcoef - Extract or reconstruct 1-D LWT wavelet coefficients. lwtcoef2 - Extract or reconstruct 2-D LWT wavelet coefficients. wave2lp - Laurent polynomial associated to a wavelet. wavenames - Wavelet names information.
![](/images/remos_downloads/detail/45/CoursMatlab-id4506.4514.pdf-007.jpg)
Laurent Polynomial [OBJECT in @laurpoly directory] laurpoly - Constructor for the class LAURPOLY (Laurent Polynomial).
Laurent Matrix [OBJECT in @laurmat directory] laurmat - Constructor for the class LAURMAT (Laurent Matrix).
De-noising and Compression for Signals and Images.
ddencmp - Default values for de-noising or compression. thselect - Threshold selection for de-noising.
wbmpen - Penalized threshold for wavelet 1-D or 2-D de-noising. wdcbm - Thresholds for wavelet 1-D using Birge-Massart strategy. wdcbm2 - Thresholds for wavelet 2-D using Birge-Massart strategy. wden - Automatic 1-D de-noising using wavelets. wdencmp - De-noising or compression using wavelets.
wnoise - Generate noisy wavelet test data. wnoisest - Estimate noise of 1-D wavelet coefficients. wpbmpen - Penalized threshold for wavelet packet de-noising. wpdencmp - De-noising or compression using wavelet packets. wpthcoef - Wavelet packet coefficients thresholding. wthcoef - Wavelet coefficient thresholding 1-D. wthcoef2 - Wavelet coefficient thresholding 2-D. wthresh - Perform soft or hard thresholding. wthrmngr - Threshold settings manager.
Other Wavelet Applications.
wfbm - Synthesize fractional Brownian motion. wfbmesti - Estimate fractal index. wfusimg - Fusion of two images. wfusmat - Fusion of two matrices or arrays.
Tree Management Utilities. allnodes - Tree nodes. cfs2wpt - Wavelet packet tree construction from coefficients. depo2ind - Node depth-position to node index. disp - Display information of WPTREE object. drawtree - Draw wavelet packet decomposition tree (GUI). dtree - Constructor for the class DTREE. get - Get tree object field contents. ind2depo - Node index to node depth-position.
isnode - True for existing node.
istnode - Determine indices of terminal nodes. leaves - Determine terminal nodes. nodeasc - Node ascendants. nodedesc - Node descendants. nodejoin - Recompose node. nodepar - Node parent. nodesplt - Split (decompose) node.
noleaves - Determine nonterminal nodes. ntnode - Number of terminal nodes. ntree - Constructor for the class NTREE.
plot - Plot tree object. read - Read values in tree object fields.
readtree - Read wavelet packet decomposition tree from a figure. set - Set tree object field contents. tnodes - Determine terminal nodes (obsolete - use LEAVES). treedpth - Tree depth. treeord - Tree order. wptree - Constructor for the class WPTREE.
wpviewcf - Plot wavelet packets colored coefficients. write - Write values in tree object fields. wtbo - Constructor for the class WTBO. wtreemgr - NTREE object manager.
General Utilities.
![](/images/remos_downloads/detail/45/CoursMatlab-id4506.4514.pdf-015.jpg)
wcodemat - Extended pseudocolor matrix scaling.
wextend - Extend a Vector or a Matrix. wkeep - Keep part of a vector or a matrix. wrev - Flip vector. wtbxmngr - Wavelet Toolbox manager.
Other.
wvarchg - Find variance change points.
Wavelets Information.
waveinfo - Information on wavelets.
Demonstrations.
wavedemo - Wavelet Toolbox demos. demolift - Demonstrates Lifting functions in the Wavelet Toolbox. See also wavedemo.
>>
La commande « wavemenu » ouvre l'interface graphique de prise en main de la boîte à outils. Cette interface sert à utiliser de façon visuelle les différentes fonctions proposées sur des signaux (1D) ou des images (2D) sans connaître les commandes Matlab nécessaires à la création d'un programme.
>> wavemenu
Les fonctions 1D concernent l'analyse multirésolution de signaux avec les ondelettes prédéfinies de la boîte à outils, l'analyse en paquet d'ondelettes, les ondelettes continues réelles et complexes.
Dans la partie 2D, on trouve des fonctions d'analyse multirésolution 2D et de paquets d'ondelettes 2D.
La commande « wavedemo » permet d'étudier des exemples d'analyse multirésolution à l'aide des commandes du langage de programmation Matlab.
>> wavedemo
La partie Command line mode détaille la programmation des fonctions d'analyse multirésolution.
![](/images/remos_downloads/detail/45/CoursMatlab-id4506.4514.pdf-016.jpg)
Dans l'exemple ci-dessous, on calcule la transformée (analyse) d'un signal au premier niveau de résolution.
a) Lecture d'un signal et affichage :
>> clear
>> load ;
>> sig=noisbump;
>> whos
Name Size Bytes Class
noisbump 1x1024 8192 double array sig 1x1024 8192 double array Grand total is 2048 elements using 16384 bytes
>> figure;plot(sig);
b) Analyse multirésolution à un niveau et affichage du résultat :
>> [a,d]=dwt(sig,'db2');
>> figure;
>> subplot(2,2,1);plot(sig);subplot(2,2,3);plot(a);subplot(2,2,4);plot(d);
Dans l'exemple ci-dessous, on calcule la transformée (analyse) d'un signal à trois niveaux de résolution, ensuite on effectue la reconstruction (synthèse). Cette transformée utilise les ondelettes symlets d'ordre 3.
a) Transformation à trois niveaux de résolution et affichage du résultat :
>> clear a;clear d;
![](/images/remos_downloads/detail/45/CoursMatlab-id4506.4514.pdf-017.jpg)
>> [c,l]=wavedec(sig,3,'sym3');
>> ap3=appcoef(c,l,'sym3',3);
>> ap2=appcoef(c,l,'sym3',2);
>> ap1=appcoef(c,l,'sym3',1);
>> d3=detcoef(c,l,3);
>> d2=detcoef(c,l,2);
>> d1=detcoef(c,l,1);
>> figure;
>> subplot(4,2,1);plot(sig);
>> subplot(4,2,3);plot(ap1);
>> subplot(4,2,4);plot(d1);
>> subplot(4,2,5);plot(ap2);
>> subplot(4,2,6);plot(d2);
>> subplot(4,2,7);plot(ap3);
>> subplot(4,2,8);plot(d3);
b) Reconstruction à trois niveaux de résolution et affichage du résultat :
![](/images/remos_downloads/detail/45/CoursMatlab-id4506.4514.pdf-019.jpg)
>> orig=waverec(c,l,'sym3');
>> figure;subplot(2,2,1);plot(sig);
>> subplot(2,2,2);plot(orig);
>> subplot(2,2,3);plot(sig-orig);
Dans l'exemple ci-dessous, on calcule la transformée (analyse) d'une image au premier niveau de résolution, on élimine des détails et on reconstruit l'image moins détaillée.
a) Analyse au premier niveau de résolution et affichage du résultat :
>> close all
>> clear
>> img=imread('');
>> img=im2double(rgb2gray(img));
>> figure;imshow(img);
>> [ap,dh,dv,dd]=dwt2(img,'db4');
>> figure;imshow([ap,dh;dv,dd]);
>> figure;imshow([ap/2,dh*8;dv*8,dd*8]);
>> figure;mesh([ap,dh;dv,dd]);
b) Annulation des détails verticaux et diagonaux :
![](/images/remos_downloads/detail/45/CoursMatlab-id4506.4514.pdf-020.jpg)
>> size(dv) ans =
303 403
>> dv=zeros(303,403);
>> size(dd) ans = 303 403 >> dd=zeros(303,403);
c) Reconstruction et affichage :
>> new=idwt2(ap,dh,dv,dd,'db4');
>> figure;imshow(new);
Dans l'exemple suivant, on calcule la transformée (analyse) d'une image à deux niveaux de résolution.
a) Analyse à deux niveaux de résolution et affichage du résultat :
>> close all
>> clear
>> img=imread('');
>> img=im2double(rgb2gray(img));
>> figure;imshow(img);
>> [c,s]=wavedec2(img,2,'haar');
>> a2=appcoef2(c,s,'haar',2);
![](/images/remos_downloads/detail/45/CoursMatlab-id4506.4514.pdf-021.jpg)
>> a1=appcoef2(c,s,'haar',1);
>> figure;
>> subplot(1,3,1);imshow(img);
>> subplot(1,3,2);imshow(a1/2);
>> subplot(1,3,3);imshow(a2/4);
>> dh2=detcoef2('h',c,s,2);
>> dh1=detcoef2('h',c,s,1);
>> dv2=detcoef2('v',c,s,2);
>> dv1=detcoef2('v',c,s,1);
>> dd2=detcoef2('d',c,s,2);
>> dd1=detcoef2('d',c,s,1);
>> figure;
>> subplot(1,3,1);imshow(img);
>> subplot(1,3,2);imshow([a1/2,dh1;dv1,dd1]);
>> subplot(1,3,3);imshow([a2/4,dh2;dv2,dd2]);
La boîte à outils ondelettes de Matlab fournit de nombreuses fonctions, simples à mettre en oeuvre et très efficaces, pour développer rapidement des prototypes d'applications de traitement du signal et des images. Elle complète les boîtes à outils traitement du signal (signal processing) et traitement d'images (image processing).
![](/images/remos_downloads/detail/45/CoursMatlab-id4506.4514.pdf-022.jpg)
Dans la dernière version, la boîte ondelettes apporte les transformées lifting scheme (ou ondelettes de seconde génération) définies par Sweldens [2], y compris les transformées en nombres entiers définies par Calderbank [3].
Il existe d'autres boîtes à outils ondelettes sous Matlab qui ont l'avantage d'être gratuites comme WaveLab () ou bien encore Yamwt
().
- Matlab,
- Mathsoft Inc.,
- Forum ondelettes,
- Wavelets Digest,
-
[1] S. Mallat, « A Wavelet Tour of Signal Processing », Academic Press, 1999
[2] W. Sweldens, « The lifting scheme : a custom design construction of bi-orthogonal wavelets », Journal of Applied Computational Harmonic Analysis, 3(2), p. 186-200, 1996
[3] R. Calderbank, I. Daubechies, W. Sweldens, B.-L. Yeo, « Wavelets transforms that maps integers to integers », Journal of Applied Computational Harmonic Analysis, 5(3), p. 332-369, 1998