Énoncés de TP

Download Report

Transcript Énoncés de TP

FIP 2e année
Traitement du signal
TP 1
2014/2015
Rappels de première année
Exercice 1
1. Rappelez les fonctions Matlab permettant de tracer un sinus, un cosinus, une exponentielle et
un sinus cardinal.
2. Rappelez les instructions Matlab permettant de tracer un échelon, un rectangle et une impulsion
discrète.
3. Rappelez la fonction Matlab permettant de calculer un produit de convolution.
4. Rappelez les fonctions Matlab permettant de calculer et de tracer une transformée de Fourier
discrète.
Exercice 2
Représentez le signal x(t) = a sin(2πf t + ϕ) entre −1 et 1 pour différentes amplitudes a, fréquences f
et phases ϕ.
Exercice 3
Représentez entre 0 et 10 s la sinusoïde amortie nulle pour t < 0 et telle que
x(t) = Ae−at sin(2πf t + ϕ)
pour t ≥ 0 ; avec A = 2, a = 0,5, ϕ = 1 et f = 2 Hz. Choisissez un pas de temps correct pour obtenir
une courbe lisse.
Exercice 4
Calculez puis tracez le produit de convolution (x ∗ y)[n] où (a ∈ R) :


+1 pour n = 1,
x[n] = −1 pour n = −1,


0
ailleurs,
(
a pour |n| ≤ 1,
y[n] =
0 ailleurs.
Exercice 5 : Transformée de Fourier discrète d’un signal numérique
On considère le signal créneau suivant de période N = 100 :
(
1
si 0 ≤ n < 50,
x[n] =
0
si 50 ≤ n < 100.
1. Créez et affichez le signal x[n] sur 100 échantillons.
2. Tracez le module et la phase de la transformée de Fourier discrète (TFD) X[k] de x[n] entre 0
et N − 1.
3. Centrez la TFD pour la représenter entre N/2 et N/2 − 1.
4. Modifiez le vecteur des abscisses pour représenter la TFD en fonction des fréquences (et non
des échantillons). On suppose que Te = 0,1 s.
1
Exercice 6
1. Chargez le signal chord.ogg (audioread) puis affichez-le. C’est un signal sonore enregistré en
stéréo : comment le convertir en mono ?
2. Affichez la TFD du signal pour déterminer les harmoniques principales.
3. Identifiez l’accord joué. Vous pouvez également utiliser sound.
Exercice 7 : Modulation et démodulation d’amplitude
On se placera dans le cadre de l’étude des signaux analogiques, même si les simulations sur ordinateur
sont forcément numériques. . .
Le signal modulant m(t) est la somme de trois sinus dont les amplitudes Ai et les fréquences fi sont
données ci-dessous :
A1 = 1,
f1 = 400 Hz,
A2 = 1,4,
f2 = 700 Hz,
A3 = 0,5,
f3 = 900 Hz.
1. Créez puis représentez le message m(t) (avec une fréquence d’échantillonnage de 200 kHz).
2. Tracez son spectre.
La modulation d’amplitude double bande avec porteuse (DBAP) est effectuée en multipliant le message
par une porteuse de fréquence fp = 10 kHz. Le signal modulé en amplitude x est alors égal à :
x(t) = A 1 + µm(t) cos(2πfp t).
On choisira A = 1 et µ = 0,3 (indice de modulation).
3. Tracez le signal modulé en amplitude x(t). Vérifiez visuellement que vous avez bien effectué une
modulation d’amplitude de la porteuse par le message.
4. Tracez le spectre du signal modulé et comparez-le à celui du message.
La démodulation cohérente consiste à multiplier le signal x(t) par un cosinus de fréquence fq = fp
puis appliquer un filtrage passe-bande (on supprime les fréquences très petites et très grandes). Cette
technique nécessite de connaître parfaitement la fréquence de la porteuse, celle-ci peut être connue a
priori ou retrouvée à l’aide d’une boucle à verrouillage de phase (PLL : phase-locked loop).
5. Multipliez le signal x(t) par un cosinus de fréquence fp en phase avec la porteuse, puis analysez
son spectre.
6. En déduire la nécessité d’appliquer ensuite un filtrage passe-bande. Appliquez le filtrage passebande (fonction idealbandpass).
7. Que se passe-t-il lorsque fq 6= fp ?
2
FIP 2e année
Traitement du signal
TP 2
2014/2015
Filtres numériques
Ce TP se déroulera sur deux séances :
— la première est consacrée à la réalisation de filtres à réponse impulsionnelle infinie (RII). avec
les deux méthodes de synthèse vues en cours : l’invariance de la réponse impulsionnelle et
la transformation bilinéaire. On rappelle que pour ces deux méthodes, le filtre numérique est
conçu à partir d’un filtre analogique obtenu à l’aide d’un gabarit analogique, lui-même construit
à partir du gabarit numérique. On choisira des filtres elliptiques pour avoir des filtres d’ordre
minimal ;
— la seconde séance est consacrée à la réalisation de filtres à réponse impulsionnelle finie (RIF),
ainsi qu’à la comparaison entre filtres RII et RIF.
Exercice 1 : définition du gabarit
Un électrocardiogramme (ECG), qui est le tracé de l’activité électrique du cœur, a été enregistré et
sauvegardé dans le fichier ecg_lfn.dat. La période d’échantillonnage est de 1 ms.
1. Chargez ce signal puis ré-échantillonnez-le à 100 Hz. Affichez-le.
2. Tracez le spectre du signal en fonction de la fréquence (centrez l’axe des fréquences).
Un ECG normal comporte plusieurs signaux caractéristiques appelés « ondes » (figure ci-dessous). Le
signal enregistré contient dix ondes auxquelles s’ajoute une dérive basse fréquence que l’on souhaite
éliminer à l’aide d’un filtrage numérique.
R
T
P
Q
S
Figure 1: Représentation schématique d’un ECG normal.
3. Quel type de filtre (passe-bas, passe-haut, passe-bande ou coupe-bande) faut-il ? Donnez une
valeur approximative de la (ou les) fréquence(s) de coupure.
4. Proposez un gabarit pour le filtre en précisant les valeurs numériques des fréquences. L’ondulation dans la bande passante devra être comprise entre −1 dB et +1 dB et l’atténuation devra
être supérieure à 60 dB. Si la largeur de la (ou des) bande(s) de transition est trop faible, cela
peut conduire à des erreurs numériques : seule la synthèse lors des questions suivantes vous
permettra de corriger cette valeur.
Exercice 2 : réalisation d’un filtre RII avec l’invariance de la réponse impulsionnelle
La synthèse d’un filtre numérique par invariance de la réponse impulsionnelle nécessite avant tout la
conception d’un filtre analogique dont la réponse impulsionnelle sera échantillonnée.
Pour chacune des questions suivantes, donnez la fonction Matlab utilisée, sa syntaxe et une définition
de ses paramètres d’entrée et de sortie.
3
1. Déterminez le gabarit du filtre analogique, puis tracez-le avec Matlab 1 .
2. Calculez l’ordre du filtre elliptique vérifiant le gabarit analogique puis déterminez sa fonction
de transfert H(s).
3. Vérifiez que le filtre analogique respecte le gabarit en traçant sa réponse en fréquence sur le
gabarit.
4. Rappelez la transformation permettant de calculer H(z) à partir de H(s). Déterminez la fonction
de transfert ainsi obtenue en effectuant l’invariance de la réponse impulsionnelle avec Matlab.
5. Vérifiez si le filtre obtenu correspond bien au gabarit numérique en traçant sa réponse en fréquence sur le gabarit.
6. Comparez les réponses impulsionnelles des filtres analogique et numérique et commentez le
résultat.
Exercice 3 : Réalisation d’un filtre RII avec la transformation bilinéaire
La synthèse d’un filtre à l’aide de la transformation bilinéaire est similaire à la méthode de l’invariance impulsionnelle (excepté le fait que la transformation permettant d’obtenir le filtre numérique
est évidemment différente et qu’il existe une distorsion de fréquence entre les gabarits analogique et
numérique).
1. Déterminez le gabarit du filtre analogique.
2. Rappelez la transformation bilinéaire permettant de calculer H(z) à partir de H(s).
Nous proposons d’utiliser l’outil graphique fdatool de Matlab qui permet la conception d’un filtre RII
à l’aide de la transformation bilinéaire.
3. Tapez « fdatool » dans Matlab, puis rentrez les paramètres du gabarit et du filtre dans la
fenêtre qui s’affiche. Cliquez enfin sur le bouton Design Filter pour synthétiser le filtre.
4. Vérifiez que le filtre obtenu correspond bien au gabarit numérique en traçant sa réponse en
fréquence sur le gabarit.
Pour exporter les coefficients d’un filtre obtenu à l’aide de fdatool, il faut tout d’abord transformer la
structure du filtre : menu Edit, Convert Structure, Direct Form I, SOS puis à nouveau Edit et Convert
to Single Section. Ensuite, cliquez sur File, Export... puis exportez les coefficients vers un fichier ASCII
(ce qui permet de conserver plus de décimales, donc de précision, que l’exportation vers l’invite de
commande). Un fichier .fcf est alors créé dans lequel vous pourrez récupérer les valeurs des coefficients.
5. En analysant le retard de groupe du filtre, indiquez quel est son effet sur le déphasage des
fréquences.
Exercice 4 : Réalisation d’un filtre RIF avec la méthode des fenêtres
1. Donnez, en le justifiant, les types de fenêtres pouvant être utilisés pour la synthèse du filtre
numérique.
2. Calculez la longueur des fenêtres qui conviennent lors d’une première tentative de synthèse.
On choisit alors de ne travailler qu’avec la fenêtre permettant d’avoir l’ordre du filtre le plus faible.
3. Synthétisez le filtre RIF avec fdatool.
4. Vérifiez que le filtre obtenu correspond bien au gabarit numérique en traçant sa réponse en
fréquence sur le gabarit.
5. De même que pour un filtre RII, analysez le retard de groupe du filtre.
Pour exporter les coefficients d’un filtre RIF, la procédure est la même que pour un filtre RII : il faut
d’abord convertir le filtre sous la forme directe simple puis exporter les coefficients dans un fichier.
1. Pour tracer une ligne brisée reliant des points de coordonnées (xi ,yi ), vous pouvez utiliser la syntaxe suivante :
plot([x1 x2 x3 x4 ...],[y1 y2 y3 y4 ...]).
4
Exercice 5 : comparaison des filtres synthétisés
1. Comparez les trois filtres synthétisés. En particulier, que pouvez-vous dire à propos de la stabilité
des filtres, de leur encombrement mémoire, de leur phase et retard de groupe, et enfin de leur
performances vis-à-vis du gabarit souhaité ?
2. Appliquez et discutez de la réponse des trois filtres synthétisés sur l’ECG. Tracez les signaux
obtenus et leur transformée de Fourier.
5
FIP 2e année
Traitement du signal
TP 3
2014/2015
Traitement du signal bruité
Exercice 1 : détection d’un motif par filtrage adapté
On se place dans le cas où le motif à détecter est un signal x(t) déterministe connu, de support [0,T ].
Le signal observé est y(t) = x(t − t0 ) + b(t) où b(t) est un bruit gaussien centré i.i.d. (indépendant et
identiquement distribué) et on cherche à calculer l’instant d’apparition t0 .
Le signal x(t) de durée T = 1 s est défini par :
(
1 − t/T si t ∈ [0,T ],
x(t) =
0
sinon.
Le signaux x(t) et y(t) sont échantillonnés à Te = 10 ms.
1. Générez un signal synthétique y(t) pour une valeur de t0 que vous aurez choisie.
2. Quelle est la réponse impulsionnelle du filtre adapté qui permet de détecter le motif ?
3. Appliquez le filtre adapté sur le signal y(t). Étudiez les performances du filtrage adapté pour
différents rapports signal-sur-bruit.
4. Appliquez le filtre adapté sur les signaux tp31.mat, tp32.mat et tp33.mat et déterminez l’instant
d’apparition du motif.
Exercice 2 : extraction d’un signal répétitif par moyennage
On considère maintenant le cas d’un signal x(t) qui se répète identiquement à lui-même en des instants
t = Ti connus. L’observation de ces répétitions est bruitée et la i-ième répétition du signal x(t) s’écrit :
yi (t) = x(t − Ti ) + b(t)
où b(t) est un bruit blanc gaussien. Le principe de l’extraction du signal x(t) consiste à moyenner N
répétitions du signal bruité afin de le débruiter :
N
N
1 X
1 X
yi (t + Ti ) = x(t) +
b(t + Ti ).
z(t) =
N
N
i=1
i=1
On montre en effet que le rapport signal-sur-bruit après moyennage est amélioré d’un facteur 10 log10 N
(en décibel).
1. Générez puis affichez y1 (t).
2. Réalisez N répétitions yi (t) et affichez la moyenne z(t) de ces répétitions. Les fonctions reshape
et repmat peuvent être utiles.
3. Vérifiez l’influence du nombre de répétitions sur la qualité du résultat.
Exercice 3 : application à un électrocardiogramme
On se propose de détecter la présence de complexes QRS (cf. TP 2) et d’estimer leurs instants d’occurrence dans un ECG en utilisant un filtre adapté.
1. Tracer l’ECG (fichier ecg_hfn.dat) et extraire graphiquement un complexe QRS.
2. Quelle est la réponse impulsionnelle du filtre adapté correspondant ?
3. Filtrer l’ECG pour en déduire les instants d’occurrence Ti des complexes QRS.
4. Connaissant les instants Ti , extraire tous les cycles cardiaques contenus dans l’ECG et en déduire
un cycle moyen par moyennage temporel.
6
FIP 2e année
TP 4
Traitement du signal
2014/2015
Introduction au traitement d’images
L’objectif de ce TP est de proposer une brève introduction au traitement d’images et d’effectuer des
opérations simples d’analyse d’images.
Une image numérique est définie comme étant un signal fini bidimensionnel échantillonné à valeurs
quantifiées dans un certain espace couleur. Les éléments d’une image sont appelés « pixels » (picture
element). Ainsi :
— une image possède des dimensions finies (signal fini) ;
— une image est caractérisée par deux dimensions spatiales (signal bidimensionnel) ;
— les pixels sont généralement disposés selon une grille rectangulaire (signal échantillonné) ;
— les valeurs des pixels appartiennent à un espace discret (valeurs quantifiées) ;
— dans la plupart des cas, ces valeurs appartiennent à un espace couleur à une dimension (image à
niveaux de gris) ou à trois dimensions (rouge–vert–bleu pour une image en couleur par exemple).
Une image est donc une matrice I dont les éléments Ii,j sont ordonnés du haut vers le bas et de la
gauche vers la droite. Dans ce TP, nous n’utiliserons que des images en niveaux de gris (espace couleur
de dimension un) : chaque élément de la matrice correspond à la valeur en niveaux de gris du pixel.
Exercice 1 : phénomène de crénelage
Le phénomène de crénelage (aliasing en anglais) apparaît lorsque l’image est mal échantillonnée. Avant
d’observer et d’étudier ce phénomène, il est nécessaire de comprendre comment lire une transformée
de Fourier bidimensionnelle.
Préambule : transformée de Fourier d’une image
La transformée de Fourier à deux dimensions est une généralisation de celle à une dimension ; elle permet
de passer de la représentation spatiale d’une image à sa représentation dans le domaine fréquentiel.
L’image ayant un nombre fini de pixels (c’est un signal à support borné), on utilise la transformée de
Fourier discrète (TFD) définie par :
F (u,v) =
M
−1 N
−1
X
X
f (m,n)e−j
2πum
M
e−j
2πvn
N
m=0 n=0
où :
— F (u,v) est la transformée de Fourier de l’image f (m,n) ;
— M et N sont les dimensions de l’image ;
— les variables u et v représentent les fréquences spatiales de l’image selon les directions x et y
respectivement.
La fonction F (u,v) est en général un nombre complexe, même si f (m,n) est un nombre réel : elle
possède donc un module et une phase et on peut choisir de représenter l’un ou l’autre. Nous ne nous
intéresserons ici qu’au module.
En Matlab, le code I(1,3) permet d’accéder à la valeur du pixel de la matrice I situé sur la première
ligne et la troisième colonne. La fonction imread permet de charger une image dans une matrice de
type uint8 (entier codé sur huit bits). Avant tout traitement, il est indispensable de la transformer en
double (réel à virgule flottante codé sur 64 bits) à l’aide de la fonction double.
1. Chargez puis affichez les images représentant des carrés blancs (img2.pgm, img10.pgm,
img100.pgm, img256.pgm). Les pixels noirs et blancs correspondent respectivement aux valeurs
0 et 255.
7
2. Vous pouvez également visualiser une image I en 3D grâce aux commandes suivantes :
mesh(I);
shading interp;
3. Tracez le module des TFD de ces images, ainsi que le logarithme de ce module.
4. Où se situent les basses et hautes fréquences dans le module de la TFD ?
Analyse du phénomène de crénelage
5. Ouvrez et affichez l’image toit.jpg ou barbara.pgm.
6. Générez une image sous-échantillonnée d’un facteur 2 de l’image originale. Pour cela, il suffit de
prendre un pixel sur deux dans chaque dimension, ce qui peut être fait sous Matlab avec l’instruction I(1:2:end,1:2:end). Comment se traduit visuellement le phénomène de crénelage ?
7. En sous-échantillonnant l’image, la fréquence d’échantillonnage est-elle modifiée ? Le théorème
de Shannon est-il respecté ? Quel est l’équivalent monodimensionnel du phénomène observé ?
8. Proposez et implémentez une solution pour éviter le phénomène de crénelage (fonction fspecial)
afin de sous-échantillonner correctement l’image.
9. Filtrez l’image originale avec un filtre idéal dont vous choisirez les fréquences de coupure, puis
appliquez le sous-échantillonnage. Pour implémenter le filtre idéal, il est nécessaire de passer
dans le domaine de Fourier.
Exercice 2 : détection de contours
Un contour dans une image est un brusque changement d’intensité. Détecter des contours permet de
détecter et caractériser les objets d’une image ; cela permet par exemple de mesurer la taille d’une
pièce industrielle ou isoler une zone de l’image.
1. Le filtre permettant d’effectuer la détection de contours doit-il être un passe-bas ou un passehaut ?
La détection de contours peut être implémentée à l’aide des filtres de Sobel :




+1 0 −1
+1 +2 +1
Hx = +2 0 −2
Hy =  0
0
0
+1 0 −1
−1 −2 −1
On obtient l’image des contours d’une image I à l’aide des équations suivantes (∗ représente la convolution bidimensionnelle) :
G=
q
G2x + G2y
où
Gx = Hx ∗ I et Gy = Hy ∗ I
2. Qu’observez-vous après application des filtres Hx et Hy sur l’image L.png (pour les EII) et
cerveau.png (pour les TICS) ?
3. Quelle différence faites-vous entre ces deux filtres ?
4. Calculez et affichez l’image des contours G.
5. Que se passe-t-il lorsqu’on applique une détection de contours sur une image bruitée ?
Exercice 3 : détection d’objet à l’aide de l’intercorrélation
On propose dans cette section de développer un algorithme permettant la reconnaissance automatique
d’un motif dans une image. par exemple pour retrouver un numéro sur une plaque d’immatriculation
(pour les EII) ou un grain de beauté sur une photographie de peau en vue de la recherche de mélanomes
(pour les TICS). Pour cela, on effectue un filtre adapté à l’aide de l’intercorrélation.
8
En traitement du signal, l’intercorrélation (ou corrélation croisée) est une mesure de la similarité entre
deux signaux. L’intercorrélation entre deux images I et J est définie de la façon suivante :
RI,J (u,v) =
∞
X
∞
X
Im,n Ju+m,v+n .
m=−∞ n=−∞
Or, pour calculer l’intercorrélation entre deux images, il est nécessaire de normaliser au préalable les
images, c’est-à-dire de se ramener à des images de moyenne nulle et de variance un. On utilise alors la
corrélation croisée normalisée :
¯ I,J (u,v) =
R
X Im,n − ¯I Ju+m,v+n − J
¯
m,n
σI
σJ
où ¯I et σI sont respectivement la moyenne et l’écart-type de l’image I.
1. Calculez la corrélation croisée normalisée entre le motif (zero.pgm ou grain.pgm) et l’image à
traiter (voiture.jpg ou dermato.jpg).
2. Proposez un algorithme pour détecter les différentes occurrences du motif (tous les numéros sur
une plaque d’immatriculation ou les grains de beauté).
3. Pour les EII : testez la méthode sur l’image plaques.jpg.
Pour les TICS : est-ce que tous les grains de beauté sont retrouvés ?
4. Quels sont les avantages et les inconvénients de cette approche ?
9