今回は, カメラで撮影した指の映像から心拍数が正しく求められるか, オムロンの血圧計での測定とカメラでの指の撮影を交互に5回行い, カメラで撮影した映像から心拍数を算出し比較してみた.

1. 輝度変化
 まずは, カメラで撮影した画像から安定して輝度の変化が得られるか調べてみた.
5回の撮影データについて, R/G/Bプレーン毎に輝度変化を調べてみた.

graph01
graph02
graph03
その結果, 測定(1)や(2)のようにR/G/Bすべて安定して脈波が観測できる場合と, 測定(3)や(5)のようにG以外はあまり脈波が観測できない場合があった.
そこで, 心拍数の計測にはGプレーンの輝度変化を用いることにした.

2. 周波数分析
 FFT(高速フーリエ変換)を用いて輝度変化の周波数分析を行い, 心拍数が正しく求められるか確認してみる.
心拍変化は0.8Hz~3Hz程度なので, バンドパスフィルタにより分析する周波数帯域を制限してからFFTすべきだが, 簡易的に差分(y[n] = x[n]-x[n-1])と移動平均(y[n]=(x[n]+x[n-1])/2)を使用することにする.
*注) FFTにはAkiyama氏のFFT-PLOT(フリー版) [1]を使用.
graph03
graph04

FFT
解析サンプル数128256512
基本周波数(Hz)1.4171.2941.350
心拍数85.077.681.0

波形データを目視でチェックしたところ80拍だったので, FFTの解析サンプル数は心拍数が最も近い512を採用する.

3. 測定結果
5回の測定結果は以下の通り.

回数目視カメラオムロン
1808183
2787474
3828175
4818175
5828176

波形データの目視チェックによる心拍数とカメラによる心拍数はかなり近い値となったが, オムロンでの測定値とは少しずれがあった.
一応, 心拍数が測れそうなので, この考え方をベースにプログラミングすることにする.
また, オムロンの測定値とのずれは, 同時測定や他の機器との比較などして引き続き検証はやっていく予定.

----
参照URL:
[1] 高速フーリエ変換(FFT-PLOT)