我目前正在尝试在 python 中实现一种算法来识别和过滤掉一个特定的周期性脑电图伪影 - grad fMRI 伪影 - 如本文所述,并且我正在招致我认为是强边缘伪影几乎没有不知道如何照顾他们。
据我了解,所描述的基本思想是基于优化移动平均(OMA)思想的平均伪影减法(AAS)的改进版本,可以简要概述如下。寻找最佳工件模板的过程是通过迭代进行的,单步迭代的傅里叶变换为:
滤波器的传递函数意味着移动平均的 J 次迭代,然后变为:
最后,为了获得更精细的滤波器,将上述滤波器应用于一系列 J 级联,从而得到最终的传递函数:
滤波器的计算实现已经在频域中进行了处理,并在来自大约测量的数据上进行了测试s,我的采样频率是Hz 和工件的周期大致为s。
为避免违反信号的平稳性,原始信号通过高电平以确保其均值为零。然后将时域转换为频域,如下所示:
N = len(signal)
k = np.arange(N)
z = np.exp(1j * 2 * np.pi * k / N)
和信号转换
signal_tilde = fft(signal)
结果被视为传递函数与信号(在频率空间中)相乘的反变换。
signal_filtered = ifft(H_J(z)*signal_tilde)
如果没有任何填充,生成的信号最终会出现很多边缘伪影。为了尽量避免它,在开始任何信号之前用对称填充填充信号
np.pad(signal, (pad_before, pad_after), mode='symmetric')
因此,结果信号被认为是裁剪的
signal_filtered = np.real(signal_filtered[pad_before:pad_after])
但是再次转换+裁剪后的信号在边缘上显示出明显的强伪影迹象,覆盖了我整个信号的大约 3%。为清楚起见,下图中显示了一个单通道。
在这种情况下,是否有人对我可以尝试摆脱边缘伪影有任何进一步的建议或提示?