基于MATLAB的人眼跟踪数据滤波

基于MATLAB的人眼跟踪数据滤波,matlab,filtering,Matlab,Filtering,我在1920x1080平面上以2000Hz的频率采集了45000个x-y像素坐标样本的眼球跟踪数据 眼睛的速度(扫视)如下图所示,包含高频噪声。x轴包含时间,y轴是速度/眼跳(我忘了标签) 我想以这样的方式过滤掉噪声:峰值之间的值为0,峰值不包含噪声,也不丢失振幅 后者我可能通过定位峰值并简单地在其开始位置和结束位置之间插值来实现,因为我只需要峰值及其宽度。然而,这并不是一个真正优雅的选择 我很好奇是否有一种聪明或优雅的方式来做这件事。我尝试了巴特沃斯滤波器,但这会降低峰值振幅。不可能保持峰值

我在1920x1080平面上以2000Hz的频率采集了45000个x-y像素坐标样本的眼球跟踪数据

眼睛的速度(扫视)如下图所示,包含高频噪声。x轴包含时间,y轴是速度/眼跳(我忘了标签)

我想以这样的方式过滤掉噪声:峰值之间的值为0,峰值不包含噪声,也不丢失振幅

后者我可能通过定位峰值并简单地在其开始位置和结束位置之间插值来实现,因为我只需要峰值及其宽度。然而,这并不是一个真正优雅的选择


我很好奇是否有一种聪明或优雅的方式来做这件事。我尝试了巴特沃斯滤波器,但这会降低峰值振幅。

不可能保持峰值振幅不变,因为它们也会被高频噪声破坏。我认为你有两种选择来滤除噪音


  • 您必须使用这两种方法来确定哪种方法更适合您的需要,并使扫视速度振幅基本保持不变。

    试试savitzky golay。或者,异常值检测可能会起作用?