我有一些显微镜数据被我想移除的心跳伪影污染。数据由以约 60Hz 捕获的大量时间序列图像组成。
这是一个 GIF 格式的小示例剪辑:
我采用了一段时间内的平均像素强度,并使用 Welch 的方法计算了周期图:
如您所见,在 ~1.8Hz 处有一个尖峰,可能对应于心率(~108 次/分钟)。在 1.8Hz 的整数倍处还有一堆谐波峰值。确切的心率可能因数据集而异,但我可以指定一个生物学上合理的范围,如周期图上的阴影区域所示。
我想做的是:
- 自动检测与心跳对应的基频及其所有谐波
- 过滤数据以去除基波和所有谐波。
目前我可以通过在周期图中找到最大峰值来非常粗略地解决第 1 点,然后将其乘以,其中是谐波峰值的估计数,但我确信必须是比这个 hack 更好的方法。
关于第 2 点,我遇到了这个问题,其中提到使用梳状滤波器去除基波及其所有谐波。这是最好的使用方法吗?一个重要的考虑因素是我必须将过滤器应用于大型阵列中的每个像素时间序列,因此非常需要一种计算效率高的方法。
示例数据
- 我在这里
.csv
上传了格式示例平均像素值的一维时间序列。 - 我还在压缩
.mat
文件中添加了1000 帧样本(空间抽取 2:1)