ECG・PPG融合による呼吸数推定(リアルタイム)

AI/ML

概要

本プロジェクトは、ECGとPPGという2種類の生体信号を組み合わせて呼吸数を高精度に推定することを目的とする研究実装です。ECGからは呼吸性洞性不整脈(RSA)によるR–R間隔の変調成分を、PPGからは脈波振幅の変調(AM)とベースライン変動(BM)を抽出し、それぞれの呼吸関連成分を時間–周波数解析で解析します。特徴的なのは解析窓を動的に調節する点で、短時間での周波数変化や信号品質の変動に追随しつつリアルタイム性を維持する設計です。ウェアラブル機器からの連続計測やノイズ混入の多い環境でも頑健に動作することを目指した実装例を提供します。

GitHub

リポジトリの統計情報

  • スター数: 4
  • フォーク数: 3
  • ウォッチャー数: 4
  • コミット数: 11
  • ファイル数: 5
  • メインの言語: Python

主な特徴

  • ECG(R–R間隔の変調)、PPG(振幅変調・基線変動)からの呼吸成分抽出を統合。
  • 時間–周波数(TF)解析において動的な解析窓を採用し、周波数変動や信号品質の変化に追随。
  • リアルタイム処理を意識したパイプライン構成でウェアラブルでの運用を想定。
  • Python実装でサンプル(examples)付き、実験や改良がしやすい構造。

技術的なポイント

このプロジェクトの中核は「複数モダリティのセンサ情報を時間–周波数領域で同期的に解析し、動的窓幅によって局所的な周波数変動を捉えて呼吸数を推定する」という設計思想です。具体的な処理フローは大きく分けて以下の段階になります。

  1. 前処理(Preprocessing)
    • ECGではRピーク検出(ピーク検出アルゴリズムや閾値処理)によりR–R間隔(心拍間隔)を算出し、その短期変動からRSAに由来する呼吸成分を抽出します。PPGでは脈波ピーク/ボトムの検出に基づく振幅(AM)と低周波成分としてのベースライン(BM)を別々に取り出します。
  2. 局所的な時間–周波数解析
    • 呼吸はゆっくり変動する生理学的信号であるため、長すぎる窓では周波数追従性が下がり、短すぎる窓では周波数分解能が不足します。本実装では解析窓を動的に設定し、信号の局所的SNRや推定される呼吸周波数の安定度に応じて窓長を変えることで、このトレードオフを緩和します。時間–周波数解析自体はSTFTやウェーブレット変換など一般的なTF手法の利用を想定しており、窓幅の調整は周波数軌跡の追跡とノイズ耐性を両立させます。
  3. センサ融合(Sensor Fusion)
    • ECG由来のRSA、PPG-AM、PPG-BMの各推定結果をそのまま平均するのではなく、各成分の局所的信号品質(例:ピーク検出の信頼度、スペクトルピークの明瞭度、SNR指標)に基づいて重み付け融合を行う方針です。これにより片方のセンサがノイズで悪化しても全体の推定が安定します。
  4. 後処理とトラッキング
    • 推定された呼吸周波数に対してスムージングや状態推定(カルマンフィルタや単純な追跡フィルタ)を適用し、不連続なジャンプを抑えて安定した呼吸数出力を生成します。リアルタイム性を考慮し、遅延と精度のバランスを管理する設計になっています。

実装面ではPythonを用い、モジュール化されたsrcディレクトリと使用例を格納したexamplesディレクトリが用意されています。ウェアラブルからのデータストリームに対して逐次処理できるよう、バッチ処理よりもオンライン処理を重視したAPI設計が期待されます。また、動的窓の設定や融合ルールはハイパーパラメータとして調整可能で、各アプリケーション(睡眠モニタリング、運動中の計測など)に合わせたチューニングが行えます。評価方法としては、基準呼吸(キャリブレーションデータ)との比較によるRMSEやBland–Altman解析が想定され、実運用ではモーションアーチファクト検出や信号品質スコアの導入が重要になります。

プロジェクトの構成

主要なファイルとディレクトリ:

  • LICENSE: file
  • README.md: file
  • init.py: file
  • examples: dir
  • src: dir

examplesディレクトリには実行例や解析パイプラインのスクリプトが入り、src配下にアルゴリズム本体(前処理、TF解析、融合、出力)が配置されている想定です。ライセンスファイルがあり再利用や改変の指針が提示されています。

まとめ

ECGとPPGを組み合わせた実用志向の呼吸数推定実装で、動的TF窓とセンサ融合が特徴。ウェアラブル向けの研究・開発に有用です(約50字)。

リポジトリ情報:

READMEの抜粋:

ECG–PPG Fusion Respiratory Rate Estimation via Time–Frequency Dynamic Window Analysis

Overview

This project implements a real-time respiratory rate (RR) estimation algorithm that fuses ECG and PPG signals from wearable devices.
The algorithm extracts respiratory components from:

  • ECG R–R interval modulation (RSA: Respiratory Sinus Arrhythmia)
  • PPG amplitude modulation (AM)
  • PPG baseline modulation (BM)

Using a dynamic time–frequency (TF) analysis window, the …