记录和导出凝视数据
一旦眼动追踪在任务中启用并配置(见 在任务中设置眼动追踪),您需要能够实际捕捉到凝视数据的事件作为记录变量。
自动事件设置
当您在任务编辑器中勾选 Enable Eye-Tracking: 时,将出现一个“眼动追踪设置”对话框,提供为您创建这些事件的选项:
![]()
Record gaze timeseries [X,Y,T,C]: 创建一个凝视记录事件,默认勾选Record fixation timeseries [X,Y,Dur,Start,End,Disp]: 创建一个注视记录事件,默认勾选。如果您的任务的注视检测模式设置为No Fixation Detection,接受此选项会自动启用它。
您还可以选择范围:On all frames(默认)将记录事件应用于试验中的每一帧,或 Select a frame 将其限制为特定帧。单击 Add Events 将根据这些选择创建事件;Skip 在不创建任何内容的情况下关闭对话框。
这涵盖了常见情况:在试验中记录每个凝视和注视样本。如果您跳过了此对话框,需要将记录限制在特定刺激对象(见下文)或正在向已存在的任务添加眼动追踪事件,请手动构建事件。
手动记录凝视坐标
要记录一系列的凝视坐标:
- 从事件编辑器添加一个新事件。
- 对于触发器,选择
Physiological Signal Triggers→Eyetracking Gaze。 - 对于操作,选择
Variable Actions→Set / Record Variable,然后创建一个新变量:- 格式:
Array(推荐,这样可以将一对 X/Y 坐标存储在一起) - 记录类型:
All changes / time series,这样每次凝视更新都会被记录,而不仅仅是在试验结束时的最终值
- 格式:
- 在值选择菜单中,从
Trigger (Eyetracking Gaze)选项中选择Coord. + Time + Confidence [X,Y,T,C] Array。这将记录 X 和 Y 坐标、精确时间戳和置信值在一个数组中。
还有一个 Eyetracking Fixation 触发器,它报告参与者的注视(其凝视停留的位置,而不是每一个单独的凝视样本),使用任务设置中配置的注视检测模式。它目前处于测试阶段。
将记录限制为特定刺激对象
Eyetracking Gaze 和 Eyetracking Fixation 触发器都可以限制为仅在参与者注视特定刺激对象时触发,而不是在帧的任何地方触发。为此,选择仅在特定元素上触发的选项,然后将这些元素添加为目标。当您只关心参与者是否注视特定图像或区域时,而不是他们在帧其他位置的凝视位置,这一点尤其有用。
记录校准和试验误差
除了凝视坐标,您还可以记录给定参与者眼动追踪的准确性:
- 添加另一个事件,将
On Frame Start作为触发器。 - 对于操作,选择
Variable Actions→Set / Record Variable。 - 在值选择菜单中,在
Frame/Task/Object→Eyetracking下,选择Error Trial以记录当前试验的误差,或Error Calibration以记录原始校准的误差。
这两个误差值是均值欧几里得距离,以帧单位表示,表示预测的凝视坐标与校准或试验期间显示的实际目标注视位置之间的距离。记录这两个值可以让您在分析时排除准确度低于您阈值的参与者或特定试验。
导出凝视数据
导航到 Dataview & Export 标签以访问您的记录数据。导出有两种类型:
- 普通数据:每个试验记录一次,如响应、条件和校准/试验误差(如果您选择记录它们)。每个变量为一列,每个试验为一行。
- 时间序列数据:在试验期间持续记录,凝视坐标就使用这个,因为它们每秒更新多次。每一行代表一个凝视样本,旁边是一个在所有时间序列变量中共享的
times列。
![]()
X: 凝视的 X 坐标; Y: 凝视的 Y 坐标; T: 时间戳; C: 置信区间
在处理这些列时,有几件事需要记住:
- 基于
T而不是单独的times列进行时间测量。T是相机实际捕获图像时的调整时间戳,而times反映 Labvanced 记录值的时间,这在真实捕获时刻后稍微滞后,因为算法需要几毫秒来先处理每个快照。 C的范围从 0 到 1。接近 1 的值表示置信度高;接近 0 的值通常表示眨眼或参与者的眼睛未能被相机捕捉到。- 采样率并不完美稳定,可以从
T中确定。一般来说,由于大多数商业可用网络摄像头的硬件限制,30Hz 以上的采样率是无法实现的。
Labvanced 的 GitHub 存储库 有用于进一步处理导出的眼动追踪和 WebSocket 数据的脚本。