Vous êtes sur la page 1sur 36

Traitement du signal sous MATLAB M.

SABRI Universit Sultan My Slimane - 2008

TABLE DES MATIERES

_____________________________________________________________________________________________________

TP I

INITIATION au logiciel MATLAB


Manipulation des variables Programmation : Les scripts, les fonctions Partie thorique

03

_____________________________________________________________________________________________________

TP II

NOTIONS de SIGNAL NUMERIQUE


Convolution Signaux harmoniques Bruit : Rapport signal sur bruit Partie thorique

09

_____________________________________________________________________________________________________

TP III

TRANSFORMEE de FOURIER discrte


Echantillonnage Repliement du spectre TFD Partie thorique

13

_____________________________________________________________________________________________________

TP IV

CALCUL et ANALYSE SPECTRALE


Analyse par TFD Fentres danalyse Rsolution frquentielle Analyse par autocorrlation Partie thorique

16

_____________________________________________________________________________________________________

TP V

NOTIONS de TRAITEMENTS AUDIO


Le systme acoustique humain Qualit des donnes audio Le son sous matlab

19

_____________________________________________________________________________________________________

TP VI

MODULATIONS NUMERIQUES
Modulations analogiques (amplitude-phase) Modulations numriques (QAM-PSK) Partie thorique

24

_____________________________________________________________________________________________________

Traitement du signal sous MATLAB M. SABRI Universit Sultan My Slimane - 2008


_____________________________________________________________________________________________________

TP VII

ESTIMATION et DETECTION
Estimation des deux premiers moments Dtection par moyennage Dtection par intercorrlation Partie thorique

27

_____________________________________________________________________________________________________

TP VIII

FILTRAGE NUMERIQUE
Analyse de filtres Synthse de filtres Filtrage dharmoniques Rduction de bruit Partie thorique

29

_____________________________________________________________________________________________________

TP IX

NOTIONS de TRAITEMENT dIMAGES


Lecture et criture dune image Oprations sur les images Filtrage dune image Seuillage dune image Dtection de contours

32

_____________________________________________________________________________________________________

Traitement du signal sous MATLAB M. SABRI Universit Sultan My Slimane - 2008

TP I

INITIATION au logiciel MATLAB

_____________________________________________________________________________________________________

Ce TP a pour but dapprendre utiliser le logiciel Matlab afin de pouvoir dvelopper des applications simples en traitement du signal. Entrer dabord la commande diary(initiation) pour garder les traces de votre travail ; la fin de la sance entrer la commande diary() ; I- Manipulation des variables On distingue les variables scalaires et les variables vectorielles (matricielles en gnral). 1- Variables scalaires Dans un premier temps on gnre trois variables scalaires a, b et c de la manire suivante : >> a=2 ; >> b=3; >> c=4 ; On peut consulter la valeur dune variable en entrant son nom :

>> a
La rponse serait : a= 2 Cela signifie que les valeurs des variables sont mmorises automatiquement avec leurs noms. 2- Taille des variables dans la mmoire La taille dun scalaire de type double est 8 Bytes = 8 Octets = 64 Bits 3- Commandes de base : who et whos : Affiche la taille mmoire et types de toutes les variables utilises. cd : Affiche le rpertoire (directorie) o vous oprez en ce moment. what, dir : Affiche la liste les noms des fichiers contenus dans le rpertoire actuel. help nom_fonction : Donne un descriptif de la fonction et ses arguments dentre sortie. 4- Oprations sur les variables >>d=a+b+c >>e=a+b*c >>f=(a+b)*c 3

Traitement du signal sous MATLAB M. SABRI Universit Sultan My Slimane - 2008

>>g=(a/b)*c >>h=a^2 5- Les matrices et les variables vectorielles Matlab est optimis pour lusage matriciel : Eviter les formulations non matricielles. [ a b c ] est un vecteur ligne. [a ;b ;c ;] est un vecteur colonne. V est le transpos du vecteur V u=1:5 est le vecteur [1 2 3 4 5] (de mme que [1 :5] et (1 :5). t=0 :2 :15 est le vecteur [0 2 4 6 8 10 12 14] sin(t) est le vecteur [sin(0) sin(2) sin(14)] zeros(1,N) est le vecteur ligne nul N lments. Ones(1,N) est le vecteur ligne N lments gaux 1. 6- Oprations sur les vecteurs Il faut respecter les dimensions des vecteurs et matrices. Gnration automatique dun vecteur V=dbut:pas:fin; >>v3=1:10 >>v4=1:-0.5:-1 >>debut=0;fin=256;pas=8; >>v5=debut:pas:fin >>debut=0;fin=2*pi;pas=0.1; >>v5=debut:pas:fin Une liste des fonctions les plus courantes est disponible dans laide en ligne en tapant la commande (elfun dsigne elementary functions : sin, cos, log, exp) >>help elfun 7- Les matrices Saisir la matrice 3x3 suivante : a=[1 2 3 ;4 5 6 ;7 8 9] Noter que deux lignes sont spares par un point virgule. Si vous entrez la commande a(:) vous obtenez le vecteur colonne [1 4 7 2 5 8 3 6 9]. La fonction eig donne les valeurs propres de la matrice a. 4 o pi dsigne le nombre 3.14 On dfinit une valeur de dbut : dbut On dfinit une valeur de fin : fin On dfinit un pas de progression linaire ou logarithmique (incrmentation) : pas ; si le pas nest pas spcifi, il est gal 1 automatiquement.

Traitement du signal sous MATLAB M. SABRI Universit Sultan My Slimane - 2008

zeros(N) est la matrice nulle NxN, eye(N) est la matrice identit NxN. II- ROGRAMMATION 1-LES SCRIPTS Plutt que de taper les commandes au clavier les unes aprs les autres pour effectuer une tche, ce qui vous oblige refaire la mme chose chaque utilisation de cette tche, il est prfrable de grouper les commandes dans un fichier extension .m, ainsi tous les programmes auront pour nom name.m. Il suffit alors de taper name pour que la tche sexcute. Exemple 1 : Crez un fichier qui sappelle essai1.m, qui gnre un signal sinusodal x(t) de n points, puis visualisez le laide de la commande plot(x). Etape 1 : dition du fichier par la commande : edit essai1.m Etape 2 : taper les commandes suivantes dans la fentre ddition :

%ce fichier gnre et affiche une sinusode t=0:0.1:2*pi; x=sin(t); Remarques : 1- Le texte dbutant par % est un commentaire de votre choix, il est ignor par le logiciel. Vous pouvez supprimer ces commentaires, mais ils sont utiles lorsquon a plusieurs programmes. 2- Chaque instruction doit tre suivie dun point virgule. >>essai1 2- Utilitaires graphiques Exemple 2 : Gnrez, laide dun programme prog1.m, deux priodes des deux signaux x(t)=cos(t) et y(t)=sin(t) et visualisez les deux signaux sur une mme figure, lune en rouge et lautre en bleu laide de la fonction plot(t,x,b,t,y,r). Mettre une lgende. Linstruction title(titre de la courbe ou la figure) ajoute un titre la figure visualise. xlabel(titre des abscisses) affiche un titre horizontal suivant x. ylabel(titre des ordonns) affiche un titre vertical suivant y. grid on et grid off quadrille ou non le graphique. Etape 3 : Sauvegardez le fichier dans le rpertoire en cours ; Etape 4 : Excutez le programme en entrant la commande suivante : % t est le vecteur temps avec un pas dchantillonnage 0.1 % le signal x est un vecteur de mme taille que le vecteur t

plot(t,x) ;grid on % dessine lcran x en fonction de t

Traitement du signal sous MATLAB M. SABRI Universit Sultan My Slimane - 2008

Exemple 3 : Visualisez sur une mme figure, laide dun programme prog2.m, les quatre signaux cos(t), sin(t),log10(t) et exp(t) en utilisant la fonction subplot(.,.,.) qui divise lcran en quatre sous figures : (2,2,1),(2,2,2),(2,2,3) et (2,2,4). >>subplot(2,2,1),plot(t,x); Saisie dune donne au clavier : Pour saisir une variable x partir du clavier, on utilise linstruction : x=input(x=) ; Affichage dun message lcran : Pour afficher lcran un message personnel suivi dun retour la ligne : fprintf(message personnel \n) ; Affichage de la valeur dune variable : Pour afficher lcran la valeur dune variable x : fprintf(x=%d) ; III- LES FONCTIONS Si plusieurs de vos programmes personnels utilisent en commun une liste dinstructions , il est prfrable de regrouper ces instructions sous forme dun programme indpendant. A chaque besoin on appelle le dit programme par son nom : cest une fonction. Une fonction possde des paramtres dentre et des paramtres de sortie, dont la syntaxe de dclaration est la suivante : function [sortie1,sortie2,]=nom_fonction(entre1,entre2,) Le programme matlab correspondant la fonction doit porter le mme nom que la fonction : nom_fonction.m Exemple 1 : Calcul de la moyenne arithmtique m dun vecteur v de dimension n : m=
1 n v (i) n i=1

La fonction moyenne.m comportera les instructions suivantes : function resultat=moyenne(v,n); %dclaration de la fonction

r=0; %initialisation de la moyenne for k=1:n r=r+v(k); end resultat=r/n; On note la prsence de la boucle itrative : 6

Traitement du signal sous MATLAB M. SABRI Universit Sultan My Slimane - 2008

for indice=debut:pas:fin instruction ; end Qui est quivalente : indice=debut ; (B) instruction; debut=debut+pas; si debut=fin aller B; Mise en uvre de la fonction >>moyenne(1:100,100) Comparer avec la fonction matlab mean. Exemple 2 : Crez une fonction puissance.m qui donne la valeur efficace s et la puissance moyenne p dun signal. x tant un vecteur de composantes x(i) , i=1..n, la valeur efficace de x est : s= p =

1 n 2 x (i) n i =1

Testez cette fonction sur un signal sinusodal damplitude A et de priode 1. Comparer avec la fonction matlab std. Exemple 3 : Diagramme de bode. 1- Crez une fonction spectre(f,H) qui affiche lcran le spectre damplitude 20log|H(f)| et le spectre de phase Arg(H(f)) en fonction de f en Hertz avec indication du titre de chaque courbe ; Les paramtres dentre sont le vecteur frquence f=0:fmax et le vecteur complexe H. Fonctions conseilles :abs(x),angle(x) et log10(x). Utilisez la fonction spectre dans un programme indpendant myfilter.m pour tracer les diagrammes de Bode des filtres passe bas et passe haut dont les fonctions de transferts sont dfinies par : f j. 1 fc H1(f)= , H2 (f)= f f 1 + j. 1 + j. fc fc fc tant la frquence de coupure demande par le programme et fournie par lutilisateur lexcution. Exemple 4 : vitesse de convergence dune srie Considrons la srie en N suivante (qui converge vers exponentiel de x) : 2-

Traitement du signal sous MATLAB M. SABRI Universit Sultan My Slimane - 2008

s( x, N ) =
k =0

xk k!

Raliser : Une fonction factoriel(n) qui calcule le factoriel dun entier naturel. Une fonction somme(x,n) qui calcule s(x,n). Un programme prog3.m qui calcule la valeur de lexponentiel de 2 avec une prcision (incertitude relative) suprieure 95% (incertitude infrieur 5%).

PARTIE THEORIQUE 1. En utilisant e j. n = e j. , Trouver les expressions de cos(na) et sin(na) pour n=2 et n=3. 2. De mme retrouver les expressions de cos(a+) et sin(a+). 1 1 3. Calculer la somme s ( n) , avec s(n)= n + j n 2 3 n =1 j 4. Mme question pour s(n)= ( ) n 3 5. Trouver les complexes z tels que : z N = z N 6. trouver les racines cubiques de 1.
n

[ ]

7. Calculer le produit infini 8. Calculer I n =


/2

e
n =1

j / 2 n

sin
0

( x) dx et J n =

/2

cos
0

( x ) dx

________________________________________________________________________ Le compte rendu de la sance doit tre rdig sur la feuille qui vous est fournie et doit contenir en plus de la partie thorique : Un listing des programmes : prog1.m prog2.m puissance.m spectre(f,H) myfilter.m factoriel(n) somme(x,n) prog3.m

Traitement du signal sous MATLAB M. SABRI Universit Sultan My Slimane - 2008

TP II

NOTIONS DE SIGNAL NUMERIQUE

_________________________________________________________________________________________________________________

I- Dfinition Un signal numrique s(k) est une suite de N chantillons rgulirement espacs de Te secondes : s(0,),s(Te),s(2Te ),,s((N-1)Te) La grandeur Fe=1/Te est appele frquence dchantillonnage : cest le nombre dchantillons par seconde. Le nombre dchantillons N est le plus souvent une puissance de 2 : N= 2 p o p est un entier naturel.
Signal numrique
100 80 60 40 20 0 Te 2Te 3Te kTe (secondes) 4Te kTe

II- Visualisation du signal s Pour visualiser s(kTe) correctement lcran, il faut prciser laxe du temps t=k Te : t=0:Te:(N-1)*Te ; plot(t,s); Remarque : la commande plot(s), dessine s(k) en fonction de 1,2,,N ; cest--dire Te=1, ce qui est rarement le cas. Exemple 1 : Signal rectangulaire On considre le signal rectangulaire Rec(k) gal lunit pour k=1N/4 et nul pour k=N/4+1N. Pour N=512 et Te=0.01s visualisez laide dun programme Rec(k) en prcisant sur la figure laxe du temps avec lunit de mesure. Visualisez deux priodes de londe carre de priode 2 fournie par Matlab square(t) pour plusieurs pas dchantillonnage : t=0 :pas :4*pi

Exemple 2 : convolution de deux signaux x(k) et y(k) tant deux signaux numriques de mme dure N.Te , la convolution de x et y est un signal z(k) de dure (2N-1).Te dfini par : z(k)=x*y(k)= x ( m) y( k m + 1) , k=12N-1
m =1 k

s(kTe)

Traitement du signal sous MATLAB M. SABRI Universit Sultan My Slimane - 2008

Remarque : Le nombre de points de z(k) est gnralement N+M-1 o N et M dsignent le nombre dchantillons respectifs de x et y. Lexpression gnrale de la convolution est un peu diffrente si la variable temps dbute zro au lieu de un (ce quexige Matlab).

1- Ralisez un programme prog1.m qui effectue la convolution de x(k)=Rec(k) avec lui-mme et visualisez Rec(k) et z(k) rsultant. On prendra N=512. Observez la forme de z(k) ainsi que sa largeur par rapport celle de Rec(k). A quel instant k, z(k) est-il maximal ? Quel est la valeur de ce maximum ? Interprter. 2- comparer z(k) et le rsultat de z2=conv(x,x) Exemple 3 : Signaux harmoniques On considre les deux signaux : s1(t)=
4
4

2k . sin( 2 .2kf t)
1 k =1

(1) k s2(t)= . cos( 2 .k . f 2 .t ) k k =1


Avec : N=1024, f1=50Hz, Fe=8Khz pour s1 et f2 =1/2 Hz , Fe=100Hz pour s2,. Gnrez et visualisez en mme temps, laide dun programme prog2.m, les deux signaux s1 et s2. Quelles remarques pouvez vous faire sur la forme des signaux? Que constatez vous lorsque les sommations vont plus loin que 4? A quel type de signaux connus pouve z vous comparer les signaux gnrs (comparer sawtooth (t) et square (t))?

III- NOTION de BRUIT Le bruit b(k) est dfini comme tant un signal indsirable se mlant additivement ou autrement un signal s(t) qui intresse lobservateur. Le model le plus frquent de bruit de mesure de grandeurs physiques est le bruit blanc gaussien : cest un bruit alatoire b(k) dont les chantillons sont d-corrls (entendez par cela que mme si on connat b(k1), b(k2) reste aussi imprvisible quavant). La fonction b=randn(1,N) permet de gnrer un vecteur bruit b de distribution pseudo normale (de Gauss) de taille N de moyenne nulle et dcart type 1 . Un coefficient multipli par randn permet daugmenter volont la puissance du bruit. Ainsi pour gnrer un vecteur bruit blanc de taille N, de moyenne m et dcart type la commande est : bruit= m+ *randn(1,N); Dont la puissance est Pb = m 2 + 2 (Puissance de la moyenne plus celle des fluctuations autour de cette moyenne).

10

Traitement du signal sous MATLAB M. SABRI Universit Sultan My Slimane - 2008

IV- Rapport Signal sur Bruit (SNR ) Observons un signal y(k) bruit additivement : y(k) = s(k)+b(k) Le SNR en dB dfinit le rapport de la puissance du signal Ps celle du bruit Pb :
SNR=10. log 10

Ps Pb

On distingue trois cas de figure : SNR positif : le signal est plus puissant que le bruit. SNR nul : il y a autant de bruit que de signal. SNR ngatif : le signal est dgrad, il ya plus de bruit que dinformation.

Lnergie dun signal x(k) est fournie sous matlab par sum(x.^2). Concernant la puissance moyenne, il faut diviser lnergie par le nombre dlments de x(k). Exemple 1 : sinusode bruite Ralisez un seul programme prog3.m qui effectue les tches suivantes : Gnre une sinusode s(k) de frquence 50Hz, damplitude 1, chantillonne 2.5KHz (Te=0.4ms) et de taille n=256. Calcule lnergie de s(k). Gnre un bruit damplitude quelconque. Additionne le bruit la sinusode Visualise les trois signaux simultanment. Affiche le SNR lcran.

Excuter trois exemples donnant des SNR ngatif, nul et positif. PARTIE THEORIQUE 1- s(t) tant un signal dfini sur [-T/2,T/2], on peut lanalyser sous la forme :
s( t ) =
n = +

j 2 nf 0t

Avec : Cn=

1 T

T 2

s(t)e
T 2

j 2 nf 0t

dt ,

f0=T 1

(C n)n constituent le spectre de Fourier du signal s(t) aux frquences (harmoniques) nf0 multiples du fondamental f0. a) Montrer que C 0 est la valeur moyenne du signal s(t) sur [-T/2,T/2]. On lappelle aussi la composante continue, s(t)-C0 tant la composante oscillante ou variable. b) Exprimer s(t) en fonction de sin(2 nf0t) et cos(2 nf0 t), n=0 + . c) Quelle relation lie C -n et Cn?

11

Traitement du signal sous MATLAB M. SABRI Universit Sultan My Slimane - 2008

2- Soit le signal priodique de priode T=2 : s(t)=0 si - < t <0 s(t)=sin(t) si 0= t < a) Tracer s(t). b) Calculer la valeur moyenne de s(t). c) Calculer la srie de Fourier de s(t). 3- Soit le signal carr de priode T dfini par : s(t)=A si |t|<T/4 s(t)=0 si T/4<|t|<T/2 a) Tracer s(t). b) Calculer la valeur moye nne de s(t). c) Calculer la srie de Fourier de s(t). 4- Soit le signal s(t) de priode T avec 0< <T/2 : s(t)=A.sign(t) si T/4- /2 < |t| < T/4+ /2 s(t)=0 si |t| < T/4- /2 ou T/4+ /2 < |t| a) Tracer s(t). b) Calculer la valeur moyenne de s(t). c) Calculer la srie de Fourier de s(t). d) On dfinit le spectre de puissance du signal s(t) par Pn=C n 2 , Cn dsigne un coefficient de Fourier. Calculer Pn. Pour quel rapport /T a-t-on P 1=A 2 ?
_____________________________________________________________________________________________________

Le compte rendu de la sance doit tre rdig sur la feuille qui vous est fournie et doit contenir en plus de la partie thorique : Un listing des programmes : prog1.m, prog2.m, prog3.m

12

Traitement du signal sous MATLAB M. SABRI Universit Sultan My Slimane - 2008

TP III

TRANSFORMEE de FOURIER DISCRETE (TFD)

_____________________________________________________________________________________________________

I- Echantillonnage des signaux analogiques Considrons un signal analogique s(t) avec t R. Pour pouvoir manipuler ce signal par un logiciel tel que matlab on doit lchantillonner, cest--dire prlever une cadence Te secondes des valeurs s(k) de s(t) : s[-(N-1)Te]s[Te],s(0),s[Te]S[(N-1)Te] Aprs traitement du signal chantillonn et obtention des rsultats projets, on doit retrouver partir des seuls chantillons de s le signal analogique en totalit : cest possible si on respecte le thorme de Shannon. Ce thorme stipule que si s(t) possde une transforme de Fourier de largeur de bande 2Fmax et si la frquence dchantillonnage Fe est telle que : 2Fmax<Fe alors on peut retrouver s(t) partir des chantillons s(k) de la manire suivante : s(t)= s (k ) sin c[ Fe (t k .Te )]
+

O : sin c (u ) =

sin( u ) . u

Obstacles pratiques : Les signaux physiques observs possdent le plus souvent des spectres de Fourier occupant des bandes frquentielles illimites, donc F max est infini. Lobservation dun signal physique se fait durant un intervalle limit [0,T] ce qui donne le plus souvent un spectre trs tal. Pour pallier ces difficults, il faut noter que le spectre dun signal physique tend vers zro avec la frquence (lnergie du signal svanouit aux hautes frquences). Ceci nous permet de limiter la bande significative du spectre et par la suite appliquer le thorme de Shannon. II- Transforme de Fourier Discrte : La TFD dordre N dun signal numrique s(kTe ), k=0N-1 est dfinie par : S(f)=S(
N 1 n .Fe )= s (kTe) Exp[ j 2kn / N ] , n= -N/2N/2-1 N k =0

La transformation inverse : s(t)=s(kTe)= Remarques : Par abus dcriture et pour simplifier on note s(k) et S(n) le signal et sa TFD en omettant les facteurs Te et F e. N est souvent une puissance de 2 et dans ce cas il ya un algorithme rapide de calcul des N coefficients de la TFD, on parle de FFT (Fast Fourier Transform). 13
1 N / 21 S (nFe / N )Exp[ j 2kn / N ] , k=0N-1 N n = N / 2

Traitement du signal sous MATLAB M. SABRI Universit Sultan My Slimane - 2008

Ainsi aux coefficients s(1)s(N) correspondent par TFD les coefficients S(1)S(N). Sous matlab la TFD est donne par la fonction fft(s,N). La transforme inverse est donne par ifft(s,N).
Transforme de Fourier Discrte
40 |S(nFe/N)| 30 20 10 0 Fe/N 2Fe/N 3Fe/N nFe/N (Hertz) 4Fe/N (1-1/N)Fe

On dfinit les spectres damplitude et de phase du signal s(k) par : 20*log10(abs(fft(s,N))) angle(fft(s,N)) Repliement de spectre (aliaising) Gnrez une sinusode de frquence f0 chantillonne Fe=100Hz avec f0<fe/2.Observez le signal et sa TFD. Augmentez la frquence f de la sinusode de manire dpasser 0 Fe/2. En observant le spectre du signal donnez sa frquence relle fr. Que se passe-t-il lorsque f0=Fe/2 ? Exprimez fr en fonction de f0 et Fe. Expliquez laide dun schma ce qui se passe en gnral lorsque f0 dpasse Fe/2.

Signal Chirp linaire Gnrer le signal x(t)= sin( .t 2 + 2 .t + 1) de dure une seconde avec Fe=1kHz. Visualiser x en fonction de t. Visualiser la TFD de x. Commenter. La frquence instantane de x(t) dpend de t, exprimer cette frquence. Cela implique que le thorme dchantillonnage ne pourra jamais tre respect : aliaising invitable. Matlab permet de visualiser le spectre par tranches temporelles en fonction du temps : Cest le spectrogramme. Observer ce spectrogramme laide de la fonction specgram(x) ; prog1.m : Gnrer et visualisez les n/8 points de la TFD dordre n dune sinusode sin(t) ainsi que sa phase. Utiliser le zoom et data cursor pour lire les pics. Faites de mme pour une somme de sinusodes sin[(2k+1)t], k=04.

14

Traitement du signal sous MATLAB M. SABRI Universit Sultan My Slimane - 2008

prog2.m prog3.m Gnrer et visualisez la TFD dune sinusode bruite de frquence f0 en lui rajoutant un bruit blanc centr de puissance 2 et observez si lon distingue le pic correspondant la frquence de la sinusode. Testez plusieurs valeurs de 2 et de f0 . Gnrer et visualisez Rec(k), sur 2 secondes. Visualisez les n/8 points des spectres damplitude et de phase de la TFD dordre n=512 en respectant les units temporelle et frquentielle. Gnrer et visualisez la convolution z(k) de Rec(k) avec lui-mme (utilisez la fonction conv(Rec,Rec)) ainsi que sa TFD et sa phase (Les n/8 points uniquement). Comparez la TFD de z(k) et le carr de la TFD de Rec(k). Gnrez wave(k) une onde carre laide de la fonction square( pour lutiliser correctement tapez help square). Visualisez wave et sa TFD.

PARTIE THEORIQUE I- Proprits de la TFD On considre les signaux causals x(k) et y(k). Dterminer la TFD de x(k-k0). Dterminer la TFD de k.x(k). Dterminer la TFD de x(k)*y(k). Dterminer la TFD du produit xy.

1. 2. 3. 4.

II- Modulation On considre un signal s(t) dont la transforme de Fourier S(f) occupe la bande de frquences [-F max,Fmax]. 1- Donner lexpression de la transforme de Fourier analogique de sm(t)=s(t).cos(2 fpt) en fonction de S(f). 2- Donner lexpression de la transforme de Fourier analogique du signal dmodul mais non filtr : sdm(t)=s m(t).cos(2 fpt), en fonction de S(f). 3- Proposez une mthode pour extraire S(f) de sdm(t).
_____________________________________________________________________________________________________

Le compte rendu de la sance doit tre rdig sur la feuille qui vous est fournie et doit contenir en plus de la partie thorique : Un listing des programmes : prog1.m, prog2.m, prog3.m

15

Traitement du signal sous MATLAB M. SABRI Universit Sultan My Slimane - 2008

TP IV I- Analyse du spectre par TFD

CALCUL et ANALYSE SPECTRALE

_________________________________________________________________________________________________________________

On va procder une tude de leffet de la dure M dobservation dun signal sur sa TFD ainsi que leffet de la frquence dchantillonnage Fe. On prendra soin de manipuler des signaux de tailles N=2
p

2,4,8,16,32,64,128,256,512,1024,2028,4056 1- Influence de la taille de la fentre dobservation (windowing). Il est possible dappliquer la TFD sur la totalit ou une partie dun signal de taille N. La partie analyse est appele fentre dobservation. On va mettre en vidence le fait que la prcision frquentielle (rsolution) augmente avec la taille de la fentre. Ralisez prog1.m qui : Gnre une sinusode s(k) de frquence 100Hz, de taille N=512 chantillonne 1kHz. Visualise les modules des TFD dordres M=16, 32, 64, 128, 256, 512 et donne chaque fois la largeur f du lobe principal du spectre : Cette largeur est lcart entre les frquences o le max du spectre est divis par deux (largeur mi-hauteur) (utiliser la fonction find() sinon le zoom et data cursor . Vrifiez que le produit p=M f est constant. Conclure. 2- Fentre danalyse : Une fentre danalyse est une mise en forme que lon donne au signal avant de lanalyser par TFD : On multiplie s(k) terme terme par une fentre w(k) de forme adquate pour rduire les lobes secondaires afin que le spectre observ tende vers le rsultat thorique qui est pour une sinusode de frquence f0 une raie pure la frquence f0 . Les analyseurs de spectre (appareils qui donnent le spectre dun signal) proposent de nombreuses fentres danalyse, qui ont chacune des effets diffrents : Blackman, Hamming, Hanning Sous matlab on peut utiliser les fonctions hanning(N) et blackman(N) pour le fentrage (ce sont deux vecteurs colonnes de taille N). Ralisez prog2.m qui : Visualise sur une mme figure les deux fentres cites et leurs spectres damplitude sur [0, 0.5Hz]. Conclure sur lutilit de ces deux fentres. Multiplie terme terme la sinusode s(k) du prog1.m par chacune des deux fentres, et visualise les spectres rsultants. Observez leffet du fentrage sur le spectre. Comparez leffet des deux fentres proposes.

16

Traitement du signal sous MATLAB M. SABRI Universit Sultan My Slimane - 2008

II- Rsolution frquentielle de la TFD La rsolution frquentielle f nous informe sur la capacit sparer les valeurs du spectre pour deux frquences trs proches : On peut distinguer les spectres aux frquences f et f+ f mais pas aux frquences f et f+ o < f. Plus f est petite plus la rsolution est haute. Cette rsolution dans le cas de la TFD dordre N est dtermine par le nombre de points danalyse N et la frquence dchantillonnage F e :
f=Fe /N

On va essayer de voir les limites de lanalyse par TFD en essayant de dtecter des sinusodes prches. Ralisez prog3.m qui : Gnre un signal chantillonn 1kHz de 1024 points, rsultat de laddition de deux sinusodes de mme amplitude A et de frquences respectives 100Hz et 105Hz. Dterminez exprimentalement la dure dobservation en dessous de laquelle on ne distingue plus les lobes principaux des TFD des deux composantes. Que vaut la taille thorique N min qui ne permet pas de sparer les deux raies ? On double simultanment la frquence dchantillonnage et la taille de la TFD : Est-ce quon obtient de meilleurs rsultats ? Un procd physique gnre un signal comportant deux raies 100Hz et 105Hz prsentes dans une bande [0,500Hz]. Quel serait le choix le plus conomique de la longueur dobservation et de la frquence dchantillonnage de ce signal afin de pouvoir distinguer les deux raies ?

III- Calcul du spectre par auto-corrlation : Ralisez prog4.m qui : Visualise la TFD X(n) dun signal rectangulaire x(k), sa fonction dautocorrlation R(n) et la TFD de R. Utiliser xcorr(x,x,biased) ; Visualise un bruit bla nc b(k), son auto -corrlation B(n) et la TFD de B. En comparant R(n) et X(n), vrifiez le thorme de Wiener-kinchine.

PARTIE THEORIQUE On dsigne par u(t) lchelon unit, nul pour t ngatif et gal 1 ailleurs. 1- Dterminer lnergie Es et la densit spectrale de puissance s du signal s(t)=u(t).exp(-at) avec a rel positif. 2- Dterminer la puissance moyenne Px et la dsp x du signal dterministe x(t)=A.sin(2 f0t+ ).

17

Traitement du signal sous MATLAB M. SABRI Universit Sultan My Slimane - 2008

3- Dterminer la puissance moyenne Px et la dsp y du signal alatoire y(t)=A.sin(2 f0t+ ), o est une v.a. uniforme sur [0,2 ]. 4- Quelle est lnergie ?E localise dans la bande [f0- f/2, f0 + f/2] dun signal s(t) nergie finie. 5- Quelle est la puissance ?P localise dans la bande [f0- f/2, f0+ f/2] dun signal s(t) puissance moyenne finie. Que se passe-t-il si f tend vers zro ? _________________________________________________________________ Le compte rendu de la sance doit tre rdig sur la feuille qui vous est fournie et doit contenir en plus de la partie thorique : Un listing du programme : prog1.m, prog2.m, prog3.m, prog4.m

18

Traitement du signal sous MATLAB M. SABRI Universit Sultan My Slimane - 2008

TP V AUDIO

NOTIONS

de

TRAITEMENT

_____________________________________________________________________________________________________

I- Introduction au systme acoustique humain Le systme de rception du son chez lhumain (loreille) comporte trois parties principales : Un canal externe en contact direct avec le milieu extrieur (lair). Une membrane (le tympan) sensible aux variations de pression dans le canal externe. Une partie interne htrogne qui dtecte les hautes, moyennes et basses frquences. Intensit : la puissance acoustique du son en Watts par centimtre carr. Elle dpend de la direction (position relative la source du son) Hauteur : la frquence de la fondamentale en Hertz. Ne dpend pas de la distance la source. Timbre : le contenu en harmoniques (les multiples du fondamental). Le mme timbre correspond plusieurs phases relatives ou formes temporelles.

Un son audible est caractris par :

1- La puissance acoustique Watt/cm2 Dcibels Exemple de son 10-16 10-14 10-12 10-10 10-7 10-5 0 dB 20 dB 40 dB 60 dB 90 dB 110 dB Son bas audible 3kHz Son bas audible 10kHz Son bas audible 100Hz conversation normale Limite du bruit industriel Concert de Rock

P , avec P0 P0=10-16. La puissance est proportionnelle au carr de la pression subie par le tympan.

P tant la puissance par cm2 , la puissance en dB scrit : PdB = 10. log 10

Lcart de puissance minimum distinguable par loreille est de lordre de 1dB soit peu prs 11% dcart relatif en puissance (correspond une pression minimale de 20 micropascales). Loreille possde une sensibilit logarithmique : un facteur deux ressenti correspond un facteur dix en puissance. 19

Traitement du signal sous MATLAB M. SABRI Universit Sultan My Slimane - 2008

2- La hauteur du son Le fondamental tant f, les harmoniques sont 2f, 3f, 4f, lis respectivement aux modes fondamental (do3), second (do4), troisime (sol4) 3. Le timbre Il correspond au contenu spectral du son, peu importe son allure temporelle. 4. Echelle logarithmique la sparation minimum entre niveaux distinguables tant de 1dB, pour coder la plage allant de 0dB 120 dB il faudra coder la plage de puissance allant de 0 1012 soit sur 40 bits. Du fait que loreille ait une sensibilit logarithmique, seuls 120 niveaux sont distinguables, do un codage sur 8 bits uniquement. Cela exige une quantification logarithmique des chantillons sonores (Echelle de quantification compense). X tant la donne originale, la donne quantifie Y scrit : Y= Y= ln( 1 + .X ) , ln( 1 + ) 0 X 1 (standard US, ex. =255) 1/A X 1 (standard EU, ex. A=87.6 )

1 + ln( A. X ) , 1 + ln( A)

5. Qualit des donnes audio


Qualit Musique HIFI Tlphone Tlphone Parole code LPC Bande 5Hz20kHz 200Hz3.2kHz 200Hz3.2kHz 200Hz3.2kHz Taux (kHz) 44.1 8 8 8 codage 16 bits 12 bits 8 bits 12 bits Dbit 706 K 96 K 64 K 4K Commentaire

Audiophile La parole La parole : courant Qualit pauvre

II- Le son sous Matlab Windows propose un standard des fichiers son : Le format .wav (.au est le standard chez unix). Ce format est rudimentaire et non compress. Comme tout fichier format, un fichier .wav comporte une entte : Champs de 44 octets, suivie des donnes (le son proprement dit). Lentte commence ds le premier octet (offset 0) et se compose des lments suivants : 1 2 3 TAG1 SIZE1 FORMA T 4 Octets Constante RIFF (Ox52,Ox49,Ox46,Ox46) 4 Octets Taille du fichier moins 8 octets 4 Octets Format= WAVE (Ox57,Ox41,Ox56,Ox45)

20

Traitement du signal sous MATLAB M. SABRI Universit Sultan My Slimane - 2008

4 5 6 7 8 9

TAG2 LGDEF FORMAT NBCANAUX FREQ

4 Octets Identifiant fmt (Ox66,Ox6D,Ox74,Ox20) 4 Octets Nombre doctets utiliss pour dfinir le contenu 2 Octets Format de fichier (1 : PCM,.) 2 Octets Nombre de canaux : 1 pour mono et 2 pour stro 4 Octets Frquence dchantillonnage en Hertz 2 Octets Nombre doctets par chantillon 2 Octets Nombre de bits par donne 4 Octets Constante data (Ox64,Ox61,Ox74,Ox61) 4 Octets Taille du fichier moins 44 octets

BYTEPERSEC 4 Octets Nombre doctets par seconde de musique

10 NBRBYTE 11 NBBITS 12 TAG3 13 SIZE2

1. Lecture dun fichier son wavplay(son1.wav,fs); pour couter, fs est la siz=wavread(son1.wav,size) ; y=wavread(son1.wav) ; y est un vecteur colonne si le son est mono et une matrice deux colonnes si le son est stro qui contient les donnes. Les donnes sont dans la plage [-1,1]. [x,fs]=wavread(son1.wav) ; x est identique y; fs est la frquence dchantillonnage en Hertz. [z,fs,bits]=wavread(son1.wav) ; bits est le nombre de bits par chantillon. u=wavread(son1.wav,N) ; u contient les N premires donnes ou chantillons. fid=fopen(son1.wav,r) ; Ouvre le fichier son en tant que flot de donnes non spcifis pour sa lecture. fid est le pointeur du fichier :pointe la donne actuelle. son_lu=fread(fid,inf,int16); son_lu est un vecteur colonne constitu de donnes 16 bits ; inf demande la lecture jusqu la fin du fichier. fclose(fid); Ferme le fichier. frquence dchantillonnage en Hertz.

siz(1) est le nombre dchantillons et siz(2) le nombre de canaux.

21

Traitement du signal sous MATLAB M. SABRI Universit Sultan My Slimane - 2008

Testez ces instructions sur un fichier son et en dduire la taille de lentte. 2. Ecriture dun fichier son wavwrite(x,fs,son2.wav) ; cre un fichier son son2.wav dont les chantillons (compris entre -1 et 1) se trouvent dans la matrice x avec une frquence dchantillonnage fs. 3. Enregistrement dun fichier son Brancher un micro votre PC et saisir les commandes : fs=44100 ; nbits=16 ; mode=2 ; D=16 ; %frquence dchantillonnage %bits par chantillon %mode stro %Dure de lenregistrement en secondes

x=audiorecorder(fs,nbits,mode) ;% x est une variable objet recordblocking(x,D) ; % Parler au micro pendant D secondes play(x) ; Ou: x=audiorecorder (fs,nbits,mode); record(x) ; Parler au micro. stop(x) ; y=play(x) ; Ecouter. stop(y) ; z=getaudiotata(x,int16); prog1.m : sons purs Gnrer un son pure de frquence audible x(t)= A. sin( 2f 0 t ) . Visualiser x et son spectre. Ecouter x. Ajouter x des sons de frquences multiples de f0 et visualiser le rsultat y et son spectre. Ecouter y. % Ecouter le son enregistr y=getaudiodata(x) ; % y contient les donnes son de type double

prog2.m Enregistrer un son x stro de dure 16 secondes. Visualisez sur deux systmes daxes diffrents les N=2048 premiers chantillons de chaque canal (un extrait y). 22

Traitement du signal sous MATLAB M. SABRI Universit Sultan My Slimane - 2008

Visualisez les spectres de phase et damplitude correspondant y.

prog3.m Modifier le contenu de x, en effaant quelques passages, puis visualisez le son et le spectre puis couter le rsultat. Mixage : Enregistrer deux sons diffrents x1 et x2 et fusionner les donnes alternativement (un morceau de x1 suivi dun morceau de x2etc) dans un fichier y. Afficher x1, x2, y ainsi que leurs spectres damplitude.

prog4.m

___________________________________________________________________ Le compte rendu de la sance doit tre rdig sur la feuille qui vous est fournie et doit contenir un listing des programmes : prog1.m, prog2.m, prog3.m, prog4.m

23

Traitement du signal sous MATLAB M. SABRI Universit Sultan My Slimane - 2008

TP VI I- Modulations analogiques

MODULATIONS NUMERIQUES

_____________________________________________________________________________________________________

La modulation en gnral est un procd technique permettant de transmettre des signaux occupant une certaine bande spectrale de base [-f max,f max] dun metteur vers un rcepteur tout en occupant dans le milieu de transmission les sparant une bande spectrale [fp -f max,fp+f max] trs loin de la bande de base. La frquence fp est dite la frquence porteuse. Evidemment on doit avoir fmax<fp/2 pour que les deux bandes ne chevauchent pas, afin que le rcepteur puisse restituer le signal original mis. Grce aux proprits de la TFD, il se trouve quen multipliant un signal s(t) par cos(2 fpt) lmission, le rsultat est un signal s m(t) ayant la mme bande spectrale que s(t), mais translate de fp. A la rception il suffit de multiplier par la mme fonction cos(2 fpt) pour isoler la bande de s(t). Programme faire : prog1.m Le programme ralise les tches suivantes : Gnre un sinus, x(k), de frquence 50 Hz chantillonn 8kHz sur 512 points. Module x(k)+2 par un cosinus , p(k), de frquence porteuse 2500Hz, ce qui donne m(k). Gnre dm(k)=m(k).p(k) et affiche les spectres des trois signaux. Comment restituer le signal x(k) partir de dm(k).

Remarque : La multiplication chantillon par chantillon de deux vecteurs x et y sous matlab : x.*y On se propose de moduler un signal audio en utilisant les fonctions Matlab ammod et pmmod. 1- Modulation damplitude prog2.m Fp = 5000; % frquence porteuse [x,Fe] = wavread(son1.wav) ;% signal audio moduler y = ammod(x,Fp,Fe); % signal modul z=amdemod(y,Fp,Fe) ;%dmodulation du signal modul Visualiser les trois signaux x ,y et z ainsi que leurs spectres damplitude. 2- Modulation de phase x = sin(2*pi*t) + sin(4*pi*t); Fp = 10; phasedev = pi/2; % deviation de phase pour la modulation de phase y = pmmod(x,Fc,Fs,phasedev); % Modulation 24

Traitement du signal sous MATLAB M. SABRI Universit Sultan My Slimane - 2008

Visualiser les deux signaux x et y. Bruit du canal et dmodulation On additionne du bruit blanc gaussien y (bruit du au canal de transmission), puis on effectue la dmodulation de phase. y = awgn(y,10,'measured',103); % additive white Gaussian noise y z = pmdemod ( y, Fp, Fe, phasedev); % Demodulate. Visualisez les signaux x, y et z. II- Modulations numriques 1- Trac des constellations Matlab permet deffectuer le trac des constellations des modulations les plus courantes (trace lenveloppe complexe des symboles de lalphabet). En voici deux exemples : PSK-16 M = 16; % Le nombre de symboles de lalphabet transmettre x = int16([0:M-1]); scatterplot (pskmod(x,M)); % effectue le tracage QAM-32 M = 32; x = int16([0:M-1]); y = qammod(x,M); scale = modnorm(y,'peakpow',1); y = scale*y; % Scale the constellation. scatterplot(y); % Plot the scaled constellation. 2- Modulation QAM-16 M = 16; % taille de lalphabet x = randint(5000,1,M); % message alatoire y = qammod(x,M); % modulation Visualisez x et y. ynoisy = awgn(y,15,'measured'); % bruit additive du canal scatterplot(ynoisy); z = qamdemod(ynoisy,M); % dmodulation Visualisez x, y, ynoisy et z PARTIE THEORIQUE Enveloppe complexe dun signal On considre un signal rel x(t) de transforme de Fourier X(f). Soit y(t) le signal rel dfini par sa transforme de Fourier :

25

Traitement du signal sous MATLAB M. SABRI Universit Sultan My Slimane - 2008

Y( f ) =

sign ( f ) .X ( f ) j

y(t) est la transforme de Hilbert de x(t). On appelle signal analytique de x(t) le signal complexe : ~(t ) = x (t ) + j . y( t ) x 1- quelle est la T.F. du signal analytique ~( t ) ? Faire un schma des T.F. x 2- Soit x (t ) = A. cos( 2 . f 0t + ) . Dterminer y(t) et ~( t ) , et reprsenter les trois signaux dans le plan complexe. En x dduire lanalogie avec la notion de phaseur en lectricit. La forme polaire du signal analytique : ~(t ) = r (t ).e j. ( t) x Permet de dfinir lenveloppe rel r (t ) et la phase instantanes (t ) dun signal rel x(t). 3- Donner lenveloppe et la phase du signal x (t ) = A. cos( 2 . f 0t + ) . 4- Donner lenveloppe et la phase du signal modul x (t ) = a (t ). cos( 2 . f 0t + ) , a(t) tant un signal rel. Faire un trac qui illustre lenveloppe de x(t). Lenveloppe complexe dun signal rel x(t) est dfinie, pour une pulsation arbitraire 0 par : ~ (t ) = ~(t ).e j. 0 t r x On peut interprter lenveloppe complexe comme le rsultat dune modulation damplitude du signal analytique. 5- Exprimer les parties relles et imaginaires a(t) et b(t) de ~ (t ) en fonction de x(t), r y(t) et les porteuses sin( 0 t) et cos( 0 t). a(t) et b(t) sappellent la composante en phase (IN) et en quadrature (Q) du signal rel x(t). 6- Inversement, exprimer x(t) et y(t) en fonction de a(t), b(t) et les porteuses. 7- On considre un signal x(t) rel, alatoire ou non, spectre passe bande symtrique : x ( f ) = 1 , pour f 1 f f 2 Et nul ailleurs. 8- Exprimer les spectres de x(t), a(t) et b(t) en fonction du spectre de lenveloppe complexe. Faites un schma illustratif.
_____________________________________________________________________________________________________

Le compte rendu de la sance doit tre rdig sur la feuille qui vous est fournie et doit contenir en plus de la partie thorique : Un listing des programmes prog1.m et prog2.m

26

Traitement du signal sous MATLAB M. SABRI Universit Sultan My Slimane - 2008

TP VII I- Estimation de la moyenne

ESTIMATION et DETECTION

Soit X une variable alatoire stationnaire dordre un et x(1)x(N) une srie de N observations ou mesures de X dcorrles. On se propose dtudier le comportement de lestimateur de la moyenne =E[X] suivant (moyenne empirique): 1 N ( N ) = . x(i ) N i =1 prog1.m Gnrez n=1000 points dun signal alatoire X en additionnant 4 priodes dune sinusode sin(t) et un bruit blanc de moyenne =5. Calculez lestimateur (N) pour les valeurs de k = 1..n. Utiliser mean(). Visualisez (k), lerreur (k)=( - )(k) et lerreur quadratique 2(k). Est ce quil y a convergence? N.B. : Avant chaque gnration de bruit il faut initialiser le processus de gnration laide de la commande rand('state',0); II- Estimation de lcart type On considre les deux estimateurs de la variance 2 = E ( X ) 2 suivants (variances empiriques): 1 N 2 2 1 ( N ) = . [ x(i ) ( N )] N i=1 N 1 2 2 2 (N) = . [ x( i ) ( N )] N 1 i=1 prog2.m Gnrez 1000 chantillons dcorrls dune variable alatoire X stationnaire au second ordre en additionnant une sinusode et un bruit blanc de moyenne =5 et de variance 2 =1.5. Calculez les deux estimateurs (N) pour les valeurs de N = 11000. 1(N), lerreur (N)=( 1- )(N) et lerreur quadratique 2(N). Visualisez Est ce quil y a convergence? Faites de mme pour le deuxime estimateur. III- Dtection dune composante continue par moyennage On considre un signal constant C noy dans un bruit b(k) blanc centr de variance v, le signal rsultant observ est s(k). On estime la valeur de la constante en prenant la moyenne de s(k). prog3.m : Raliser un programme qui estime C, en utilisant la moyenne empirique tudie au dbut du TP, ceci pour v=C/10, C/4, C/2, C.

27

Traitement du signal sous MATLAB M. SABRI Universit Sultan My Slimane - 2008

PARTIE THEORIQUE 1- Donner le biais et la variance de lestimateur de la moyenne empirique : 1 N ( N ) = . X ( i ) N i=1 2- Donner le biais et la variance de lestimateur de la variance empirique : 1 N 2 2 1 ( N ) = . [ x(i ) ( N )] N i=1 3- Estimation empirique de la fonction de corrlation Soit N chantillons [x1,xN] extraits dun signal stationnaire X centr dordre deux de fonction de corrlation inconnue RX(n)=E[x(k).x(k+n)]. On peut gnraliser lestimation empirique pour n=0N-1, sous la forme : 1 N n R X ( n) = R X ( n ) = . xk .x k + n N n k =1 a- Montrer que cet estimateur est non biais. b- Considrons le nouvel estimateur empirique :
1 N n R X ( n) = R X ( n) = . x k .x k + n N k =1

Calculer le biais de cette estimateur et montrer que la matrice de corrlation est dfinie positive.
_____________________________________________________________________________________________________

Le compte rendu de la sance doit tre rdig sur la feuille qui vous est fournie et doit contenir en plus de la partie thorique : Un listing du programme : prog1.m, prog2.m, prog3.m

28

Traitement du signal sous MATLAB M. SABRI Universit Sultan My Slimane - 2008

TP VIII

FILTRAGE NUMERIQUE

Il existe de nombreuses mthodes de synthse de filtres numriques. Le passage de lanalogique au numrique est tributaire de problmes dchantillonnage , surtout de quantification des chantillons, faisant souvent perdre au filtre numrique conu les proprits du modle analogique. I- Dfinition dun filtre : Un filtre est dfini par son gabarit qui donne les limites de tolrance pour les diffrents paramtres du spectre damplitude |H(f)| du filtre, savoir : La frquence de coupure fc Le module de attnuation de |H(f)| dans la bande coupe : attdB Le module de londulation de |H(f)| dans la bande passante : ond La largeur de la bande de transition, situe entre la frquence de coupure et la zone attnue trans

Remarques : il peut y avoir plusieurs frquences de coupure. Les fonctions filter, fir1, fir2, remezpermettent la cration de filtres suivant plusieurs mthodes. La rponse frquentielle (RF) du filtre, gale la TFD de la RI en dB, doit tre contenue dans le gabarit pour que le filtre soit utilisable correctement ; sinon on dit que la mthode diverge :il faut chercher une autre procdure. Le module de H(f) tant dtermin, le choix de la phase se fait gnralement en prenant tous les ples et zros de h(k) lintrieur du cercle unit (exigences de stabilit et de causalit).
|H(f)|

Passe haut

tra ond

att

coupe passante| f1
fc

Fe/2

II- Analyse de filtres numriques La fonction matlab y=filter(b,a,x) permet de filtrer le signal x(kTe ), la sortie du filtre tant y(kTe). b et a sont les vecteurs dont les lments sont les coefficients du numrateur et du dnominateur de la fonction de transfert du filtre : H(z)=

b
m= 0 N n= 0

z m , b=[b0,..,b M], a=[a 0,..,a N]


n

a z
n

Par consquent h=filter(b,a,d), o d est limpulsion unit de Dirac.

29

Traitement du signal sous MATLAB M. SABRI Universit Sultan My Slimane - 2008

prog1.m Pour chacune des fonctions de transfert H(z) suivantes : z 1 z 1 0.5z 5 , 1 0.5 z 1 1 0.5z 1 Dterminez et tracez les caractristiques suivantes du filtre associ (entre parenthses les fonctions matlab utiliser): 0.5.(1-z 1 ), 0.5.(1+ z 1 ), 0.5.(1- z 2 ), rponse impulsionnelle h (N=32) (filter(b,a,d)) rponse frquentielle H (TFD dordre N=32) (semilogy,unwrap) zros et ples (zplane(b,a)) le retard de groupe en fonction de la frquence (grpdelay(h)) rponse une sinusode pure de priode 100. rponse indicielle (rponse un chelon unit) Pour chaque filtre, indiquez de quel type de filtre sagit-il (daprs la forme de la rponse en frquences) et donner les valeurs des frquences de coupure ainsi que les paramtres de tolrance.

Remarques : 1- La frquence dchantillonnage est gale un par dfaut. 2- Le retard de groupe g dun filtre est le retard moyen introduit par le filtre, c'est--dire la dure moyenne qui spare lapparition du premier chantillon en sortie et lapparition du premier chantillon lentre. Ainsi le filtre z-1 a un groupe delay gal une seconde : Cest un retard pure. Il est dfini par : d ( ) g = , avec ( ) = angleH ( ) d ( ) Le retard de phase est dfini par : = . Consquence : Lorsquon veut comparer les donnes (lentre) et les donnes filtres (la sortie), il faut retarder lentre de g secondes (compensation). II- Synthse de filtres numriques : prog2.m : Crez par TFD un passe-bas de caractristiques : Fe Fc
trans ond att

8kHz 1kHz 200Hz 1dB

-40dB

Dessinez le gabarit thorique sur [0, Fe]. Visualisez la rponse impulsionnelle h de taille n=64 dduite de lchantillonnage du gabarit (prendre pour h la partie relle de la TFD inverse des chantillons) et vrifiez si la RF finale est bien dans le gabarit. Filtrez deux sinusodes de frquences respectives F2 suprieure et F1 infrieure F c . Quel effet a le filtre ? Mesurez sur lallure temporelle des signaux filtrs le dcalage induit par le filtre, le retard de groupe, (fonction grpdelay (h)). Comparez ce dcalage la longueur de la RI du filtre. 30

Traitement du signal sous MATLAB M. SABRI Universit Sultan My Slimane - 2008

Est-il identique pour les deux frquences F1 et F2? Quelle partie utile du signal filtr de mme taille que le signal original peut on garder ?

III- Filtrage dharmoniques : Lopration de filtrage est ralise par convolution du signal filtrer x(k) avec la RI du filtre h(k). En numrique la convolution y(k)=x(k)*h(k) introduit un dcalage de lordre du filtre qui correspond a u temps de rponse du filtre en analogique. En considrant les spectres en dB, il est facile de vrifier que celui de la sortie du filtre est gal la somme de la rponse frquentielle du filtre et du spectre du signal dentre. La distorsion harmonique est une forme de distorsion courante en musique. Elle consiste ajouter des harmoniques (frquences multiples de la frquence fondamentale) au signal de dpart. prog3.m Ajoutez une sinusode pure (fondamental f0=100Hz) ses 5 premires harmoniques impaires de mme amplitude avec Fe=8kHz et N=1024. Visualisez le signal et son spectre. Ralisez le filtre adquat pour extraire les harmoniques 5.f0 et 11.f0 en plus du fondamental f0. Effectuez le filtrage par convolution. Visualisez le signal filtr ainsi que son spectre. Notez lamplitude du signal filtr et interprtez sa valeur .

IV- Rduction du bruit : On se propose de rehausser une sinusode noye dans le bruit. Un bruit blanc possde un spectre tal sur toute la bande frquentielle, alors que celui du sinus est concentr autour de sa frquence. prog4.m Gnrez un sinus de frquence 1kHz chantillonn 10kHz Ajoutez un bruit centr au sinus avec un RSB=10dB. Quel gabarit pour attnuer le bruit ? Ralisez le filtrage par moyenne mobile sur 5 points et comparez les spectres et allures temporelles des signaux bruit et dbruit. PARTIE THEORIQUE I- Filtre phase linaire On considre le filtre FIR dfini par : H(z)=1+2 z 1 +3 z 2 1) Montrer que son auto-corrlation G(z)=H(z)H( z 1 ) est phase linaire. 2) Donner le group delay. 3) Dterminer la rponse impulsionnelle g(n) de G(z).
_____________________________________________________________________________________________________

Le compte rendu de la sance doit tre rdig sur la feuille qui vous est fournie et doit contenir en plus de la partie thorique : Un listing des programmes prog1.m, prog2.m, prog3.m, prog4.m

31

Traitement du signal sous MATLAB M. SABRI Universit Sultan My Slimane - 2008

TP IX

NOTIONS de TRAITEMENT dIMAGES

_____________________________________________________________________________________________________

I- DEFINITIONS 1- Une image deux dimensions est dfinie comme une matrice I(N,N) de N ligne et N colonnes. 2- Le point (i,j) est appel pixel (picture cell), sa valeur I(i,j) relle traduit le degr de luminosit de limage au point (i,j) : On lappelle niveau de gris de limage au point (i,j). 3- Gnralement N est une puissance de 2 (32,64,,1024..) et le niveau de gris des pixels varie entre 0 et 255=256-1=2 8 -1. 0 correspond au noir (luminosit minimum) et 255 au blanc (luminosit maximum) ; Tous les niveaux sont codables sur 8 bits (octet ou byte ). Ceci pour une image noir et blanc, pour une image couleur, il faut prvoir trois matrices qui correspondent aux niveaux du rouge, vert et bleu (RVB ou RGB).
pixel (1,1) (1, N )

( N ,1)

(N , N )

II- Mmoire occupe par une image : Les images noir et blanc ou couleur occupent beaucoup despace mmoire, ceci est ressenti lors de la conception dun programme manipulant plusieurs images. Ainsi une image telle que celle dfinie ci-dessus, va occuper NxNx8 bits ou encore NxN octets (un Kilo octets=1Kb=1024 octets=2 10 octets): N Mmoire en bytes Mmoire en Kby 128 16.384 16 256 65.536 64 512 262.144 256 1024 1.048.576 1024=1Mby III- Codage dune image : On parle aussi de compression dune image. Vue la taille occupe par une image, surtout en couleur et lorsque les images sont animes, on a invent des mthodes qui permettent de rduire considrablement la taille mmoire dune image aprs compression : On distingue les images bitmap, tif, gif, epg, jpegsuivant la mthode de compression utilise. 32

Traitement du signal sous MATLAB M. SABRI Universit Sultan My Slimane - 2008

MATLAB jpg' or 'jpeg' 'tif' or 'tiff' 'gif' 'bmp' 'png' 'hdf' 'pcx' 'xwd' 'cur' 'ico' IV- Format dune image :

Dnomination Joint Photographic Experts Group (JPEG) Tagged Image File Format (TIFF) Graphics Interchange Format (GIF) Windows Bitmap (BMP) Portable Network Graphics (PNG) Hierarchical Data Format (HDF) Windows Paintbrush (PCX) X Window Dump (XWD) Windows Cursor resources (CUR) Windows Icon resources (ICO)

Comme tout fichier format, une image en mmoire est un fichier qui possde deux champs : Une entte : cest une suite doctets spcifiant le nombre de lignes et de colonnes de limage, le nombre doctets par pixel, le genre de codage utilis pour compresser limage Cest justement le format induit par la mthode de compression : tif, gif, mpeg Les donnes : cest la suite des niveaux de gris de tout les pixels de limage tenant compte de la mthode de compression, ce qui exige pour lire limage un programme spcifique connaissant le code de limage. V- Lecture et criture dune image : La fonction imread (nom de limage) permet de lire une image : Si R est une matrice NxN, la commande imwrite (R,nom.tif) cre une nouvelle image NxN nom.tif dont les pixels ont les niveaux de gris figurant dans la matrice r. Exemple 1 i=imread (cameraman.tif) ; %lecture de limage cameraman de format tif Cette instruction stock limage cameraman.tif dans une matrice i de type uint8. Visualisation dune image imshow (i) %affichage de limage

On peut visualiser une matrice R de type uint8 avec la mme commande. Si R est de type double, il faut la convertir uint8(R) pour la visualiser. Excutez la commande whos pour voir la taille de limage, le nombre de lignes et de colonnes. Pour connatre les niveaux de gris de limage, il suffit de taper la commande i. Les niveaux de gris de limage sont disponibles maintenant dans la matrice i, ce qui nous permet deffectuer toutes les transformations possibles sur cette image et de 33

Traitement du signal sous MATLAB M. SABRI Universit Sultan My Slimane - 2008

sauver les rsultats du traitement dans une autre image (il faut la convertir au type double avant de la manipuler x=double(i)). VI- Oprations sur les images Les oprations mathmatiques ncessaires seffectuent sur des variables de type double ; il serait indispensable de convertir les images sources avant leur traitement de la manire suivante : isource = fread (nom_image) ; id=double (isource) ; Cest sur id que seront appliqus les traitements. 1- calcul de la moyenne et de lcart type prog1.m : Calculer la moyenne arithmtique et lcart type des niveaux de gris de limage cameraman.tif ainsi que les caractristiques suivantes : m=mean (i( :) ); mc=mean (i) ; ml=mean (i) ; d=(i-m).^2 ; v=mean(d(:)) ; s=sqrt(v) ; inf=min(x( :)) ; sup=max(x (:)) ; % donne la moyenne de tous les niveaux de gris :un scalaire % donne la moyenne de chaque colonne de limage : un vecteur % donne la moyenne de chaque ligne de limage : un vecteur % cart quadratique : une matrice % variance des niveaux de gris : un scalaire % cart type des niveaux de gris : un scalaire % Le niveau de gris le plus faible: un scalaire % Le niveau de gris le plus lev: un scalaire

2- Filtrage dune image On considre le pixel x(i,j) dune image donne, et on sintresse ses 8 pixels proches voisins : x(i-1,j-1), x(i,,j-1), x(i+1,j-1), x(i-1,j), x(i+1,,j), x(i-1,j+1), x(i,j+1) et x(i+1,j+1). Ces neuf pixels forment une fentre locale :

x (i 1, j 1) x (i 1, j ) x(i 1, j + 1) x (i , j 1) x (i , j ) x(i , j + 1) x( i + 1, j 1) x (i + 1, j ) x (i + 1, j + 1)
On considre dautre part un masque de taille 3x3 coefficients ai,j donns :
a1,1 a1, 2 a1, 3 a 2,1 a 2, 2 a2, 3 a 3,1 a 3, 2 a3, 3 Un filtrage linaire de limage x(.,.) consiste crer une nouvelle image y(.,.) en glissant le masque point par point et en effectuant une combinaison pondre linaire des niveaux de gris :

34

Traitement du signal sous MATLAB M. SABRI Universit Sultan My Slimane - 2008


m =3 n =3 m =1 n =1

y (i , j ) = a m, n .x (i + m 2, j + n 2)

On voit bien que y est une convolution bidimensionnelle de x et a. Filtrage par la moyenne Les coefficients du masque sont tous gaux 1/9 : Ralisez un programme prog2.m qui effectue le filtrage local 3x3 et visualisez le rsultat pour plusieurs images. Quel est leffet du filtre ? Filtrage mdian Le filtrage mdian est une opration non linaire, qui consiste en deux tapes : Ranger les niveaux de gris de la fentre locale de x dans lordre croissant. Affecter y(i,j) le niveau de gris mdian (qui se classe au cinquime rang parmi les neuf niveaux). prog3.m Ralisez le filtrage mdian et expliquez son effet en le comparant au moyennage. VII- Seuillage dune image (Binarisation) Le seuillage dune image consiste choisir un nombre rel s (threshold) et de tester les pixels de limage point par point et ligne par ligne : tout niveau de gris infrieur au seuil s est mis zro (noir) sinon il est mis 255 (blanc) ou 1 : Binarisation. Matlab permet en une seule instruction de comparer les lments dune matrice M un seuil donn s : a=(M>s), a est une matrice compose de 1 et de 0. prog4.m Ralisez un programme qui effectue le seuillage dune image. Choisissez plusieurs seuils, y compris la moyenne de limage. Effectuez le seuillage sur plusieurs images. Afficher limage originale et limage seuille en mme temps

VIII- Dtection du contour dune image Le contour dune image Im(N,N) est lui-mme une image C de mme taille NxN : Limage C contient les limites ou frontires ou primtres des objets contenus dans Im. Par exemple si Im est la photo dun disque plein alors C sera une image contenant un cercle de mme centre et rayon que le disque. La dtection du contour est lopration mathmatique et informatique qui permet de dduire C partir de Im. Mthode du gradient : Le calcul des pixels de C seffectue en faisant la soustraction des pixels voisins de Im : Horizontalement (gradient horizontal): C(i,j)=Im(i, j+1)-Im(i,j) Verticalement (gradient vertical): C(i,j)=Im(i+1, j)-Im(i,j) 35

Traitement du signal sous MATLAB M. SABRI Universit Sultan My Slimane - 2008

Il faut prendre la valeur absolue des diff rences !! Le parcours dune image ligne par ligne (ordre lexicographique) dans un programme seffectue de la manire suivante : for i=1 :N for j=1 :N traitement1 ; traitement2 ; end end prog5.m Ralisez un programme qui donne le contour horizontal dune image et visualisez le rsultat. Ralisez un programme qui donne le contour vertical dune image et visualisez le rsultat. Gnrez et visualisez limage moyenne des deux contours prcdents. Testez le programme sur plusieurs images. %parcours des lignes i %parcours des colonnes j

Original Saturn Image

Edge Map

Original Image

Corrupted Image

Filtered Image

____________________________________________________________________________________________________

Le compte rendu de la sance doit tre rdig sur la feuille qui vous est fournie et doit contenir : Un listing des programmes : prog1.m, prog2.m, prog3.m, prog4.m, prog5.m 36