💥💥💞💞欢迎来到本博客❤️❤️💥💥
🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。
⛳️座右铭:行百里者,半于九十。
📋📋📋本文目录如下:🎁🎁🎁
目录
💥1 概述
参考文献:
摘要
对于人类和非人类灵长类动物来说,心率是反映个体当前生理状态的可靠指标,其应用范围从健康检查到认知和情绪状态的实验研究。在人类中,皮肤组织的光学特性的变化与心动周期(成像光电容积描记图,iPPG)相关,可以通过其代理脉搏率进行非接触式心率估计。然而,目前还没有一种既定的简单且非侵入性的技术用于清醒和有行为的动物的脉搏率测量。我们使用iPPG证明,可以从面部视频中准确估计恒河猴的脉搏率。我们从四只清醒的头部稳定的恒河猴的八段彩色面部视频中计算了iPPGs。根据iPPGs估算的脉搏率与接触式脉搏血氧计的参考数据非常一致:在83%的时间段内,脉搏率估算的误差低于个体平均脉搏率的5%;在98%的时间段内,误差低于10%。我们得出结论,iPPG允许非侵入性和非接触式估计非人类灵长类动物的脉搏率,这对于生理学研究很有用,可用于研究中的非人类灵长类动物的福利评估。
多步iPPG处理结果可实现更好的脉搏率估计在这项研究中,我们使用了一种多步骤的iPPG信号处理方法。为了证明这一点所有步骤对于脉搏率估计的质量都很重要,我们省略了某些处理步骤来估计脉搏率。这些估计的平均质量指标如所示如表6所示,可以看出只有滤波器的组合才能提高脉搏率估计。iPPG提取方法的比较迄今为止报告的所有结果都是使用G-R方法[42]进行iPPG提取获得的。我们有此外,根据CHROM [22]和POS提取的iPPG信号估计脉搏率[24]方法(iPPG处理与G-R方法相同)。图7显示G-R和POS方法的性能非常相似。CHROM的性能可能更差由于它是基于人类皮肤模型[24]的,因此需要进行额外的研究需要调整它以用于NHP中的iPPG提取。运动对iPPG质量的影响虽然我们在这里考虑了头部稳定的猴子的iPPG提取,但我们的研究对象表现出相当多的面部动作。图8说明了它们的负面影响关于iPPG提取质量:在一个时期内运动越显著,质量越低
提取的iPPG的质量。
心率是人类、非人灵长类动物(NHP)[1-3]和其他动物[4,5]的功能状态和心理情绪状态的重要指标。测量心率最常用、最直接的工具是心电图(ECG)[6]。心电图采集需要应用多个皮肤电极,即使对于人类受试者来说,这也不总是可能的[7]。NHP的心电图采集很复杂,因为传统的ECG电极需要剃光皮肤,而清醒的动物不容易容忍皮肤附着,除非经过大量训练。因此,NHP的心电图要么从镇静的动物身上采集[6,8,9],要么通过植入遥测装置并结合高度侵入性的体内传感器[10-12]。对于从非镇静的猴子身上采集非侵入性心电图,可以使用可穿戴夹克[1,13,14],但这在准备动物时也需要大量的训练和身体接触,这可能会影响生理状态。
如果感兴趣的是心率,而不是其他心电图参数,光电容积脉搏波图(PPG)是一种低成本的心电图替代方案。PPG利用皮肤反射的光的变化,这与皮肤组织微血管床中血容量的变化有关[15]。PPG可以非常准确地估计脉搏率[16-18]。对于许多应用而言,脉搏率是心率的充分代表,严格来说,后者只能通过直接的心脏测量(如心电图)来评估。传统的PPG仍然需要接触式传感器,该传感器包括用于照亮皮肤的光源和用于测量反射光强度变化的光电探测器,例如用于医用脉搏血氧计。
有人提出将成像光电容积脉搏图(iPPG)作为人类传统PPG的远程和非接触式替代方案[19-21]。iPPG是在专用[19,22-24]或环境[21,25]光下使用摄像机而不是光电探测器获得的。视频通常从手掌或面部区域录制[21-25]。
初步研究表明,有可能从麻醉动物(特别是猪)中提取iPPG[26,27]。由于iPPG可以轻松、无创地估计脉搏率,因此该技术对NHP研究非常有用。如果适用于非镇静和行为动物,例如,它可能有助于研究中所使用的NHP的福利。据我们所知,没有尝试从NHPs中获取iPPG。在本文中,我们展示了从NHP面部视频中提取iPPG,并提供了第一个经验证据,证明可以从iPPG中成功估计恒河猴的脉搏率。
【成像光敏描记图提取和处理】成像-光电容积描记-提取-脉搏率-估计
成像光电容积描记图(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 参考文献
文章中一些内容引自网络,会注明出处或引用为参考文献,难免有未尽之处,如有不妥,请随时联系删除。