Drift Correction Action
在屏幕的特定位置呈现一个校准点,在被试盯住这个校准点的同时,主试在主试机上按空格获取校准点位置的误差。
如误差小于1度,则继续进行实验。如误差大于1度,则不会继续进行下去,此时主试可以挂起进行到一半的实验,重新校准。
在重新校准结束后,可以从刚刚挂起的地方继续实验。
1. 什么是Drift Check
在Eyelink历代的产品线中,Drift Check
曾经被叫过三个名字:Drift Correction
、Drift Correct
和Drift Check
。
从命名上我们可以看到,Drift Check
的功能是存在一个迭代的。
起初,在Eyelink
最早期的Eyelink I头戴式
眼动仪中,我们将两台红外相机通过头戴装置与头部固定,并通过相机采集眼球运动,如下图所示:
在理想的条件下,相机可以与头部保持绝对的固定,那在相机视野中观察到的眼球运动即为真实的眼球运动。
然而在实际的应用场景中,当被试的头发生加速度较大的运动时,眼动仪就会和头发生一定程度的位移。这种位移会导致在相机的视野中,即使眼睛自身没有运动,相机采集到的眼睛位置也会发生变化,这就引入了一类误差,我们称之为Drift
——漂移误差。
值得庆幸的是,这类误差在方向上是统一的,而且偏移的大小也可以测量。至于测量方法就是我们所说的Drift Correction
。以屏幕中心为参考点,测量相机向下飘移前后,被试注视同一位置的瞳孔位置差异。将这种差异补偿到校准数据中,即达到了补偿飘移的目的。
虽然在桌面式或者塔式等固定在桌上的眼动仪中,不会产生因为相机下坠的飘移产生。但Drift Correction
功能仍然能在必要的时候向我们提示眼动仪的误差。所以在桌面式的眼动仪中,将Drift Correction
以Drift Check
的形式保留,即只计算误差,不做任何的校准补偿。
2. Drift Check 能帮我们做到哪些事情
2.1 误差监测
我们可以在每个试次开始的时候进行Drift Check
,在实验运行过程中近乎实时地监测误差水平。
这在时长非常短的实验中可能不是必需的,但是在试次数量较大和长时程的实验中尤为重要。
这个功能实现起来是非常简单的,只需要在Trial Sequence
中,紧接着Recording Sequence
的前面加入DriftCorrection Action
即可。如下图所示:
在Drift Check
的过程中,被试机屏幕呈现如图所示:
此时需要被试盯住显示在屏幕上的校准点。与此同时,注视在主试机上按回车
或空格
测量眼动仪误差。如下图所示:
如此时误差小于1度视角
,则主试机将快速报告误差值,然后继续实验。否则将报告误差值,然后停在Drift界面
,等待主试决定下一步操作。
正如我们前一部分所说,如果在Drift过程
中发现误差过大,则不会继续进行实验,而是等待主试决定下一步应该进行什么操作。那么这里所指的操作就是——校准。
Q:
应该多久进行一次相机校准?
A:
需要多久一次就多久一次。
我们应该尽可能多地在实验中预留重新校准的机会,发现数据质量下降则立即重新校准。
那最多是多少呢?——每个试次都有一次。
这就是Drift在重新校准眼动仪中的意义。
主试在实验过程中并不可以去倒茶喝水冲咖啡,这是对自己数据不负责任的表现。
主试在实验过程中应当集中注意力监控数据质量,在数据质量不理想的情况下立即重新校准,以此将数据质量提升至最高。
2.2 休息,休息一下
对于一些特殊被试或者实验长度过长时,我们往往需要让被试在实验进行到一半的时候进行一次或多次休息。一般的做法是将实验分割成多个Block
,在编写实验程序的时候设计休息流程。例如一个实验共有180个Trial
,每60个试次组成一个Block
,在Block
之间预留3分钟的休息时间。
这种周期行的休息是必须的,但并不总能满足被试对于休息的需求。当实验任务进行到某个Block
中间的时候,被试表示自己眼睛干涩需要休息时,如何满足被试的需求呢?
毕竟,被试就是上帝!
其实方法也很简单,在下一个试次开始时的Drift环节
进入Camera Setup
,挂起实验进程,让被试的到充分的休息之后重新校准眼动仪,继续实验即可。
2.3 Cue注意
如上图左图所示,在类单行文本阅读的范式中,我们希望文字出现之前,被试的注视位置停留在红色十字光标的位置。这样当文本刺激出现之后,被试可以从句首的第一个字开始,顺序阅读。
如上图有图所示,在类视觉搜索任务中,我们希望在刺激出现之前,被试的注视位置在所有目标物所围成的圆的圆心,以保证对所有目标物的视角距离相等。
以上两种都是典型的Cue注意应用,通过调整Drift Correction
过程中校准点出现的位置,以达到将被试的注意力引导到特定位置的目的。
3. 如何实现
3.1 误差监测和休息
这一部分操作需要在主试机上完成,如下图红框所示,在Drift环节
点击Camera Setup
进入相机校准
环节即可。
3.2 Cue注意
这一部分操作的核心是设置Drift校准点
出现的位置,不要着急,我们先从Drift的属性
开始了解。
虽然这里面有很多属性,但是需要的设置的只有两个X Location
和Y Location
,我们先说这两个,剩下的稍后慢慢解释。
属性 | 解释 |
---|---|
X Location | 校准点出现的屏幕上的X方向坐标,屏幕的左边缘为0。 |
Y Location | 校准点出现的屏幕上的Y方向坐标,屏幕的上边缘为0。 |
看到这里,其实问题就已经解决了一半了,我们只需要把想要显示的位置填进属性即可。
那么问题来了,我到底应该把校准点呈现在那里呢?
对于类搜索任务,把校准点呈现在目标物所围成的圆的圆心即可,保证校准点到各个目标物的视角距离一致。通常来讲是放到屏幕的中心。
对于类阅读任务,通常会把校准点放到段首第一个字左侧0-2度视角距离的位置。当然这和语言的阅读方向有关。例如:自上而下阅读的蒙文,则需要将校准点放到段首第一个字上方0-2度视角距离的位置。
说了这么多,X Location
和Y Location
的数值究竟应该填多少呢?
在准备刺激材料的时候,其实我们是知道刺激材料所在的位置的。如下图所示,只需要将鼠标悬停在显示内容的编辑窗口中,鼠标的右下角就会提示此处的坐标。
由于截图工具的问题,没有显示鼠标。实际上我将鼠标悬停到了“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
的声音。
以上。