tjy/RespirationRate
PEAandDA ff11a09b8b 代码迁移 2024-06-20 18:22:33 +08:00
..
README.md 代码迁移 2024-06-20 18:22:33 +08:00
RespirationRateDetector.py 代码迁移 2024-06-20 18:22:33 +08:00
demo.py 代码迁移 2024-06-20 18:22:33 +08:00
params.py 代码迁移 2024-06-20 18:22:33 +08:00

README.md

Video-based Respiration Rate Detection Algorithm

该项目是一个基于视频图像的呼吸频率检测算法的实现。它可以从视频中提取人体的呼吸曲线并计算呼吸频率。该算法使用了光流法、相关性引导的光流法、滤波、归一化等技术来提高检测精度。同时它提供了多种呼吸频率计算方法供选择包括FFT、Peak Counting、Crossing Point和Negative Feedback Crossover Point等。

文件结构

  • params.py: 包含所有可配置的参数及其默认值。
  • RespirationRateDetector.py: 实现了呼吸频率检测算法的核心逻辑。
  • demo.py: 演示程序,从摄像头读取视频流并实时显示呼吸曲线和呼吸频率。

使用方法

  1. 克隆该项目到本地。
  2. 安装所需的Python依赖包OpenCV、NumPy、SciPy、Matplotlib。
  3. 根据需要在params.py中调整参数设置。
  4. 运行demo.py启动演示程序。

程序将打开一个窗口显示从摄像头捕获的视频流,并在另一个窗口中绘制实时呼吸曲线。同时,它还会在视频窗口上显示使用不同方法计算得到的呼吸频率值。

核心算法

该算法的核心步骤包括:

  1. 光流法:使用光流法跟踪视频中的特征点,并计算这些特征点的运动幅度和。
  2. 相关性引导的光流法:通过计算每个特征点与呼吸曲线的相关性,筛选出与呼吸相关的特征点,以提高检测精度。
  3. 滤波:对原始呼吸曲线进行带通滤波,去除高频和低频噪声。
  4. 归一化:将滤波后的呼吸曲线进行归一化处理。
  5. 呼吸频率计算使用FFT、Peak Counting、Crossing Point和Negative Feedback Crossover Point等多种方法计算呼吸频率。

参数说明

params.py中包含了该算法的所有可配置参数及其默认值。主要参数包括:

  • --video-path: 输入视频文件的路径。默认值为'./1.mp4'。

  • --FSS: 是否启用特征点选择策略(Feature Point Selection Strategy)。默认为True。

  • --CGOF: 是否启用相关性引导的光流法(Correlation-Guided Optical Flow Method)。默认为True。

  • --filter: 是否对呼吸曲线进行滤波。默认为True。

  • --Normalization: 是否对呼吸曲线进行归一化。默认为True。

  • --RR_Evaluation: 是否计算呼吸频率。默认为True。

其他参数控制光流法、特征点选择策略、滤波和呼吸频率计算的具体设置。

  • --OFP-maxCorners: 光流法中检测特征点的最大数量。默认为100。

  • --OFP-qualityLevel: 光流法中特征点检测的质量等级。默认为0.1。

  • --OFP-minDistance: 光流法中特征点之间的最小距离。默认为7。

  • --OFP-mask: 光流法中使用的mask,用于指定感兴趣区域。默认为None。

  • --OFP-QualityLevelRV: 当无法检测到足够数量的特征点时,降低质量等级的步长值。默认为0.05。

  • --OFP-winSize: 光流法中金字塔Lucas-Kanade光流估计器的窗口大小。默认为(15,15)。

  • --OFP-maxLevel: 光流法中的金字塔层数。默认为2。

  • --FSS-switch: 是否启用特征点选择策略。

  • --FSS-maxCorners: 特征点选择策略中检测特征点的最大数量。默认为100。

  • --FSS-qualityLevel: 特征点选择策略中特征点检测的质量等级。默认为0.1。

  • --FSS-minDistance: 特征点选择策略中特征点之间的最小距离。默认为7。

  • --FSS-mask: 特征点选择策略中使用的mask。默认为None。

  • --FSS-QualityLevelRV: 当无法检测到足够数量的特征点时,降低质量等级的步长值。默认为0.05。

  • --FSS-FPN: 特征点选择策略中要选择的特征点数量。默认为5。

  • --CGOF-switch: 是否启用相关性引导的光流法。

  • --Filter-switch: 是否对呼吸曲线进行滤波。

  • --Filter-type: 滤波器的类型,可选'lowpass'、'highpass'、'bandpass'和'bandstop'。默认为'bandpass'。

  • --Filter-order: 滤波器的阶数。默认为3。

  • --Filter-LowPass: 带通滤波器的低通频率(次/分钟)。默认为2。

  • --Filter-HighPass: 带通滤波器的高通频率(次/分钟)。默认为40。

  • --Normalization-switch: 是否对呼吸曲线进行归一化。

  • --RR-switch: 是否计算呼吸频率。

  • --RR-Algorithm-PC-Height: Peak Counting算法中使用的峰值高度阈值。默认为None。

  • --RR-Algorithm-PC-Threshold: Peak Counting算法中使用的峰值门限。默认为None。

  • --RR-Algorithm-PC-MaxRR: Peak Counting算法中呼吸频率的最大值(次/分钟)。默认为45。

  • --RR-Algorithm-CP-shfit_distance: Crossing Point算法中使用的移位距离。默认为15。

  • --RR-Algorithm-NFCP-shfit_distance: Negative Feedback Crossover Point算法中使用的移位距离。默认为15。

  • --RR-Algorithm-NFCP-qualityLevel: Negative Feedback Crossover Point算法中使用的质量等级。默认为0.6。