Sac de trucs pour débruiter les signaux tout en maintenant des transitions nettes

21

Je sais que cela dépend du signal, mais lorsque vous faites face à un nouveau signal bruyant, quel est votre sac d'astuces pour essayer de débruiter un signal tout en maintenant des transitions nettes (par exemple, toute sorte de moyenne simple, c'est-à-dire convoluant avec un gaussien, est sortie). Je me retrouve souvent face à cette question et je n'ai pas l'impression de savoir ce que je devrais essayer (à part les splines, mais elles peuvent aussi sérieusement abattre le bon type de transition nette).

PS En remarque, si vous connaissez de bonnes méthodes utilisant des ondelettes, faites-le moi savoir. On dirait qu'ils ont beaucoup de potentiel dans ce domaine, mais bien qu'il y ait des articles dans les années 90 avec suffisamment de citations pour suggérer que la méthode du papier s'est bien déroulée, je ne trouve rien sur les méthodes qui ont fini par gagner en tant que meilleurs candidats les années intermédiaires. Certes, certaines méthodes se sont avérées être généralement les «premières choses à essayer» depuis lors.

John Robertson
la source

Réponses:

14

La minimisation de la norme L1 (détection compressée) peut faire un meilleur travail relatif que le débruitage de Fourier conventionnel en termes de préservation des bords.

La procédure consiste à minimiser une fonction objective

|xy|2+b|f(y)|

xyb|f(y)|yb

yf(y)

  • yf(y)

  • yf(y)y

  • yf(y)y

f(y)

|xHy|+b|f(y)|H

chaohuang
la source
yyy
1
L1
Quelles méthodes aimez-vous pour résoudre f, surtout si le signal est long.
John Robertson,
Quel est le nom de cette méthode? Si je l'utilise dans mes recherches, que dois-je citer?
bayer
@bayer Cela dépend de la régularisation que vous utilisez, il peut s'agir du débruitage curvelet ou du débruitage en ondelettes, par exemple. En général, ils appartiennent tous à la famille de la minimisation de la norme L1.
chaohuang
7

Vous pouvez envisager la diffusion anisotrope. Il existe de nombreuses méthodes basées sur cette technique. Généralement, c'est pour les images. Il s'agit d'une méthode de débruitage adaptatif qui vise à lisser les parties non contours d'une image et à préserver les contours.

De plus, pour la minimisation de la variation totale, vous pouvez utiliser ce tutoriel . Les auteurs fournissent également du code MATLAB. Ils reconnaissent le problème comme un problème d'analyse préalable, il est en quelque sorte similaire à l'utilisation d'une cartographie linéaire (comme les représentations temps-fréquence). Mais, ils utilisent une matrice de différence plutôt qu'une transformation.

D

Deniz
la source
6

Chaohuang a une bonne réponse, mais j'ajouterai également qu'une autre méthode que vous pouvez utiliser serait via la transformation de l'ondelette de Haar, suivie d'un retrait coefficients des ondelettes et d'une transformation de Haar inverse dans le domaine temporel.

La transformée en ondelettes de Haar décompose votre signal en coefficients de fonctions carrées et de différence, bien qu'à différentes échelles. L'idée ici est que vous «forcez» la nouvelle représentation du signal carré pour qu'elle corresponde le mieux à votre signal d'origine, et donc celle qui représente le mieux où se trouvent vos bords.

Lorsque vous effectuez un retrait co-efficace, cela signifie simplement que vous définissez des coefficients spécifiques de la fonction transformée de Haar à zéro. (Il existe d'autres méthodes plus impliquées, mais c'est la plus simple). Les coefficients d'ondelettes transformées de Haar sont des scores associés à différentes fonctions de carré / différence à différentes échelles. La RHS du signal transformé de Haar représente des bases carrées / de différence à l'échelle la plus basse et peut donc être interprétée à la «fréquence la plus élevée». La majeure partie de l'énergie du bruit se trouvera donc ici, VS la plupart de l'énergie du signal qui se trouverait sur le LHS. Il s'agit des coefficients de base qui sont annulés et le résultat est ensuite inversé et retransformé dans le domaine temporel.

Ci-joint un exemple de sinusoïde corrompue par un bruit AWGN important. L'objectif est de déterminer où se trouvent le «début» et «l'arrêt» du pouls. Le filtrage traditionnel étalera les bords haute fréquence (et très localisés dans le temps), car en son cœur, le filtrage est une technique L-2. En revanche, le processus itératif suivant réduira le bruit et préservera les bords:

(Je pensais que l'on pouvait joindre des films ici, mais je ne semble pas pouvoir le faire. Vous pouvez télécharger le film que j'ai fait du processus ici ). (Clic droit et 'enregistrer le lien sous').

J'ai écrit le processus «à la main» dans MATLAB, et ça se passe comme ceci:

  • Créez une impulsion sinusoïdale corrompue par un AWGN lourd.
  • Calculez l'enveloppe de ce qui précède. (Le signal').
  • Calculez la transformée en ondelettes Haar de votre signal à toutes les échelles.
  • Débruitage par seuillage co-efficace itératif.
  • Haar inverse Transformez le vecteur co-efficace rétréci.

Vous pouvez clairement voir comment les coefficients sont réduits et la transformation de Haar inverse qui en résulte.

Cependant, un inconvénient de cette méthode est que les bords doivent se situer dans ou autour des bases carrées / de différence à une échelle donnée. Sinon, la transformation est forcée de passer au niveau supérieur suivant, et ainsi on perd un placement exact pour le bord. Il existe des méthodes multi-résolution pour contrer cela, mais elles sont plus impliquées.

Spacey
la source
4

Une méthode simple qui fonctionne souvent consiste à appliquer un filtre médian.

geometrikal
la source