dimanche 23 octobre 2016

Filtre passe bas GRT (LowPassFilter) : mode manuel vs mode automatique

La classe LowPassFilter peut être utilisée en spécifiant un filterFactor ou en spécifiant la fréquence du signal que l'on désire filtrer (cutOffFrequency). Le filterFactor sera alors calculé afin de coller au mieux à la fréquence à supprimer.


A gauche, filtrage en spécifiant la fréquence du signal à effacer (20 Hz). On constate que le signal filtré reste bruité. A l'inverse à droite avec un signalFactor poussé au maximum sans se soucier de la fréquence visée on obtient un bien meilleur résultat.

Test du filtre passe haut ( High Pass Filter ) sur GRT

Classe HighPassFilter de la bibliothèque Gesture Recognition Toolkit.

Sur un triple signal artificiel de test respectivement à : 1Hz, 2Hz et 4Hz.
En jouant sur le paramètre filterFactor acceptant des valeurs de 0.0 à 1.0.

Une première observation est que comme pour le filtre passe bas on retrouve des artefacts sur le début des échantillons du fait du principe de fonctionnement temps réel (traitement séquentiel des points de données) de la lib GRT.

Artefact de début de traitement sur un signal temps réel

Les captures d'écran suivantes montrent l'effet du filtre passe haut avec un filterFactor moyen puis maximal. Avec le filtre moyen on conserve la composante faible fréquence du sinus principal, avec le filtre fort on a complètement perdu la sinusoïde principale et l'on ne voit plus que la sinusoïde de bruit à 20 Hz.
Disparition progressive de la composante de faible fréquence.
Dans ces captures, le début de signal a été tronqué de 100ms pour masquer l'artefact de début d'échantillon.


dimanche 16 octobre 2016

Test du filtre passe bas ( Low Pass Filter ) sur GRT

Classe LowPassFilter de la bibliothèque Gesture Recognition Toolkit. Sur un triple signal artificiel de test respectivement à : 1Hz, 2Hz et 4Hz. En jouant sur le paramètre filterFactor acceptant des valeurs de 0.0 à 1.0.

Quelques tests sur un signal non bruité montrent que le signal est bien conservé. Au fur et à mesure que l’on augmente le filterFactor on peut voir que le signal est de plus en plus dégradé au début de l’échantillon de test. Ceci est dû au principe temps réel de fonctionnement des filtres de la bibliothèque GRT. En effet celle ci n’applique pas le filtre en l’analysant dans son entièreté mais en prenant chaque point de donnée l’un après l’autre afin de pouvoir fonctionner sur un signal de taille infini et parvenant en temps réel. Par conséquent au début de l’échantillon le filtre n’a pas assez d’historique pour donner des résultats corrects.

Filtre passe bas de plus en plus fort sur signal sinusoïdale
Deuxième test sur le même signal bruité par un bruit sinusoïdal à 20 Hz. On peut voir l’efficacité grandissante du filtre avec l’augmentation du filterFactor jusqu’au point de retrouver le signal d’origine non bruité.

Filtre passe bas de plus en plus fort sur sinusoïdale bruitée

A noter qu’aucun de ces tests ne prennent en compte l’utilisation des paramètres cutOffFrequency et Delta également disponibles sur la lib.