【成像光敏描记图提取和处理】成像-光电容积描记-提取-脉搏率-估计(Matlab代码实现)

 💥💥💞💞欢迎来到本博客❤️❤️💥💥

🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。

⛳️座右铭:行百里者,半于九十。

📋📋📋本文目录如下:🎁🎁🎁

目录

💥1 概述

📚2 运行结果

🎉3 参考文献

🌈4 Matlab代码实现


💥1 概述

【成像光敏描记图提取和处理】成像-光电容积描记-提取-脉搏率-估计

成像光电容积描记图(iPPG)是一种用于远程非接触式脉搏率测量的技术。iPPG通常从面部或手掌视频中获取。
该软件包提供了用于iPPG信号提取和处理的工具。来自[1]的恒河猴iPPG数据被用作测试数据集。
输入:视频文件。
输出:iPPG信号;估计脉搏率。
内容:
1.extract_color_channels_from_video从视频中提取颜色信号。颜色信号计算为每个视频帧的红色、绿色和蓝色分量值,这些分量在感兴趣区域 (ROI) 上取平均值。ROI可以手动选择第一帧(如果预计只有有限的运动量)或使用Viola-Jones算法自动设置(仅用于从人脸中提取iPPG!此功能可以选择从 ROI 中排除非皮肤和损坏的像素。
2. compute_ippg实施了[2]中考虑的iPPG提取方法(包括最近引入的CHROM和POS方法)以及一些iPPG预处理和后处理技术。
3. ippg_extraction_example - 使用软件包从视频中提取的iPPG估计脉搏率的基本(最小)示例。
4. dataset_analysis - 将包用于 [1] 中的数据的扩展示例。
5. 作为单独的 m 文件实现的信号处理技术:wavelet_filter、wavelet_init_scales、smoothness_priors_detrending、std_sliding_win。
6. 根据iPPG信号估计脉率的功能:
6.1.DFT_pulse_rate_estimate使用离散傅里叶变换来计算平均脉搏率。
6.2. wavelet_pulse_rate_estimate使用连续小波变换来估计脉搏率。
7. 用于比较基于 iPPG 的脉搏率与基本事实的有用函数:
7.1.bland_altman_plot - 绘制数据的平淡阿尔曼图。
7.2. compute_SNR - 计算给定真实脉冲速率的 iPPG 信号的信噪比 (SNR)。
7.3. assess_estimation_performance - 计算许多估计质量指标,包括均方根误差、平均绝对误差、皮尔逊相关等
8.数据集文件夹包含用于测试包的数据集。数据集是从恒河猴记录的,因此脉搏率高于人类(100-250 BPM),详情请参考[1]。
9. dataset_description.docx包含数据集的简要说明。

📚2 运行结果

部分代码:

%number of frames nearest to the fftWindow/2 and corresponding to integer number of seconds in video
DFT_WINDOW_SHIFT = [ 510, 510, 500, 1000, 500, 500, 500, 500, 510, 1000, 500];                     finalPPG = cell(nFile, 1);shareErrorBelow3p5BPM = cell(nFile, 1);
shareErrorBelow7BPM = cell(nFile, 1);
corrCoef = cell(nFile, 1);
meanError = cell(nFile, 1);
rmse = cell(nFile, 1);
stdError = cell(nFile, 1);
snr = cell(nFile, 1);
corrPvalue = cell(nFile, 1);%variables for motion estimation
nBins = {6,8,6,4,6,4,8,6,1,1,1};  % optimal number of bins for computing SNR (selected based on estimation errors)
motionData = cell(nFile, 1);
errorForMotion = cell(nFile, 1);
startPosForMotion = cell(nFile, 1);
endPosForMotion = cell(nFile, 1);
dFreqMotion = cell(nFile, 1);nSubject = length(unique(SUBJECT_INDEX));
subjectHRtrue = cell(nSubject, 1);
subjectHRestimate = cell(nSubject, 1);
subjectSessionIndex = cell(nSubject, 1);hrTrue = cell(1, nFile);
hrEstimated = cell(1, nFile);
xt = cell(1, nFile);% estimate pulse rates for the dataset and evaluation of estimates' performance 
for iFile = 1:nFile% set iPPG parameters for each file

%number of frames nearest to the fftWindow/2 and corresponding to integer number of seconds in video
DFT_WINDOW_SHIFT = [ 510, 510, 500, 1000, 500, 500, 500, 500, 510, 1000, 500];                     

finalPPG = cell(nFile, 1);

shareErrorBelow3p5BPM = cell(nFile, 1);
shareErrorBelow7BPM = cell(nFile, 1);
corrCoef = cell(nFile, 1);
meanError = cell(nFile, 1);
rmse = cell(nFile, 1);
stdError = cell(nFile, 1);
snr = cell(nFile, 1);
corrPvalue = cell(nFile, 1);

%variables for motion estimation
nBins = {6,8,6,4,6,4,8,6,1,1,1};  % optimal number of bins for computing SNR (selected based on estimation errors)
motionData = cell(nFile, 1);
errorForMotion = cell(nFile, 1);
startPosForMotion = cell(nFile, 1);
endPosForMotion = cell(nFile, 1);
dFreqMotion = cell(nFile, 1);

nSubject = length(unique(SUBJECT_INDEX));
subjectHRtrue = cell(nSubject, 1);
subjectHRestimate = cell(nSubject, 1);
subjectSessionIndex = cell(nSubject, 1);
  
hrTrue = cell(1, nFile);
hrEstimated = cell(1, nFile);
xt = cell(1, nFile);

% estimate pulse rates for the dataset and evaluation of estimates' performance 
for iFile = 1:nFile
  % set iPPG parameters for each file

🎉3 参考文献

文章中一些内容引自网络,会注明出处或引用为参考文献,难免有未尽之处,如有不妥,请随时联系删除。

 [1] Unakafov AM, Moeller S, Kagan I, Gail A, Treue S, Wolf F. 使用成像光电容积脉搏波法估计非人灵长类动物的心率。公共科学图书馆一号2018;13(8):e0202581。Using imaging photoplethysmography for heart rate estimation in non-human primates | PLOS ONE
[2] 乌纳卡福夫 AM.使用成像光电容积描记法估计脉搏波:通用框架和公开数据集上的方法比较。生物医学物理与工程快报。2018;4(4):045001.

🌈4 Matlab代码实现

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/125007.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Flutter笔记:手写并发布一个人机滑动验证码插件

Flutter笔记 手写一个人机滑块验证码 作者:李俊才 (jcLee95):https://blog.csdn.net/qq_28550263 邮箱 :291148484163.com 本文地址:https://blog.csdn.net/qq_28550263/article/details/133529459 写 Flut…

System Generator初体验FIR滤波器

文章目录 前言一、介绍1、目标2、过程 二、步骤 1&#xff1a;在 FPGA 中创建设计1、打开 Lab1_1.slx 文件2、运行仿真3、使用 System Generator 创建 FIR 滤波器<1>、从库浏览器寻找需要的模块<2>、配置系统生成器块<3>、在 FPGA 上实现设计 三、步骤 2&…

线程的详解

创建状态 就绪状态 阻塞状态 运行状态 死亡状态 常用方法 setPriority(ing newPriority) 更改线程的优先级 sleep(long millis) 在指定的毫秒数内让当前正在执行的线程休眠 join() 等待该线程终止 yield() 暂停当前正在执行的线程对象&#xff0c;并执行其他线程 inte…

【Linux进行时】进程地址空间

进程地址空间 例子引入&#xff1a; 我们在讲C语言的时候&#xff0c;老师给大家画过这样的空间布局图&#xff0c;但是我们对它不了解 我们写一个代码来验证Linux进程地址空间 #include<stdio.h> #include<assert.h> #include<unistd.h> int g_value100; …

Chrome之解决DevTools: Failed to load data:No resource with given identifier found

问题 使用DevTools抓包时候, 有些跨域请求无法在加载出来, 提示 Failed to load data:No resource with given identifier found 解决办法 换其他浏览器 下断点 打开DevTools, 选择源代码/来源/Sources,找到事件监听器断点/Event Listener Breakpoints, 找到加载/Load下面…

<学习笔记>从零开始自学Python-之-常用库篇(十二)Matplotlib

Matplotlib 是Python中类似 MATLAB的绘图工具&#xff0c;Matplotlib是Python中最常用的可视化工具之一&#xff0c;可以非常方便地创建2D图表和一些基本的3D图表&#xff0c;可根据数据集&#xff08;DataFrame&#xff0c;Series&#xff09;自行定义x,y轴&#xff0c;绘制图…

云可观测性安全平台——掌动智能

云可观测性安全平台是一个跨架构、跨平台的可观测性方案&#xff0c;实现对云环境下的细粒度数据可视化&#xff0c;满足安全部门对云内部安全领域的多场景诉求&#xff0c;包括敏感数据动态监管、云网攻击回溯分析、攻击横移风险监控、云异常流量分析。本文将介绍掌动智能云可…

【ldt_struct】0ctf2021-kernote

前言 题目给的文件系统是 ext4&#xff0c;所以我们只需要将其挂载即可使用&#xff1a; 1、创建一个空目录 2、使用 mount 将其挂载即可 3、使用 umount 卸载即可完成打包 开启了 smap、smep、kaslr 和 kpti 保护&#xff0c;并且给了如下内核编译选项&#xff1a; Her…

java web+Mysql e-life智能生活小区物业管理系统

本项目为本人自己书写&#xff0c;主要服务小区业主和管理人员。 e-life智能生活小区涉及多个方面的智能化和便利化服务&#xff1a; 1. 用户模块&#xff1a;包含基本的登入登出操作&#xff0c;查看个人信息中用户可以查看 自己的个人资料但不可以修改个人信息。 a) 用户…

聊聊分布式架构——序列化和反序列化

目录 序列化与反序列化 为什么需要序列化 常见的序列化方式 java的序列化示例 transient排除序列化 Java序列化的简单总结 序列化与反序列化 序列化就是把对象的状态信息转化为可存储或传输的形式过程&#xff0c;也就是把对象转化为字节序列的过程称为对象的序列化。 反…

Docker快速搭建漏洞靶场指南

user: admin passwrod&#xff1a;password 查看容器是否已开启&#xff1a; 最常见漏洞&#xff1a; 防护级别提高后&#xff1a; 更改防护级别&#xff1a; 复现vulhub漏洞靶场&#xff1a; 开启&#xff1a; 一个是漏洞类型一个是真实的漏洞靶场。

去雨去雪去雾算法之本地与服务器的TensorBoard使用教程

在进行去雨去雾去雪算法实验时&#xff0c;需要注意几个参数设置&#xff0c;num_workers只能设置为0&#xff0c;否则会报各种稀奇古怪的错误。 本地使用TensorBoard 此外&#xff0c;发现生成的文件是events.out.tfevents格式的&#xff0c;查询了一番得知该文件是通过Tens…