PROCÉDÉ D'ANALYSE D'UN SIGNAL D'EEG
La présente invention concerne un procédé d'analyse de signaux complexes, tels que les signaux d'électroencéphalogramme
(EEG), pour en extraire des paramètres dont l'évolution est plus significative pour l'observateur que l'évolution brute des signaux.
Un tel procédé d'analyse constitue un complément important de 1 ' analyse spectrale traditionnelle..
De nombreux signaux, tels que -les signaux d'EEG, ne peuvent être considérés, ni comme réguliers, ni comme totalement aléatoires. Ils peuvent alors comporter des éléments dits non linéaires ou chaotiques. Il existe des paramètres, tels que la dimension de corrélation ou de complexité (DC), qui permettent d'indiquer le degré de complexité d'un signal complexe, notamment chaotique. La DC croît à partir de 1 lorsque le signal analysé évolue d'un signal régulier périodique vers un signal aléatoire.
On a constaté que l'évolution de tels paramètres peut fournir des informations facilement interprétables par l'observateur, même non spécialiste, sur le signal analysé. Par exemple, l'évolution de la DC d'un signal d'EEG permet d'identifier immé- diatement qu'un individu dort ou qu'il est éveillé.
En effet, quand un individu dort, son activité cérébrale est plus lente, ce qui tend à rendre le signal d'EEG plus
simple et à fournir une faible DC. Lorsque 1 ' individu est réveillé, son activité cérébrale s'accélère et le signal d'EEG devient plus complexe, ce qui fournit une DC élevée. L'évolution de la DC d'un signal d'EEG permet également de facilement déceler des crises d'epilepsie.
La signification de la DC peut être enrichie par la confrontation avec 1 ' aspect du signal brut et 1 ' analyse spectrale du signal.
Les procédés classiques de calcul des paramètres repré- sentatifs de signaux complexes, notamment de la dimension de corrélation, exigent toutefois une telle puissance de calcul que l'on ne peut, avec des moyens raisonnables (tels qu'un ordinateur de bureau de type PC) , réaliser les calculs en temps réel. Ce problème est aggravé dans le cas des EEG où l'on doit analyser plusieurs signaux simultanés. Ainsi, pour calculer l'évolution de la DC d'un signal d'EEG, on commence par numériser et enregistrer les signaux d'EEG pour en extraire ultérieurement l'évolution de la DC. La surveillance de l'état électrique cérébral nécessite un enregistrement du signal EEG qui dure plusieurs heures, et le calcul de l'évolution de la DC de ces signaux enregistrés dure avec les procédés classiques nettement plus longtemps.
De tels inconvénients de temps de calcul freinent considérablement les recherches sur les applications de ces paramètres et interdisent la surveillance en temps réel de l'état d'un individu (sommeil, éveil, epilepsie, et autres) par une personne non spécialiste, voire par une machine.
La figure 1 est destinée à illustrer le calcul d'une valeur de dimension de corrélation (DC) . Une valeur de DC se calcule sur un nuage d'un grand nombre de points dans un espace de dimension quelconque d appelé "espace des phases". Pour des raisons de clarté, la figure 1 représente un nuage de points dans un espace de dimension 2. En chaque point du nuage, on fait croître le rayon r d'une boule et on compte, pour chaque rayon, le nombre de points se trouvant à l'intérieur de la boule. Ce que l'on cherche à déterminer, c'est le taux d'accroissement de
l'effectif des points d'une boule en fonction de l'augmentation de son rayon.
Lorsque le nuage de points correspond à un phénomène aléatoire, les points remplissent uniformément l'espace. Alors, dans un espace de dimension 2, l'effectif de points à l'intérieur d'une boule (un cercle) croît avec le carré du rayon de la boule. Dans un espace tridimensionnel, l'effectif croît avec le cube du rayon. Dans un espace de dimension d, l'effectif croît avec le rayon élevé à la puissance d. La DC est égale à la puissance du taux d'accroissement, c'est-à-dire qu'elle est égale à 2, 3 ou d pour un nuage de points aléatoires dans un espace de dimension 2, 3 ou d, respectivement.
Lorsque le nuage de points correspond à un phénomène régulier ou périodique, les points du nuage se regroupent sur une ligne régulière. Le taux d'accroissement est alors proportionnel au rayon de la boule, quelle que soit la dimension de l'espace, c'est-à-dire que la DC est égale à 1.
Lorsque le phénomène est chaotique, les points du nuage correspondant se regroupent selon des figures plus ou moins complexes appelées "attracteurs" . Dans ce cas, la DC a une valeur comprise entre 1 et la dimension d de l'espace des phases. On a intérêt à choisir une dimension de l'espace des phases toujours supérieure à la DC de l'attracteur. La figure 2 illustre un exemple pratique de calcul d'une valeur de DC. Calculer le nombre de points se trouvant dans une boule de rayon variable centrée sur chaque point d'un nuage revient en pratique à calculer toutes les distances entre les points du nuage et à les classer dans un histogramme d'intégrale de corrélation. Les limites des classes de l'histogramme sont définies de manière exponentielle, par exemple par puissances de 2. Sur la figure 2, la x-ème classe contient l'effectif des distances comprises entre 0 et 21. Par ailleurs, les effectifs sont exprimés selon une échelle logarithmique de base 2. Généra-
lement, pour affiner le calcul, les limites des classes sont des puissances non entières de 2, par exemple de la forme 2^-/ .
Avec les échelles logarithmiques utilisées, le degré du taux d'accroissement, c'est-à-dire la DC, est directement égale à la pente de la partie ascendante de l'intégrale. En théorie, la pente devrait être calculée en début d' intégrale de corrélation, mais les effets de bord, dus notamment au calcul sur un nombre fini de points, ainsi que le bruit dans le signal, rendent ce calcul imprécis. Ainsi, la pente est calculée peu après le début de l'intégrale. A titre d'exemple, la figure 2 illustre une pente de 2 obtenue pour les effectifs des troisième, quatrième et cinquième classes, ce qui fournit une DC égale à 2.
La figure 3 illustre un procédé classiquement utilisé pour créer un nuage de points dans un espace des phases à partir d'un signal échantillonné, afin de pouvoir calculer des dimensions de corrélation. Des échantillons numériques successifs SQ , SI... sont illustrés sous forme de barres verticales de hauteurs correspondant aux valeurs des échantillons. Ces échantillons sont généralement des échantillons de 8 à 12 bits. On souhaite donc créer, à partir des échantillons du signal, et pour chaque nouvel échantillon k (k = 0 , 1. . . ) , un nuage de n points P^ à P]ζ+n-l de d coordonnées chacun. Pour cela, on procède souvent en prenant pour coordonnées de chaque point d échantillons successifs du signal analysé. En d'autres termes, pour un point P^ du nuage (1 = k, k+1. . . k+n-1 ) , on prend pour coordonnées les échantillons S± à S±+d-1 ' 0n P^ut également prendre les coordonnées parmi les échantillons selon un pas p, c'est-à-dire, pour le point P±, prendre les échantillons S±,
S±+D' S±+2Ό' • ' S±+ (d-l)p' Dans Ie as où on analyse plusieurs signaux simultanés (EEG), on peut créer autant de points que de signaux, ou ne créer qu'un seul point en prenant pour coordonnées les échantillons pris au même instant de ces différents signaux.
La DC doit être calculée sur un nombre n de points relativement élevé, par exemple 1000, pour commencer à être significative. Par ailleurs, pour obtenir une dynamique conve-
nable de la DC, on choisit souvent un espace des phases de dimension d = 16.
La distance entre un point de coordonnées x à x± et un point de coordonnées yη à g s'exprime dans l'espace euclidien habituel par :
Toutefois, pour simplifier les calculs, on préfère utiliser une autre distance équivalente exprimée sous la forme :
16
Σ - y±l i = l Une telle distance représente toutefois 16 calculs de différence, 15 calculs de somme et 16 calculs de valeur absolue, c'est-à-dire 47 instructions auxquelles il faut ajouter au moins les instructions nécessaires à classer la distance dans l'histogramme de la figure 2. Par ailleurs, la fréquence minimale d'échantillonnage utilisée pour les électroencéphalogrammes est de 64 Hz, ce qui veut dire que 1 'on doit effectuer ces calculs 64 fois par seconde, et ceci pour chacun des signaux d'EEG. Compte tenu du nombre de distances à calculer, la masse des calculs est considé- rable et ne peut être effectuée en temps réel avec un matériel de coût raisonnable.
Bien entendu, comme une partie des résultats nécessaires au calcul d'une valeur de DC peut servir au calcul de la valeur suivante, on peut envisager un calcul de type glissant, mais ceci limiterait le choix du pas et la masse des calculs reste considérable.
Un objet de la présente invention est de prévoir un procédé d'analyse de signal de type chaotique, qui nécessite une faible puissance de calcul pour calculer un paramètre représenta- tif d'un phénomène complexe, tel que la dimension de corrélation. La présente invention vise notamment à rendre possible un calcul en temps réel avec un matériel de faible coût.
Un autre objet de la présente invention est de fournir en temps réel une information visuelle facilement interprétable d'un phénomène complexe.
La présente invention est basée sur la constatation du fait que, pour calculer un paramètre tel que la dimension de corrélation, il est inutile de considérer les distances supérieures à un certain seuil, étant donné qu'un tel paramètre est déterminé par la pente au début d'une intégrale de corrélation des distances ( figure 2 ) . Ainsi, la présente invention propose de ne calculer que les faibles distances inférieures à un seuil donné. En d'autres termes, elle propose une solution pour identifier les distances élevées supérieures au seuil sans avoir à les calculer.
Selon une première solution pour atteindre ces objets, la présente invention prévoit un procédé d'analyse d'un signal ou de plusieurs signaux simultanés, comprenant les étapes consistant à convertir en échantillons numériques des valeurs successives du ou des signaux ; à former dans un espace discrétisé de dimension d un nuage de n points dont chacun a d coordonnées prises de manière régulière parmi des échantillons successifs du ou des signaux ; à partitionner l'espace de dimension d en des hypercubes ; et à calculer les distances entre points à 1 ' intérieur de chaque hypercube
Selon un mode de réalisation de la présente invention, le procédé comprend les étapes consistant à créer pour chaque point un identificateur d'hypercube par une réduction de résolution d'un nombre constitué des bits des coordonnées du point, de manière que des points ayant le même identificateur se trouvent dans le même hypercube ; à organiser les points du nuage dans une liste enchaînée, de manière que les points ayant un même identificateur soient consécutifs dans la liste ; et à créer une table répertoriant les identificateurs des points de la liste enchaînée, cette table fournissant, pour chaque identificateur répertorié, un accès à un premier des points ayant cet identifi- cateur, et une information permettant de retrouver tous les
points de même identificateur en parcourant la liste enchaînée à partir du premier point.
Selon un mode de réalisation de la présente invention, le procédé comprend, pour chaque nouveau point du nuage, les étapes consistant à déterminer l'identificateur du point ; et à chercher l'identificateur dans la table. Si l'identificateur existe dans la table, on insère le point dans la liste des points de même identificateur, et on met à jour les informations de la table permettant de retrouver tous les points de même identifica- teur. Si l'identificateur n'existe pas dans la table, on insère le nouveau point à une extrémité de la liste enchaînée, et on met à jour la table avec le nouvel identificateur et les informations permettant d'accéder au nouveau point.
Selon un mode de réalisation de la présente invention, le procédé est appliqué au calcul de la dimension de corrélation du nuage de points, et il comprend, pour chaque nouveau et i-ème point du nuage, les étapes consistant à calculer les distances entre le nouveau point et les points ayant le même identificateur ; à classer les distances dans un histogramme d'intégrale de corrélation ; à calculer les distances entre le (±-n)è e point du nuage et les points ayant le même identificateur que le (i-njème point ; à déclasser de l'histogramme les distances calculées pour le (i-njème point ; et à fournir le degré du taux d'accroissement des effectifs de 1 'histogramme en tant que dimension de corréla- tion.
Selon un mode de réalisation de la présente invention, le procédé est appliqué à un signal d'EEG.
Selon une deuxième solution pour atteindre les objets susmentionnés, la présente invention prévoit un procédé d'analyse d'un signal ou de plusieurs signaux simultanés, comprenant les étapes consistant à convertir en échantillons numériques des valeurs successives du ou des signaux ; à former dans un espace discrétisé de dimension d un nuage de n points dont chacun a d coordonnées prises de manière régulière parmi des échantillons successifs du ou des signaux ; à définir une ligne unique passant
par tous les points de l'espace, cette ligne étant telle que des points proches dans l'espace aient des rangs proches sur la ligne ; et à exploiter les rangs des points sur ladite ligne pour fournir une information représentative du ou des signaux ana- lysés.
Selon un mode de réalisation de la présente invention, ladite ligne est définie de manière que le rang d'un point sur la ligne soit constitué des bits des coordonnées du point, regroupés par poids égaux. Selon un mode de réalisation de la présente invention, le procédé comprend les étapes consistant à associer à chaque point un identificateur obtenu par une réduction de résolution du rang du point sur ladite ligne ; à ordonner les points du nuage dans une liste enchaînée par leurs rangs sur la ligne ; et à créer une table répertoriant les identificateurs des points de la liste enchaînée, cette table fournissant, pour chaque identificateur répertorié, un accès à un premier des points ayant cet identificateur, et une information permettant de retrouver tous les points de même identificateur en parcourant la liste enchaî- née à partir du premier point.
Selon un mode de réalisation de la présente invention, le procédé comprend, pour chaque nouveau point du nuage, les étapes consistant à déterminer l'identificateur du point ; et à chercher l'identificateur dans la table. Si l'identificateur existe dans la table, on insère le point dans la liste des points de même identificateur en respectant 1 'ordre des rangs sur ladite ligne, et on met à jour les informations de la table permettant de retrouver tous les points de même identificateur. Si l'identificateur n'existe pas dans la table, on cherche dans la table les identificateurs, précédent et suivant, encadrant le nouvel identificateur, on insère le nouveau point dans la liste après le dernier point ayant 1 ' identificateur précédent et le premier point ayant l'identificateur suivant, et on met à jour la table avec le nouvel identificateur et les informations permettant d'accéder au nouveau point.
Selon un mode de réalisation de la présente invention, le procédé est appliqué au calcul de la dimension de corrélation du nuage de points, et il comprend, pour chaque nouveau et i-ème point du nuage, les étapes consistant à calculer les distances entre le nouveau point et les points dont les rangs sur ladite ligne sont compris dans une marge prédéterminée autour du rang sur la ligne du nouveau point ; à classer les distances dans un histogramme d'intégrale de corrélation ; à calculer les distances entre le (i-njème point du nuage et les points dont les rangs sur la ligne sont compris dans la marge prédéterminée autour du rang sur la ligne du (i-njème point ; à déclasser de l'histogramme les distances calculées pour le (i-njèrne point du nuage ; et à fournir le degré du taux d' accroissement des effectifs de l'histogramme en tant que dimension de corrélation. Selon un mode de réalisation de la présente invention, le procédé comprend les étapes consistant à définir un ensemble de sous-nuages, cet ensemble contenant tous les points du nuage ; dans chaque sous-nuage, à définir un ensemble de voisinages sous forme d'intervalles sur ladite ligne ; à calculer les distances entre les points de chaque intervalle, en excluant les distances déjà calculées sur un intervalle précédent ; à classer les distances dans un histogramme d'intégrale de corrélation ; lorsque les distances ont été calculées dans tous les voisinages d'un sous-nuage, à calculer le degré du taux d'accroissement des effectifs de l'histogramme en tant que dimension de corrélation du sous-nuage, et à classer cette dimension de corrélation dans un deuxième histogramme ; et à afficher chaque effectif du deuxième histogramme en une couleur ou nuance de gris correspondant à l'effectif, sur un axe associé aux classes du deuxième histogramme.
Selon un mode de réalisation de la présente invention, le procédé comprend, pour chaque point du nuage, les étapes consistant à réduire, le cas échéant, la résolution du rang du point sur ladite ligne pour constituer un rang effectif ; à créer deux coordonnées, l'une constituée des bits de poids pair du rang
effectif, l'autre constituée des bits de poids impair ; et à illuminer sur un écran le pixel ayant lesdites deux coordonnées, ramenées à l'échelle de l'écran.
Ces objets, caractéristiques et avantages, ainsi que d'autres de la présente invention seront exposés en détail dans la description suivante de modes de réalisation particuliers faite à titre non-limitatif en relation avec les figures jointes parmi lesquelles : les figures 1 et 2, précédemment décrites, illustrent un procédé classique de calcul de dimension de corrélation ; la figure 3 illustre un procédé classique pour transformer des échantillons successifs d'un signal en un nuage de points dans 1 'espace afin de pouvoir calculer la dimension de corrélation ; la figure 4 est destinée à illustrer une première solution selon l'invention pour exclure des calculs les distances élevées ; la figure 5 représente les points d'un nuage, organisés selon 1 ' invention dans une liste enchaînée afin de permettre un calcul particulièrement rapide et économe en mémoire ; les figures 6 et 7 sont destinées à illustrer une deuxième solution optimisée selon 1 ' invention pour exclure des calculs les distances élevées ; la figure 8A représente un histogramme des dimensions de corrélation dans un nuage de points donné ; et la figure 8B illustre une représentation possible de l'évolution de l'histogramme de la figure 8A pour un nuage de points qui change dans le temps.
Comme le représente la figure 4 en dimension 2, une première solution selon l'invention pour ne calculer que les faibles distances entre points consiste à partitionner 1 'espace des phases en des voisinages jointifs à l'intérieur desquels on limite le calcul des distances. Les voisinages définissent ainsi, par leur taille, un certain seuil au delà duquel on ne calcule plus les distances. Dans un espace de dimension d quelconque, les
voisinages sont des hypercubes HC. Comme on le verra ci-après, on peut identifier de manière particulièrement simple et rapide les points qui se trouvent à l'intérieur d'un même hypercube afin de calculer les seules distances nécessaires. Cette solution pourrait à priori sembler imprécise, car, de part et d'autre d'une frontière entre deux hypercubes, on peut trouver deux points proches, donc à une distance qui devrait être comptabilisée. Or, cette distance n'est pas comptabilisée, car les deux points sont dans des hypercubes distincts. En réalité, étant donné que le nombre de points du nuage ( 1000 = 2^-0) est négligeable par rapport au nombre de points possibles (212^) dans un espace typique de dimension 16 à coordonnées définies sur 8 bits, il est généralement très peu probable que deux points proches soient dans des hypercubes distincts. Cette probabilité peut être rendue suffisamment faible en réduisant le nombre d'hypercubes.
Les hypercubes sont choisis de manière que 1 'hypercube auquel appartient un point soit identifié par les bits de poids fort de chacune ou certaines des coordonnées du point. Par exem- pie, on considère des points de coordonnées XQ à ±5, chaque coordonnée x± étant exprimée en binaire par Xj_( 7 )XJ_ ( 6 ) x±(0) , où x±(j) est le bit de poids de la coordonnée x^. Alors, l'hypercube auquel appartient un point est identifié, par exemple, par l'identificateur binaire x0( 7)x0(6)x1 ( 7)x1 (6) . . .x15( 7 )x15(6) .
Cet identificateur est constitué des deux bits de poids fort de chacune des coordonnées du point. Ainsi, tous les points ayant des coordonnées dont les deux bits de poids fort sont identiques appartiennent à un même hypercube. Autrement dit, on connaît l'hypercube auquel appartient un point en examinant les deux bits de poids fort de chacune de ses coordonnées.
En pratique, on obtient de bons résultats, en termes de précision et de faible puissance de calcul, en identifiant les hypercubes par le bit de poids le plus fort de chaque coordonnée, c'est-à-dire en utilisant un identificateur du type
x0( 7)x1 ( 7) . . .x15( 7) . Un tel identificateur permet de définir 22^ hypercubes de même taille.
On obtient encore de bons résultats en diminuant le nombre d'hypercubes en limitant l'identificateur aux bits de quelques unes des coordonnées
Afin de diminuer le nombre d'hypercubes, on peut aussi appliquer une fonction monotone réductrice quelconque sur l'identificateur de 16 bits ci-dessus, ou sur un identificateur de 128 bits constitué de tous les bits des coordonnées, pour générer un identificateur effectif de plus faible résolution. Par exemple on peut diviser 1 ' identificateur de départ par un facteur supérieur à 1, ou le porter à une puissance inférieure à 1 (1/2, 1/16...). Dans ce cas, les hypercubes ne sont plus nécessairement de même taille.
Une fois que les hypercubes sont définis de la manière décrite ci-dessus, il faut également prévoir un moyen efficace pour identifier les couples de points qui se trouvent à l'intérieur d'un même hypercube. La figure 5 illustre un tel moyen. Les points P du nuage à traiter, au fur et à mesure qu'on les acquiert, sont insérés dans une liste enchaînée, et ceci de manière que des points appartenant à un même hypercube soient consécutifs dans la liste. Les points appartenant à un même hypercube sont repré- sentes à la figure 5 sur une même horizontale.
Comme cela est illustré en bas de la figure 5, chaque point P est stocké à une adresse A spécifique avec ses coordonnées. Afin de pouvoir établir les liens entre les différents points de la liste, chaque point stocke également l'adresse Aprec du point qui le précède dans la liste et 1 ' adresse Asuiv du point qui le succède dans la liste.
Alors, "insérer" un nouveau point d'adresse An dans la liste signifie que l'on met à jour :
• 1 'adresse Asuiv du point précédent pour pointer vers l'adresse An du nouveau point,
• l'adresse Aprec du point suivant pour pointer vers l'adresse An, et
• les adresses Aprec et Asuiv du nouveau point pour pointer vers les adresses des points précédent et suivant. L' adresse Aprec du premier point de la liste et
1 'adresse Asuiv du dernier point de la liste sont sans signification.
Par ailleurs, on utilise une table répertoriant tous les identificateurs HC1, HC2... des hypercubes dans lesquels se trouvent des points de la liste enchaînée. Cette table contient également, pour chaque identificateur d'hypercube, des informations permettant de retrouver dans la liste enchaînée tous les points de l'hypercube correspondant. Pour cela, par exemple, la table contient 1 ' adresse Aprem du premier point appartenant à l'hypercube dans la liste enchaînée. Ensuite, pour que l'on puisse facilement à partir de ce premier point retrouver tous les points appartenant à l'hypercube, la table peut contenir, soit le nombre N de points contenus dans l'hypercube, soit l'adresse Adern du dernier point de l'hypercube dans la liste enchaînée. La table pourra, comme cela est représenté, contenir toutes ces informations qui, bien qu'elles sont redondantes, permettront, selon le type d'opération effectuée, d'accélérer le traitement.
Les identificateurs d'hypercube sont rangés à des emplacements consécutifs de la table. Ils peuvent être rangés par ordre croissant ou par ordre chronologique. L'ordre chronologique est plus simple, car il suffit de ranger chaque nouvel identificateur derrière le dernier identificateur de la table.
Lorsque 1 'on a besoin d'un identificateur dans la table, celle-ci est parcourue identificateur par identificateur jusqu'à ce qu'on trouve celui qu'on cherche. Le nombre d'identificateurs à parcourir est en général nettement plus faible que le nombre de points du nuage analysé.
L'organisation des données de la figure 5 est utilisée de la manière suivante. Lorsque l'on acquiert un nouveau point, on dispose de ses coordonnées, à partir desquelles on commence
par retrouver l'identificateur d'hypercube correspondant. La table d'identificateurs est alors parcourue.
Si on trouve l'identificateur, par exemple HC3, on insère le point dans la liste enchaînée, par exemple après le dernier point appartenant à l'hypercube HC3, indiqué dans la table par l'adresse Adern.
Comme on l'a précédemment indiqué, pour opérer cette insertion, et comme cela est symbolisé dans la figure, les adresses Aprec et Asuiv du nouveau point et des deux points l'encadrant sont convenablement mises à jour. Par ailleurs, 1 ' adresse Adern pour 1 ' identificateur HC3 reçoit 1 'adresse du nouveau point et le nombre N3 est mis à jour pour indiquer le nouveau nombre de points contenus dans 1 'hypercube HC3.
Ensuite, on calcule les distances entre le nouveau point et chacun des autres points appartenant à l'hypercube HC3. Les autres points de 1 'hypercube sont trouvés immédiatement en remontant la liste enchaînée point par point. Le calcul de distances s'arrête lorsqu'on a parcouru N3-I points, ou bien lorsque l'on rencontre le point d'adresse Aprem. Si l'identificateur d'hypercube du nouveau point n'existe pas dans la table, cet identificateur est ajouté derrière le dernier identificateur de la table, les adresses Adern et Aprem pour ce nouvel identificateur indiquant toutes les deux l'adresse du nouveau point. Le nouveau point est inséré en fin de liste.
Comme on vient de le décrire à titre d'exemple ci- dessus, chaque nouveau point est inséré dans la liste après le dernier point appartenant au même hypercube. Bien entendu, chaque nouveau point pourrait être inséré ailleurs, pourvu qu'il soit consécutif dans la liste avec les points appartenant au même hypercube.
Dans le cas où le procédé est utilisé pour calculer la dimension de corrélation (DC) , les distances calculées dans 1'hypercube où arrive le nouveau point sont classées de manière
classique dans un histogramme du type de la figure 2 au fur et à mesure qu'elles sont calculées.
Dans le cadre d'un calcul glissant sur n points, on pourra prévoir n emplacements mémoire à des adresses A succes- sives pour stocker les points, ces emplacements étant utilisés circulairement. Ainsi, dans 1 'exemple de la figure 5, le nouveau point P-L arrivant dans l'hypercube HC3 sera stocké à l'adresse où était stocké le point P±-n, qui se trouvait, par exemple, dans 1'hypercube HC^. Avant d'écraser ce point P±-n, on recalcule les distances entre ce point et les autres points de l'hypercube HC^ dans le but de supprimer les effets provoqués par le point P±-nr et donc de ne refléter que les effets provoqués par les n points courants P±-n+1 à P±.
Dans le cadre du calcul de la DC, les distances calcu- lées pour le point P±- sont déclassées de l'histogramme de la figure 2, c'est-à-dire que, au lieu d' incrémenter les effectifs des classes correspondant aux distances trouvées, on les décrémente.
Bien entendu, comme cela est symbolisé dans la figure, en supprimant le point P±-n dans la liste, on met à jour les adresses Aprec et Asuiv des points qui 1 'encadraient et le nombre Ni dans la table, et le cas échéant l'adresse Adern ou Aprem.
Bien qu'il soit nécessaire de mettre à jour l'histogramme à chaque nouveau point, il suffit en pratique de fournir quatre valeurs de DC par seconde, calculées de manière classique à partir de l'histogramme, tous les f/4 points, f étant la fréquence d'échantillonnage
Dans certains cas, et notamment pour maîtriser le temps de calcul en fonction du signal analysé, il peut être utile de modifier le nombre et donc la taille des hypercubes en cours d'analyse. Alors, pour que la gestion de la liste enchaînée soit simple, les identificateurs d'hypercube sont rangés par ordre croissant. Les points sont affectés de rangs établis à partir de leurs coordonnées, et rangés dans la liste par rangs croissants. Les identificateurs d'hypercube correspondent alors aux rangs
tronqués sur un plus ou moins grand nombre de bits de poids fort. Ainsi, par exemple, lorsque la taille d'un hypercube diminue en augmentant le nombre de bits (la résolution) de son identificateur, les points qui appartenaient à cet hypercube, mais qui se retrouvent dehors, appartiendront à des hypercubes adjacents, grâce à la contiguïté des rangs des points dans la liste.
Les figures 6 et 7 sont destinées à illustrer une solution optimisée selon 1 ' invention permettant de définir de manière simple et précise un voisinage d'un point quelconque de l'espace des phases et de trouver rapidement les points d'un nuage situés à l'intérieur de ce voisinage. Cette solution s'applique donc particulièrement bien à la dimension de corrélation pour éviter de calculer inutilement les distances sortant du voisinage, mais elle s'applique également à d'autres paramètres dont la détermi- nation est basée sur des calculs dans un voisinage d'un point. Le principe de cette solution pourra être utilisé pour d'autres applications, dont on citera un exemple plus loin.
Cette solution consiste à définir une ligne unique qui passe par tous les points de l'espace des phases. Il est possible de définir une telle ligne, car l'espace est discrétisé du fait que les coordonnées des points sont des nombres de résolution finie, en pratique binaires. Cette ligne présente en outre la propriété d'être telle que des points voisins dans l'espace soient voisins sur la ligne, quelle que soit l'échelle (ou la taille) du voisinage considéré. Les lignes fractales de dimension d répondent à ces propriétés. En procédant ainsi pour les paramètres tels que la DC, il suffira de limiter les calculs de distances aux points qui ont des rangs voisins sur la ligne fractale, puisque ces points seront alors voisins dans l'espace. La figure 6 illustre un exemple en dimension 2 d'une telle ligne fractale. Les points sont regroupés quatre par quatre en carrés, les quatre points d'un carré étant reliés en Z. Ensuite, les carrés sont regroupés quatre par quatre selon des carrés plus grands et sont reliés en Z dans chaque carré plus grand. Les carrés plus grands sont regroupés quatre par quatre
selon des carrés encore plus grands et sont reliés en Z dans chaque carré encore plus grand, et ainsi de suite.
En dimension d, les points sont regroupés par hypercubes de taille croissante, au lieu de carrés. Bien entendu, les liaisons pourraient être définies de nombreuses autres manières, par exemple en N, en C, en X, en U... L'avantage de la ligne fractale illustrée en figure 6 est que sa mise en équation est particulièrement simple et immédiatement généralisable à un espace de dimension d quelconque. La mise en équation consiste à exprimer le rang d'un point quelconque sur la ligne en fonction de ses coordonnées.
Si les coordonnées d'un point sont XQ, x^ . . . x-d-l > chaque coordonnée XJ_ étant exprimée, par exemple, sur e = 8 bits XJ (7) , x (6) . . . x (0) , le rang de ce point sur une ligne fractale du type de la figure 6, généralisée à l'espace de dimension d, est exprimé par le nombre binaire : x0 (7)X (7) . . .xd__ (7)x0 (6)x1 (6) . . .xd_1 (6)xQ (S) . . .xQ (0)x1 (0) . . .xd_1 (0) .
En d'autres termes, ce rang de ed bits (128 bits lorsque d = 16 et e = 8) , est constitué des bits des coordonnées du point, regroupés par poids égaux. En décimal, ce rang, que l'on pourra appeler rang fractal, s'exprime par :
Ce rang fractal peut être comparé à l'adresse cartésienne décimale classiquement utilisée pour obtenir l'emplacement mémoire d'une donnée mul exprimée par :
L'adresse cartésienne est obtenue en juxtaposant les lignes de la matrice des bits des coordonnées d'un point, tandis que le rang fractal du point est obtenu en juxtaposant les lignes de la transposée de cette matrice.
La figure 7 illustre plus précisément le procédé utilisant le rang sur la ligne fractale ainsi définie pour éviter le calcul des distances supérieures à un seuil donné. La ligne
fractale est représentée étirée selon un axe horizontal, de sorte que les rangs des points correspondent tout simplement à des abscisses sur cet axe. Lorsque 1 'on acquiert un nouveau point courant Pc, on calcule à partir de ses coordonnées son rang Rc sur la ligne fractale. Comme on vient de le voir, le calcul de ce rang s'effectue par une simple recombinaison des bits des coordonnées du point. On définit autour du point Pc un voisinage dans lequel on limitera la recherche des points pour calculer les distances. Ce voisinage n'est autre qu'un intervalle de rangs, de préférence centré sur le rang Rc. Par exemple, l'intervalle est égal à Rc JM, où M est un seuil prédéfini. Les points de cet intervalle, voisins du point Pc sur la ligne fractale, sont également voisins du point Pc dans 1 'espace grâce aux propriétés susmentionnées de cette ligne fractale. On définit de cette manière un voisinage centré sur chaque point à analyser, ce qui fournit des résultats plus précis que lorsque les voisinages sont fixes, comme à la figure 4.
Bien entendu, une ligne fractale du type de la figure 6 n'est pas parfaite, c'est-à-dire qu'elle présente des points singuliers qui seront proches dans l'espace mais éloignés sur la ligne, ou inversement. Le nombre de ces points est toutefois généralement négligeable, notamment si les voisinages sont grands.
Afin d'identifier rapidement les points situés dans le même voisinage qu'un point courant Pc, les points sont insérés dans une liste enchaînée au fur et à mesure qu'on les analyse, comme cela a été décrit en relation avec la figure 5. En plus, tous les points de la liste seront ordonnés selon leurs rangs sur la ligne fractale. Pour accélérer la recherche de l'emplacement où un nouveau point doit être inséré dans la liste enchaînée, on conservera la table d'identificateurs d'hypercube de la figure 5, chaque identificateur d'hypercube étant constitué d'un nombre limité de bits de poids fort des rangs des points de la liste, par exemple des d bits de poids fort.
La table d'identificateurs d'hypercube sert ici seulement à retrouver de manière approchée l'emplacement de chaque nouveau point dans la liste enchaînée, ce nouveau point devant être inséré dans la liste entre les deux points dont les rangs encadrent le rang du nouveau point. Pour accélérer les opérations de classement par rangs, chaque emplacement mémoire associé à un point, comme cela est illustré en pointillés en bas de la figure 5, contient également le rang R du point sur la ligne fractale.
Lorsqu'on traite un nouveau point, on commence par cal- culer son rang fractal R (par réorganisation des bits de ses coordonnées). Ce rang, après avoir subi une réduction de résolution adéquate (par exemple une troncature)constitue un identificateur d'hypercube, lequel identificateur est recherché dans la table. Si l'identificateur existe, on parcourt de proche en proche les points de la liste, de préférence en remontant à partir du premier point associé à l'identificateur, c'est-à-dire celui indiqué par l'adresse Aprem.
Le rang R du nouveau point est comparé au rang de chaque point rencontré afin de trouver l'emplacement dans la liste du nouveau point. Lorsque l'emplacement est trouvé, le nouveau point est inséré de la manière précédemment décrite.
Le rang R sera généralement exprimé sur un grand nombre de bits (128 pour des coordonnées de 8 bits et un espace de dimension 16). Un rang d'une telle taille n'est pas pratique à manipuler, notamment parce qu'il n'est pas compatible avec les nombres couramment traitables par les langages de programmation usuels. Ainsi, on préférera travailler sur un rang effectif R ' obtenu en réduisant la résolution du rang R. Pour cela, par exemple, le rang R est tronqué, divisé par un facteur supérieur à 1, ou porté à une puissance inférieure à 1, telle que 1/d. De préférence, le nombre de bits du rang effectif R ' ainsi obtenu est inférieur ou égal à celui du plus grand nombre traitable dans le langage de programmation utilisé, tel qu'un nombre de 64 bits
de type "double float" (nombre à virgule flottante de précision double) en langage C.
Une telle réduction de résolution n'affecte pas les résultats des comparaisons si le seuil de voisinage M utilisé est exprimé sur au plus autant de bits que le rang effectif, les bits du seuil M étant à comparer aux bits de poids fort des rangs effectifs. Si l'identificateur d'hypercube du nouveau point n'existe pas dans la table, on cherche dans cette table les deux identificateurs, précédent et suivant, qui l'encadrent. Le nou- veau point est alors inséré dans la liste après le dernier point fourni par 1 ' identificateur précédent et avant le premier point fourni par l'identificateur suivant. Le nouvel identificateur d'hypercube est rajouté à la table, les adresses Adern et Aprem pour ce nouvel identificateur indiquant toutes les deux 1 'adresse du nouveau point.
Une fois que le nouveau point est inséré dans la liste, cette liste est parcourue à partir du nouveau point dans les deux sens, point par point, pour calculer les distances, jusqu'à ce que le point que l'on rencontre ait un rang hors de la marge définie par le seuil M. Il est clair que le parcours est susceptible de s'étendre au-delà des limites définies par les identificateurs d'hypercube, notamment si le nouveau point est, dans la liste, au début ou à la fin des points de même identificateur. On remarquera que la taille du voisinage considéré, définie par la valeur M, peut être choisie différente pour chaque point sans que cela n'entraîne une complication du traitement. Ceci permet une adaptation locale de la taille du voisinage à la nature locale du nuage de points analysé. Par exemple, si la densité de points est localement élevée, on choisira un voisinage plus petit pour réduire le nombre de calculs de distance. La densité peut être considérée comme élevée tout simplement lorsque le nombre de points rencontrés dans le parcours de la liste à partir du nouveau point dépasse un seuil prédéterminé.
Les autres aspects des calculs, par exemple de la dimension de corrélation et le calcul glissant, sont identiques à ceux décrits plus haut.
Le calcul de la dimension de corrélation décrit jusqu'à maintenant est un calcul global sur un nuage de points. Il pourrait être intéressant d'observer les variations de la dimension de corrélation pour un même nuage de points, c'est-à-dire d'observer, non seulement le comportement dans le temps de la dimension de corrélation, mais également son comportement dans l'espace à un instant donné.
Le procédé qui vient d'être décrit, utilisant une ligne fractale, est particulièrement bien adapté à ce cas.
L'objectif dans ce cas est d'obtenir, pour un nuage de points à un instant donné, la distribution des valeurs de la dimension de corrélation (DC). Plus spécifiquement, on calcule plusieurs DC, chacune pour un sous-nuage distinct du nuage global, les différents sous-nuages contenant ensemble tous les points du nuage global.
La figure 8A représente un exemple d'histogramme de distribution des valeurs de la DC, obtenu pour un nuage de points à un instant donné.
Comme le nuage de points varie dans le temps, l'histogramme de la figure 8A varie également.
La figure 8B illustre une solution pour représenter dans le temps l'évolution de l'histogramme de la figure 8A. Les valeurs de DC, c'est-à-dire les classes de l'histogramme, sont représentées en ordonnée. Pour chaque valeur d'effectif on affiche une couleur ou un niveau de gris proportionnel. A titre d'exemple, la figure 8A illustre l'évolution d'un histogramme centré sur une même valeur, mais qui s'élargit dans le temps.
Ces résultats sont obtenus en utilisant le procédé décrit en relation avec la figure 6, de la manière suivante.
Pour que les valeurs de la DC soient significatives, les sous-nuages doivent comporter un grand nombre de points, par
exemple 1000. Alors, le nuage global comporte nécessairement nettement plus de points, par exemple 10000.
Les sous-nuages pour lesquels on calcule les DC peuvent être définis de manière fixe et correspondre à des intervalles se chevauchant ou non de la ligne fractale. Ils peuvent également être définis de manière dynamique par rapport à chaque nouveau point acquis en temps réel. Dans chaque sous-nuage on parcourt les points un par un. Pour chaque point rencontré dans le parcours, on définit un voisinage dans lequel on calcule les distances, pour les classer dans un histogramme du type de la figure 2, associé au sous-nuage.
Bien entendu, des voisinages successifs auront un certain nombre de points en commun pour lesquels il ne faut calculer qu'une fois les distances. Ainsi, lorsqu'un nouveau voisinage est défini, on ne considère dans ce nouveau voisinage que les points qui n'étaient pas dans le voisinage précédent, et on calcule seulement les distances qui impliquent ces points. Une solution simple pour cela consiste à avancer point par point dans la liste enchaînée et à ne calculer que les distances entre chaque nouveau point et les points se trouvant derrière lui à l'intérieur du voisinage associé.
On produit ainsi, pour le sous-nuage, un histogramme permettant de calculer une valeur de DC, laquelle valeur est classée dans un histogramme du type de la figure 8A. La valeur de DC calculée 10000 points plus tôt est déclassée de cet histogramme pour obtenir un résultat glissant, après quoi l'histogramme est affiché sous forme d'une raie verticale en dégradé selon la figure 8B.
Le nombre de valeurs de DC calculées pour un nuage glo- bal restant raisonnable (10000), les valeurs successives pourront être stockées afin de pouvoir les déclasser rapidement de l'histogramme des DC, plutôt que de devoir les recalculer, comme cela est fait pour les distances.
La présente invention, permettant un calcul en temps réel de paramètres, tels que la dimension de corrélation, dont le
calcul était jusqu'à maintenant particulièrement long, facilite l'étude des applications possibles de ces paramètres.
En particulier, les inventeurs ont constaté que l'évolution de la dimension de corrélation d'un signal d'EEG permettait d'évaluer l'efficacité d'une anesthesie administrée à un patient. Il a même été possible de déterminer un seuil pour la dimension de corrélation, en dessous duquel on pouvait considérer que le patient était suffisamment anesthesie, et au-dessus duquel il fallait administrer davantage d'anesthésiant. Bien entendu, une telle surveillance de l'état d' anesthesie d'un patient n'est utile que si elle peut s'effectuer en temps réel, ce que permet l'invention.
La présente invention a été décrite essentiellement en relation avec le calcul de la dimension de corrélation. Bien entendu, elle s'applique au calcul de tout paramètre qui nécessite le calcul de distances entre points dans un voisinage, et de façon générale les paramètres dits "non linéaires" d'un signal.
En particulier, le procédé d'analyse exposé, reposant sur le calcul du rang fractal d'un point, est particulièrement bien adapté au calcul de l'exposant de Lyapounov Ll. Pour cet exposant Ll, on considère chaque point d'un nuage et les points qui lui sont les plus proches, pour suivre leurs évolutions respectives aussi longtemps que leurs distances restent inférieures à un certain seuil. On cherche à calculer la vitesse de divergence de trajectoires voisines, sachant qu'une trajectoire est construite à partir de points qui se succèdent dans 1 'ordre chronologique.
Pour calculer 1 'exposant Ll selon 1 ' invention, on suit la trajectoire de chaque nouveau point parallèlement à celles de ses plus proches voisins qui ne diffèrent initialement de lui que d'un certain rang fractal M-, et on interrompt le suivi de deux trajectoires lorsque les deux points respectifs de ces trajectoires deviennent distants d'un rang fractal M+ . L'ensemble des distances récoltées le long de deux trajectoires voisines permet alors de calculer une estimation locale de l'exposant Ll,
l'ensemble de ces estimations permettant de calculer une valeur moyenne ou médiane globale, ou de construire accessoirement un histogramme.
Le principe du rang fractal a été décrit ci-dessus dans le cadre d'applications où l'on détermine des voisinages dans lesquels on calcule des distances, notamment pour le calcul de paramètres spécifiques dont on cherche à afficher l'évolution.
Toutefois, ce principe du rang fractal peut être exploité directement pour fournir une information visuelle représentative d'un ou plusieurs signaux complexes, sans utiliser de paramètre intermédiaire. On pourra notamment réaliser un imageur qui affiche une information visuelle sous forme d'image.
Pour cela, on utilise toujours un nuage de points généré de 1 'une des manières précédemment décrites dans un espace des phases à partir d'un ou plusieurs signaux et on affecte un rang fractal à chaque point. A partir du rang fractal d'un point, après une éventuelle réduction de résolution, on effectue l'opération inverse de celle utilisée pour définir le rang fractal, mais ceci vers un espace de dimension 2. Par exemple, on génère deux cordonnées, l'une constituée des bits de poids pair du rang, et l'autre constituée des bits de poids impair. Ces deux coordonnées constituent les coordonnées d'un pixel que 1 'on illumine sur un écran de l' imageur. Bien entendu, ces coordonnées sont, le cas échéant, ramenées à une échelle correspondant à la définition de l'écran par une nouvelle réduction de résolution.
En procédant ainsi, l'écran affichera des pixels qui sont d'autant plus proches les uns des autres que les points correspondants sont proches dans l'espace des phases. On obtient ce résultat grâce à la propriété de conservation des voisinages du rang fractal et au fait que les bits du rang fractal d'un point sont répartis de manière sensiblement équilibrée, quant à leurs poids, dans les deux coordonnées correspondantes.
Etant donné, que le rang fractal comporte un nombre élevé de bits, l'opération de mise à l'échelle des deux coordon- nées correspondantes entraîne une perte d' information pour les
phénomènes très localisés dans l'espace des phases. Ainsi, un pixel de l'écran correspondra à un hypercube minimal de l'espace des phases, et le pixel sera illuminé pour tout point situé à l'intérieur de cet hypercube. Pour refléter au mieux la réalité, on peut prévoir d'illuminer le pixel avec une intensité ou une couleur correspondant au nombre de points situés dans l'hypercube minimal.
En fait, l'écran affichera avec une résolution réduite une image de résolution élevée. Cette image de résolution élevée pourra être traitée comme le sont les images de résolution élevée par tout logiciel de retouche d'image classique. On pourra notamment prévoir un utilitaire de changement de plan à l'aide duquel on choisit un rectangle de 1 'écran à afficher en plein écran afin de rendre apparents des détails qui n'étaient pas affichables. Sur un signal analysé complètement aléatoire, l' imageur fournira une image contenant du bruit étalé sur 1 ' image comme le ferait un téléviseur allumé mais ne recevant pas d'émission. Mais dès que la moindre influence, aussi minime soit elle, tend à structurer le signal, sous une forme totalement indétectable lorsqu'on observe l'évolution du signal brut, cette influence n'échappe pas à l'utilisateur de l' imageur qui observe alors une image dans laquelle apparaît une accumulation de pixels localisée ou une modification de couleur ou de niveau de gris d'au moins un pixel. En effet, une quelconque structuration tend à créer une rupture locale de la répartition uniforme des points de l'espace des phases.
Inversement, l' imageur peut servir à déceler une désorganisation, éventuellement d'origine chaotique, dans un signal très structuré au départ, tel qu'un signal multi-périodique. Dans ce cas, la figure simple qu'affiche l' imageur devient irrégulière d'une façon plus évidente que ce que révélerait 1 'observation du signal brut. En effet, les non-linéarités sont particulièrement difficiles à observer sur les signaux bruts.