【成像光敏描记图提取和处理】成像-光电容积描记-提取-脉搏率-估计(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代码实现
相关文章:

【成像光敏描记图提取和处理】成像-光电容积描记-提取-脉搏率-估计(Matlab代码实现)
💥💥💞💞欢迎来到本博客❤️❤️💥💥 🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。 ⛳️座右铭&a…...

Ubuntu无法引导启动的修复
TLDR:使用Boot-Repair工具。 Boot-Repair Boot-Repair是一个简单的工具,用于修复您在Ubuntu中可能遇到的常见启动问题,例如在安装Windows或其他Linux发行版后无法启动Ubuntu时,或者在安装Ubuntu后无法启动Windows时,…...
Windows电脑上的多开软件是否安全?
在Windows电脑上使用多开软件可以让使用者同时运行多个相同或不同的程序,这对于某些需要同时操作多个账号或实例的用户来说非常有用。但是很多人担心使用多开软件是否安全。 多开软件的安全问题主要在于它们可能会破坏操作系统的稳定性和安全性,导致系统…...

U盘支持启动区+文件存储区的分区方法
准备新U盘 启动diskgenius ,先建立一个主分区(7G),剩余空间建立为第二分区,然后设定第二分区激活。 diskgenius格式化 用diskgenius格式化,在格式化的过程中有一个 写入dos系统的选项,在格式…...

JavaEE-线程进阶
模拟实现一个定时器 运行结果如下: 上述模拟定时器的全部代码: import java.util.PriorityQueue;//创建一个类,用来描述定时器中的一个任务 class MyTimerTask implements Comparable<MyTimerTask> {//任务执行时间private long …...

【开发篇】十五、Spring Task实现定时任务
文章目录 1、使用示例2、相关配置3、Scheduled注解4、Spring Task单线程下的阻塞坑5、Spring Task阻塞问题的处理思路6、Spring Task在分布式环境中 上一篇用Quartz来实现了定时任务,但相对来说,这个框架还是比较繁琐。Spring Boot默认在无任何第三方依赖…...

Python常用功能的标准代码
后台运行并保存log 1 2 3 4 5 6 7 8 9 nohup python -u test.py > test.log 2>&1 & #最后的&表示后台运行 #2 输出错误信息到提示符窗口 #1 表示输出信息到提示符窗口, 1前面的&注意添加, 否则还会创建一个名为1的文件 #最后会把日志文件输出到test.log文…...

Electron.js入门-构建第一个聊天应用程序
什么是electron 电子是一个开源框架,用于使用web技术构建跨平台桌面应用程序;即: HTML、CSS和JavaScript;被集成为节点模块,我们可以为我们的应用程序使用节点的所有功能;组件,如数据库、Api休…...
ubuntu 22.04 更新NVIDIA显卡驱动,重启后无网络图标等系统奇奇怪怪问题
环境 win10, ubuntu 22.04双系统 笔记本电脑,4060显卡 解决思路 具体的过程当时没有记录下来,然后因为在解决系统的问题,也没有截图啥的,只有一些大概记忆,供未来的自己参考吧。 首先是更新显卡驱动 我是直接在soft…...

Python综合案例:学生管理系统
目录 需求说明: 功能: 创建入口函数: 实现菜单函数: 实现增删查操作: 1. 新增学生 2. 展示学生 3. 查找学生 4. 删除学生 加入存档读档: 1. 约定存档格式 2. 实现存档函数 3. 实现读档函数 打…...

IDT 一款自动化挖掘未授权访问漏洞的信息收集工具
IDT v1.0 IDT 意为 Interface detection(接口探测) 项目地址: https://github.com/cikeroot/IDT/该工具主要的功能是对批量url或者接口进行存活探测,支持浏览器自动打开指定的url,避免手动重复打开网址。只需输入存在批量的url文件即可。 …...

复习 --- 消息队列
进程间通信机制(IPC) 简述 IPC:Inter Process Communication 进程和进程之间的用户空间相互独立,但是4G内核空间共享,进程间的通信就是通过这4G的内核空间 分类 传统的进程间通信机制 无名管道(pipe) 有名管道&…...
AcWing 288. 休息时间,《算法竞赛进阶指南》
288. 休息时间 - AcWing题库 在某个星球上,一天由 N 个小时构成,我们称 0 点到 1 点为第 1 个小时、1 点到 2 点为第 2 个小时,以此类推。 在第 i 个小时睡觉能够恢复 Ui 点体力。 在这个星球上住着一头牛,它每天要休息 B 个小…...
ES6中字符串的扩展
字符串的遍历器接口 使用for…of for(let x of foo) {console.log(x); } // f; o; oat() ES5中的charAt()方法,返回字符串给定位置的字符。但是不能识别码点大于0xFFFF的字符,at方法可以 includes()、startsWith()、endsWith() 用来确定一个字符串是…...

GEO生信数据挖掘(四)数据清洗(离群值处理、低表达基因、归一化、log2处理)
检索到目标数据集后,开始数据挖掘,本文以阿尔兹海默症数据集GSE1297为例 目录 离群值处理 删除 低表达基因 函数归一化,矫正差异 数据标准化—log2处理 完整代码 上节围绕着探针ID和基因名称做了一些清洗工作,还做了重复值检查…...

CI/CD工具中的CI和CD的含义
CI/CD工具中的CI和CD的含义? CI/CD 是现代软件开发方法中广泛使用的一种方法。其中,CI 代表持续集成(Continuous Integration),CD 则有两层含义,一是持续交付(Continuous Delivery)…...

用go获取IPv4地址,WLAN的IPv4地址,本机公网IP地址详解
文章目录 获取IPv4地址获取WLAN的IPv4地址获取本机公网IP地址 获取IPv4地址 下面的代码会打印出本机所有的IPv4地址。这个方法可能会返回多个IP地址,因为一台机器可能有多个网络接口,每个接口可能有一个或多个IP地址。 package mainimport ("fmt&…...

Android自定义Drawable---灵活多变的矩形背景
Android自定义Drawable—灵活多变的矩形背景 在安卓开发中,我们通常需要为不同的按钮设置不同的背景以实现不同的效果,有时还需要这些按钮根据实际情况进行变化。如果采用编写resource中xml文件的形式,就需要重复定义许多只有微小变动的资源…...

ParagonNTFSforMac_15.5.102中文版最受欢迎的NTFS硬盘格式读取工具
Paragon NTFS for Mac是一款可以为您轻松解决Mac平台上不能识别Windows通用的NTFS文件难题,这是一款强大的Mac读写工具,相信在很多时候,Mac用户需要对NTFS文件的移动硬盘进行写入,但是macOS系统默认是不让写入的,使用小…...
Kafka 搭建过程
目录 1.关于Kafka2.Kafka 搭建过程3.参考 本文主要介绍Kafka基本原理,以及搭建过程。 1.关于Kafka Apache Kafka是一个开源的分布式事件流平台,被设计用来实现实时数据流的发布、订阅、存储和处理。 Kafka的主要特性包括: 高吞吐量&#x…...
Linux链表操作全解析
Linux C语言链表深度解析与实战技巧 一、链表基础概念与内核链表优势1.1 为什么使用链表?1.2 Linux 内核链表与用户态链表的区别 二、内核链表结构与宏解析常用宏/函数 三、内核链表的优点四、用户态链表示例五、双向循环链表在内核中的实现优势5.1 插入效率5.2 安全…...
基于数字孪生的水厂可视化平台建设:架构与实践
分享大纲: 1、数字孪生水厂可视化平台建设背景 2、数字孪生水厂可视化平台建设架构 3、数字孪生水厂可视化平台建设成效 近几年,数字孪生水厂的建设开展的如火如荼。作为提升水厂管理效率、优化资源的调度手段,基于数字孪生的水厂可视化平台的…...
WEB3全栈开发——面试专业技能点P2智能合约开发(Solidity)
一、Solidity合约开发 下面是 Solidity 合约开发 的概念、代码示例及讲解,适合用作学习或写简历项目背景说明。 🧠 一、概念简介:Solidity 合约开发 Solidity 是一种专门为 以太坊(Ethereum)平台编写智能合约的高级编…...

多模态大语言模型arxiv论文略读(108)
CROME: Cross-Modal Adapters for Efficient Multimodal LLM ➡️ 论文标题:CROME: Cross-Modal Adapters for Efficient Multimodal LLM ➡️ 论文作者:Sayna Ebrahimi, Sercan O. Arik, Tejas Nama, Tomas Pfister ➡️ 研究机构: Google Cloud AI Re…...

uniapp 小程序 学习(一)
利用Hbuilder 创建项目 运行到内置浏览器看效果 下载微信小程序 安装到Hbuilder 下载地址 :开发者工具默认安装 设置服务端口号 在Hbuilder中设置微信小程序 配置 找到运行设置,将微信开发者工具放入到Hbuilder中, 打开后出现 如下 bug 解…...

[论文阅读]TrustRAG: Enhancing Robustness and Trustworthiness in RAG
TrustRAG: Enhancing Robustness and Trustworthiness in RAG [2501.00879] TrustRAG: Enhancing Robustness and Trustworthiness in Retrieval-Augmented Generation 代码:HuichiZhou/TrustRAG: Code for "TrustRAG: Enhancing Robustness and Trustworthin…...
加密通信 + 行为分析:运营商行业安全防御体系重构
在数字经济蓬勃发展的时代,运营商作为信息通信网络的核心枢纽,承载着海量用户数据与关键业务传输,其安全防御体系的可靠性直接关乎国家安全、社会稳定与企业发展。随着网络攻击手段的不断升级,传统安全防护体系逐渐暴露出局限性&a…...
13.10 LangGraph多轮对话系统实战:Ollama私有部署+情感识别优化全解析
LangGraph多轮对话系统实战:Ollama私有部署+情感识别优化全解析 LanguageMentor 对话式训练系统架构与实现 关键词:多轮对话系统设计、场景化提示工程、情感识别优化、LangGraph 状态管理、Ollama 私有化部署 1. 对话训练系统技术架构 采用四层架构实现高扩展性的对话训练…...

SQL注入篇-sqlmap的配置和使用
在之前的皮卡丘靶场第五期SQL注入的内容中我们谈到了sqlmap,但是由于很多朋友看不了解命令行格式,所以是纯手动获取数据库信息的 接下来我们就用sqlmap来进行皮卡丘靶场的sql注入学习,链接:https://wwhc.lanzoue.com/ifJY32ybh6vc…...
算法250609 高精度
加法 #include<stdio.h> #include<iostream> #include<string.h> #include<math.h> #include<algorithm> using namespace std; char input1[205]; char input2[205]; int main(){while(scanf("%s%s",input1,input2)!EOF){int a[205]…...