Upload
omar-agar
View
20
Download
2
Embed Size (px)
Citation preview
Adriana Kanashiro Da Costa
Zangré Ibrahim
Rapport de TP - Séance 2
Initiation au traitement de signal et applications
(Responsable : M F. Sur)
1. Un peu de musique
On dispose de fichiers son (format .wav) : ’diapason.wav’, ’guitar_la.wav’, ’guitar_si.wav et ’banjo.wav’,dont on veut observer le spectre d’échantillonnage dans la transformation en séries de fourier.
Tout d’abord on observe leurs fréquences d’échantillonnage.
1.a. Fréquences d’échantillonnage
>>[w1,Fs,nbits]=wavread(’diapason.wav’ );
>>N=length(w1);
Ces commandes nous permet d’observer :
– Fs : le nombre d’échantillons par seconde dans le signal (fréquence d’échantillonnage)
– length(w1) : le nombre d’échantillons du signal
On remarque que la fréquence de ’banjo’ est la plus petite.
1
Sons Fréquences(kHz)diapason 44,1guitar_si 44,1guitar_la 44,1banjo 22,0
Table 1 – Fréquences des signaux
1.b. Amplitudes et spectres
Ensuite, on peut observer les amplitudes des échantillons et leurs spectres (module des coefficientsde Fourier) :
>>plot(w1);
>>fw1=fft(w1);
>>plot(abs(fftshift(fw1)));
La fonction Matlab fft, permet d’obtenir la transformée de Fourier Rapide du signal et les coef-ficients cn(f). On trace les amplitudes des composantes en fonction de leur indice n.
0 0.5 1 1.5 2 2.5 3 3.5 4
x 104
0
1000
2000
3000
4000
5000
6000
n=0 à 2N+1
Am
plitu
des
Figure 1 – Représentation de |fft(fw1)|
On observe deux pics qui correspondent à c−N et à cN car |c
−N | = |cN |. Mais dans cette repré-sentation, la valeur des indices est numérotée de 0 à 2N + 1.
On utilise donc la fonction Matlab fftshift qui, quant à elle, permet de placer le coefficient defréquence nulle (n = 0) au centre du spectre ; cela permet de mieux visualiser la distribution duspectre. (Voir graphe ci-dessous).
2
1.7 1.8 1.9 2 2.1 2.2 2.3
x 104
0
50
100
150
200
250
Figure 2 – Représentation de |fftshift(fw1)|
Puisque les plages des valeurs sont très large, on facilite la visualisation du graphe par passageà l’échelle logarithmique.
0.5 1 1.5 2 2.5 3 3.5
x 104
−2
0
2
4
6
8
Figure 3 – Représentation de |log(fftshift(fw1))|
La formule utilisée par la fonction Matlab fft pour le calcul des composantes de la série deFourier est la suivante :
X(k) =
N∑
n=1
xne−j2π(k−1)(n−1)
N , k = 1, ..., N (1)
Avec xn donné par la Transformée de Fourier inverse (IFFT) :
xn =1
N
N∑
k=1
X(k)ej2π(k−1)(n−1)
N , n = 1, ..., N (2)
3
On remarque que cette formule est différente de celle du cours (différence non due aux indices caril suffit de faire la reindexation de 0 à N − 1) : les définitions de xn et de X(k) sont juste inversées.
Commentaires sur les figures 1, 2 et 3 :
Le spectre est symétrique ; en effet, dans le cas de signaux réels, on a : c̄n = c−n, soit donc que
(|cn|)n est une fonction paire.
1.c. Vérification de l’égalité de Parseval
L’égalité de Parseval pour les signaux discrets est donnée par :
N
N∑
n=1
|X(n)|2 =
N∑
n=1
|xn|2 (3)
Remarquez que cette formule est adaptée à la formule de la fonction Matlab fft pour la transforméede Fourier.
>>sum(w1.^ 2)*N
>>ans=
1.3122e+008
>>sum(fw1.^ 2)
>>ans=
1.3122e+008
L’égalité de Parseval est vérifiée.
1.d. Fréquence du plus grand pic d’amplitude
Pour obtenir la fréquence correspondant à ce pic, il suffit de déterminer son indice dans le spectre ;sa fréquence est ensuite obtenue par la relation suivante :
Fréquencepic = (indice− 1)FsN
(4)
Ceci est obtenu par les commandes Matlab suivantes :
>>[X,indice]=max(abs(fw1));
>>Frequence_Pic=(indice-1)*Fs/N
>>Frequence_Pic=
434.7256
La fréquence du plus grand pic de l’amplitude est de 434,7256 Hz, est plus proche de la fréquencede la note musicale L⊣.
4
2. Quelques images
2.1 Manipulations élémentaires
Ici on dispose des images : ’lena.tif’ et ’emn.tif’ ;Pour afficher une image sur Matlab, on utilise les commandes suivante :
>>Ima=double(imread(’lena.tif’));
>>colormap(gray);
>>imagesc(Ima)
On visualise le spectre après transformée de Fourier (à l’aide de la fonction Matlab fft2 : 2 désigneici la dimension).Commandes Matlab :
>>fIma=fft2(Ima);
>>figure
>>colormap(gray);
>>imagesc(log(abs(fftshift(fIma))))
Remarquer qu’on visualise directement en échelle, le spectre reindexé de sorte à placer la composantede fréquence nulle au centre.(voir graphe ci-dessous).
50 100 150 200 250
50
100
150
200
250
Figure 4 – Représentation de |log(fftshift(fw1))|
Cette représente l’image après la transformation de Fourier. 0n remarque que le niveau de grisqui représente le logarithme du module des coefficients de Fourier est symétriquement distribué, etavec le ’Data cursor’ de Matlab, on vérifie qu’il decroît à partir du centre.
5
Vérification de l’égalité de Parseval :
La transformée de Fourier en dimension deux est donnée par (formule renvoyée la fonction Matlab) :
xn,m =
N∑
k=1
N∑
l=1
Xk,lej
2π(k−1)(m−1)N ej
2π(l−1)(n−1)N (5)
avec 1 ≤ m ≤ N et 1 ≤ n ≤ N .Et l’égalité de Parseval est :
N2
N∑
k=1
N∑
l=1
|Xk,l|2 =
N∑
n=1
N∑
m=1
|xn,m|2 (6)
Sur Matlab, on obtient :
>>N^2*sum(Ima.^2)
>>ans=
1.5011e+014
>>sum(sum(conj(fIma).*fIma))
>>ans=
1.5011e+014
L’égalité de Parseval est bien vérifiée. (Remarquer que pour le calcul des carrés des modules descoefficients de la matrice, on a utilisé le conjugué).
2.2 Fréquences et images
Il s’agit de mettre en évidence le rôle des hautes et des basses fréquences.On travaille toujours avec l’image ’lena.tif’. -Tout d’abord, on compose la la transformée de Fourier’fIma’ avec un filtre passe-bas représenté par une matrice. On obtient une image qui ne contientque de basses fréquences.Visualisation sur Matlab par :
>>U=zeros(256,256);
>>U(101:157,101:157)=1;
>>fImab=fftshift(fIma).*U % produit terme à terme pour annuler les hautes fréquences
>>figure
>>colormap(gray);
>>imagesc(ifft2(ifftsfhift(fImab)))
Remarquer qu’on visualise directement en échelle, le spectre reindexé de sorte à placer la composantede fréquence nulle au centre.(voir graphe ci-dessous).
On obtient une image assez floue ; les contours n’y sont pas bien marquées comme dans l’imageoriginale. On déduit donc que les contours de l’image sont définis grâce aux hautes fréquences.On vérifie cette affirmation, en composant de nouveau la transformée de Fourier de l’image par unfiltre passe haut.
6
50 100 150 200 250
50
100
150
200
250
Figure 5 – Représentation basses fréquences
>>V=ones(256,256)-U;
>>fImac=fftshift(fIma).*V % produit terme à terme pour annuler les basses fréquences
>>figure
>>colormap(gray);
>>imagesc(ifft2(ifftsfhift(fImac)))
50 100 150 200 250
50
100
150
200
250
Figure 6 – Représentation hautes fréquences
On ne voit pratiquement sur cette figure que les contours de l’image ; ce qui est évident car uncontour n’est défini que par une variation brusque du niveau de gris dans l’image, donc à une hautefréquence.
7
2.3 Propriétés des TFD des images
Ici il s’agit d’observer certaines propriétés des images après la transformée de Fourier :
>>Ima=double(imread(’ligne1.tif’));
>>FIma=fft2(Ima);
>>figure
>>colormap(gray);
>>imagesc(abs(fftsfhift(FIma)))
>>figure
>>colormap(gray)
>>imagesc(log(abs(fftsfhift(FIma))))
On obtient les figures suivantes :
50 100 150 200 250 300 350 400 450 500
50
100
150
200
250
300
350
400
450
500
Figure 7 –
220 230 240 250 260 270 280 290
220
230
240
250
260
270
280
290
Figure 8 –
220 230 240 250 260 270 280 290
220
230
240
250
260
270
280
290
Figure 9 –
Les figures 7,8 et 9 représentent respctivement l’image initiale, sa transformée Fourier FIma, etFIma et en échelle logarithmique.
Commentaires :
L’image initiale qui était une ligne horizontale devient une ligne verticale après transformée enéchelle logarithmique.En effet, la transformée de Fourier discrète en dimension deux peut être vue comme la composéede N TFD 1d sur les lignes puis de N TFD 1d sur les colonnes.Puisque, les lignes de l’image ’ligne1.tif’ sont constantes, la transformée de Fourier de chacune estune constante (coefficient de fréquence nulle et les autres coefficients sont nuls), et avec la com-mande shift, ces constantes se placent au milieu des lignes, formant une seule colonne non nulle del’image : la colonne centrale.En opérant une seconde fois sur les colonnes, il n’y que la colonne centrale qui est non nulle, doncon obtient une ligne verticale ; l’affichage en échelle logarthmique permet de voir le détail (figure 9),sinon on ne voit qu’un seul point (figure 8), qui est le point central (ici de coordonées (257, 257)),plus élevé que les autres.
On opère de même avec deux autres images : ’image1.tif’ et ’image2.tif’ ; les images resultantessont :
8
140 160 180 200 220 240 260 280
80
100
120
140
160
180
200
220
Figure 10 – Image1
180 200 220 240 260 280 300 320
180
200
220
240
260
280
300
320
340
Figure 11 – TFD de image1
140 160 180 200 220 240 260 280 300 320
160
180
200
220
240
260
280
300
320
340
Figure 12 – Image2
220 230 240 250 260 270 280 290
220
230
240
250
260
270
280
290
Figure 13 – TFD de image2
Ici on est dans le même cas que ’ligne1.tif’, sauf que les images contiennent des lignes obliquespériodiques. Par le même raisonnement que précédemment, l’image resultante après la TFD-2D,est constituée d’alignements périodiques de points, tournés d’un angle de π
2par rapport à l’image
initiale. (En échelle logarithmique, ces points alignés deviennent des lignes obliques avec une rota-tion d’angle π
2).
Maintenant , on va voir ce qui se passe avec de “vraies images”.
50 100 150 200 250
50
100
150
200
250
1
42
3
Figure 14 – Image initiale
50 100 150 200 250
50
100
150
200
250
Figure 15 – TFD (échel log)
9
La ligne verticale très prononcée dans la figure 15 correspond dans l’image initiale au trait 1.Les deux taches verticales moins marquées dans la figure 15 correspondent aux parties 2 et 3 del’image initiale. Et enfin, la horizontale moins forte correspond
10