Drift Correction Action


在屏幕的特定位置呈现一个校准点,在被试盯住这个校准点的同时,主试在主试机上按空格获取校准点位置的误差。

如误差小于1度,则继续进行实验。如误差大于1度,则不会继续进行下去,此时主试可以挂起进行到一半的实验,重新校准。

在重新校准结束后,可以从刚刚挂起的地方继续实验。


1. 什么是Drift Check

在Eyelink历代的产品线中,Drift Check曾经被叫过三个名字:Drift CorrectionDrift CorrectDrift Check

从命名上我们可以看到,Drift Check的功能是存在一个迭代的。

起初,在Eyelink最早期的Eyelink I头戴式眼动仪中,我们将两台红外相机通过头戴装置与头部固定,并通过相机采集眼球运动,如下图所示:

head_tracker-w1282

在理想的条件下,相机可以与头部保持绝对的固定,那在相机视野中观察到的眼球运动即为真实的眼球运动。

然而在实际的应用场景中,当被试的头发生加速度较大的运动时,眼动仪就会和头发生一定程度的位移。这种位移会导致在相机的视野中,即使眼睛自身没有运动,相机采集到的眼睛位置也会发生变化,这就引入了一类误差,我们称之为Drift——漂移误差。

值得庆幸的是,这类误差在方向上是统一的,而且偏移的大小也可以测量。至于测量方法就是我们所说的Drift Correction。以屏幕中心为参考点,测量相机向下飘移前后,被试注视同一位置的瞳孔位置差异。将这种差异补偿到校准数据中,即达到了补偿飘移的目的。

虽然在桌面式或者塔式等固定在桌上的眼动仪中,不会产生因为相机下坠的飘移产生。但Drift Correction功能仍然能在必要的时候向我们提示眼动仪的误差。所以在桌面式的眼动仪中,将Drift CorrectionDrift Check的形式保留,即只计算误差,不做任何的校准补偿。


2. Drift Check 能帮我们做到哪些事情

2.1 误差监测

我们可以在每个试次开始的时候进行Drift Check,在实验运行过程中近乎实时地监测误差水平。

这在时长非常短的实验中可能不是必需的,但是在试次数量较大和长时程的实验中尤为重要。

这个功能实现起来是非常简单的,只需要在Trial Sequence中,紧接着Recording Sequence的前面加入DriftCorrection Action即可。如下图所示:

Drift_in_graph

Drift Check的过程中,被试机屏幕呈现如图所示:

img

此时需要被试盯住显示在屏幕上的校准点。与此同时,注视在主试机上按回车空格测量眼动仪误差。如下图所示:

drift_on_host

如此时误差小于1度视角,则主试机将快速报告误差值,然后继续实验。否则将报告误差值,然后停在Drift界面,等待主试决定下一步操作。

正如我们前一部分所说,如果在Drift过程中发现误差过大,则不会继续进行实验,而是等待主试决定下一步应该进行什么操作。那么这里所指的操作就是——校准。

Q:

应该多久进行一次相机校准?

A:

需要多久一次就多久一次。

我们应该尽可能多地在实验中预留重新校准的机会,发现数据质量下降则立即重新校准。

那最多是多少呢?——每个试次都有一次。

这就是Drift在重新校准眼动仪中的意义。

主试在实验过程中并不可以去倒茶喝水冲咖啡,这是对自己数据不负责任的表现。

主试在实验过程中应当集中注意力监控数据质量,在数据质量不理想的情况下立即重新校准,以此将数据质量提升至最高。

2.2 休息,休息一下

对于一些特殊被试或者实验长度过长时,我们往往需要让被试在实验进行到一半的时候进行一次或多次休息。一般的做法是将实验分割成多个Block,在编写实验程序的时候设计休息流程。例如一个实验共有180个Trial,每60个试次组成一个Block,在Block之间预留3分钟的休息时间。

这种周期行的休息是必须的,但并不总能满足被试对于休息的需求。当实验任务进行到某个Block中间的时候,被试表示自己眼睛干涩需要休息时,如何满足被试的需求呢?

毕竟,被试就是上帝!

其实方法也很简单,在下一个试次开始时的Drift环节进入Camera Setup,挂起实验进程,让被试的到充分的休息之后重新校准眼动仪,继续实验即可。

2.3 Cue注意

imgcu

如上图左图所示,在类单行文本阅读的范式中,我们希望文字出现之前,被试的注视位置停留在红色十字光标的位置。这样当文本刺激出现之后,被试可以从句首的第一个字开始,顺序阅读。

如上图有图所示,在类视觉搜索任务中,我们希望在刺激出现之前,被试的注视位置在所有目标物所围成的圆的圆心,以保证对所有目标物的视角距离相等。

以上两种都是典型的Cue注意应用,通过调整Drift Correction过程中校准点出现的位置,以达到将被试的注意力引导到特定位置的目的。


3. 如何实现

3.1 误差监测和休息

这一部分操作需要在主试机上完成,如下图红框所示,在Drift环节点击Camera Setup进入相机校准环节即可。

drift_2_setup

3.2 Cue注意

这一部分操作的核心是设置Drift校准点出现的位置,不要着急,我们先从Drift的属性开始了解。

drift_propertie

虽然这里面有很多属性,但是需要的设置的只有两个X LocationY Location,我们先说这两个,剩下的稍后慢慢解释。

属性 解释
X Location 校准点出现的屏幕上的X方向坐标,屏幕的左边缘为0。
Y Location 校准点出现的屏幕上的Y方向坐标,屏幕的上边缘为0。

看到这里,其实问题就已经解决了一半了,我们只需要把想要显示的位置填进属性即可。

那么问题来了,我到底应该把校准点呈现在那里呢?

对于类搜索任务,把校准点呈现在目标物所围成的圆的圆心即可,保证校准点到各个目标物的视角距离一致。通常来讲是放到屏幕的中心。

对于类阅读任务,通常会把校准点放到段首第一个字左侧0-2度视角距离的位置。当然这和语言的阅读方向有关。例如:自上而下阅读的蒙文,则需要将校准点放到段首第一个字上方0-2度视角距离的位置。

说了这么多,X LocationY Location的数值究竟应该填多少呢?

在准备刺激材料的时候,其实我们是知道刺激材料所在的位置的。如下图所示,只需要将鼠标悬停在显示内容的编辑窗口中,鼠标的右下角就会提示此处的坐标。

image-20200318225322971

由于截图工具的问题,没有显示鼠标。实际上我将鼠标悬停到了“There”的第一个字母“T”上。我们可以看到提示的坐标位置为(86.00, 403.00)

向前追溯0-2度距离约为60像素,所以设置Drift的位置为(26.00, 403.00)

X Location = 26

Y Location = 403


4. Drift Correction Action 的全部属性

一下属性是Drift Correct控件的全部属性,根据您实验的不同设置,显示出来的属性可能有所不同。

标记为#的属性为不可直接修改的属性。

属性 解释
Label 当前Drift Correction控件的标签,默认为“DRIFT_CORRECTT”。
Type# 当前Drift Correction控件的类型。
Node Path# 当前Drift Correction控件在实验中的绝对路径。
Message 完成当前Drift Correction控件的执行后,向EDF文件发送的Message内容。
Time# 完成当前Drift Correction控件的执行后,被试机时钟的时间。
NTP Time# 完成当前Drift Correction控件的执行后,NTP时钟的时间。
Start Time# 开始执行当前Drift Correction控件时,被试机时钟的时间。
Clear Input Queues 如果为True,当此控件开始执行时,会刷新全部输入
X Location Drift Correction校准点出现的X坐标,以屏幕像素为单位。
Y Location Drift Correction校准点出现的Y坐标,以屏幕像素为单位。
Apply Correction 若选择Current,则引用主试机中的设置。 若选择YES,则即将误差逆向补偿到校准文件中。
   
Allow Setup 若选择True,则允许在Drift Correction期间通过按主试机的Esc键进入Cmera Setup界面。 若选择False,则不会进入到Camera Setup界面。
Draw Drift Correction Target 若选择True,则在完成Drift Correction后先清除屏幕(显示空屏),再呈现刺激内容。 若选择False,则不会清除Drift Correction显示的内容。在某些情况下,可能希望校准点持续存在到刺激内容出现。
Clear Target At Exit 若选择True,则在完成Drift Correction后先清除屏幕至Background Color。 若选择False,则不会执行清屏操作。
Foreground Color 校准点的颜色。
Background Color 屏幕的背景色。
Use Animation Target 若选择True,则使用一个自定义的动图作为校准点。 若选择False,则使用默认校准目标。
Animation Target 校准动图的文件名,仅支持.avi格式的视频文件。
Animation Play Count 校准视频的播放次数,若为“-1”则无限循环播放。
Apply Transparency 若选择True,则将对您自定义的校准动图执行透明度操作。 若选择False,则不执行。我们建议您不要开启此选项。
Use Custom Target 若选择True,则使用一个自定义的图片作为校准点。 若选择False,则使用默认校准目标。
Custom Target 校准目标图片的文件名。
Target Outer Size 默认校准目标的外圆直径。
Target Inner Size 默认校准目标的内圆直径。
Use Custom Background 若选择True,则使用一个自定义的图片作为校准背景。 若选择False,则使用默认Background Color所设置颜色的全色背景。
Custom Background 自定义校准背景图片的文件名。
Target Beep 校准目标出现时,被试机所播放声音的文件名。
Error Beep 校准失败或中断时,被试机所播放声音的文件名。
Good Beep 成功执行操作时,被试机所播放声音的文件名。
Enable External Control 若选择True,则允许使用主试机和被试机键盘以外的设备执行Drift Correction所需的按键操作。 若选择False,则不允许。
External Control Device Config 指定一个文件,该文件用于配制External Control的操作映射。
External Control Device 用于执行External Control的设备类型。
Button State Callback Function 对于启动了Custom Class的实验任务,可以通过Custom Class监测其他外部设备的按键状态。以达到自定义设备完成External Control的目的。
Result# 如果该控件执行成功,则返回0。若中断,则返回27。

5. Drift Correction 的 Tips

5.1 设置自定义的背景色

由于瞳孔缩放漂移的存在,在实验过程中应当尽量避免外在因素引起的瞳孔尺寸变化。在所有外在因素中,对与瞳孔尺寸影响最敏感的就是显示器亮度。当入射到我们瞳孔中的光发生亮度变化时,瞳孔会发生缩放反射。

因此,我们应当保证校准环节和正式实验环节的显示器亮度保持一致,方法就是设置显示的背景色。从上面的表格中,我们已经注意到了名为Background Color的属性,即执行Drift Correction过程时,屏幕显示的背景颜色。

Background Color的参数类型为Color。在EB中,Color类型的参数由四个0到255之间的整型变量构成。

[Red, Green, Blue, Alpha]

前三个参数分别是颜色的RGB值,最后一个参数是指颜色的透明度,在设置背景颜色时一般选择不透明,即Alpah = 255

5.2 设置自定义校准点

在Drift Correction和Camera Setup环节,默认的校准目标都是一个带圆心的圆,对于正常被试来讲没有任何问题。但是在面对一些特殊被试的时候,这个小圆点往往会表现得力不从心。

在面对婴幼儿时,我们可能会选择使用被试父母的头像作为校准目标。

在面对自闭症儿童时,我们可能会选择使用带声音的动画作为校准目标。

在面对色弱患者时,我们通常会选用高对比度的图片作为校准目标。

……

在上述的几种情况中,我们需要自定义校准目标来实现更好的校准结果。关于具体设置方法上,我们将自定义校准目标情况分成两类——动画和图片。

自定义动画校准目标

Drift Correction Properties
├── ...
├── Use Animation Target         # 是否使用自定义的动画作为校准目标
|  ├── Animation Target          # 动画的文件名,仅支持.avi格式的视频文件。
|  ├── Animation Play Count      # 动画的循环播放次数,-1为无限循环。
|  └── Apply Transparency        # 开始无色背景透明。
├── ...
├── Target Beep                  # 校准点出现时播放的声音文件。
├── ...

一般情况下,我们首先要开启Use Animation Target,然后在Animation Target选择使用的视频文件,最后再设置Target Beep的声音。为了能吸引婴幼儿的注意力,可以在呈现校准目标的同时,播放一段可以吸引小朋友的音乐,而不是使用默认的蜂鸣音。

自定义图片校准目标

Drift Correction Properties
├── ...
├── Use Custom Target            # 是否使用自定义的图片作为校准目标
|  └── Custom Target             # 图片的文件名。
├── ...
├── Target Beep                  # 校准点出现时播放的声音文件。
├── ...

和自定义视频校准目标相似,我们首先要开启Use Custom Target,然后在Custom Target选择使用的图片文件,最后再考虑是否设置Target Beep的声音。

以上。