GaussianFilter (FPScript)

21.09.2021

Filtre un signal avec un filtre gaussien. Généralement utilisé pour le lissage et comme filtre pour mesurer et analyser la circularité.

Syntaxe

GaussianFilter(DataSet, Type, Fc1, [ Fc2 ], [ SamplingRate ] [ , Mode = GAUSSIANFILTERMODE_SYMMETRIC_EXTENSION ])

 

La syntaxe de la fonction GaussianFilter se compose des éléments suivants :

Section

Description

DataSet

L'ensemble de données à filtrer.

Les structures de données autorisées sont Séries de données, Matrice de données, Signal et Série de signaux. Tous les types de données réels sont autorisés, sauf Temps calendaire et Période de temps.

Les valeurs invalides ne sont pas autorisées dans cet argument.

Si l'argument est une liste, alors la fonction est exécutée pour chaque élément de la liste et le résultat est également une liste.

Type

Précise le type de filtre.

L'argument Type peut avoir les valeurs suivantes :

Constante

Signification

FILTER_LOWPASS

Passe-bas, permet le passage des fréquences qui sont en dessous de la fréquence de coupure.

FILTER_HIGHPASS

Passe haut, permet le passage des fréquences qui sont au-dessus de la fréquence de coupure.

FILTER_BANDPASS

La bande passante, permet le passage des fréquences qui se situent entre la première et la deuxième fréquence de coupure.

FILTER_BANDSTOP

Stop bande, permet le passage des fréquences qui sont en dessous de la première et au-dessus de la deuxième fréquence de coupure.

Si l'argument est une liste, alors son premier élément est pris. S'il s'agit à nouveau d'une liste, le processus est répété.

Fc1

Spécifie la première fréquence de coupure du filtre gaussien. La fréquence doit être comprise entre 0 et 0,5 (la moitié du taux d'échantillonnage normalisé à un) ou entre 0 et 0,5 * SamplingRate. La fréquence de coupure du filtre gaussien est définie comme la fréquence à laquelle l'amplitude du filtre passe par 50 % de l'amplitude du signal original.

Les structures de données autorisées sont Scalaire. Tous les types de données réels sont autorisés, sauf Temps calendaire et Période de temps.

La valeur doit être supérieure ou égale à 0.

Si l'argument est une liste, alors son premier élément est pris. S'il s'agit à nouveau d'une liste, le processus est répété.

Fc2

Spécifie la seconde fréquence de coupure du filtre gaussien. La fréquence doit être comprise entre 0 et 0,5 (la moitié du taux d'échantillonnage normalisé à un) ou entre 0 et 0,5 * SamplingRate. Cet argument n'a pas à être spécifié pour un filtre passe-bas ou passe-haut. La fréquence de coupure du filtre gaussien est définie comme la fréquence à laquelle l'amplitude du filtre passe par 50 % de l'amplitude du signal original.

Les structures de données autorisées sont Scalaire. Tous les types de données réels sont autorisés, sauf Temps calendaire et Période de temps.

La valeur doit être supérieure ou égale à 0.

Si l'argument est une liste, alors son premier élément est pris. S'il s'agit à nouveau d'une liste, le processus est répété.

SamplingRate

Précise le taux d'échantillonnage. L'argument est facultatif. Si l'argument n'est pas précisé, alors pour les fréquences de coupure Fc1 et Fc2 une fréquence normalisée de 0 à 0,5 doit être spécifiée dans chaque cas.

Les structures de données autorisées sont Scalaire. Tous les types de données réels sont autorisés, sauf Temps calendaire et Période de temps.

La valeur doit être supérieure à 0.

Si l'argument est une liste, alors la fonction est exécutée pour chaque élément de la liste et le résultat est également une liste.

Mode

Le filtrage correspond à la convolution (rapide) avec une fonction gaussienne dans le domaine temporel. L'argument précise donc le mode de calcul pour effectuer la convolution.

L'argument Mode peut avoir les valeurs suivantes :

Constante

Signification

GAUSSIANFILTERMODE_PERIODIC_BOUNDARY

Pour le calcul, le filtre gaussien est replié circulairement (Produit de convolution circulaire pour les signaux périodiques). Ce mode est adapté aux données qui sont exactement périodiques (condition de limite périodique).

GAUSSIANFILTERMODE_ZERO_BOUNDARY

Pour le calcul, le filtre gaussien est replié de manière non circulaire (Produit de convolution non circulaire pour les signaux transitoires). Ce mode est adapté aux données transitoires, c'est-à-dire aux données qui tombent à 0 sur les bords (condition de limite zéro).

GAUSSIANFILTERMODE_SYMMETRIC_EXTENSION

Ce mode doit être utilisé pour les données non périodiques avec une condition aux limites inconnue. À cette fin, l'ensemble de données est étendu symétriquement aux bords avant d'effectuer la convolution.

Si l'argument est une liste, alors son premier élément est pris. S'il s'agit à nouveau d'une liste, le processus est répété.

Si l'argument n'est pas spécifié, il est défini à la valeur par défaut GAUSSIANFILTERMODE_SYMMETRIC_EXTENSION .

Remarques

Le filtre gaussien (passe-bas) correspond à la convolution avec la fonction gaussienne suivante (noyau de convolution) dans le domaine temporel :

Dans cette équation, fc représente la fréquence de coupure. Dans ce cas, la convolution est calculée à l'aide de la FFT (transformée de Fourier rapide) comme suit : IRFFTn(FFTn(Data)*FFTn(GaussianKernel)). Comme la transformée de Fourier rapide d'une fonction gaussienne produit à son tour une fonction gaussienne, la fonction de transfert (c'est-à-dire FFTn(GaussianKernel)) peut être calculée explicitement. Dans le domaine fréquentiel, le filtre est donc calculé comme une multiplication avec la fonction de transfert suivante :

En sélectionnant f = fc, on obtient S(f) = 0,5, c'est-à-dire que l'amplitude du filtre passe par 50 % de l'amplitude du signal d'origine.

Dans le domaine fréquentiel, le filtre passe-haut gaussien correspond à une multiplication avec la fonction de transfert 1-S(f). Le filtre passe-bande et le filtre coupe-bande résultent donc d'une combinaison de passe-bas et de passe-haut.

Pour le choix spécifique suivant de fc, le noyau gaussien est écrit de manière équivalente dans le domaine temporel comme convolution avec une distribution normale gaussienne (avec une valeur attendue de 0 et un écart type de σ) comme :

La structure du résultat correspond à celle de l'argument DataSet. Le calcul des matrices de données et des séries de signaux est effectué colonne par colonne. Si elles sont présentes, les composantes X ou Z sont copiées dans le résultat sans modification.

Remarque        Le filtre gaussien peut notamment être utilisé pour le lissage. Il est également fréquemment utilisé comme filtre pour mesurer et analyser la circularité ; voir [1]. Le GAUSSIANFILTERMODE_PERIODIC_BOUNDARY doit être utilisé lorsqu'on travaille avec un ensemble de données d'entrée périodiques ou un profil de circularité fermé. Dans le cas de données non périodiques et de données transitoires, utilisez le mode GAUSSIANFILTERMODE_ZERO_BOUNDARY (correspond à la condition limite zéro). À cette fin, un nombre approprié de zéros est ajouté au signal d'entrée pour la transformée de Fourier (zero padding). Dans le cas de données non périodiques avec une condition aux limites inconnue, utilisez le mode GAUSSIANFILTERMODE_SYMMETRIC_EXTENSION(condition limite exacte inconnue, les données sont étendues symétriquement). En règle générale, cela permet d'obtenir un lissage naturel des bords.

Disponible dans

Option Filtres numériques

Exemples

GaussianFilter(Data, FILTER_LOWPASS, 0.04)

Lisse un ensemble de données à l'aide du filtre passe-bas gaussien avec une fréquence de coupure de 0,04. Produit généralement un meilleur lissage que le lissage avec une moyenne mobile utilisant la fonction Smooth.

GaussianFilter(Data, FILTER_HIGHPASS, 0.01)

Supprime la composante continue avec un filtre passe-haut gaussien à basse fréquence de coupure. Les résultats sont similaires à ceux de la fonction DCRemovalFilter.

Dim dirac = (0 # 100) : 1 : (0 # 100)
Dim gaussCoeff = GaussianFilter(dirac, FILTER_LOWPASS, 0.04)
AmplitudeResponse(gaussCoeff)

Calcule la réponse en amplitude du filtre gaussien (passe-bas avec une fréquence de coupure de 0,04). La fonction GaussianFilter est appliquée à une impulsion de Dirac. On obtient ainsi la fonction de transfert du système sous la forme de coefficients de filtre. À l'aide de coefficients de filtrage, la fonction AmplitudeResponse peut être utilisée pour calculer la réponse d'amplitude du filtre. La figure suivante montre la comparaison entre la réponse en amplitude du filtre passe-bas gaussien avec une fréquence de coupure de 0,04 et une moyenne glissante avec une largeur de lissage de 7 (voir fonction Smooth). Les hautes fréquences, en particulier, sont mieux supprimées que lorsque l'on utilise la moyenne glissante :

L'illustration suivante montre la comparaison entre la réponse en amplitude du filtre passe-haut gaussien avec une fréquence de coupure de 0,04 et la fonction DCRemovalFilter avec la même fréquence de coupure et un ordre de 2 :

Dim sigma = 4.5
Dim fc = sqrt(log(2))/(sigma*sqrt(2)*PI)
GaussianFilter(Data, FILTER_LOWPASS, fc)

Lisse un ensemble de données par convolution avec une distribution normale gaussienne avec un écart-type réglable de σ (largeur).

Voir aussi

Fonction Convolution

Fonction Smooth

Fonction DCRemovalFilter

Fonction AmplitudeResponse

Fonction FFTn

Fonction SamplingRate

Fonction LeastSquaresCircle

Fonction MaximumInscribedCircle

Fonction MinimumCircumscribedCircle

Fonction MinimumZoneCircle

Objet d'analyse Lissage de Signal

Objet d'analyse Approximation Circulaire

Option Filtres numériques

Littérature

[1] B. Muralikrishnan, J. Raja: Computational Surface and Roundness Metrology. Springer-Verlag London Limited,2009.ISBN 1-848-00296-3.

[2] DIN Deutsches Institut für Normung e.V.: Part 2: Specification operators (ISO 12181-2:2011); English translation of DIN EN ISO 12181-2:2011-07. Dans: Geometrical product specifications (GPS) - Roundness. 2011.

Partager l’article ou envoyer par mail :

Vous serez probablement intéressé par les articles suivants :