EOG眼电信号(眨眼检测)

转载请注明作者和出处:https://blog.csdn.net/qq_28810395
Python版本: Python3.x
运行平台: Windows 10
IDE: Pycharm profession 2019

1、任务需求:

1、看懂程序,理解眼电数据处理;
2、把程序完善,现在eog.py是一个校准的文件
3、在此基础上,写一个检测是否有眨眼的程序

2、数据集解析:

根据程序观察对数据集数据进行了解,使用EDFbrowser软件对5个数据集进行数据观看并分析
EOG眼电信号(眨眼检测)_第1张图片
*EOG是采集的眼电信号 event是时钟打标(同步信号)
此图为病人的眼电信号数据图,眨眼动作眼电信号会进行一个赋值跳变,打标点基本把每个眨眼动作分离。

3、程序理解:

进入程序进行程序理解,代码算法实现逻辑为,首先将眼电数据进行读入,利用打标点判断进行分离,每次选取125个数据点。然后进入数据处理部分,将波峰位置、波峰值、波谷值和持续时间返回并绘制曲线。最后将所得数据进行处理(均值、标准差)建立模型。

4、EOG眼电数据(峰值、峰值位置、持续时间)检测函数

1、对传入的125个数据点进行低通滤波
EOG眼电信号(眨眼检测)_第2张图片
2、在20-98之间进行峰值位置、峰值和持续时间检测计算
EOG眼电信号(眨眼检测)_第3张图片
3、根据持续时间进行选择,持续时间过大,说明不是眨眼动作,峰值位置无效(赋值124 和1)
EOG眼电信号(眨眼检测)_第4张图片
4、最后将相关数据赋值返回

5、眨眼检测与绘图函数

眨眼检测采用了K-近邻算法(五特征值),训练数据集采用了这5套数据集进行汇总,是否眨眼根据人眼识别进行标记。训练数据集如下:
EOG眼电信号(眨眼检测)_第5张图片

50个样本数据:

*第一特征值:波峰位值、	第二特征值:波峰值、 第三特征值:波谷位值
*第四特征值:波谷值、 第五特征值:持续时间   
*标签:眨眼(1)未眨眼(0)

1、由于数据集是文本,所以添加文本处理函数:
EOG眼电信号(眨眼检测)_第6张图片
根据其三特征值的K-近邻中占比相差不大,所以未采用归一化算法进行数据处理。
2、眨眼检测——K-近邻算法实现
kNN算法是著名的模式识别统计学方法,是最好的文本分类算法之一,在机器学习分类算法中占有相当大的地位,是最简单的机器学习算法之一。算法实现为:
K-近邻算法对未知类别属性的数据集中每个数据点处理流程如下
① 计算已知类别数据集中的每个数据点与当前数据点之间的距离;
采用欧氏距离公式(两特征值):
在这里插入图片描述
② 按照距离递增次序排序;
③ 选取与当前数据点距离最小的K个数据点;
④ 确定前K个数据点所在类别的出线频率;
⑤ 发挥前K个数据点最高的类别当作当前点的预测分类;
EOG眼电信号(眨眼检测)_第7张图片
K-近邻进行分类完成后进行绘图显示:
EOG眼电信号(眨眼检测)_第8张图片
绘图结果显示:(3.13)
EOG眼电信号(眨眼检测)_第9张图片
EOG眼电信号(眨眼检测)_第10张图片
EOG眼电信号(眨眼检测)_第11张图片
EOG眼电信号(眨眼检测)_第12张图片
EOG眼电信号(眨眼检测)_第13张图片
EOG眼电信号(眨眼检测)_第14张图片

你可能感兴趣的:(脑机接口)