Rapport du projet de Traitement du Signal - cosialls.frcosialls.fr/doc/Projet_TS_ECG.pdf · Analyse...

18
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

Transcript of Rapport du projet de Traitement du Signal - cosialls.frcosialls.fr/doc/Projet_TS_ECG.pdf · Analyse...

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.