Vous êtes sur la page 1sur 31

Travaux pratiques de traitement du signal

INDP1

Elaboré par :

Riadh ABDELFATTAH, Sofia BEN JEBARA,


Sofiane CHERIF Leila NAJJAR

Année universitaire 2018-2019


AVANT PROPOS

Ce manuel rassemble une série de travaux pratiques en traitement du signal permettant aux
élève-ingénieurs de pratiquer les principes de base, les méthodes et les concepts du traitement
du signal. Plus spécifiquement et à l’issu de ces travaux pratiques, l’élève-ingénieur doit être
à l’aise en manipulant des signaux: dans le domaine temporel, dans le domaine fréquentiel, les
propriétés statistiques (corrélation,…), le filtrage, la génération de signaux synthétiques,… et
montrer une aisance de programmation sous MATLAB.

En termes de compétences plus générales attendues d’un’élève-ingénieur, ce dernier doit


pouvoir:

• Appliquer ces connaissances dans d’autres enseignements liés au traitement du signal.


• Etre capable de concevoir, de mener des expériences et d’interpréter les données.
• Sentir l’intérêt du traitement du signal dans divers domaines (télécommunications,
sciences de la vie, musique, art,…).
• Apprendre à formuler, identifier et résoudre les problèmes.
• Communiquer oralement.

L’ouvrage est divisé en 6 laboratoires. Chacun s’intéresse à une ou plusieurs notions du


traitement du signal. Chaque notion est illustrée sur un signal particulier qui est différent des
autres. Ainsi, Plusieurs signaux seront utilisées : électro-cardiogramme, parole, image, signal
DTMF, signal ADSL,… Les concepts du traitement du signal étudiées sont : l’analyse
temporelle, la corrélation, l’échantillonnage, la quantification, l’analyse fréquentielle, le
filtrage,…

Le manuel est enrichi par une série d’examens de travaux pratiques proposés lors des
dernières années.

L’élève-ingénieur sera noté en fonction de plusieurs critères : démarche personnelle et


investissement au cours de l’élaboration du TP, la réponse à la problématique (pertinence de
la production, inventivité, soin apporté au travail, finalisation de la production demandée) et
présentation orale du travail (argumentation, expression orale, réactivité,…)
TP1
Familiarisation avec les signaux
Cas du signal ECG

I. Objectif

L’objectif du TP est de manipuler un signal ElectroCardioGramme (ECG) en utilisant


MATLAB afin d’explorer le signal et de découvrir certaines de ces caractéristiques telles que
l’allure temporelle, la périodicité, la puissance moyenne finie, la corrélation,…

II. Aperçu sur le signal ECG


L'ElectroCardioGramme est un enregistrement des potentiels de surface du corps générés par


l'activité électrique du cœur. L'enregistrement et l'interprétation de ce signal ECG a été,
depuis longtemps, d’un grand intérêt pour l'évaluation clinique du rythme cardiaque d'un
individu.
Les principales composantes du cœur sont illustrées sur la figure 1.a et le signal ECG est
représenté sur la figure 1.b. Il s’agit d’un seul battement de cœur qui se compose de trois
ondes temporelles distinctes : l'onde P, le complexe QRS et l'onde T. L’onde P correspond à
l’excitation électrique des deux oreillettes du cœur (dépolarisation), le complexe QRS
correspond à une excitation électrique des deux ventricules tandis que l’onde T correspond à
la re-polarisation des ventricules. L'intervalle qui sépare l'onde P du complexe QRS
correspond au temps de passage de l'influx électrique dans le nœud auriculo-ventriculaire et le
faisceau de His tandis que la région entre le complexe QRS et l'onde T, appelé segment ST,
est la période de repos entre la dépolarisation et la re-polarisation du ventricule.

(b)
(a)
Figure 1 : Anatomie du cœur (a) et allure temporelle d’un battement cardiaque (b).
La figure 2 illustre le comportement du cœur en termes de polarisation/dépolarisation. La
vidéo 1 est une animation illustrant les mouvements du cœur et l’évolution du signal ECG. La
vidéo 2 illustre le phénomène physio-chimique de contraction/décontraction du cœur.

Le rythme cardiaque normal commence comme une impulsion électrique générée dans le
noeud sino-auriculaire de l'oreillette droite (figure 2.a). Elle se propage dans les oreillettes
entraînant leurs contractions (figure 2.b). L’impulsion arrive alors au nœud auriculo-
ventriculaire (AV), seul point de passage électrique entre les oreillettes et les ventricules. Une
courte pause est alors introduite (figure 2.c) juste avant la propagation dans les fibres
constituant le faisceau de His. Au passage de l’impulsion électrique (figure 2.d), les
ventricules se contractent à leur tour (figure 2.e). Après la diastole (décontraction du muscle)
les cellules se re-polarisent (figure 2.f). Le cycle du battement cardiaque est alors terminé et le
cœur est prêt pour un nouveau battement.

Figure 2 : Etapes de polarisation/dépolarisation du cœur.

Vidéo1 : Animation illustrant les mouvements du cœur et l’évolution du signal ECG.

https://www.youtube.com/watch?v=RYZ4daFwMa8

Vidéo 2 : Phénomène physio-chimique de contraction/décontraction

https://www.youtube.com/watch?v=zUbeHTzC4J0
III. Analyse du signal ECG avec MATLAB

Charger le signal contenu dans le fichier ecg1.mat à l’aide de la commande load de


MATLAB. Il s’agit d’un électrocardiogramme enregistré à la fréquence d’échantillonnage Fs
= 720 Hz.

III.1 Analyse temporelle


1. Quelles sont les variables contenues dans ecg1.mat ?
2. Combien d’échantillons ce signal contient?
3. Tracer le signal, ajouter le titre et définir les axes.
4. Le signal étant échantillonné à 720 Hz, quel est l’intervalle de temps entre deux
échantillons successifs, appelé aussi intervalle d’échantillonnage ?
En déduire la durée totale du signal.
5. Créer un axe de temps nommé t ayant le même nombre de points que le signal lui-
même et un pas entre deux valeurs successives égal à l’intervalle d’échantillonnage.
Tracer le graphique du signal avec cette fois le temps en abscisse.
6. Quelle est la moyenne du signal? Le signal est-il centré? Sinon, centrer le signal pour
obtenir un nouveau signal y.
7. Quelle est la puissance totale du signal y ?
La puissance est définie comme étant la moyenne des échantillons élevés au carré.
8. Normaliser le signal y en créant un nouveau signal z centré ayant une puissance égale
à 1.
Vérifier ces propriétés.

III.2 Analyse de la périodicité

1. Ce signal vous paraît-il périodique ?


Si oui, quelle est à vue d’œil la périodicité en nombre de points et en temps ?
Utiliser les fonctions grid et ginput de MATLAB.
2. Combien de périodes N cet enregistrement contient–il ?
3. Sélectionner manuellement les échantillons d’une période du signal (de manière
approximative). Les stocker dans une variable nommée x_per_1.
4. Calculer le minimum et le maximum de ces échantillons.
Quel est leur sens physique par rapport aux différentes phases de battement du cœur ?
5. Sélectionner manuellement les échantillons d’une autre période du signal (de manière
approximative). Les stocker dans une variable nommée x_per_2.
En utilisant des couleurs différentes, superposer sur une même figure les deux
variables x_per_1 et x_per_2.

III.3 Mesure de la période

La fonction xcorr calcule l’auto-corrélation d’un signal. Cette fonction mesure la


ressemblance dans le signal. L’autocorrélation d’ordre k est définie comme étant la
somme du double produit de chaque échantillon et de son voisin d’ordre k.
1. Déterminer les variables d’entrée et de sortie de cette fonction.
2. L’appliquer au signal ECG, observer et interpréter l’allure obtenue.
3. Tracer la moitié de la fonction d’auto-corrélation en commençant par le centre qui
correspond au pic de la fonction.
4. On se propose de déterminer la période du signal. Pour cela, on utilise la fonction
MATLAB findpeaks en utilisant les arguments d’entrée suivants :
findpeaks(Variable,'SortStr','descend','NPeaks',4).
Comprendre les arguments d’entrée et de sortie de cette fonction.
5. Déterminer la position du premier, deuxième et troisième pic. Identifier le lien avec la
période et justifier analytiquement.

Partie facultative

1. A partir de la période, mesurer le rythme cardiaque (nombre de battements par


seconde) de la personne concernée.
2. Refaites la même chose pour le deuxième signal ECG2.mat.
3. Comparer les rythmes cardiaques.
4. Identifier l’état de la personne selon les indications suivantes :

Indications très générales,


Nombre de battement par minute
sans aucune application individuelle
Rythme cardiaque trop lent.
Entre 30 et 40
Il est recommandé d’en parler en à son médecin
Rythme lent. Cela peut être normal chez un
Entre 41 et 49 athlète de fond (marathonien, cycliste par ex.)
bien entrainé.
C’est le rythme au repos de la majorité des
Entre 50 et 85 personnes. C’est un rythme « normal » dans un
contexte « normal »
Rythme un peu rapide au repos. Cela peut
correspondre à un manque d’exercice physique.
Entre 86 et 90 L’exercice physique régulier est conseillé sauf
avis contraire du médecin ou situation
particulière
Rythme rapide au repos. Cela peut correspondre
à un manque d’exercice physique ((sauf maladie
cachée).
Entre 91 et 99
L’exercice physique régulier est conseillé sauf
avis contraire
du médecin ou situation particulière.
Rythme franchement rapide au repos : cela peut
évoquer une anomalie cardiaque, une maladie
Entre 100 et 119 de la thyroïde mais aussi correspondre à un
manque d’exercice.
Mieux vaut en parler à son médecin.
Rythme trop rapide. Après dix minutes de repos
Entre 120 et 170
c’est très anormal, il faut avertir son médecin.
TP2
Echantillonnage des signaux
Cas de la parole et un signal test

I. Objectif du TP
Le but du TP est de comprendre le concept de numérisation des signaux en se basant sur la
pratique avant d’étudier la théorie en classe. En effet, avec cette approche anticipative, l’élève
ingénieur sera sensibilisé au théorème d’échantillonnage de manière expérimentale sur des
signaux réels. Le cours, à travers les développements analytiques dans le domaine de Fourier,
confirmera les résultats de l’expérience.

Durant ce TP, le principe de l’échantillonnage sera illustré avec un signal de parole généré par
l’élève ingénieur et acquis avec la carte son du PC ainsi que sur un signal de simulation.
Ainsi, en manipulant plusieurs fréquences d’échantillonnage, l’élève ingénieur aura une
meilleure appréciation des conditions d’échantillonnage d’un signal.

Pour atteindre ces objectifs, les manipulations suivantes seront effectuées sous MATLAB.

• Enregistrer une séquence de parole, en spécifiant la fréquence d’échantillonnage et le


nombre de bits par échantillon.
• Sauvegarder la séquence sous forme de fichier numérique sous format ‘wav’.
• Tracer et écouter le signal temporel.
• Calculer et tracer sa représentation fréquentielle.
• Modifier la fréquence d’échantillonnage et voir son impact sur la qualité auditive du
signal de parole.
• Découvrir la condition d’échantillonnage (théorème de Shannon) par l’expérience sur
un signal test.

II. Principe de la numérisation d’un signal

Une chaîne d’acquisition et de traitement numérique d’un signal de parole est illustrée sur la
figure 1. Ses étapes sont les suivantes.

• Transformation du signal analogique à traiter en un signal électrique proportionnel :


c'est la capture ou l'acquisition du signal. Elle se fait à travers un microphone dans le
cas de la parole qui sera un des signaux d’illustration durant ce TP.
• Conversion du signal électrique en une suite de valeurs numériques binaires, seules
compréhensibles par les calculateurs numériques. C'est la conversion analogique-
numérique.
• Exécution du traitement voulu, comme par exemple la compression ou la
transmission.
• Conversion des codes binaires résultant du traitement en un signal électrique pour
ramener le résultat final dans le monde réel analogique. C'est la conversion
numérique-analogique.
• Reconversion du signal électrique dans la grandeur physique initiale, à travers un
système d’écoute de type haut parleurs dans le cas d’un signal de parole par exemple.

Figure 1 : système de traitement analogique/numérique/analogique de la parole.

Dans ce qui suit, nous allons nous intéresser à la numérisation du signal de parole. Un signal
analogique est un signal continu qui peut prendre une infinité de valeurs possibles alors qu’un
signal numérique est un signal discret (discontinu), qui se résume en une succession de « 0 »
et de « 1 ». L’objectif de la numérisation est de transformer le signal analogique qui contient
une quantité infinie d'amplitudes en un signal numérique contenant une quantité finie de
valeurs. Le passage de l'analogique au numérique se fait en 2 étapes successives:
l'échantillonnage et la conversion analogique-numérique (CAN).

L'échantillonnage est la première étape de la numérisation des signaux. Elle permet de


convertir un signal continu dans le temps (figure 2.a) en un signal discret dans le temps
(figure 2.b). Elle se fait par prélèvement discontinu régulier de “tranches temporelles” ou
échantillons à une certaine cadence. Le nombre d’échantillons prélevés par secondes s’appelle
la fréquence d'échantillonnage exprimée en hertz. Le nombre d'échantillons composant le
signal numérique devrait être suffisamment grand pour pouvoir représenter le signal
analogique de départ mais pas trop grand non plus pour ne pas être trop volumineux.
C’est pour cela qu’il est important de savoir choisir la fréquence d’échantillonnage, ce qui
constitue le premier objectif d’apprentissage de ce TP.

La Conversion Analogique Numérique se fait en deux étapes. La Quantification Scalaire (QS)


est la première étape. Elle permet de transformer le signal discret en temps mais continu en
amplitudes en un signal discret en amplitude (figure 2.c). La résolution numérique du signal
est le nombre de « niveaux » ou de « paliers » qu'il est possible d'enregistrer pour reproduire
l'amplitude du signal.

Avec une résolution de 8 bits par exemple, on dispose de 28, soit 256 valeurs possibles pour
traduire l'amplitude du son. Ainsi, plus la résolution est élevée, meilleure sera la dynamique
(l'écart entre le signal le plus faible et le plus fort qu'il est possible de reproduire).
Figure 2 : illustration des étapes de la numérisation.

Les signaux de parole manipulés durant ce TP auront le format WAV (Waveform). C’est un
dérivé de la spécification RIFF (Resource Interchange File Format) de Microsoft dédiée au
stockage de données multimédias. Ce format est libre d'utilisation et est parmi les plus
répandus de formats de fichiers sons. Le format WAV considère les paramètres de
numérisation suivants : fréquence d'échantillonnage, résolution de l'échantillon et le nombre
de canaux d’enregistrement: 1 (mono), 2 (stéréo).

III. Recommandations générales pour le TP


•S’il est possible, on vous demande de ramener un kit microphone/haut parleur. Ainsi,
vous pouvez enregistrer et écouter les sons convenablement et éviter les interférences
avec les autres.
Notations :
• x : séquence (vecteur) d’échantillons
• fs : fréquence d’échantillonnage
• Nbits : nombre de bits par échantillon
• Path : le répertoire courant (où se trouve la donnée ou le code).
• N_duration : le nombre d’échantillons à acquérir qui est le produit de la durée en
secondes et la fréquence d’échantillonnage : N_duration =N_s*fs.
Fonctions :
• Lire un fichier audio en format wav : [x,fs]=wavread(‘Path\Name.wav’) .
• Ecrire un fichier audio en format wav : wavwrite(x,fs,Nbits,‘Path\Name.wav’).
• Ecouter une séquence audio : soundsc(x,fs) ou sound(x,fs)).
• Ecouter une séquence audio.
• Enregistrer un fichier audio avec la carte son du PC. Deux propositions sont fournies :
wavwrite(x,fs,Nbits,‘Path\Name.wav’).
x =wavrecord(N_duration,fs,type_data,Ch) ;

IV. Acquisition d’un signal audio


Le programme MATLAB suivant permet d’acquérir un signal de parole à partir de la carte
son du PC. Il est composé d’un programme principal et d’une fonction My_Record.

• Comprenez le programme principal et la fonction My_Record.


• Testez le fonctionnement de ce programme.
• Tracer l’allure temporelle du signal enregistré.
• Ecouter le signal.

fs=16000; %sampling frequency


Duration=4; %duration of speech (in seconds)
Nbits=16; %Resolution of samples
Type_data='int16' %Type of data during acquisition, can be 'double','single', 'int16', 'uint8', and 'int8'.

N_duration=Duration*fs;

[x]=My_Record(Duration,fs,Nbits,Type_data,1); %Function to acquire speech

%Format conversion to double float


MySpeech=double(x);

%Signal normalization
MySpeech=MySpeech/max(abs(MySpeech));

function [MySpeech] = My_Record(Duration,fs, nBits, Type_data, nChannels)

% Arguments
% fs : sampling frequency ;
% nBits : resolution : 8,16,24 bits;
% nChannels : 1: mono, 2: stereo ;
% Duration : duration in seconds ;
% Fonctions
% display : display message on the sreen ;
% audiorecorder : construction of audiorecorder class;
% recordblocking : maintaining recording during 'Duration'

% Code
r = audiorecorder(fs, nBits, nChannels);
display('Begin recording')
% speak into microphone...
recordblocking(r,Duration);
disp('End recording');
MySpeech = getaudiodata(r, Type_data); % get data as Type_data format

end

V. Modification de la fréquence d’échantillonnage.

i. Reprenez le programme précédent en variant la fréquence d’échantillonnage de 9 kHz


à 1 kHz dans l’ordre décroissant, avec un pas de 2 kHz.
Pour cela, il est recommandé d’utiliser une boucle dans le code MATLAB en
introduisant une pause manuelle entre les itérations (commande MATLAB pause).
ii. Prononcez à chaque à chaque fois la même phrase.
iii. Evaluez la qualité auditive de la séquence acquise en attribuant une note de 1 à 5 à la
qualité pour chaque fréquence d’échantillonnage.
On attribue les notes comme suit :

Note 5 4 3 2 1

Qualité Excellente Bonne Dégradation Dégradation Dégradation


faible remarquable nuisible

iv. Que remarquez-vous au fur et à mesure que la fréquence d’échantillonnage diminue ?


Que remarquez-vous pour les faibles fréquences d’échantillonnage particulièrement?

VI. Analyse fréquentielle d’un signal à temps discret

Pour analyser les différentes représentations fréquentielles pour des valeurs différentes
de la fréquence d’échantillonnage, on se propose d’utiliser un signal test et de tracer
son spectre d’amplitude pour différentes fréquences d’échantillonnage.
Le signal test à utiliser s’écrit :
x(t) = [ Fmax .sin c(Fmaxt)] ,
2
(1)
,
avec sin c(a) = sin (π a ) / (π a ) .

Son spectre
d’amplitude ⎧⎪ − f + F max si f < F max
s’écrit : X( f ) = ⎨ (2)
⎩⎪ 0 sinon,

et a une allure triangulaire :

1. Tracer le signal test x(n) échantillonné à la fréquence Fe=5000 Hz pour


Fmax=1000 Hz et sur un intervalle de temps discret de longueur N=4096 et
centré autour de 0.
2. Tracer le spectre d’amplitude théorique de x(t) noté X(f) entre -Fmax et
Fmax sur N points en programmant l’équation 2. Normaliser le spectre en
divisant par la valeur maximale.
3. Calculer la transformée de Fourier du signal test x(n) qu’on note Xe(f) et
tracer son module. Pour cela, il faut suivre les étapes suivantes:
a) Calculer la Transformée de Fourier en utilisant la fonction fft.m de
MATLAB. Tracer le module tout en normalisant (division par le
maximum).
b) L’axe des fréquences de la figure précédente n’est pas significatif
puisqu’il ne représente pas des fréquences en Hz. De plus, le spectre
d’amplitude obtenu n’est pas symétrique autour de zéro (tel est le cas
pour les signaux réels). Pour améliorer la représentation spectrale
ΙXe(f)Ι, on suit les étapes suivantes :

- Créer un axe fréquentiel en Hz à N points commençant à -Fe/2 avec


un pas de Fe/N.
- Créer un nouveau vecteur formé par les N/2 derniers points de ΙXe(f)Ι
suivis des N/2 premiers points de ΙXe(f)Ι.
- Tracer la nouvelle représentation fréquentielle en fonction du nouveau
vecteur des fréquences en Hz.

c) Superposer sur le même graphe ΙX(f)Ι et ΙXe(f)Ι.


d) Comparer ΙX(f)Ι théorique dans le cas continu et celui obtenu pour un
signal discret ΙXe(f)Ι.

VII. Influence de la modification de la fréquence d’échantillonnage sur la


représentation fréquentielle

1) Reprendre la manipulation précédente en fixant la fréquence d’échantillonnage à 1500


Hz et en maintenant tous les autres paramètres à leurs valeurs initiales.
2) Comparer les représentations spectrales et conclure.
3) Reprendre l’expérience pour des valeurs de la fréquence d’échantillonnage allant de
1kHz à 3 kHz avec un pas de 500 Hz.
4) A partir de quelle fréquence d’échantillonnage est-il possible d’avoir la même
représentation fréquentielle que le signal à temps continu ?
5) Conclure sur la condition d’échantillonnage.
TP3
Quantification de l’image

I. Objectifs
L’objectif de ce TP est de pratiquer le concept de la quantification scalaire sur un signal
numérique bidimensionnel (l’image). Pour cela, le travail à réaliser est divisé en trois parties:
la première partie concerne l’acquisition et la représentation sous format numérique d’une
image, la deuxième partie s’intéresse à la quantification scalaire d’une image et à l’étude de
son effet visuel et quantitatif sur la qualité de l’image obtenue. La dernière partie est réservée
à l’application du concept de la quantification pour réaliser une application spécifique. Dans
ce TP, il s’agit du comptage de nombre de pièces de monnaies dans une image.

II. Format d’une image numérique


Une image numérique est un signal numérique multidimensionnel déjà échantillonné et
quantifié. Ses variables d’évolution sont ses coordonnées spatiales en abscisses x et en
ordonnées y. Chaque échantillon de l’image est un élément graphique appelé PiCture
ELement ou pixel. Un pixel de l’image peut être quantifié sur 1 bit, il s’agit alors d’une image
binaire (0 Noir, 1 blanc). Un pixel peut aussi être codé sur 8 bits, soit 256 nuances de gris,
allant du 0 qui est le noir jusqu’à 255 qui es le blanc (en passant par 128 qui est le gris
moyen). Dans ces deux cas, l’image est un signal scalaire. En effet, une fois les variables
d’évolution fixées, on obtient un seul scalaire représentant le pixel.

Les images vraies couleurs sont, quant à elles, des signaux vectoriels où chaque pixel est
décrit par au moins 3 intensités (amplitudes). Il s’agit d’un vecteur de 3 composantes
traduisant la composition de n’importe quelle couleur selon les trois couleurs de base qui sont
le Rouge, le Vert et le Bleu. Chaque pixel de chaque couleur est codé sur 8 bits.

Dans ce qui suit, vous allez manipuler ces différents formats des images.

1. Lire l’image ‘pout’ en utilisant la commande [I]=imread('pout.tif');


2. Visualisez l’image en utilisant la commande imshow(I).
3. Déterminer sa dimension (nombre de lignes et nombre de colonnes) et le nombre
de bits de quantifications.
4. Refaire la même chose pour l’image ‘peppers.jpg’.
5. Vérifier les notions d’images scalaire et vectorielle et observer les composantes
de l’image vectorielle chacune séparément. Pour ce faire, afficher en niveaux de
gris chaque composante. Interpréter le résultat de l’affichage.

III. Quantification des images


La Quantification Scalaire (QS) est la deuxième étape de la numérisation de signaux, elle
permet de transformer un signal continu en amplitudes en un signal discret en amplitude.
D’un point de vue pratique, c’est une règle de correspondance entre le nombre infini ou
grand de valeurs possibles et un nombre fini et relativement petit de valeurs.

Durant ce TP, nous nous intéressons à la quantification scalaire uniforme. Un pixel de


l’image I(x,y) prend ses valeurs dans l'intervalle [0, 255]. Pour réaliser un quantificateur
uniforme à N niveaux, il suffit de partitionner l'intervalle [0, 255] en N intervalles distincts
de même largeur Delta =256/N et de définir le représentant de l'intervalle, par exemple,
son milieu.

Prenons par exemple le cas où le nombre de niveaux de quantification est N=8. Ceci
correspond à une représentation binaire sur 3 bits. Le pas de quantification est
Delta=256/8. L’intervalle [0 255] est partitionné en 8 intervalles dont les bornes sont
successivement 0, 32, 64, 96, 128,160, 192, 224, 255. Les extrêmes 0 et 255 ne sont pas
retenus dans le vecteur PARTITION=[32, 64, 96, 128,160, 192, 224]. Chaque pixel d’un
intervalle (les intervalles sont [0, 31], [32 63], [64 95], [96 127], [128 159], [160 191],
[192 223], [224 255]) est remplacé par une seule valeur qui est le milieu de l’intervalle.
On crée alors, ce qu’on appelle le dictionnaire ou CODEBOOK=[16,
48,80,112,144,176,208,240]. Cette partition et ce dictionnaire sont illustrés dans la figure
2.

Figure 2. Partition et dictionnaire d’un quantificateur à 8 niveaux d’une image en niveaux


de gris.

Pour quantifier une image avec MATLAB, on utilise la fonction imquantize suivante :

function [q,qindex]=imquantize(x,L)
% image quantization
xmax=max(x(:));
xmin=min(x(:));
range=xmax-xmin;
scale=double(L-1)/double(range);
qindex=round(x*scale);
q=qindex*round(range/L)+round(range/(2*L));
return

1. Comprendre le code MATLAB de la fonction et expliquer comment l’opération


de quantification est mise en œuvre par un programme aussi simple.
2. Quantifier l’image ‘lena.tif’ sur 8 niveaux.
3. Comparer visuellement l’image originale et l’image codée (afficher les deux
images sur la même fenêtre graphique).
4. Calculer l’Erreur Quadratique Moyenne définie par :
!"#$ !"#$
1 2
𝐸𝑄𝑀 = , [𝐼𝑜𝑟𝑖𝑔𝑖𝑛𝑒(𝑙, 𝑐) − 𝐼𝑞𝑢𝑎𝑛𝑡 𝑙, 𝑐 ]
nlig * ncol !!! !!!

où nlig et ncol désignent respectivement le nombre de ligne et le nombre de colonnes de


l’image.

Remarque : les calculs se font sur le format « double ». L’affichage des images se fait à partir
du format « uint8 »

5. En déduire le rapport Signal à Bruit en dB :

σ2
RSB(dB) = 10 log10 ,
EQM

Où σ 2 est la variance sur l’image que vous pouvez calculer avec la commande
MATLAB var.

6. On se propose maintenant d’examiner l’impact de la réduction de nombre de bits


alloué pour quantifier l’intensité des pixels de l’image. Pour cela, vous allez
réduire à chaque fois le nombre de bits de quantification de 1 bit et calculer le
RSB.
7. Evaluer la qualité visuelle de chaque image codée.
8. Remplir le tableau suivant et tracer la courbe de variation du RSB en fonction du
nombre de bits de quantification. Déduire la perte moyenne en dB relative à la
réduction d’un bit de quantification à chaque fois.

Nombre de bits de 7 6 5 4 3 2 1
quantification par pixel

RSB

IV. Exemple d’application de la quantification


On considère l’image ‘coins’ dont la scène contient des pièces de monnaies. On se propose
dans cette partie du TP de compter le nombre de pièces de monnaies existantes sur une image.
Pour cela, on utilise le principe de la quantification scalaire. En effet, les pièces de monnaies
ont des couleurs spécifiques, le fond de l’image ou les autres objets ont d’autres couleurs
contrastées par rapport aux précédentes. La quantification sur deux niveaux fera ressortir de
façon claire les pièces de monnaies.
1. Réaliser une quantification sur 1 bit l’image des pièces de monnaies pour générer
une image binaire (ImBin).
2. Utiliser la commande MATLAB imhist pour afficher l’histogramme de l’image.
On rappelle que l’histogramme est une fonction ayant en abscisse les différents
niveaux de gris (0 à 255) et en ordonné l’occurrence de chacune de ces niveaux de
gris sur l’image.
3. Remarquer qu’il y’a deux plages de valeurs. Ainsi, vous pouvez choisir le seuil
adéquat permettant de séparer ces deux plages. L’une correspond aux intensités de
l’arrière plan tandis que la 2ème est relative aux pièces des monnaies.
4. En utilisant le programme suivant (CompteurMonnaie), vérifier que vous avez bien
le nombre de pièces exact sur l’image :
L = bwlabel(ImBin);
stats = regionprops(L,'Area','Centroid');
% Comptage des pièces de monnaies en utilisant la taille des
objets
figure, imshow(ImBin)
hold on
count = 0;
seuil=200; % par exemple
for i = 1:length(stats)
if stats(i).Area > seuil
plot(stats(i).Centroid(1), stats(i).Centroid(2),'*')
count = count+1;
end
end
title(['Il y a ' num2str(count) ' pièces de monnaies dans cette
image.'])

5. Essayer de faire votre propre acquisition avec des pièces de monnaies. Faites
le avec des pièces de monnaies sur un fond uni (la table par exemple). Choisir
le seuil adéquat dans le cas de votre image afin de pouvoir comptabiliser le
nombre des pièces des monnaies.
TP 4
Analyse de Fourier sur un signal DTMF

I. Objectif
L’objectif du TP est de consolider les connaissances acquises sur la Transformée de Fourier à
travers une application. Celle-ci concerne l’identification des touches d’un clavier numérique
par analyse du son généré. En effet, les appareils de téléphonie fixe ou mobile sont munis
d’un clavier. Lorsqu’une touche est appuyée, un son est émis. Par analyse dans le domaine de
Fourier, il est possible de reconnaitre la touche appuyée par simple analyse du son généré.

II.Principe de la signalisation DTMF

II.1 Importance de la signalisation téléphonique vocale

Le réseau téléphonique est conçu pour transporter des signaux vocaux. Néanmoins, il est
souvent demandé de transporter d'autres types de signaux. Un exemple simple et omniprésent
est le numéro téléphonique appelé. En effet, la ligne téléphonique utilisée doit communiquer
avec le bureau central de la compagnie de téléphone pour que le numéro de téléphone appelé
soit transmis. L’appareil téléphonique doit être capable de convertir les séquences de chiffres
appuyées en signaux qui peuvent facilement traverser les circuits conçus pour transmettre la
voix.
Ainsi, les dix chiffres décimaux enrichis des symboles ‘*’ et ‘#’ doivent être convertis en
sons qui ont les mêmes caractéristiques que la voix.

II.2 Définition de la DTMF

Dual-Tone Multi-Frequency signaling (DTMF) est un système de signalisation téléphonique


qui utilise les fréquences vocales sur les lignes téléphoniques afin de signaler la numérotation
entre l’équipement téléphonique utilisé et les équipements de communication et les centres de
commutations. Il a été inventé dans les laboratoires Bell aux états unis et a été standardisé
sous la recommandation ITU-T Q.23.

II.3 Décodage des touches du clavier

Lorsqu’une touche du clavier téléphonique est appuyée, un signal de signalisation est transmis
et est aussi jouée. Ce signal est une superposition de deux sinusoïdes dont les fréquences sont
associées à la touche appuyée.
La figure 1 illustre un clavier téléphonique et les fréquences associées. Ainsi, un clavier peut
être vu comme une matrice de fréquences. Chaque touche est décrite par sa position en ligne
et sa position en colonne. Le couple de fréquence obtenu est le représentant unique de la
touche.
Figure 1 : touches d’un clavier téléphonique et fréquences associées.

III. Analyses temporelle et fréquentielle d’un signal DTMF.

Le fichier ‘signal.mat’ est un exemple de signaux de signalisation enregistré lorsqu’une


touche d’un clavier téléphonique est appuyée.
Il a été échantillonné à la fréquence fs=8192 Hz.

1. Tracer le signal dans le domaine temporel selon le vrai axe de temps.


2. Délimiter la partie active visuellement. On appelle partie active la portion du signal où
les composantes harmoniques existent, c’est à dire lorsque les intervalles de silence
contenant du bruit ont été écartés.

3. Tracer la représentation spectrale du signal utile. Pour cela


a. Utiliser la fonction fft.m et appliquer une TF sur Nfft=1024 points.
b. Définir un vrai axe de fréquence en Hz :
F=(-Nfft/2:Nfft/2-1)*(fs/Nfft);
c. Centrer le spectre grâce à la fonction fftshift afin qu’il ressemble au spectre d’un
signal réel.
4. Mesurer visuellement les fréquences des harmoniques. En déduire la touche du clavier
appuyée.

IV. Notion de spectrogramme

Le spectrogramme est une représentation temps-fréquence de type information à 2


dimensions ou l’axe des abscisses est le temps, l’axe des ordonnées est la fréquence et
le contenu de l’image est la valeur du spectre traduite en couleur. En fait, un signal est
décomposé en plusieurs intervalles temporels. Pour chaque intervalle, le spectre est
calculé et est tracé.

Pour tracer un spectrogramme, on utilise le bout de programme MATLAB suivant :


[S,F,T,P] = spectrogram(phone,Nfft,0,Nfft,fs,'yaxis');
surf(T,F,10*log10(abs(P)),'EdgeColor','none');
axis xy; axis tight; colormap(jet); view(0,90);
xlabel('Time');
ylabel('Frequency (Hz)');
On utilise le signal phone.mat dans cette partie du TP.
1. Télécharger le signal phone, visualiser et écouter.
2. Visualiser ce spectrogramme et identifier visuellement les touches appuyées.

V. Synthèse du son d’une touche


Une fois les fréquences des touches définis dans le paragraphe II.c, il est possible de
synthétiser sous MATLAB les sons vocaux des touches du clavier de manière très simple.
Ecrire un code MATLAB qui génère un signal composé de deux sinusoides caractérisés
comme suit :
a. fs=8192 Hz ;
b. durée= 1 seconde.
c. fréquences 1 et 2 identifiées dans la question III.4
d. amplitudes des sinusoides égales à 1 et à 2 respectivement.

Vérifier le signal obtenu par visualisation des allures temporelle et spectrale et par tests
d’écoute.

VI. Identification automatique d’une touche appuyée

On se propose d’écrire un code MATLAB qui permet d’identifier de manière


automatique la touche appuyée. Pour cela, on adoptera l’approche suivante :
-on détermine de manière automatique la partie active du signal qui contient
l’information de signalisation. Pour cela, utiliser la fonction fournie onset_offset.
- on calcule le spectre de la partie active, qu’on lisse. Cette opération permet
d’éliminer les pics non significatifs du spectre.
On utilise pour cela la fonction smooth.m deux fois consécutives.
- on détermine les pics du spectre lissé. On utilise la fonction findpeaks en spécifiant
un nombre de pics égal à 2.
- on détermine les vraies fréquences associées aux 2 pics utiles.
- on identifie la touche appuyée.

VII. Identification d’un numéro de téléphone

Le fichier phone.mat contient le signal DTMF d’un numéro de téléphone composé.


Proposer une solution que vous programmerez sous MATLAB pour identifier le numéro
composé.
Pour cela, vous pouvez suivre les recommandations suivantes.
- Décomposer le signal total en morceaux temporels de taille 6700 échantillons.
- Délimiter le début et la fin de la partie active.
- Calculer les fréquences utiles ;
- Ajuster les fréquences pour qu’elles correspondent aux fréquences exactes d’une
touche du clavier.
- Identifier chaque touche.
- Afficher le numéro de téléphone composé en entier.
TP5
Intercorrélation et TFD des signaux bidmensionnels :
application à l’imagerie panoramique

I. Objectifs
L’objectif principal de ce TP est la pratique d’un signal bidimensionnel pour comprendre et
utiliser certaines de ses caractéristiques telles que l’analyse de Fourier discrète, la notion de
fréquence spatiale, la densité inter-spectrale, l’inter-corrélation entre deux images,… A cet
effet, l’application de construction d’une vue panoramique d’une scène à partir de plusieurs
images est traitée.
Pour atteindre l’objectif, principal de ce TP, 3 objectifs spécifiques devront être atteints. Il
s’agit de:
1. Comprendre la notion de fréquences spatiales associées à une image.
2. Etre capable de calculer le décalage entre deux images décrivant la même scène. Il
sera obtenu par calcul de l’inter-corrélation entre les deux images.
3. Réaliser l’assemblage de deux images ou plus en tenant compte du décalage calculé.

II. Image panoramique

II.1 Définition et intérêt


La photographie panoramique est une technique de photographie qui capte plusieurs images
pour mieux représenter un vaste espace ou une vue de grande étendue d’un objet ou d’un lieu.
En effet, le petit objectif existant dans un appareil photo est incapable d’acquérir une scène
large, c’est pour cela que l’acquisition de plusieurs images décrivant la même scène et leur
combinaison permet d’offrir une vision plus large de la scène. La figure 1 illustre un exemple
de scène à photographier et les orientations des deux objectifs utilisés pour capter la scène.

Figure1 : illustration d’une prise de scène et angle de vue.

La figure 2 illustre un exemple d’image panoramique obtenue à partir de la combinaison de 3


images. La vue panoramique obtenue a une orientation de 180°. Notons qu’il est possible, à
partir de plusieurs images, d’aller jusqu'à 360°, rappelons que la vision humaine offre un
panorama d’environ 150° horizontalement et 50° verticalement et que cette technique de

création de vue panoramique est une option indiquée par le logo qu’on trouve sur les
appareils photos numériques.

Figure 2 : photo panoramique résultant de l'assemblage de trois photos prises du


même endroit

II.2 Idée de création d’une vue panoramique


Il existe différentes méthodes pour réaliser une vue panoramique avec les appareils photos
numériques. Citons par exemple les méthodes de recadrage, de rotation ou d’assemblage.
Dans ce TP, on s’intéressera à la méthode de création d’une photo panoramique par
assemblage.

L’idée de la méthode est la suivante: à partir d’un certains nombre de prises de vues de la
scène effectuées avec des zones de recouvrements inter-images, un certain type d’assemblage
sera réalisé pour reconstituer une photographie au format panoramique. Les zones de
recouvrement entre chaque photo sont d’autant plus importantes, qu’elles permettront un
meilleur assemblage, et par conséquent une meilleure qualité de l’image panoramique.

III. Principe de la méthode d’assemblage


La méthode d’assemblage comprend les étapes suivantes :

• Estimation du décalage entre les images


• Localisation des zones de recouvrement
• Assemblage des images

III.1 Estimation du décalage


On se place d’abord dans le cas d’un signal 1D. Soit x(n) un signal et y(n) sa version décalée
y(n)=x(n-D). L’inter-corrélation d’ordre K entre x(n) et y(n) s’écrit :

Rxy (K ) = E { x(n).y(n + K )} = E { x(n).x(n − D + K )} = Rxx ( K − D ) ≤ Rxx (0)


Cette fonction d’inter-corrélation atteint son maximum pour K=D. Ainsi, une façon d’estimer
le retard entre deux signaux issus de la même source est de localiser le premier pic de la
fonction d’inter-corrélation.

Dans la cas, d’un signal 2D, on utilise ce même concept. Toutefois, afin de réduire la
complexité de calcul, la fonction d’inter-corrélation est calculée comme étant la transformée
de Fourier inverse de la densité Inter-spectrale.
La démarche est la suivante :
Deux images I1 et I2 identiques décalées l’une de l’autre par (u,v) pixels sont reliées entre elles
par l’expression suivante :
I1(m,n) = I2(m+u,n+v),

où m (resp. n) est l’abscisse (resp. ordonnée) spatiale d’un pixel de l’image.

La Transformée de Fourier Discrète à deux dimensions (TFD2) s’écrit:


!" !"
𝑇𝐹𝐷2 𝐼 𝑚, 𝑛 = 𝐼 𝑘, 𝑙 = !!!
!!!
!!!
!!! 𝐼 𝑚, 𝑛 𝑒 !!!! !
! ! ,

où, M et N désignent respectivement le nombre de lignes et le nombre de colonnes de l’image.


Les deux variables k et l représentent les fréquences spatiales de l'image selon les directions
des abscisses et des ordonnées respectivement. Les fréquences spatiales normalisées
s’écrivent respectivement ϑx=k/M et ϑy=l/N.

En appliquant la TFD2 à l’expression reliant les deux images I1 et I2, et en utilisant la


propriété de décalage de la TFD on obtient:

TFD2{im1(m,n)}= 𝐼 1(k,l)=ejπ(ku+lv). 𝐼 2(k,l),

où 𝐼 1 (resp. 𝐼 2) est la TFD2 de I1 (resp. I2).

Ensuite, en calculant le produit complexe conjugué des spectres de I1 et de I2, on obtient :


!!(!,!).!!(!,!)∗
𝑆(𝑘, 𝑙) = !!(!,!).!!(!,!)
= 𝑒 !(!!" !"!!" )
.

Ainsi l’inversion de cette équation, permettra de déduire les coordonnées des décalages u et
v:

𝑅 𝑚, 𝑛 = 𝑇𝐹𝐷2!! 𝑆 𝑘, 𝑙 = δ 𝑚 − 𝑢, 𝑛 − 𝑣 .

III.2 Localisation du recouvrement et assemblage des images


1. Une fois le décalage en ligne (u) et le décalage en colonne (v) est calculée entre les
deux images, on procèdera à l’assemblage en deux étapes comme suit :
2. Générer une image ImAssemb ayant pour nombre de lignes la somme de nombres de
lignes de im1 et celui de im2 moins u et ayant pour nombre de colonnes la somme de
nombres de colonnes de im1 et celui de im2 moins v. Cette image contiendra le
résultat de l’assemblage de deux images im1 et im2. Initialiser l’image générée par des
zéros.
3. Stocker l’image im2 dans le coin supérieur gauche de ImAssemb. Ensuite stocker
l’image im1 dans l’image ImAsssemb à partir de la position (nombre de lignes de im2
moins u et nombre de colonne de im2 moins v).

IV. Pratique de la Transformée de Fourier d’une image et notion de fréquences


spatiales

IV.1 Simulation d’images de test

Afin de mettre en évidence la notion de fréquence spatiale spécifique à une image, un signal
2D numérique (image) est crée.

1. Ecrire une fonction sous MATLAB qui permet de générer une image sous forme de
matrice de taille NxN=128x128, dont l’intensité de chaque pixel de coordonnées
spatiales (m,n) évoluent selon un modèle sinusoïdal à valeurs entières donné par
l’équation suivante:

𝐼 𝑚, 𝑛 = 128 ∗ sin (2π ϑ! 𝑚 + ϑ! 𝑛 ),

où ϑx et ϑy désignent respectivement les fréquences spatiales normalisées en colonnes et en


lignes. Cette fonction reçoit en entrée les variables ϑx et ϑy et fournit en sortie l’image I.

2. Exécuter et tester la fonction pour ϑx= 0.2 et ϑy = 0.2. Pour afficher la forme
sinusoïdale en format 3D, utiliser la commande mesh. Pour afficher l’image en 2D,
utiliser la commande imagesc.
3. En utilisant la commande subplot, afficher sur une même figure le résultat de
simulation pour différentes valeurs de fréquences normalisées comme c’est indiqué
sur la figure suivante 3. Interpréter le résultat affiché.

ϑ x= 0 ϑ x= 0 ϑ x= 0
ϑ y= ϑ y= 0.2 ϑ y= 0.4
00.10.1
Figure 3 : format d’affichage des images de test. ϑ x= 0.1 ϑ x= 0.2 ϑ x= 0.4
ϑ y= 0 ϑ y= 0 ϑ y=0

ϑ x= 0.2 ϑ x= -0.2 ϑ x= -0.2


ϑ y= 0.2 ϑ y= -0.2 ϑ y= 0.2
IV.2 Analyse fréquentielle d’images

La transformée de Fourier rapide d’un signal 2D (TFD2) est disponible sous


MATLAB grâce à la fonction fft2. La sortie de la fonction est en général une matrice
complexe, même si l’image est réelle. Elle possède donc une amplitude et une phase.
1. Observer les spectres d’amplitudes des images simulées.
2. Afficher les spectres d’amplitudes centrés, correspondants aux images de test déjà
générées. Pour cela, utiliser la commande fft2 suivie de la commande fftshift.
Interpréter les résultats.

V. Génération d’une vue panoramique à partir de deux images

V.1 Calcul de décalage en translation entre deux images


Dans cette partie, on se propose d’appliquer la propriété de la corrélation de la phase spectrale
de signaux pour calculer le décalage en translation (selon les lignes et selon les colonnes)
entre deux images. Ce dernier doit être calculé sur les images en niveaux de gris.

1. Charger les deux images im1 et im2 à partir du fichier ImagesTpTranslation.mat.


Calculer ensuite les TFD2s des deux images im1 et im2 fournies.
2. Déterminer l’inter-corrélation normalisée de deux images im1 et im2 en
calculant 𝑹(𝒎, 𝒏).
3. Représenter en 3D l’image R(m,n) et en déduire visuellement le décalage entre im1 et
im2.

Sous MATLAB, une façon de localiser le maximum d’intensité sur une image est d’utiliser la
commande [DeltaX DeltaY]=find(I==max(max(I))).

V.2 Assembage d’images


Dans ce qui suit, on se propose d’assembler deux images prises d’une même scène l’une à la
suite de l’autre et où on identifiera un objet commun pour les deux images. Ainsi, on
appliquera le programme développé dans la partie précédente de ce TP pour déduire le
maximum de l’inter-corrélation entre les deux images pour par la suite assembler les deux
images à partir de ce point.

1. Calculer le décalage entre les deux images fournies (ImPan1 et ImPan2).


2. En notant que l’assemblage opère sur les images en couleur, assembler les deux
images à partir des coordonnées du point de maximum de corrélation. Il s’agit de
construire une image plus large de taille égale à la somme en ligne et la somme en
colonnes des deux images moins respectivement les décalages en lignes et en
colonnes.
3. Réaliser une troncature sur l’image résultante afin d’éliminer les parties nulles non
couvertes par l’acquisition grâce à la commande MATLAB imcrop.
4. Réaliser votre propre acquisition de 3 images consécutives et fournir une image
panoramique à partir de ces trois acquisitions.
TP 6
Estimation d’une fréquence pure noyée
dans un bruit blanc additif Gaussien

I. Objectifs
De nombreuses applications exploitent les caractéristiques temporelles et fréquentielles des
signaux pour extraire, traiter ou transmettre de l’information. La fonction de corrélation,
étudiée dans le cours de « Traitement de signal » pour les signaux déterministes et dans le
cours de « Processus stochastiques » pour les signaux aléatoires, est l’une des fonctions les
plus utilisées pour la caractérisation temporelle des signaux.
Il s’agit dans ce TP de s’appuyer sur la fonction d’autocorrélation d’un signal vDSL (very
high data rate Digital Subscriber Line) qui occupe une large bande de fréquence dans
l’objectif de détecter la présence d’interférences de type signal radio amateur (connu aussi
sous le nom radio HAM) de bande étroite, incluse dans la bande de fréquence du signal vDSL
et qui risquent, par conséquent, de le perturber.

II. Problématique
En télécommunications, un certain nombre de techniques de transmission filaires et radio
utilisent les mêmes bandes de fréquence ce qui crée des interférences mutuelles. Lorsqu’une
technique de transmission utilise une large bande de fréquence, elle est plus sujette à subir
l’effet d’interférences causées par des systèmes à bande étroite exploitant une partie de la
bande en question.
Nous citons comme exemple le système vDSL qui exploite les fils à paires torsadées du
réseau téléphonique. Les signaux vDSL, occupant des bandes de fréquence allant jusqu’à 30
MHz, subissent une perturbation de type « Radio Frequency Interference » (RFI) causée par
les signaux générés par les stations de radio dont les signaux de radio HAM. Les signaux
HAMs sont très gênants pour les systèmes vDSL puisqu’ils occupent des bandes importantes.
Le tableau 1 donne des exemples numériques de bandes fréquentielles occupées par des
signaux HAM telles que définies par l'Union internationale des télécommunications (UIT).
Fréquence début 1,810 3,500 7 10,100 14 18,068 21 24,890 28

Fréquence fin 1,850 3,800 7,100 10,150 14,350 18,168 21,450 24,990 29,700

Tableau 1 : Bandes de radio amateur données en MHz, définies par l’UIT pour la Région 1
(Europe, Moyen-Orient, Afrique et Asie du Nord).

La Figure 1 représente une illustration de la densité spectrale de puissance d’un signal qui
résulte de la superposition d’un signal bande étroite (type HAM) centrée sur la fréquence f 0
(par exemple 1,830 MHz pour la 1ère colonne du Tableau 1) et d’un signal large bande (type
vDSL) occupant une bande de fréquence de largeur B (pouvant atteindre 30 MHz).



Figure 1 : Représentation, dans le domaine des
fréquences, de la superposition d’un signal large bande et d’un signal bande étroite

III. Estimation de la RFI par la technique de Pisarenko

III.1 Modélisation
En s’appuyant sur les hypothèses qui suivent :

• le spectre de l’interférence HAM est très réduit par rapport à celui du signal vDSL,
• la densité spectrale de puissance (DSP) du signal vDSL est plate et faible par rapport à
celle du signal AM,
il est possible de ramener le problème de détection de l’interférence à celui de l’estimation
d’une fréquence pure noyée dans un bruit blanc (de DSP constante) où le signal HAM est
modélisé par la fréquence pure f 0 (sinusoïde) et le signal vDSL est modélisé par le bruit
blanc.
Nous considérons ainsi un signal sinusoïdal de fréquence f 0 , échantillonné à la fréquence fe ,
dont les échantillons s’écrivent comme suit :

()
x n = A0 cos(ω 0n + φ0 ) (1)

où A0 est l’amplitude, φ0 est la phase initiale et ω 0 = 2π f 0 / fe la pulsation normalisée.

Ce signal subit l’effet d’un canal à bruit blanc additif Gaussien de moyenne nulle et de
2
variance σ dont les échantillons sont notés b (n ) . Le signal reçu s’écrit :

()
y n = x (n )+ b (n ) (2)

Pour caractériser l’équation (2), nous utilisons le rapport de puissance entre l’interférence
(signal sinusoïdal) et le signal utile (bruit blanc), noté ISR (Interference to Signal Ratio). Il
correspond dans ce cas à l’expression : ISR = 𝐴!! 2𝜎 ! .

III. 2 Technique d’estimation


L’objectif ici est de déterminer, en se basant sur la modélisation du problème
défini par les équations (1) et (2), une estimation ω̂ 0 de ω 0 , a priori inconnue, et
donc de f 0 , en exploitant la fonction d’autocorrélation du signal reçu 𝑦 𝑛 .

L’expression de la fonction d’autocorrélation pour un signal stationnaire est


donnée, pour un décalage k , par
N −k
1
r (k ) = ∑ y (n )y (n + k ) (3)
N −k n =1

Plusieurs méthodes sont proposées dans la littérature donnant une estimation de


ω 0 moyennant la fonction d’autocorrélation du signal reçu. Nous considérons,
dans ce qui suit, l’estimateur de Pisarenko dont l’expression s’écrit de la
manière suivante :
" %
r (2)+ r (2)2 + 8r (1)2 '
ω̂ 0 = cos−1 $ (4)
$
# 4r (1) '
&
IV. Travail pratique

IV.1 Génération du signal interférant : cas d’un bruit blanc


Dans cette partie, nous considérons la modélisation donnée par l’équation (2) où le signal
vDSL est modélisé par un bruit blanc centré et le signal interférence par un signal sinusoïdal.
Un signal vDSL réel sera considéré dans la partie 2.

1. Générez et représentez 𝑁 = 1024échantillons de 𝑦 𝑛 pour ISR !" = 0 dB et ω 0 = π / 8

(on fixera la variance du bruit à 𝜎 ! à 1).

Indication 1 : Pour la génération du signal sinusoïdal, nous utiliserons la valeur du ISR


(ISR !" = 10 log!" ISR) pour fixer la valeur de l’amplitude, 𝐴! ; la phase étant choisie
nulle.
Indication 2 : Pour la génération des échantillons du bruit 𝑏 𝑛 , on utilisera la fonction
« randn.m » de MATLAB.
2. Calculez et représentez la fonction de corrélation du signal généré. Interpréter la figure
obtenue.
Indication : la fonction d’autocorrélation peut être calculée moyennant la fonction
« xcorr.m » de MATLAB (version « unbiased »).
3. Calculez et représentez le spectre de puissance du signal généré en 1). Interprétez la
figure obtenue en donnant une première estimation de la fréquence du signal sinusoïdal.
Indication : le spectre de puissance correspond à la représentation de la densité
spectrale de puissance. Le théorème de Wiener–Khintchine stipule que la densité
spectrale de puissance correspond à la transformée de Fourier de la fonction
d’autocorrélation.
4. Modifiez la valeur du ISR : ISR !" = −10 dB. Comparez la figure obtenue du spectre
avec celle du cas ISR !" = 0 dB. A partir de cette nouvelle figure, déduisez une nouvelle
estimation de la fréquence du signal sinusoïdal.

IV.2: Génération du signal interférant : cas d’un signal vDSL


Dans cette deuxième partie, nous considérons un vrai signal vDSL généré selon le standard
vDSL. Le signal correspondant est fourni par le ficher «SignalvDSL.mat ».

1. Représentez le signal vDSL dans le domaine temporel et en fréquence. Donnez sa


largeur de bande en fréquence normalisée et calculez sa puissance δ 2 .
Indication : L’amplitude A0 sera ajustée selon la valeur de δ! pour atteindre une valeur
désirée du ISR !" : ISR = A!! 2δ! .
2. Générez le signal sinusoïdal interférant pour ISR !" = 10 dB et construisez le signal
reçu, y n , selon l’équation (2) en remplaçant le bruit blanc, b n , par le signal vDSL.
3. Représentez la fonction d’autocorrélation du signal 𝑦 𝑛 .
4. Représentez son spectre de puissance. Donnez la valeur de sa fréquence centrale
normalisée.
5. Interprétez les figures obtenues et les comparez aux figures précédentes relatives au
signal « bruit blanc » (générées dans la partie 1).

IV.3 Estimation de fréquence par la Méthode de Pisarenko


1. Ecrivez une fonction MATLAB qui calcule la fonction d’autocorrélation d’un signal
𝑦 𝑛 pour les décalages k = 0,1,2 . L’expression de la fonction d’autocorrélation est
donnée par l’équation (3).
2. En se basant sur les résultats établis sur la méthode de Pisarenko, écrivez une fonction
MATLAB qui calcule l'estimée de ω 0 à partir de r (1) et r (2) .

3. Appliquez cet estimateur dans le cas du signal sinusoïdal avec « bruit blanc ».
4. Refaites la même estimation pour le cas du signal sinusoïdal avec « signal vDSL ».

5. Dressez un tableau donnant les estimées (valeurs moyennes) de ω 0 pour les valeurs de
rapport signal à bruit ISR !" = 0 dB, 10 dB et 20 dB ainsi que l’erreur relative (en %)
pour les questions 3 et 4. Interprétez les résultats obtenus.

Sinusoïde bruitée

ISR !" 0 dB 10 dB 20 dB

ω̂0

ωˆ 0 − ω0
ω0

vDSL

ISR !" 0 dB 10 dB 20 dB

ω̂0

ωˆ 0 − ω0
ω0
IV.4 Elimination de l’interférence par filtrage dans le cas d’un signal vDSL (Utilisation
d’un filtre à encoche)

Un filtre à encoche est un filtre qui est utilisé pour éliminer une fréquence bien précise dans
un signal. Il s’agit d’un filtre très sélectif, c’est-à-dire, il présente une bande passante très
réduite. Un filtre à encoche d’ordre 2 peut être écrit sous la forme suivante :
1 − 2 cos 𝜔! 𝑒 !!" + 𝑒 !!!"
𝐻 𝜔 =
1 − 2 rcos 𝜔! 𝑒 !!" + 𝑟 ! 𝑒 !!!"

avec 0 ≤ 𝜔! < 𝜋 et 0.9 ≤ 𝑟 ≤ 1.


Ce filtre réussit à éliminer une fréquence unique 𝜔 = 𝜔! (et 𝜔 = −𝜔! ) en temps discret. La
réponse en fréquence 𝐻 𝜔 contient un trou ou une "encoche" aux fréquences 𝜔! et −𝜔! . Le
paramètre 𝑟 sert à fixer l’ouverture de cette encoche.
Dans ce TP, nous utiliserons ce filtre à encoche pour annuler l’interférence.
1. Affichez la réponse en fréquence (amplitude seulement) du filtre à encoche décrit plus
haut pour 𝜔! = 𝜔! et 𝜔! = 𝜔! (valeur que vous avez notée sur le tableau de mesure).
Représentez les deux courbes sur deux figures différentes puis les superposez sur la
même figure. Que remarquez-vous ?
Pour cela, considérez les valeurs de 𝑟 = 0,99 et ISR !" = 20 dB. Utilisez le
programme suivant :

! 𝑏 = 1, −2 cos 𝜔! , 1 ; 𝑎 = 1, −2𝑟 cos 𝜔! , 𝑟 ! ;


! 𝐻, 𝜔 = freqz 𝑏, 𝑎 ;
! plot(𝜔, abs 𝐻 ) ;

2. Nous envisageons maintenant d’annuler l’interférence par l’application du filtre à


encoche au signal 𝑦 𝑛 (cas d’un signal vDSL). Considérez le filtre à encoche calculé
dans la question précédente pour chacune des deux valeurs : 𝜔! = 𝜔! et 𝜔! = 𝜔! .
Appliquez, à chaque fois, le filtre obtenu au signal 𝑦 𝑛 généré pour ISR !" = 20 dB.
Pour cela, utilisez le programme suivant pour représenter la densité spectrale de
puissance du signal résultant, 𝑧 𝑛 :

! 𝑏 = 1, −2 𝑐𝑜𝑠 𝜔! , 1 ; 𝑎 = 1, −2𝑟 𝑐𝑜𝑠 𝜔! , 𝑟 ! ;


! ℎ = imp𝑧 𝑏, 𝑎 ;
! 𝑧 = conv 𝑦, ℎ ;
! 𝑅𝑧 = xcorr 𝑧, ′𝑢𝑛𝑏𝑖𝑎𝑠𝑒𝑑′ ;
! plot(𝑟𝑒𝑎𝑙(fft 𝑅𝑧 )) ;

3. Interprétez les résultats obtenus.