记录和导出视线数据
一旦为任务启用了眼动跟踪并进行了配置(见 在任务中设置眼动跟踪),您需要实际捕获视线数据作为记录变量的事件。
自动事件设置
当您在任务编辑器中勾选 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数据的脚本。