Exemple de filtre adapté

Dans les deux exemples précédents, nous avons utilisé des filtres de fréquences pour séparer le signal désiré du bruit ou des signaux non-désirés.  C'est une utilisation fréquente de filtres.  Seulement, dans la mesure où il y a du bruit dans la bande utile fréquentielle du signal, un filtre de fréquences ne peut pas vraiment aider à séparer le bruit du signal.  S'il est nécessaire de faire cela, il nous faudra utiliser plus d'informations du signal que juste sa bande utile.  Cela implique aussi que le contenu d'information du signal sera plus faible que l'entropie potentielle d'un signal dans cette bande passante.  Un cas extrême de connaissances du signal est: nous connaissons parfaitement la forme du signal, et les deux seules choses que l'on ignore est son moment d'arrivée et son amplitude.  Ce sont donc les deux seules informations que nous ignorons, et que le signal pourra apporter.  Ce signal sera donc une source d'entropie très limitée.

Nous prenons un exemple artificiel où un pulse d'ultrason dans les quelques 10 KHz, avec une structure particulière, est émise, réfléchie et reçue.  L'écho est tellement faible à être totalement noyé par le bruit.

Le signal est représenté par la formule mathématique suivante:

sb = cos(180.02*t).*sin(8.81*sin(t)+2*t)+sin(168.3*t).*cos(9.21*sin(1.4*t)+2.1*t);
s = sb.*exp(-(t-tshift).^2/(2*twidth.^2));

C'est essentiellement un signal avec une modulation complexe et une enveloppe Gaussienne à un certain moment dans le temps.  Le voici:

 

Nous pouvons constater que la structure est assez compliquée.  L'illustration ne montre pas les oscillations individuelles, que nous pouvons voir quand nous agrandissons une petite partie:

Si nous savons que ce signal est la réflexion est sera une partie du signal reçu, contaminé avec beaucoup de bruit, l'information que nous cherchons est essentiellement le moment de réception (et éventuellement la taille du signal).  Supposons que ce petit écho est noyé par le bruit du récepteur, bien plus grand que le signal même.  Nous considérons que le spectre du bruit est plat (du bruit blanc) jusqu'à 250 KHz avec une valeur RMS de 3 mV.  Notez que la valeur RMS du bruit est plus grande que l'excursion maximale de notre signal (environ 1.5 mV).  Le signal sera donc totalement invisible dans le bruit.

Comme notre signal a une bande utile bien plus étroite que le bruit, cependant, nous pouvons faire comme dans le premier exemple, où le signal semblait aussi complètement noyé dans du bruit quand nous regardions le signal brut.  Un filtre passe bande adapté à la bande utile nous permettait de découvrir le signal avec peu de bruit dans la bande passante.  Regardons les densités spectrales du bruit et du signal:

 

Cette fois, dans le domaine des fréquences aussi, le signal est totalement noyé par le bruit.  Mais cela peut être une conséquence du fait que notre signal est aussi concentré dans le temps (quelques millisecondes).  Essayons quand-même un filtre passe-bande parfait de 23 KHz à 31 KHz, pour nous limiter à la bande utile du signal.  Nous appliquons ce filtre au signal d'entrée:

Le signal rouge est le signal que nous cherchons, le signal vert est le signal d'entrée (le signal utile est bien totalement noyé).  Le signal bleu est la sortie du filtre parfait.  Nous voyons que le filtre a diminué de façon significative le niveau de bruit, comme dans notre premier exemple.  Mais le signal filtré contient toujours un bruit avec une amplitude de même amplitude que le signal que nous cherchons.  Le signal cherché ne sort pas du bruit, même s'il est un peu moins noyé.  En d'autres termes, la seule connaissance de la bande utile du signal n'est pas suffisante pour distinguer signal et bruit.  Nous avons pourtant fait exactement comme dans le premier exemple.  La contamination de la bande utile est trop grande dans ce cas-ci.

Nous appliquons maintenant un filtre adapté à notre signal, avec une fréquence d'échantillonnage de 500 KHz, avec l'hypothèse d'un bruit blanc.  Sous cette hypothèse, la réponse-impulsion de notre filtre est le pulse du signal renversé dans le temps.  Le résultat de ce filtre sur le signal d'entrée est:

Nous voyons clairement un glitch autour de 165 ms, ce qui indique la détection de la présence du signal à ce moment-là.  La hauteur de ce glitch nous indiquera l'amplitude du signal détecté.  Il faut noter que le filtre adapté ne reproduit pas le signal "nettoyé" ; il produit juste une amplitude de sortie forte quand le signal est détecté, mais la forme de sortie ne ressemble pas au signal cherché.  Cela n'est pas nécessaire car nous connaissons cette forme.

Quand nous appliquons un agrandissement du glitch, il prend la forme suivante:

Nous pouvons en déduire que le signal s'est produit au moment t = 166 ms - à un délai fixe et connu près.  Quand nous agrandissons encore, nous voyons des oscillations individuelles:

Nous pouvons déterminer que le signal (signalé par le plus grand maximum sauf du bruit restant) doit se produire entre disons 165.8 ms et 166.1 ms.  Une estimation plus compliquée pourrait nous spécifier des intervalles de confiance.

Pour voir la différence entre le signal original et le résultat du filtre adapté, et pour déterminer le délai fixe entre le signal actuel et la production du pic de sortie à la sortie du filtre, il faut appliquer le filtre sur le signal pur (que nous connaissons), sans bruit:

Nous observons que le pic est atteint un certain temps après le signal (vert).  Comme le signal vert est étalé dans le temps, il faut une convention pour définir ce que nous entendons par "le moment d'arrivée du signal" et déterminer le délai entre ce moment et le pic dans le signal de sortie.

Nous constatons aussi que la forme du signal de sortie ne ressemble pas au signal d'entrée ; le filtre adapté n'est pas sensé de reproduire le signal fidèlement: son but est de produire un pic d'amplitude maximale quand le signal est détecté.

Réalisation

La seule façon pratique de réaliser un filtre adapté à un signal compliqué, est un filtre FIR numérique avec beaucoup de noeuds.  Un tel filtre peut demander un effort de calcul considérable.  Notre exemple prend 6000 échantillons du signal, ce qui veut dire que notre filtre FIR aura 6000 noeuds.  C'est beaucoup !  Il faut donc appliquer 6000 multiplications et 6000 additions par échantillon du signal d'entrée.  Comme nous avons une cadence d'échantillonnage de 500 Ké/s, cela implique 6 GFLOPs / s.  Un DSP de haute gamme peut faire cela, ainsi qu'un FPGA de moyenne gamme.  Ma préférence personnelle serait une solution basée sur un FPGA.

Bien sûr, dans ce cas précis, il n'est pas nécessaire d'avoir une bande passante numérique de 250 KHz car notre signal utile se trouve autour de 30 KHz.  Nous pourrions nous limiter à une bande passante de 50 KHz et donc à une cadence d'échantillonnage de 100 Ké/s.  Le nombre de noeuds FIR descend alors à 1200 ce qui réduit le nombre d'opérations flottantes à 2400 par échantillon.  Si la cadence est 100 Ké/s, il faut donc réaliser 240 Mflops / s.  C'est déjà beaucoup plus raisonnable et dans le champs d'application de tout DSP.  Même un FPGA relativement petit peut faire cela.  Il faudra bien sûr un filtre anti-repliement qui coupe entre 30 KHz et 50 KHz. Un filtre actif Butterworth de 4ième ordre avec une topologie simple fera l'affaire.

Étalement de spectre (spread spectrum) - signal furtif (stealth)

Comme nous avons vu, un filtre adapté est capable de détecter un signal qui est complètement noyé dans le bruit.  L'amplitude maximale du signal est  6 ou 7 fois plus petite que les excusions de bruit maximales.  Même si on regarde dans la bande utile du signal, le niveau du signal ne dépasse pas l'amplitude du bruit dans cette bande.  Jusque là, nous avons considéré cela comme une nuisance d'avoir un signal aussi faible dans un bruit aussi important.  Dans l'application d'écho-localisation par ultrasons que nous avions abordée ici, c'est par la nature des choses que le reflet est tellement petit et le bruit du récepteur si important que le signal est noyé par le bruit.  Si nous pouvions avoir un meilleur rapport signal sur bruit, nous n’hésiterions pas de le faire.  Par exemple, nous pourrions augmenter la puissance de l'émetteur, et il faut avoir une raison pour ne pas le faire.  Cette raison peut être une de coût, de consommation de puissance ou autre - par exemple, nous ne voulons pas que le signal émis soit tellement fort qu'il endommage quelque chose.  Si nous pouvions augmenter le signal pour ne pas avoir besoin du filtre adapté, ce serait bienvenu.

Mais avoir un signal noyé dans le bruit peut avoir un avantage: une autre personne aura du mal à détecter sa présence.  Si on veut transmettre un message sans que personne ne s'en aperçoive, rester sous le niveau de bruit ambiant du canal utilisé peut être une façon de ne pas se faire remarquer.  Bien sûr en émission libre il est difficile pour une source ponctuelle de rester sous le niveau du bruit localement.  Si on étale la source géométriquement sur une surface plus importante et si on utilise une bande utile très large, il est cependant possible de rester proche du bruit ambiant et de passer inaperçu.  Sans un filtre adapté il sera impossible de reconnaître le signal et pour pouvoir construire le filtre adapté, il faut connaître la forme du signal émis.  Sans cette connaissance, il est difficile ou impossible de détecter la présence d'un tel signal, et encore plus, de pouvoir lire le message qu'il transmet.  Nous sommes dans une situation cryptographique où la forme du signal est la clé secrète.

Au lieu d'utiliser un signal d'une forme mathématique compliquée, on peut aussi bien utiliser une séquence de "bruit blanc" comme signal.  Ainsi, le signal est même statistiquement identique au bruit ambiant même si on pouvait le distinguer.  Seulement un filtre adapté avec cette séquence particulière détectera se signal. 

Prenons un exemple, similaire à ce que nous avons fait ci-dessus, mais au lieu d'une formule mathématique d'un signal modulé, nous utilisions du bruit blanc, avec la même enveloppe Gaussienne que tout à l'heure:

La densité spectrale de ce signal-bruit est très similaire au vrai bruit blanc ajouté au signal.  Mais comme l'enveloppe Gaussienne limite ce signal dans le temps, sa densité spectrale est d'une amplitude bien plus petite:

Ainsi, il semble impossible à détecter.   Comme la bande utile du signal est aussi large que la bande dans laquelle nous avons le bruit, aucun filtre de fréquence pourra faire la moindre distinction entre le signal et le bruit.

Un filtre adapté, cependant, qui contient exactement le signal-bruit caché dans le signal d'entrée, n'a aucune difficulté pour détecter sa présence.  L'implémentation est identique à celle mentionnée plus tôt, sauf que les coefficients des 6000 noeuds seront différents.  Bien sûr, cette fois nous devons utiliser une bande passante numérique de 250 KHz. 

Le "glitch" visible dans le signal de sortie autour de 165 ms est bien le signal de détection du signal.  Son amplitude est un facteur 4 au-dessus des excusions maximales du bruit dans le signal de sortie et est très étroit dans le temps.  Un signal pareil est donc facilement détectable avec un filtre adapté, et impossible à repérer sans la connaissance de la séquence "bruit" du signal.  Il s'agit donc bien de la fonction d'une clé secrète.

Conclusion

Le filtre adapté est capable de détecter la présence d'un signal qui est profondément noyé sous le niveau du bruit.  Le prix à payer est qu'il faut connaître la forme exacte du signal attendu ce qui limite fortement l'information que le signal peut fournir, au moment en temps de son arrivé, et à son amplitude.

En pratique, un filtre adapté pour un signal d'une certaine complexité doit être implémenté par un filtre numérique FIR, ce qui implique la nécessité d'une capacité de traitement conséquente, même à des fréquences d'échantillonnage modestes.  Le filtre adapté peut aussi être utilisé dans des applications furtives où le niveau du signal est tenu en dessous du niveau de bruit ambiant pour échapper à la détection.