频域移动平均滤波器中的边缘伪影

信息处理 过滤器 Python 卷积 脑电图
2022-02-23 00:41:04

我目前正在尝试在 python 中实现一种算法来识别和过滤掉一个特定的周期性脑电图伪影 - grad fMRI 伪影 - 如本文所述,并且我正在招致我认为是强边缘伪影几乎没有不知道如何照顾他们。

据我了解,所描述的基本思想是基于优化移动平均(OMA)思想的平均伪影减法(AAS)的改进版本,可以简要概述如下。寻找最佳工件模板的过程是通过迭代进行的,单步迭代的傅里叶变换为:

1H(z)=11M2(1zM)(1zM)(1z1)(1z)
M是工件的周期。

滤波器的传递函数意味着移动平均的 J 次迭代,然后变为:

HJ=1(1H(z))J

最后,为了获得更精细的滤波器,将上述滤波器应用于一系列 J 级联,从而得到最终的传递函数:

HL(z)=(HJ(z))L


滤波器的计算实现已经在频域中进行了处理,并在来自大约测量的数据上进行了测试1.8102s,我的采样频率是5103Hz 和工件的周期大致为2102s。

为避免违反信号的平稳性,原始信号通过高电平以确保其均值为零。然后将时域转换为频域,如下所示:

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%。为清楚起见,下图中显示了一个单通道。 同一信号左侧边缘伪影的特写

在这种情况下,是否有人对我可以尝试摆脱边缘伪影有任何进一步的建议或提示?

0个回答
没有发现任何回复~