你的位置:首页 >> 产品展示 >> 医疗器械 >> 眼科  眼科
最后,当导入器接收到下一个视频帧时,基于前一帧的椭球拟合中心重新估计瞳孔和角膜反射位置。在瞳孔/角膜反射的位置在帧之间过度偏离的情况下,例如,由于闪烁,EyeLoop依赖于基于霍夫变换的稳健但计算更昂贵的椭圆检测算法:根据位置、大小和像素分布选择最可能的椭圆。如果没有检测到合适的椭球体,例如,由于眼睛闭合,则帧被标记为闪烁。当检测到合适的椭球体时,瞳孔中心被重置,并且EyeLoop的轮廓检测被再次
来源:TEKSCAN_压力发电膜_piezoelectricity_压力发电_压力发电膜鞋_压力发电机_薄膜压力发电热电堆传感器厂家_热释电红外传感器_热电堆传感器应用电路_台湾热电堆传感器原厂_热电堆传感器应用_热电堆 电路_热释电红外传感器工作原理及结构说明_热释电传感器_红外传感器 | 发布时间:2024/1/20 19:23:50 | 浏览次数:

在接收到视频帧后,通过高斯过程对其进行二值化、滤波和平滑(图1A2,3)。虽然EyeLoop基于像素分布为视频帧阈值化和滤波提供了估计的初始参数集,但用户通常需要优化参数集以获得理想的处理条件,例如高对比度和平滑轮廓。这是使用关键命令完成的,请参见补充材料中的默认图形用户界面。

 

接下来,通过用户输入手动选择角膜光反射和瞳孔的坐标(图1A2-4)。基于该初始位置估计,EyeLoop基于Sakatani和Isa(2004)迭代走出法的新变体来检测瞳孔和角膜反射的轮廓。我们的矢量化算法从图像矩阵中提取四个主轴和x对角线(其中x可以是任何整数)。具体地,根据定义D=dmi,nj,由可变步长m和n给出对角线。主轴和对角线被映射到布尔矩阵上,布尔矩阵用于屏蔽阈值视频馈送。这提供了视频帧矩阵的目标“阵列视图”,可以针对二进制条件进行测试以检测边缘。由于瞳孔由阈值变换中的白色像素组成(值=1),因此阵列视图中第一次出现的黑色像素(0)将返回为边缘位置。这是通过Python模块NumPy实现的:

 

对角线边缘=numpy.argwhere(视频[对角线掩码]==0)

因此,瞳孔/角膜反射轮廓的检测被简化为重复的矩阵计算(提取视图、测试二进制条件、返回轮廓点等),这些计算可以在高级用例的运行期间分布在多个中央处理单元(CPU)核心上。与传统的迭代方法相比,我们的矢量化方法使计算操作能够在优化良好的C代码中运行,这大大提高了其效率。同样,矢量化的方法很容易移植到高效的低级别机器代码,例如通过Numba。

 

走样算法生成沿椭球轮廓的点矩阵,随后根据每个点与平均值的距离对其进行滤波(图1B)。具体来说,EyeLoop计算轮廓矩阵的平均值、每个点与该平均值的差,以及距离集与平均值的标准差。与平均值相差超过1个标准偏差的点将被丢弃。由于平均值接近瞳孔的中心,可以通过增加数据点的数量(通过改变对角线步长)来提高滤波性能。一般来说,更多的数据点提供了更好的跟踪精度,而跟踪速度略有下降。EyeLoop为本文生成的数据基于32个轮廓点,这也是默认设置。对于高达300×300的视频帧大小,这个数字在速度和精度之间取得了平衡。在较大的视频帧尺寸下,轮廓点的数量也应该增加,以考虑视频坐标中较大的瞳孔周长。

 

接下来,将轮廓点勾勒出的椭球体参数化并建模为一般椭球形状(适用于离轴记录、猫、啮齿动物等)(Halır和Flusser,1998;White等人,2010;Hammel和Sullivan Molina,2019)或完美圆(人类、非人类灵长类动物、啮齿动物等的轴上记录)(Kanatani和Rangarajan,2011)。值得注意的是,在视觉障碍明显的情况下,例如眼睑、胡须和阴影,EyeLoop可能会受益于更严格的完美圆拟合。另一方面,当眼睛明显偏离轴拍摄时,瞳孔的视频失真可能会使一般的椭球体拟合更合适(Šwirski等人,2012)。因此,拟合算法的选择超出了动物物种的范围(Banks等人,2015),还应包括对视频条件的考虑,尤其是相机角度的考虑(Šwirski等人,2012)。我们对本文的所有数据都使用了圆形跟踪,因为相机角度在轴上(正交),瞳孔形状是圆形(小鼠、人类、灵长类动物)。补充视频1、2提供了人类和非人类灵长类动物的数据。最后,当导入器接收到下一个视频帧时,基于前一帧的椭球拟合中心重新估计瞳孔和角膜反射位置。在瞳孔/角膜反射的位置在帧之间过度偏离的情况下,例如,由于闪烁,EyeLoop依赖于基于霍夫变换的稳健但计算更昂贵的椭圆检测算法:根据位置、大小和像素分布选择最可能的椭圆。如果没有检测到合适的椭球体,例如,由于眼睛闭合,则帧被标记为闪烁。当检测到合适的椭球体时,瞳孔中心被重置,并且EyeLoop的轮廓检测被再次应用。

 

总之,这种矢量化的混合算法方法使EyeLoop能够以每秒1000帧以上的速度持续运行,仅由CPU操作。相比之下,CPU上的尖端深度学习方法目前的峰值速度接近每秒50帧(Mathis和Warren,2018)。

 

后果

EyeLoop与DeepLabCut

DeepLabCut是一种新的用于无标记姿态估计的深度神经网络方法(Nath et al.,2019),越来越多地应用于眼睛跟踪(Meyer et al.,2020)。由于其高精度和鲁棒性,DeepLabCut为EyeLoop提供了一个出色的眼睛跟踪参考。DeepLabCut的主要缺点是其硬件密集性,需要专用的处理单元进行实时操作(Mathis和Warren,2018)。此外,DeepLabCut的初始设置非常耗时,通常需要几个小时的手动图像标记和随后的神经网络训练。相比之下,EyeLoop在通用CPU上以非常高的速度运行,只需最少的初始设置(图2)。

 

图2:

www.frontiersin.org

图2。EyeLoop与DeepLabCut眼动追踪相比。(A) 示意图比较。DeepLabCut需要经过几个步骤的设置才能启动跟踪。在CPU上使用DeepLabCut进行眼动追踪的频率限制为~50 Hz。相比之下,EyeLoop需要最少的设置,并且在CPU上以大于1000 Hz的速度运行。(B) 数据比较。EyeLoop和DeepLabCut产生了类似的数据,尽管计算负载存在显著差距。绿色线和紫色线分别是EyeLoop和DeepLabCut数据。红色和灰色线条分别是EyeLoop和DeepLabCut的帧速率。

 

为了生成参考数据集,我们训练了DeepLabCut神经网络来检测瞳孔周围的8个点。然后,我们将一个椭球体拟合到DeepLabCut的数据点上,通过目视检查确认这些数据点具有理想的眼睛跟踪精度。图2B和补充视频3所示的比较显示,DeepLabCut和EyeLoop的眼动追踪数据在绝对坐标(0.015±0.518 px)和椭球拟合(0.357±0.438 px2)方面具有高度相似性。一般来说,与DeepLabCut相比,EyeLoop略微低估了椭球面积。其原因如图1B所示:由于EyeLoop通过过滤遮挡周围的数据点来优化其轮廓检测,因此其固有地倾向于低估真实的瞳孔轮廓。这种低估可以通过增加数据点的数量来最小化。值得注意的是,在这里介绍的情况下,EyeLoop使用32个数据点来提取瞳孔轮廓——在速度和精度之间取得了良好的平衡——而DeepLabCut只需要8个点就足够了。这种数量上的差异是由DeepLabCut在检测图像特征,特别是瞳孔的真实外部轮廓时的一般鲁棒性来解释的,而忽略了虚假轮廓,例如眼睑重叠或反射。由于EyeLoop基于更具体的算法,它受益于更高数量的标记,以减少噪声和障碍物造成的伪影。

 
TAG:
打印本页 || 关闭窗口
 上一篇:视觉刺激
 下一篇:研究眼睛在大脑过程中的作用