Problème.
Il existe un signal discret (exemple ci-dessous).
On sait que a une forme d'impulsion rectangulaire avec un bruit gaussien blanc additif.
,
,
,
Où est une fonction de pas de Heaviside, est un bruit gaussien blanc additif, est une hauteur d'impulsion rectangulaire, est un indice du premier échantillon d'impulsion rectangulaire, est un indice du dernier échantillon d'impulsion rectangulaire, est un niveau de signal constant, est un paramètre réglable.
Tous les paramètres peuvent avoir une large plage de valeurs.
Il est nécessaire de trouver la valeur de (durée de l'impulsion rectangulaire dans les échantillons).
Solutions possibles.
Pour le moment, j'ai essayé deux façons de résoudre ce problème.
Filtre passe-bas avec seuil.
Comme première tentative, j'ai utilisé un schéma simple avec filtre passe-bas et seuil.
1. Appliquer un filtre passe-bas FIR avec une fréquence de coupure égale à .
2. Estimer la moyenne et la dispersion du bruit filtré des premiers échantillons du signal.
3. Fixez le seuil .
4. Estimez .
5. Estimez .
Avantages:
1. Cet algorithme est simple.
2. Il est facile d'écrire une implémentation rapide.
Inconvénients:
1. Il est difficile d'estimer la valeur efficace de la fréquence de coupure du filtre. D'une part, une valeur faible peut corrompre la forme d'impulsions courtes. D'un autre côté, une valeur élevée diminue l'effet de la filtration.
2. L'algorithme n'utilise pas toutes les informations que nous avons sur le signal.
Analyse de régression
Comme deuxième tentative, j'ai essayé d'approximer la séquence d'entrée d'échantillons avec la fonction .
, , où est un petit paramètre.
Pour l'approximation, j'ai utilisé la méthode des moindres carrés avec descente de gradient pour minimiser la fonction de coût.
1. Définissez les valeurs initiales pour , , , .
2. Effectuez une descente en pente.
3. Définissez le seuil .
4. Estimez .
5. Estimez .
Avantages:
1. Cet algorithme donne des résultats avec une bonne précision.
2. Il fonctionne pour une large gamme de durées.
Inconvénients:
1. C'est très lent.
Question.
Après tout, je ne suis pas satisfait de la précision du premier algorithme et de la vitesse du second. comment résoudrais-tu ce problème?
Y a-t-il une solution classique que je n'ai pas trouvée?
Des idées, des liens, des commentaires seront très appréciés.
Je vous remercie.
la source
Réponses:
Vous voulez une méthode qui supprime le bruit tout en préservant les bords. Cela ne peut pas être réalisé correctement par filtrage linéaire, comme vous l'avez remarqué vous-même. Je connais deux approches qui pourraient bien fonctionner pour votre problème. Le premier est le filtrage médian , où les échantillons à l'intérieur d'une fenêtre sont remplacés par leur médiane. Le graphique suivant montre le résultat du filtrage médian avec une fenêtre de 25 échantillons (en rouge):
L'autre approche, plus complexe, est le débruitage de variation totale , qui fonctionne très bien pour des signaux constants par morceaux. Il existe une très bonne description du débruitage de variation totale, y compris le code Matlab disponible: lien .
la source
Je sais que c'est très ancien , et @Matt L. a depuis longtemps donné une excellente et instructive réponse. Je ne savais pas que le débruitage de variation totale existait, alors j'ai appris quelque chose de très utile. En conséquence, j'ai voté à la fois la question et la réponse et je veux redonner un petit quelque chose, tel qu'il est, au site. L'idée de base est d'utiliser une version numérique simple de l'ancien RC LPF et de réduire considérablement la «constante de temps» lorsqu'une étape se produit. Ensuite, après l'étape, augmentez considérablement la «constante de temps». NB La «constante de temps» ne va pas vraiment être constante, comme on le verra plus loin.
La figure ci-dessous montre ma tentative de reproduire l'exemple générique d'impulsion rectangulaire bruyante de l'OP et comment fonctionne un filtre passe-bas de «dérive réciproque» (ci-après dénommé RD-LPF):
Le RD-LPF est simplement , où et J'ai utilisé . L'impulsion rectangulaire propre avait une amplitude unitaire, commençait à t = 3 et la largeur d'impulsion était 3. Le bruit gaussien blanc additif avait et .y[i]=Ay[i−1]+(1−A)x[i] A=exp(−K|y[i−1]−x[i]|) K=0.2 μ=0 σ=0.3
La figure suivante compare la sortie RD-LPF (trace rouge) avec (selon la réponse de Matt L.) la sortie d'un filtre médian mobile à 25 points (trace bleue):
Je ne dis pas que j'utiliserais jamais le RD-LPF pour quelque chose de sérieux, mais j'étais curieux de voir s'il serait détruit dans cette petite comparaison. Ce n'est évidemment pas le cas.
la source