Analyse de Signaux ECG
Rapport du projet de Traitement du Signal
Cosialls Thomas / Berrada Salim - 1 TR - Année 2011/2012
Introduction
Améliorer la qualité de vie d’un sujet manifestant des troubles cardiaques tout en surveillant en temps réel l’évolution de l’électrocardiogramme (ECG) du patient? Telle était l’ambition du projet URSAFE, qui visait à proposer une solution pour analyser à distance, en continue et automatiquement un ECG. Nous avons ainsi travaillé, au cours des 4 séances de projet, sur l’analyse spectrale d’un ECG et sur une méthode d’élimination du bruit qui s’y ajoute. Après avoir implanté un algorithme permettant de remédier à la perte d’une partie du signal dans le canal de transmission, nous avons étudié comment diagnostiquer des pathologies cardiaques en s’appuyant sur des irrégularités dans les signaux ECG.
Table des matières 1 Analyse spectrale / Filtrage d’un bruit d’alimentation 1.1 Génération d’un signal synthétique 1.2 Obtention des périodogrammes et corrélogrammes 1.3 Création du filtre à encoche 1.4 Elimination des interférences d’alimentation 2 Détection des complexes QRS / Analyse du rythme 3 Restauration des échantillons perdus 3.1 Mise en place de l’algorithme de Papoulis-Gerchberg 3.2 Tests sur signal sinusoïdal et ECG 4 Classification des pathologies 5 Conclusion
2 11 13 16
18
2
1 Analyse spectrale / Filtrage d’un bruit d’alimentation
Les signaux ECG sont obtenus à l’aide d’un circuit électronique dont l’alimentation est un
signal continu de 50Hz (France) ou 60Hz (USA), qui est plus ou moins source de bruit dans les
signaux ECG. Elaborons donc un filtre qui puisse supprimer cette composante.
a) Génération d’un signal synthétique
On commence par générer un bruit blanc gaussien. Son histogramme et densité de
probabilité sont affichés ci-dessous :
On génère maintenant une sinusoïde de fréquence 60Hz, avec une fréquence
d’échantillonnage prise à 200Hz, perturbée par un bruit blanc gaussien.
Voici ce que l’on obtient dans un cas où la sinusoïde est fortement bruitée (SNR = -50dB) :
3
Et dans un cas où l’impact du bruit est moindre (SNR = 50dB) :
Rappel : Le rapport signal sur bruit (SNR) s’exprime de la manière suivante :
SNRdB =
b) Obtention des périodogrammes et corrélogrammes
On veut maintenant obtenir le périodogramme de la sinusoïde bruitée créée, en utilisant
deux fenêtres d’apodisation différentes : la fenêtre rectangulaire et la fenêtre de Hanning.
Voici la figure obtenue en superposant les deux périodogrammes (échelle logarithmique à
droite), avec un SNR de 10dB pour la sinusoïde bruitée :
On retrouve bien les caractéristiques de la fenêtre de Hanning : elle atténue plus les lobes
secondaires que la fenêtre rectangulaire. De plus, les pics de fréquences sont situés autour
de la fréquence normalisée 0,3 et 0,7 (= 1 – 0,3). Cela concorde bien avec nos hypothèses de
départ : la sinusoïde a une fréquence 60Hz, Fe = 200Hz d’où 60/200 = 0,3.
Puissance du signal
Puissance du bruit
4
On souhaite maintenant obtenir la densité spectrale de la sinusoïde bruitée en utilisant la
méthode du corrélogramme en utilisant une autocorrélation biaisée et non biaisée.
Pour avoir une représentation plus précise de la DSP, on peut effectuer un zero padding sur
la fonction d’autocorrélation. Il est ainsi nécessaire de symétriser les fonctions
d’autocorrélation pour s’adapter à l’algorithme de transformée de Fourier discrète de
Matlab.
•Autocorrélation biaisée du signal bruité (on retrouve bien l’atténuation caractéristique) :
•Autocorrélation biaisée symétrisée du signal bruité :
5
•Autocorrélation non biaisée du signal bruité :
•Autocorrélation non biaisé symétrisée du signal bruité :
Remarque : On vérifie que la symétrie a été correctement effectuée en s’assurant que la partie
imaginaire de la transformée de Fourier de la fonction d’autocorrélation est bien négligeable devant
sa partie réelle.
En effectuant la transformée de Fourier sur ces deux autocorrélations symétrisées, on
obtient les corrélogrammes suivant, dont les pics de fréquence sont toujours centrés autour
de 0,3 :
6
Remarque : Cette figure confirme bien le fait qu’un corrélogramme doit toujours être effectué avec
une autocorrélation biaisé : en effet, on se retrouve avec des valeurs fréquentielles négatives avec une
autocorrélation non biaisée !
On peut maintenant comparer les différentes estimations de la DSP entre elles (une fenêtre
rectangulaire a été utilisée + échelle logarithmique) :
7
c) Création du filtre à encoche
On connait la fréquence de l’interférence dans le signal ECG, issu des signaux sinusoïdaux
servant à l’alimentation : 50Hz en France et 60Hz aux USA.
Ainsi, on se propose d’implanter un filtre dit à « encoche » qui éliminerait presque
seulement cette composante fréquentielle. On fixe f0 (fréquence à éliminer) à 60Hz.
Un filtre à encoche est caractérisé par la fonction de transfert H suivante :
H =
( ) ( )
avec a1 = 2. ( ) et = 2 .f0 .
En faisant varier , appelé facteur de sélectivité, de 0 à 0,9 par pas de 0,1, on obtient les
gabarits du filtre suivants :
On remarque que plus est petit, plus la bande rejetée est petite. Cette observation est
en accord avec la théorie, qui établit la relation suivante à -3dB :
2* = √
On applique alors le filtre implanté précédemment au signal bruité (SNR = 20dB).
Au niveau temporel, on obtient le tracé suivant :
8
Le passage dans le filtre à encoche à fait son effet : la composante sinusoïdale du signal
bruité à complétement disparue, il ne reste que le bruit blanc gaussien dans le signal.
On propose de tracer ensuite la DSP du signal bruité avant et après son passage dans le filtre
à encoche :
Là aussi, l’effet du filtre est avéré : alors que la fréquence 60Hz (0,3 en normalisée) est
présente dans le signal bruité avant le filtrage, elle a complétement disparue sous l’effet du
filtre.
9
d) Elimination des interférences d’alimentation
Appliquons ce que l’on vient de mettre en place à un vrai signal ECG (ECG60_2). Sa
fréquence d’échantillonnage est 250Hz. Son allure est la suivante :
On remarque la présence des complexes QRS, caractéristiques de l’ECG, mais la présence
des interférences dues aux alimentations sont visibles.
Effectuons tout d’abord une analyse spectrale de ce signal. On obtient le périodogramme et
corrélogramme suivant :
Analyse de la DSP
On sait que le domaine de fréquence de l’ECG est [0, 30Hz]. On le voit bien sur les tracés ci-
dessus, les fréquences normalisées comprises entre 0 et 0.12 (250*0.12= 30Hz) sont en
grande densité par rapport aux autres harmoniques du signal. Ainsi les pics que l’on observe
10
pour une fréquence normalisée de 0.24 (60Hz) ne peuvent correspondre qu’à la fréquence
d’oscillation de l’alimentation, l’influence de l’EMG étant négligeable pour une telle
fréquence. On en déduit ainsi que la fréquence d’oscillation de l’alimentation est de 60Hz,
celle rencontrée aux USA.
On applique le filtre à encoche à l’ECG, avec f0, fréquence qui va être rejetée par le filtre
égale à 60Hz :
On vérifie là que la fréquence d’oscillation de notre ECG était bien 60Hz : en effet, cette
fréquence a été filtrée et les interférences dans l’ECG ont disparu !
Voyons ce qui se passe si l’on prend f0 = 50Hz :
On observe bien que les interférences de fréquence 60Hz sont toujours dans l’ECG.
11
2 Détection des complexes QRS / Analyse du rythme
L’implémentation du filtre à encoche nous permet donc de nous débarrasser de la
composante spectrale associée à la fréquence du secteur dans le signal et ainsi d’obtenir un
signal plus propre.
Mais notre travail n’est pas terminé : il nous reste à éliminer le bruit qui se trouve en dehors
de la bande spectrale des complexes QRS, [5Hz-15Hz]. Cette élimination est d’une
importance capitale dans la surveillance d’un ECG : en effet, il est nécessaire de détecter
sans problème les complexes QRS car c’est l’analyse de leur rythme et de leur largeur qui
permet de déceler d’éventuels problèmes cardiaques.
Pour détecter ces complexes et enlever le bruit qui les entoure, on utilise la fonction Matlab
fournie QRSdetection.m qui s’appuie sur un algorithme de détection élaboré par J.Pan et
W.J.Tompkins. Le signal ECG passe par une série de filtre comme schématisé ci-dessous :
Rôle de chaque filtre
• Filtre passe bande (filtre passe bas + filtre passe haut) : élimine le bruit présent en dehors
de la bande spectrale des complexes QRS [5Hz ; 15Hz]
• Filtre dérivateur : permet de détecter de brusques variations dans la dérivée du signal,
dans la pente de celui-ci donc. Les complexes QRS sont ici mis en évidence puisque qu’ils
présentent une forte variation d’amplitude comparée au reste du signal
• Filtre quadrateur : amplifie le signal en sortie du filtre dérivateur et rend le signal positif, ce
qui permet de mettre plus en valeur les parties du signal présentant une grande variation
d’amplitude
• Filtre à moyenne glissante : transforme le signal pour connaitre plus facilement son
amplitude maximale et la largeur de celui-ci
Filtre
passe-bande
Filtre
dérivateur
Filtre
quadrateur
Filtre à
moyenne glissante
Extraction de paramètres
(peak_features.m)
Signal ECG
Largeur complexes QRS
Rythme ECG
hp_ecg deriv_ecg sq_ecg
moy_ecg
QRSdetection.m
12
Voici l’allure du signal obtenue après chaque sortie de filtre :
Cette méthode permet une localisation presque parfaite des 3 pics (Q, R et S) formant le
complexe QRS. Le graphique (obtenu avec QRSdetection.m) suivant montre la précision de
l’algorithme :
13
3 Restauration des échantillons perdus
Lors de leur passage dans le canal de transmission pour rejoindre le centre médical, les
enregistrements des ECG peuvent subir de très fortes atténuations qui peuvent causer la
perte partielle du signal. Nous allons mettre en place une méthode, basée sur l’algorithme
mathématique de Papoulis, pour reconstituer le signal ECG dans son intégralité et ainsi
garantir un contrôle fiable de l’état cardiaque du patient.
a) Mise en place de l’algorithme de Papoulis-Gerchberg
Cette algorithme ne peut être utilisé que sur des signaux à support spectral limité; c’est bien
le cas de notre signal ECG qui a une bande spectrale allant de 1Hz à 30Hz.
Le principe de l’algorithme est le suivant :
Calcul de la TFD du signal
Mise à zéro du contenu spectral en dehors de [0, 30Hz]
Calcul de la TFD inverse
Extraction dans le signal temporel obtenu des échantillons correspondants à ceux perdus
Insertion de ces échantillons dans le signal d’origine
Après avoir mis en place cet algorithme, on le teste sur un sinus de fréquence 10Hz :
Il faut moins de 100 itérations, pour reconstituer la partie manquante de ce signal.
14
Il nous est conseillé dans l’énoncé de remplacer les zéros ajoutés dans le signal par l’interpolation des échantillons perdus. On a pu vérifier l’impact de cette interpolation sur la vitesse de convergence de l’algorithme :
On s’aperçoit effectivement que l’absence d’interpolation rend la reconstitution plus lente. Cependant, on a remarqué que l’absence d’interpolation pouvait néanmoins présenter un gain de temps suivant l’endroit où la partie manquante se situait.
b) Tests sur signal sinusoïdal et ECG Maintenant, appliquons l’algorithme sur un signal ECG.
On choisit tout d’abord de mettre les échantillons perdus entre deux complexes QRS.
Le résulat, sans interpolation linéaire vant l’application de l’algorithme, est le suivant :
15
L’échantillon perdu correspond ici à une mise à zéro pour les points du signal ECG ayant une abscisse comprise dans l’intervalle [400 ; 430]. Au bout de 200 itérations, on est encore loin de ce qu’était le signal d’origine. En ajoutant l’interpolation linéaire avant l’algorithme de Papoulis (ie on remplace les échantillons perdus par la valeur de la moyenne entre le point situé juste avant la bande perdue et le point situé juste après), on obtient le signal restitué suivant :
Les échantillons perdus ne sont donc pas initialisés à zéro mais à 2000 environ. 200 itérations dans l’algorithme suffisent alors à retrouver assez convenablement le signal d’origine. On se propose enfin de mesurer l’influence de la position de la séquence d’échantillon perdue. L’exemple suivant montre comment est restitué le signal dont la séquence perdue se situait en plein sur le pic R :
16
Même au bout de 2000 itérations, on est loin de retrouver l’amplitude du pic R.
Ainsi, on a pu observer 3 facteurs distincts influant grandement sur l’efficacité de
l’algorithme de Papoulis :
-la mise en place d’une interpolation linéaire avant l’algorithme augmente de façon
significative la rapidité en général,
-la position de la séquence d’échantillons perdus : si elle se situe dans une zone où il y a une
grande variation d’amplitude rapidement, l’efficacité n’est pas optimale,
-la longueur de cette séquence joue un rôle important : plus elle est grande, plus il est
évidemment difficile de reconstituer le signal avec exactitude !
4 Classification des pathologies
Les travaux effectués précédemment nous permettent de localiser les complexes QRS dans le signal ECG et de réparer le signal si jamais des échantillons se perdent dans le canal de transmission. Il nous reste maintenant à mettre en place une méthode permettant d’analyser l’ECG reçu afin de déterminer si le patient a des troubles cardiaques (on s’intéressera à 4 pathologies). On va s’appuyer sur le test de Neymann Pearson et la fonction Matlab QRSdetection.m qui renvoie la position des trois pics Q, R et S ainsi que la largeur du complexe QRS pour un signal ECG donné. Dans un premier temps, on utilise comme critère, pour savoir si un ECG est sain ou pathologique, le saut de variance au niveau de la largeur des complexes ECG. Le seuil de détection utilisé pour ce test vaut :
=
( )
Où est la densité de la loi du chi2, la probabilité de fausse alarme ( ) et la
variance estimée à partir d’un ECG sain. Malheureusement, cette solution ne permet que de reconnaitre qu’une seule des quatre pathologies proposées. Ainsi, il faut élaborer une autre stratégie pour identifier chacune des pathologies avec la plus grande fiabilité possible. Voici les pathologies proposées et le critère de détection que nous proposons pour l’identifier :
17
Test de Neymann Pearson sur la largeur
des complexes QRS
Test de Neymann Pearson sur le rythme
d’apparition des complexes QRS
Test de Neymann Pearson sur le rythme
d’apparition des complexes QRS
18
Test de Neymann
Pearson sur la largeur des complexes QRS
5 Conclusion
Ce projet nous a ainsi donné l’occasion d’appliquer les méthodes vues en cours de
traitement du signal dans le cadre d’une étude concrète, celle sur la surveillance des ECG des
patients à distance.
Cela nous a permis de revoir les outils de base d’analyse et de traitement des signaux
(périodogramme, corrélogramme, filtrage) mais aussi d’avoir une première approche avec
des algorithmes complexes (Papoulis pour la reconstitution des échantillons perdus,
l’algorithme de Pan et Tompkins pour la détection du complexe QRS) qui peuvent trouver
leur application dans une multitude d’autres systèmes.
Top Related