2️⃣伪影处理简介

type
status
date
slug
summary
tags
category
icon
password
本教程解释了有关如何处理伪影的一般方法。
由于 FieldTrip 支持许多不同采集系统的数据,因此您数据中的特定伪像可能与此处演示和讨论的示例有很大不同。因此,您应该了解前面描述的不同方法和伪影拒绝(自动 / 手动)程序的可变性。 在自动化程序结束时,考虑在拒绝后始终目视检查您的数据。

背景

一般来说,artifact(美式英语拼写)或 artefact(英式英语拼写)是我们使用 EEG 或 MEG 系统获取的数据中的一些意外或不需要的特征。伪影的起源可以是生理性的或非生理性的。
眨眼是脑电图中出现的生理伪影的一个例子。视网膜带电,眼睛的运动导致头皮电位偏转。这种所谓的眼电图的贡献主要在额叶电极上可见,但当足够仔细地观察时,您可以在所有电极上看到它。非生理性伪影的一个例子是与头皮接触不良的 EEG 电极。相应的 EEG 通道将显示一条平坦的线,或者可能有很多噪音。
除了考虑伪影的生理或非生理方面外,您还可以考虑伪影是否由参与者的行为(例如,眼球运动)引起,是否由环境中的某些东西(例如,50Hz)引起线路噪声)或是否由设备故障引起(例如,电极连接不良)。行为伪影通常是短暂的,而环境和仪器伪影通常更持久。
没有一种最佳的方法来检测伪影:它取决于数据属性、您预计会出现的伪影类型(给定您的记录设置、您的任务和您的参与者)以及您自己的偏好。

FieldTrip 如何管理伪影?

FieldTrip 通过首先识别它们然后删除它们来处理伪影。伪影的检测可以通过目视或使用自动例程或两者的组合来完成。在您知道伪影是什么之后,它们将被以下任一方式移除
  • 拒绝包含伪影的数据,例如,对于短暂的伪影或连接不良的 EEG 电极,或
  • 从数据中减去伪影的时空贡献,例如,使用滤波器或 ICA
FieldTrip 中可用于伪影检测的函数取决于您的数据是连续的还是基于试次的(即分段之间有时间间隔)以及您的数据是存储在磁盘上还是已读入内存。
在分割之前检测连续数据中的伪影允许您应用滤波器(例如,带通滤波器以放大时间通道上的肌肉伪
影)而不必担心由于滤波器引起的边缘效应(即滤波器振铃)。分割后将数据保存在内存中是一种直观浏览感兴趣的数据段的有效方法,尤其是当您知道试次之间存在伪影时(例如,眨眼期间的 EOG 伪影)。
在不将完整数据读入内存的情况下检测伪影,允许您处理过大而无法一次放入内存的数据集。

拒绝带有伪影的片段

通过这种策略,可以识别出被人为因素污染的数据片段,并将其从进一步分析中移除。例如,排除不良通道,或删除带有伪影的试次。您可能不仅要使用此策略来处理伪影,还要处理参与者的不良行为。例如,如果在视觉刺激检测任务中,受试者恰好在(短)刺激出现在屏幕上的那一刻眨眼,那么他很可能没有看到刺激。在那种情况下,排除试验的原因不是因为 EOG 伪影,而是因为受试者在该试次中的大脑活动不是我们感兴趣的。

手动 / 视觉检测

在手动 / 视觉伪影检测中,用户通过目视检查数据并识别受影响的试次或数据段和 / 或通道。目视检查会生成一个包含噪声数据段和 / 或通道的列表。
这些功能可用于手动 / 视觉伪影检测:
ft_rejectvisual 函数仅适用于已经读入内存的分段数据(即试次)它允许您通过一次显示所有通道(每个试次),或一次显示所有试次(每个通道),或通过显示所有通道和试次的摘要来浏览 MATLAB 图中的大量数据单图。使用鼠标,您可以选择要删除的试次和 / 或通道。此函数直接返回去除噪声部分的数据,您不必调用 ft_rejectartifact ft_rejectcomponent
如果你想在连续数据上使用ft_rejectvisual,你可以先使用 ft_redefinetrial 将它分割成一秒钟的片段,然后调用 ft_rejectvisual。本FAQ中解释了分割连续数据。
ft_databrowser 函数适用于连续数据和分段数据,适用于仍在磁盘上或已读入内存的数据它允许您浏览数据并使用带有工件的鼠标片段进行标记。与 ft_rejectvisual 相反,ft_databrowser 不会返回清理后的数据,也不允许您删除坏通道(尽管您可以将它们从可视化中关闭)。相反,它在输出中返回一个cfg片段列表,表示为相对于记录的开始和结束样本。在检测到带有伪影的片段后,您调用ft_rejectartifact 将它们从您的数据(当数据已在内存中)或从您的试次定义(当数据仍在磁盘上)中删除。
值得注意的是,ft_databrowser 函数还可用于可视化 ICA 成分的时间进程,从而使您可以轻松识别与眨眼、心跳和线路噪声对应的成分。良好的 ICA 数据分离需要在调用 ft_componentanalysis 之前移除非典型伪影(例如,电极移动、SQUID 跳跃)。在确定了哪些是坏成分后,您可以调用 ft_rejectcomponent 将数据投影回传感器级别,排除坏成分。
有关手动处理伪影的更多信息,请参阅视觉伪影拒绝教程。

自动检测

为了加快处理许多和 / 或大型数据集,并促进对伪影使用客观标准,FieldTrip 还包括许多用于自动工件检测的功能。尽管这些对于行为良好的数据中的众所周知的成分有效,但如果您(还)不了解您的数据,则不应将自动检测功能用作默认方法。
自动伪影检测功能允许对数据应用一些过滤和预处理,使伪影更加明显。为此,通过cfg结构为它们中的每一个预先设置相关参数。
检测 eog、jump 和 muscle artifacts 的函数都只是 ft_artifact_zvalue 的包装器,其中 filter 和 padding 选项设置为合理的默认值。ft_artifact_zvalue 计算每个通道的预处理表示,通过减去通道平均值并除以其标准差将其转换为 z 值,然后对通道上的 z 值求和。这适用于预期会出现在多个通道中的伪影,例如眨眼和肌肉活动。
ft_badchannel  ft_badsegment 函数使用cfg.method='summary'实现与ft_rejectvisual 函数相同的指标,并允许设置固定的先验阈值以排除通道或片段。
可以在自动伪影拒绝教程中找到更多信息。

从数据中拒绝带有伪影的片段

如果您使用人工 / 视觉或自动检测伪影片段,您通常会继续使用 ft_rejectartifact 拒绝这些片段进行后续分析。FieldTrip 支持可变的试验长度的数据,这允许您仅拒绝那些包含伪影的数据,保留试验的其余部分。如果您的实验包含很长的试次,这将特别有用。

从数据中拒绝带有伪影的通道

如果您已识别出不良通道,则可以通过在cfg.channel选项中指定它们并将它们排除在后续处理之外。除了指定要保留的所有频道,您还可以像这样指定要删除的明确频道:

从数据中减去伪影

在某些情况下,您可以假设伪影是感兴趣信号的线性添加,而不是排除带有伪影的片段。如果您能够识别伪影,则可以减去它,留下您感兴趣的 EEG 或 MEG 信号。这适用于某些类型的伪影,例如 EEG 中的高频噪声或 50 或 60 Hz 的线路噪声。这也可用于消除眼球运动对脑电图数据的影响,假设眨眼和运动对于正确执行任务不是问题。

使用滤波器去除伪影

一些伪影以特定频带表示。例如,由于电极漂移,伪影可能会出现在低频,或者以您不期待的方式出现在您感兴趣的高频 EEG 活动,或者出现在非常特定的频率,例如 50 Hz 线路噪声。您可以在 ft_preprocessing 中使用滤波器来删除这些对数据的伪影贡献。

使用 ICA 识别和移除伪影

您可以使用独立成分分析 (ICA) 或主成分分析 (PCA) 对数据进行线性分解。使用这些方法,您可以将一组空间滤波器应用于数据,之后数据不再以记录(头皮)通道的级别表示,而是作为一组虚拟通道或成分表示。在 ICA 分解的情况下,选择滤波器以产生成分的最大独立时间过程。在 PCA 的情况下,滤波器产生正交时间过程。某些伪影,例如由眨眼引起的伪影,通常由一些相当容易识别的成分反映出来。然后可以从数据中删除这些视觉识别的组件,并且可以使用 ft_rejectcomponent 将剩余的成分投影回通道级别。
以下示例脚本说明了如何使用 ICA 检测和移除EOGECG伪影。

建议进一步阅读

在这个关于处理 FieldTrip 中的伪影的简短介绍之后,您可以继续学习视觉伪影拒绝自动伪影拒绝教程。还可以在一些示例脚本和常见问题解答中找到有关处理工件的更多信息。

示例脚本

经常问的问题

 
预处理 - 分割和读取基于试次的 EEG 和 MEG 数据视觉伪影拒绝
  • Twikoo