Tengo algunos datos de microscopía que están contaminados por un artefacto de latido que me gustaría eliminar. Los datos consisten en una gran serie temporal de imágenes capturadas a ~ 60Hz.
Aquí hay un pequeño clip de ejemplo en forma GIF:
Tomé la intensidad de píxel promedio a lo largo del tiempo y calculé el periodograma usando el método de Welch:
Como puede ver, hay un pico agudo a ~ 1.8Hz que probablemente corresponderá a la frecuencia cardíaca (~ 108 latidos / min). También hay un montón de picos armónicos en múltiplos enteros de 1.8Hz. Es probable que la frecuencia cardíaca exacta varíe de un conjunto de datos a otro, pero puedo especificar un rango biológicamente plausible como se muestra en el área sombreada en el periodograma.
Lo que me gustaría poder hacer es:
- Detecta automáticamente la frecuencia fundamental correspondiente al latido del corazón y todos sus armónicos.
- Filtre los datos para eliminar el fundamental y todos los armónicos.
Por el momento puedo resolver el punto 1 de manera muy cruda al encontrar el pico más grande en el periodograma, luego multiplicarlo por donde es el número estimado de picos armónicos, pero estoy seguro de que debe haber Ser un mejor método que este truco.
Con respecto al punto 2, me encontré con esta pregunta que menciona el uso de un filtro de peine para eliminar un fundamental y todos sus armónicos. ¿Es este el mejor método para usar? Una consideración importante es que tendré que aplicar el filtro a cada píxel de series de tiempo en una gran matriz, por lo que un método computacionalmente eficiente sería altamente deseable.