使用车辆座椅上压电传感器无创检测呼吸和心率(续)附代码验证

3. 实验结果

图 4显示了来自频率分析数据处理技术的示例 RR 和 HR 时间过程。虽然从座椅传感器计算的 RR 和 HR 波动大于参考率,但它们通常与预期值一致。在图 4中,RR 在 1000 秒左右下降,座椅传感器能够检测到这一点。
使用车辆座椅上压电传感器无创检测呼吸和心率(续)附代码验证_第1张图片
图 5中的箱线图总结了所有 11 名参与者的数据,显示座椅传感器结果的分布较大,但 30 分钟内的平均值相当。仅显示频率分析的结果。30 分钟内的平均 RR 和 HR 被认为是参与者的静息率。表 2列出了 11 名参与者的静息率,并与图 5中的箱线图相对应。如表 2所示,对于 11 名参与者中的 10 名,座椅传感器和 Neulog 之间在静息 RR 方面的差异低于我们的 4-brpm 目标。对于静息心率,所有参与者的差异均小于我们的 15-bpm 目标,如表 2所示. 静息 RR 和静息 HR 的 Bland-Altman 图如图 6所示。这些图显示了静息 RR 和 HR 差异的下降趋势,这些差异是通过拟合数据线来测试的。RR 拟合线的斜率为 -0.57 ( p = 0.0111),R 2 = 0.53。对于 HR,斜率为 -1.16 ( p = 0.0039),R 2 = 0.62。这些显着的斜率表明存在系统误差,较低的平均值存在正差异,而较高的平均值存在负差异,如图 6所示。将来自座椅传感器 FFT 的静止 RR 回归到来自 Neulog 的静止 RR 的 RMSE 为 1.6 和 R 20.72。对来自 Neulog 的静止 HR 的座椅传感器 FFT 的静止 HR 进行回归,得到 8.4 的 RMSE 和 0.21 的 R 2。
使用车辆座椅上压电传感器无创检测呼吸和心率(续)附代码验证_第2张图片

图 5. 30 分钟数据收集过程中所有 11 名参与者的频率分析技术得出 的呼吸 ( a ) 和心脏 ( b ) 速率箱线图。
使用车辆座椅上压电传感器无创检测呼吸和心率(续)附代码验证_第3张图片
图 6.静息 RR ( a ) 和静息 HR ( b ) 的 Bland-Altman 图。座椅传感器和 Neulog 之间的差异超过了两种测量的平均值。黑色实线显示平均差异,蓝色虚线显示 1.96 标准偏差范围。
表 2. 来自 11 名参与者的座椅和 Neulog 传感器的静息 RR 和 HR
使用车辆座椅上压电传感器无创检测呼吸和心率(续)附代码验证_第4张图片
图 7中的 Bland-Altman 样式图显示了所有时间点的参与者体重和静息率的测量设备之间的差异,这些差异来自所有参与者。每个参与者试验由 1741 个数据点组成,从 1 分钟到 30 分钟每秒计算一次 RR 和 HR。点的大小和颜色代表单个位置中数据点的数量,以说明 0 差线周围点的高密度。RR 和 HR 在体重和静息率方面的差异相对一致。表 3提供了测量设备和所有数据点的简单线性回归模型之间差异的汇总统计数据。如表3所示,频率分析技术导致较低的差异均值或偏差,但较高的差异标准偏差。解释置信区间,我们预计未来 95% 的 FFT 测量的座椅传感器和 Neulog(参考)传感器之间的呼吸速率差异在 -7.5 brpm 和 5.7 brpm 之间。这些值超过了我们的目标值,即座椅传感器 RR 和 Neulog RR 之间的 4-brpm 差异,但是通过随时间的平均测量结果得到了改善。在整个 30 分钟期间,带有座椅传感器的 RR 的偏差或差异均值小于 1 brpm。对于心率,平均值两侧的 1.96 个标准差导致 -39 bpm 和 38 bpm 的差异范围,这大于我们的 15-bpm 目标。

图 7. Bland-Altman 图显示了体重 ( a ) 和 ( b ) 的可靠性以及从 30 分钟 ( c ) 和 ( d )的平均值得出的过度静息率。每个数据点代表从座椅传感器计算的 RR 或 HR 与每个时间点和每个参与者的 Neulog 之间的差异。大小和颜色代表重叠点的密度。
表 3. 使用所有参与者的所有时间点的 RR 和 HR 的峰值检测和频率分析技术的汇总统计数据。
在这里插入图片描述

均方根误差 (RMSE) 值表示线性模型的绝对拟合,并规定模型斜率可能不完全为 1。RMSE 的好处是这些值采用适当的单位。在这种情况下,模型中 2.8 brpm 和 9.9 bpm 的变化是可以接受的。小的 R 2值表示座椅传感器 RR 和 HR 在使用 1 分钟滑动窗口每秒计算时的可变性。虽然我们在图 7的图中看到 0 差线上的数据点密度很高,但存在许多异常值,尤其是心率数据。但是,在决定座椅传感器 RR 和 HR 值是否足够接近并因此确定 Neulog 值的合适预测器时,重要的是要记住比 R 2是拟合的相对度量。

4、项目总结

由于从肺和心脏到座椅传感器的信号衰减,从乘员分类系统中提取 RR 和 HR 是一项挑战。此外,呼吸和心率信号水平(包括频率和幅度)的差异使检测任务变得困难。这项研究的结果表明,使用生产型车辆乘客座椅传感器测量各种乘员体重和静息率的生理反应(如 RR 和 HR)是可行的。座椅传感器和 Neulog 设备之间的静息或平均 RR 和 HR 值具有可比性。进行了额外的分析以比较整个 30 分钟数据收集过程中的各个时间点。用于评估 Neulog 和座椅传感器设备之间持续差异的主要分析是 Bland-Altman 方法。22 ]。正如预期的那样,与静息率源自 30 分钟数据的模型相比,具有所有数据点的模型的 RMSE 值更高,R 2值更低。这表明在较长时间内对数据进行平均可以提高与参考值的一致性。未来的工作需要提高 RR 和 HR 检测的时间分辨率,以实现连续、实时的应用。
将来,增强峰值检测算法可以改进从总模拟峰值计算 RR 和 HR。不同突出阈值的经验测试可以改善峰值检测。在这项研究中,数据收集包括正常、静息状态、持续呼吸,如图 4所示的少数例外情况a,RR 明显降低,可能是因为嗜睡。虽然 30 分钟数据收集的 RR 和 HR 平均值对于正常的休息状态是合理的,但乘员的生理机能可能在几分钟内发生巨大变化。我们的第一个目标是确认我们可以捕获稳态响应。我们的后续目标是通过使用 1 分钟的数据周期每秒评估 RR 和 HR 来测量瞬态响应。需要额外的工作来评估检测瞬态响应的准确性。滑动窗口的大小(目前为 1 分钟)将是一个有趣的变量,可以在未来的实验中进行测试。FFT 频率分析将以延迟结果为代价受益于更大的时间窗口。
检测行驶中车辆的呼吸和心率中更剧烈和瞬态的变化对于未来驾驶期间实时监控的应用是必要的。乘员 RR 和 HR 的非侵入性测量可能有助于未来对驾驶员状态进行心理生理分类的工作 [ 24]。对基于车辆的评估的补充,该评估使用转向和速度变化等车辆数据来评估驾驶员;生理监测可以提供对驾驶员状态的直接测量。结合基本的生理测量可以帮助自动检测驾驶员的身体损伤,例如疲劳。但是,此应用需要在驾驶员座椅上安装座椅重量传感器,而当前的美国法规要求仅适用于乘客座椅。预测驾驶员状态的能力将对未来驾驶员辅助系统和主动安全技术的设计极为有益。
这项研究的一个主要限制是从车辆上移除测试座椅和座椅传感器。如先前的研究所示,接合的发动机和/或驾驶可能导致来自座椅传感器的 BCG 信号中的低信噪比 [ 6]。虽然驾驶过程中的运动和振动可能会影响 RR 和 HR 的检测,但本研究的目的是展示可行性并测试生产车辆中乘员分类系统的灵敏度。此外,当考虑碰撞后响应时,移动的车辆可能不会成为乘客感应系统的关注点,因为车辆可能会停止。另一个限制是测试不包括不在位的乘员。假设是乘客在感应期间完全就座,这可能意味着使用了安全带,并排除了诸如翻车事故等车辆在碰撞后保持倒置的情况。根据受伤情况和可能的失血情况,碰撞后乘员可能会出现心动过速或心动过缓 [ 25]。异常高或低的 HR 可能会接近当前模型的边界,截止频率为 50 bpm 和 150 bpm。同样,RR 也因受伤而异。当前模型旨在捕获 10 到 40 brpm 的 RR。我们还假设乘员分类系统的性能不会受到碰撞的影响。该研究可以受益于更大、更多样化的人类参与者数据集。理想情况下,座椅传感器能够检测到 5% 的女性(约 50 公斤)和 95% 的男性(约 125 公斤)的 RR 和 HR [ 26]。本研究中使用的参与者池涵盖了体重要求的下限,但本研究中缺乏来自体重超过 91 公斤的参与者的数据。最后,虽然联邦机动车辆安全标准 (FMVSS) 第 208 号规定现代车辆具有用于高级乘客安全气囊系统的乘员分类系统,但每个制造商的技术和技术可能不同 [ 19 ]。为了扩大这项研究,测试来自各种汽车品牌和型号的座椅传感器将是有价值的。
这项研究为使用生产乘用车的座椅传感器测量乘员呼吸和心率提供了有希望的结果。RR 和 HR 的两个计算,峰值检测和频率分析,与参考测量值进行了比较。用于静息 RR 和 HR 的座椅传感器和 Neulog 传感器之间的差异主要分别在我们的 4-brpm 和 15-bpm 目标范围内。理想情况下,该系统还能够随着时间的推移评估 RR 和 HR。将座椅传感器与所有时间点的参考传感器进行比较,频率分析技术产生的平均差或偏差小于峰值检测技术。该数据提供了在实验室环境中对非侵入式座椅传感器的初步验证。未来在行驶中的车辆中进行测试对于乘员监控的应用是必要的。不突兀,

5、代码验证

基本的代码流程实现;
使用车辆座椅上压电传感器无创检测呼吸和心率(续)附代码验证_第5张图片
这里用matlab代码实现了对FFT算法用于对BCG信号呼吸和心率分离进行简单的验证。

Fs = 250;            % 采样率                   
T = 1/Fs;             % 采样周期   
% L = 4500;             % 信号长度
% t = (0:L-1)*T;        % 时间向量 x
Res_filter = designfilt('bandpassfir','FilterOrder',400, ...
         'CutoffFrequency1',0.16,'CutoffFrequency2',0.66, ...
         'SampleRate',500); 
     
HR_filter = designfilt('bandpassfir','FilterOrder',400, ...
         'CutoffFrequency1',0.83,'CutoffFrequency2',2.5, ...
         'SampleRate',250);  
     

     k_end = length(ResMove)/(10*Fs);
for k = 0:1:k_end
    if(length(ResMove) < (k+1)*10*Fs)
       break;
        ResMove5s = ResMove(k*10*Fs+1 : end);
    else
        ResMove5s = ResMove( (k*10*Fs)+1 : ((k+1)*10*Fs) ) ; 
    end
    
     L = length(ResMove5s);
     t = (0:L-1)*T;
 % FFT
    ymh = filtfilt(HR_filter,ResMove5s);
    S3 = fft(ymh);
    P23 = abs(S3/L);
    P13 = P23(1:L/2+1);
    P13(2:end-1) = 2*P13(2:end-1);
    f = Fs*(0:(L/2))/L;

matlab代码和采集数据已上传到我的空间:https://download.csdn.net/download/leva345/85353644

你可能感兴趣的:(算法,信号处理算法,FFT,人工智能,物联网,自动驾驶,python,算法)