一些由电源线造成的伪影具有某些特定范围的频率(比如,由电网产生的电力线噪声,主要由50Hz(或60Hz取决于实验的地理位置)的尖峰组成)。因此可以通过滤波来固定。

本文分别使用陷波滤波器低通滤波高通滤波来对EEG数据去除电源线等噪声。

陷波滤波器(Notch Filter)简介:

陷波滤波器指的是一种可以在某一个频率点迅速衰减输入信号,以达到阻碍此频率信号通过的滤波效果的滤波器。陷波滤波器属于带阻滤波器的一种,其阻带很窄,因此也称点阻滤波器。常常用于去除固定频率分量或阻带很窄的地方。如用于去除直流分量,去除某些特定频率分量.

本案例介绍了如何在MNE-Python中过滤数据。

import numpy as npimport mnefrom mne.datasets import sampledata_path = sample.data_path()raw_fname = data_path + '/MEG/sample/sample_audvis_raw.fif'proj_fname = data_path + '/MEG/sample/sample_audvis_eog_proj.fif'"""提取0秒到20秒之间的数据"""tmin, tmax = 0, 20"""读取原始数据通过在加载前剪切原始数据来节省内存"""raw = mne.io.read_raw_fif(raw_fname)raw.crop(tmin, tmax).load_data()raw.info['bads'] = ['MEG 2443', 'EEG 053']  # bads + 2 more"""设置 频率在2Hz到300Hz之间"""fmin, fmax = 2, 300"""FFT大小为n_fft,在理想情况下为2的幂"""n_fft = 2048# 选择一通道的子集selection = mne.read_selection('Left-temporal')picks = mne.pick_types(raw.info, meg='mag', eeg=False, eog=False,                       stim=False, exclude='bads', selection=selection)raw.plot_psd(area_mode='range', tmax=10.0, picks=picks, average=False)

python cv2 图像上彩色干扰线 python去干扰线_python cv2 图像上彩色干扰线

python cv2 图像上彩色干扰线 python去干扰线_python cv2 图像上彩色干扰线_02

用陷波滤波去除电源线噪声

去除电力线噪声可以直接在原始对象上使用陷波滤波器,指定要切断的频率阵列:

raw.notch_filter(np.arange(60, 241, 60), picks=picks, fir_design='firwin')raw.plot_psd(area_mode='range', tmax=10.0, picks=picks, average=False)

python cv2 图像上彩色干扰线 python去干扰线_高通滤波_03

python cv2 图像上彩色干扰线 python去干扰线_高通滤波_04

用低通滤波去除电源线噪声

如果只对低频感兴趣,可以在电力线噪声的峰值以下进行低通滤波。

# 50hz以下的低通滤波raw.filter(None, 50., fir_design='firwin')raw.plot_psd(area_mode='range', tmax=10.0, picks=picks, average=False)

python cv2 图像上彩色干扰线 python去干扰线_高通滤波_05

python cv2 图像上彩色干扰线 python去干扰线_python cv2 图像上彩色干扰线_06

高通滤波消除缓慢漂移

为了消除缓慢的漂移,可以使用高通滤波。

raw.filter(1., None, fir_design='firwin')raw.plot_psd(area_mode='range', tmax=10.0, picks=picks, average=False)

python cv2 图像上彩色干扰线 python去干扰线_python cv2 图像上彩色干扰线_07

python cv2 图像上彩色干扰线 python去干扰线_python cv2 图像上彩色干扰线_08

如果想要一步完成低通和高通滤波,可以做一个所谓的带通滤波器,如下所示:

# 1 Hz-50 Hz范围内的带通滤波raw.filter(1, 50., fir_design='firwin')raw.plot_psd(area_mode='range', tmax=10.0, picks=picks, average=False)

python cv2 图像上彩色干扰线 python去干扰线_python cv2 图像上彩色干扰线_09

python cv2 图像上彩色干扰线 python去干扰线_python cv2 图像上彩色干扰线_10