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.
filters
peak-detection
Ktuncer
quelle
quelle
Antworten:
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:
quelle
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.
Ein Überschwingen oder Unterschwingen kann spezifisch durch Entfernen des Absolutwerts und Verwendung eines geeigneten Tests festgestellt werden. Ist es das wonach du suchst?
quelle
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.
Autokorrelation eines Bildes, jeder Peak entspricht einer Frequenz, die ein "periodisches Muster" aufdeckt;
"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);
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:
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.
quelle
Ich denke , ein typischer Spitzenerkennungsalgorithmus wie das ist , wo
ref
istpeak(bottom)
.quelle