Ich habe einige Mikroskopiedaten, die durch ein Herzschlagartefakt kontaminiert sind, das ich entfernen möchte. Die Daten bestehen aus einer großen Zeitreihe von Bildern, die mit ~ 60 Hz aufgenommen wurden.
Hier ist ein kleiner Beispielclip in GIF-Form:
Ich habe die durchschnittliche Pixelintensität über die Zeit genommen und das Periodogramm nach der Methode von Welch berechnet:
Wie Sie sehen können, gibt es bei ~ 1,8 Hz einen scharfen Peak, der wahrscheinlich der Herzfrequenz entspricht (~ 108 Schläge / min). Es gibt auch eine Reihe von harmonischen Spitzen bei ganzzahligen Vielfachen von 1,8 Hz. Die genaue Herzfrequenz variiert wahrscheinlich von Datensatz zu Datensatz, aber ich kann einen biologisch plausiblen Bereich angeben, der durch den schattierten Bereich im Periodogramm angezeigt wird.
Was ich tun möchte, ist:
- Ermittelt automatisch die Grundfrequenz, die dem Herzschlag entspricht, und alle seine Harmonischen
- Filtern Sie die Daten, um die Grundwelle und alle Harmonischen zu entfernen.
Im Moment kann ich Punkt 1 sehr grob lösen, indem ich den größten Peak im Periodogramm finde und ihn dann mit multipliziere wo ist die geschätzte Anzahl harmonischer Peaks, aber ich bin sicher, dass es eine bessere Methode als diesen Hack geben muss.
In Bezug auf Punkt 2 bin ich auf diese Frage gestoßen, in der die Verwendung eines Kammfilters zum Entfernen einer Grundwelle und aller ihrer Harmonischen erwähnt wird. Ist dies die beste Methode? Eine wichtige Überlegung ist, dass ich den Filter auf jede Pixel-Zeitreihe in einem großen Array anwenden muss, so dass eine rechnerisch effiziente Methode sehr wünschenswert wäre.