Peak Detection Ansatz


24

Welche Algorithmen zur Peakerkennung gibt es? Ich habe verrauschte Daten und möchte für diese Daten eine Spitzenwerterkennung implementieren. Die Daten sind umgekehrt, eigentlich versuche ich, den Grund zu bestimmen.

Hier ist eine Momentaufnahme der Daten in Excel. Ich mag es, beide Böden zu entdecken. Ich dachte darüber nach, die Daten durch einen Tiefpassfilter zu leiten und anschließend einen gleitenden Durchschnitt zu bilden, bei dem ich die Spitzen ermittle und innerhalb des gleitenden Durchschnitts eine weitere Suche durchführe. Ich habe keinen DSP-Hintergrund. Dies ist nur ein vernünftiger Ansatz. Ich würde gerne hören, was die Experten empfehlen.

Geben Sie hier eine Bildbeschreibung ein


2
Was sind die beiden Böden, die Sie erkennen möchten? Ich sehe nur einen offensichtlichen. Wissen Sie, welche Art von Lärm Sie haben oder woher er kommt?
Jason R

Ich möchte wissen, ob Sie es auf einer bestimmten Hardware implementieren möchten (Ressourcenbeschränkungen), da dies meine Strategie zur Erkennung von Spitzenwerten beeinflusst.
Anasimtiaz

@ JasonR die lila ist offensichtlich. Die scharfe Kante dort ist jedoch ein Ausreißer. Idealerweise möchte ich, dass das abgeschabt wird und dann der untere Punkt berechnet wird. (daher der LP-Filter in meinem Ansatz) Der nicht offensichtliche auf hellblau ist der min-Punkt rechts vom violetten Peak. Das Lila ist eigentlich kein Problem, aber das Hellblau. Excel-Plot wird nicht gerecht, aber dies ist von einem 12-Bit-ADC, bei dem 4096 2V ist.
Ktuncer

@anasimtiaz Ob Sie es glauben oder nicht, das läuft auf einem iPhone / Android, also können wir sagen, es ist wie ein PC. Keine Hardwareeinschränkungen.
Ktuncer

@Ktuncer Ich habe einige Bilder hinzugefügt, die Sie selbst sehen können.
Spacey

Antworten:


12

Ktuncer, es gibt eine Reihe von Methoden, die Sie hier anwenden können. Eine Methode, die ich empfehlen würde, ist die Verwendung einer diskreten Wavelet-Transformation (DWT) und insbesondere das Daubechies-Wavelet . Ich würde zum Beispiel Daub-14 / Daub-Tetra wählen.

Grundsätzlich müssen Sie Ihr Signal "trenden" und von dort aus eine Min- oder Max-Auswahl treffen. Das wird Ihre Ausreißer loswerden. Eine Daub-14 / Daub-Tetra-Wavelet-Transformation kann Ihnen dabei helfen, und dies ist besonders hilfreich, da Sie die Art Ihres Signals nicht kennen. (Mit daub-14 können Sie Polynomsignale des Grades 14/2 = 7 genau darstellen, und es sieht so aus, als würden Sie nicht mehr brauchen).

Die Berechnung dieser Wavelet-Transformation "komprimiert" Ihre Energie im Wesentlichen in einige Indikatoren. Diese Angaben stellen Gewichte auf Basisvektoren dar. Der Rest der Gewichte wird (idealerweise) nahe Null sein. Wenn Sie in Ihrem Signal Rauschen haben (wie Sie es tun), haben diese Gewichte, die normalerweise Null waren, jetzt einige Gewichte, aber Sie können sie einfach auf Null setzen und Ihr Signal "entstören". Sobald dies abgeschlossen ist, können Sie eine einfache Max / Min-Erkennung durchführen.

Wenn Sie weitere Informationen benötigen, können Sie mir eine E-Mail senden, um die Implementierung zu besprechen. Daran habe ich schon einmal ähnlich gearbeitet.

EDIT: Hier sind einige Bilder, die Daub-Tetra Denoiser illustrieren:

Bildbeschreibung hier eingeben Bildbeschreibung hier eingeben Bildbeschreibung hier eingeben Bildbeschreibung hier eingeben


1
Ich mag das .. Gibt es eine Referenzbibliothek für diese in Matlab?
Ktuncer

@Ktuncer Schieß mir eine E-Mail.
Spacey

4

Ich bin weit davon entfernt, ein Experte zu sein, aber Folgendes würde ich tun:

Sie scheinen ein sich langsam änderndes Signal zu haben, das mit Schwankungen überlagert ist. Die Peaks, die Sie suchen, sind einige stärkere Schwankungen, daher würde ich sie anhand dieser ermitteln.

  1. X(T)Y(t)

  2. XYσXY

  3. |(XY)(t)|>α×σα

Ein Überschwingen oder Unterschwingen kann spezifisch durch Entfernen des Absolutwerts und Verwendung eines geeigneten Tests festgestellt werden. Ist es das wonach du suchst?


1
Interessanter Ansatz. Was ist σ? (Std. Dev?). Abgesehen von Mathe, welche Logik steckt dahinter?
Ktuncer

σ

4σ

@ user4749 Dies wird Ihnen helfen, die Ausreißerspitzen zu ermitteln, obwohl ich nicht sicher bin, ob es die Gesamtspitzen ergibt, nach denen Sie suchen (ich gehe davon aus, dass Sie nach den 'breiten' Spitzen suchen?)
Spacey

1
@ Jean-Yves Hallo! :-) Nimmst du an, dass der Lärm hier übrigens guassisch ist? (Deshalb können wir std Schwelle). Ich bin gespannt, was passiert, wenn das Geräusch gefärbt ist?
Spacey

4

Die Spitzenwerterkennung hat eine Reihe von Anwendungen für eindimensionale oder mehrdimensionale Signale. Hier einige Beispiele, die zeigen, wie unterschiedlich diese Signale und ihre Interpretation eines Peaks sein können:

  • Die 1D-Daten des ursprünglichen Posters;

  • Bei der Transformation eines Bildes entspricht jeder Peak einer Linie im Originalbild. Bildbeschreibung hier eingeben

  • Autokorrelation eines Bildes, jeder Peak entspricht einer Frequenz, die ein "periodisches Muster" aufdeckt; Bildbeschreibung hier eingeben

  • "verallgemeinerte" Kreuzkorrelation eines Bildes und einer Schablone, jeder Peak entspricht einem Auftreten der Schablone in dem Bild (wir könnten daran interessiert sein, nur den besten Peak oder mehrere Peaks zu erkennen);

Bildbeschreibung hier eingeben

  • Beim Filtern eines Bildes nach Harris-Ecken entspricht jeder Peak einer Ecke im Originalbild.

Bildbeschreibung hier eingeben

Dies sind Definitionen und Erkennungstechniken von Peaks, auf die ich gestoßen bin - sicherlich gibt es andere, die ich entweder vergessen habe oder nicht kenne, und hoffentlich werden andere Antworten sie abdecken.

Vorverarbeitungstechniken umfassen Glätten und Entrauschen. Bei der Antwort von @ Mohammad geht es um Wavelets, und Sie können verschiedene Verwendungen davon in der Dokumentation von Mathematicas WaveletThreshold sehen (wo ich übrigens auch meine Beispiele entnommen habe ).

Dann suchen Sie nach Maxima. Abhängig von Ihrer Anwendung benötigen Sie nur die globalen Maxima (z. B. Bildregistrierung), einige lokale Maxima (z. B. Linienerkennung) oder viele lokale Maxima (Schlüsselpunkterkennung): Dies kann iterativ erfolgen, indem Sie nach dem höchsten Wert in den Daten suchen Löschen Sie anschließend einen Bereich um den ausgewählten Peak usw., bis der höchste verbleibende Wert unter einem Schwellenwert liegt. Alternativ können Sie nach den lokalen Maxima innerhalb einer bestimmten Nachbarschaftsgröße suchen und nur die lokalen Maxima beibehalten, deren Werte über einem Schwellenwert liegen. Einige empfehlen, die lokalen Maxima basierend auf ihrem Abstand zum Rest der lokalen Maxima (je weiter entfernt) beizubehalten desto besser). Das Arsenal verfügt auch über morphologische Operationen: Erweiterte Maxima und Top-Hat-Transformation können beide geeignet sein.

Sehen Sie sich die Ergebnisse von drei dieser Techniken auf einem Bild an, das nach Harris-Ecken gefiltert wurde:

Bildbeschreibung hier eingeben

Darüber hinaus versuchen einige Anwendungen, Peaks bei einer Auflösung unterhalb von Pixeln zu finden. Praktisch ist die anwendungsspezifische Interpolation.

Soweit ich weiß, gibt es keine Silberkugel, und die Daten werden zeigen, welche Techniken am besten funktionieren.

Es wird wirklich schön sein, mehr Antworten zu haben, insb. aus anderen Disziplinen kommen.


Wie haben Sie die Daten des Fragekörpers für Ihre Verwendung extrahiert? Ich kann es nicht in einer sauberen Form finden.
Léo Léopold Hertz 준영

1
Habe ich? Ich habe andere Beispiele verwendet. Wenn ich die Frage heute noch einmal betrachte, sehe ich nicht, wie ich Daten aus der Frage sauber extrahieren kann.
Matthias Odisio

-1

Ich denke , ein typischer Spitzenerkennungsalgorithmus wie das ist , wo refist peak(bottom).

for i=1,N   {
       if i=1   {  ref=data(i) }
       else { if data(i)<=ref {ref =data(i) }}
}

3
Ich habe Ihre Antwort nicht abgelehnt, aber ich denke, sie wurde von denjenigen, die dies getan haben, als nicht thematisch angesehen. Diese Skizze erkennt das absolute Minimum einer Sequenz. Das OP sucht nach Gipfeln, in denen man sich mit Ort und Lärm auseinandersetzen muss.
Matthias Odisio

Leider hat es überhaupt keine Antwort auf die "kanonische Antwort" -Bonus gegeben. Insofern sind alle Antworten gleichermaßen "irrelevant"; Ich habe die Prämie für diese Antwort vergeben, weil es die älteste ist.
Matthias Odisio
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.