Mahnob-HCI-tagging数据集简介

Mahnob-HCI-tagging database是由Jeroen Lichtenauer等人采集的数据集,包含心率信号、人脸视频等信息。该数据集的采集过程由Tobii studio software控制,整体采集设备如下图所示(图片摘自数据集官网manual):

该数据集中包含30位不同种族、不同教育背景、不同性别的健康成年志愿者的相关信息。这其中,共有17位女士、13位男士,年龄范围涉及19岁到40岁(均值为26.06,标准差为4.39)。

在数据的采集中,采集镜头包含一个处于受测者正前方的彩色镜头和五个处于不同方位的单色镜头。这些镜头将记录受测者的面部表情和头部姿势。关于这些相机的内参可在官网提供的manual上查到。

在数据集中,心率信息包括ECG、EEG(32个通道)、呼吸幅度、皮肤温度等信息。这些信号以Biosemi data format(BDF)的格式存储,这种文件格式可由EEGLAB、Matlab、EDFBrowser等读取。这里,我们将介绍如何以Python读取BDF文件。

BDF文件的Python读取

首先需要明确的是BDF文件中存储了什么信息。如下表所示,我们可以看到该文件中在不同通道中分别存储了EXG、GSR、Temp等信号,而有些通道则未被使用。

确定了要读取的信号名称后,我们需要在Python中调用pyedflib等包:

import numpy as np
import pyedflib

具体读取代码如下:

def LoadBDF(bdf_file, name = "EXG2", start = None, end = None):with pyedflib.EdfReader(bdf_file) as f:status_index = f.getSignalLabels().index('Status')sample_frequency = f.samplefrequency(status_index)status_size = f.samples_in_file(status_index)status = np.zeros((status_size, ), dtype = 'float64')f.readsignal(status_index, 0, status_size, status)status = status.round().astype('int')nz_status = status.nonzero()[0]video_start = nz_status[0]video_end = nz_status[-1]index = f.getSignalLabels().index(name)sample_frequency = f.samplefrequency(index)video_start_seconds = video_start / sample_frequencyif start is not None:start += video_start_secondsstart *= sample_frequencyif start < video_start:start = video_startstart = int(start)else:start = video_startif end is not None:end += video_start_secondsend *= sample_frequencyif end > video_end:end = video_endend = int(end)else:end = video_endPhysicalMax = f.getPhysicalMaximum(index)PhysicalMin = f.getPhysicalMinimum(index)DigitalMax = f.getDigitalMaximum(index)DigitalMin = f.getDigitalMinimum(index)scale_factor = (PhysicalMax - PhysicalMin) / (DigitalMax - DigitalMin)dc = PhysicalMax - scale_factor * DigitalMaxcontainer = np.zeros((end - start, ), dtype = 'float64')f.readsignal(index, start, end - start, container)container = container * scale_factor + dcreturn container, sample_frequency

以上代码中,startend分别表示读取信号的起始时刻点,bdf_file则是BDF文件的完整路径。

当我们读取了相应的心率信息后,我们便可以使用PchipInterpolator、Butterworth filter等对它们进行处理了。

数据获取方法

此处给出一种常规获取数据的方法:

  • 官网获取,可以点击进入以下网址:https://mahnob-db.eu/hci-tagging/accounts/register/,点击左边的download eula,填好后在右边上传注册即可。数据提供方会在审核你所提交的资料后以邮件形式发送用户名和密码。

MAHNOB-HCI-TAGGING DATABASE中BDF文件的Python读取相关推荐

  1. java中属性文件读取案例_java相关:Spring中属性文件properties的读取与使用详解

    java相关:Spring中属性文件properties的读取与使用详解 发布于 2020-6-3| 复制链接 摘记: Spring中属性文件properties的读取与使用详解实际项目中,通常将一些 ...

  2. python将文件另存为,python读取文件另存为

    解决 python 读取文件乱码问题(UnicodeDecodeError) 解决 python 读取文件乱码问题(UnicodeDecodeError) 确定你的文件的编码,下面的代码将以'utf- ...

  3. python中读取文件内容-Python读取文件内容与存储

    Python读取与存储文件内容 一..csv文件 读取: importpandas as pd souce_data= pd.read_csv(File_Path) 其中File_path是文件的路径 ...

  4. c++ 按行读取txt文件并赋值_python操作txt文件中数据教程[3]python读取文件夹中所有txt文件并将数据转为csv文件...

    觉得有用的话,请点击右下角 推荐给更多小伙伴 neoken_xuAsurada2015Evacloud 参考文献 python 操作 txt 文件中数据教程[1]-使用 python 读写 txt 文 ...

  5. java中的文件操作:读取写入byte[]字节流、string字符串、list列表

    全栈工程师开发手册 (作者:栾鹏) java教程全解 java中文件操作:读取文件成字节流,将字节流写入文件,按行读取文件成字符串列表,将字符串列表存储成文件,读取文件成字符串,将字符串写入文件. 主 ...

  6. python中的文件操作:读取、写入、追加、关闭

    1.open()函数,用于文件的读取和创建,常用的格式如下: file = open(file_name [, mode='r' [ , buffering=-1 [ , encoding = Non ...

  7. python中读取文件内容-Python读取文件内容的三种常用方式及效率比较

    本文实例讲述了Python读取文件内容的三种常用方式.分享给大家供大家参考,具体如下: 本次实验的文件是一个60M的文件,共计392660行内容. 程序一: def one(): start = ti ...

  8. python中0xff_强悍的Python读取大文件的解决方案

    这是一道著名的 Python 面试题,考察的问题是,Python 读取大文件和一般规模的文件时的区别,也即哪些接口不适合读取大文件. 1. read() 接口的问题 f =open(filename, ...

  9. python读取大文件-使用Python读取大文件的方法

    背景 最近处理文本文档时(文件约2GB大小),出现memoryError错误和文件读取太慢的问题,后来找到了两种比较快Large File Reading 的方法,本文将介绍这两种读取方法. 准备工作 ...

最新文章

  1. 13装饰器和内置函数
  2. 关于Taptic Engine震动反馈
  3. 2013上半年-学习目录
  4. CI框架json无法Unicode转中文解决方案
  5. java继承类型的用法_详解Java中使用externds关键字继承类的用法
  6. SAP CRM WebClient UI里的文件是如何上传到ABAP Netweaver后台的
  7. java random用法_JAVA面试题(1)
  8. 如何设置(样式渐变)transition
  9. xForm应用开发手册
  10. MyCat分布式数据库集群架构工作笔记0013---高可用_Mycat双主双从复制配置上
  11. JS打开新窗口(window.open() 、href)
  12. node.js setup wizard ended prematurely 失败解决方法
  13. 将电脑的无线网通过有线分享给其他设备
  14. mac 国家税务总局发票不显示验证码
  15. 清歌输入法 for Mac(最好用的五笔输入法
  16. 计算摄影:相机成像流程 —— ISP
  17. 用AI视觉芯片打造舱内舱外全开放解决方案
  18. Linux kernel panic 问题解决方案
  19. 消防工程师 8.3 防排烟系统-排烟
  20. 为什么说电销企业需要智能电销系统原因?

热门文章

  1. 基于 Ubuntu 20.04 系统 部署 NetBox
  2. Eclipse显示空格,换行符等
  3. android 11短信应用添加图片附件,旋转问题
  4. 《中国网络营销年鉴》:国美电器之微博营销广告位一键转发
  5. 如何使用nginx实现7层代理
  6. 电子邮件的POP3/SMTP/IMAP服务
  7. 基于linux+windows Qt+Mysql 开发的在线答题系统
  8. Unity使用设置界面Slider控制音量,场景切换时音量滑条都不改变
  9. 快速应用计算机制作pop,【爆炸贴图片手绘字体】爆炸贴手绘技巧
  10. Jmeter进行压力测试的一个案例