2013-03-25[n年前へ]
■ノートPC付属のWebCamで「脈拍検出」をしてみよう!?
テレビ画面に映るアイドルの「胸のドキドキ」がわかる未来!?で書いた「カメラ画像からの脈拍推定」を、MacBook AirのFaceTimeカメラ(Webカメラ)を使い・Mathematicaでコードを書いて試してみました。
まずは、下のようなMathematicaコードを書き、1秒に10回のペースで10秒間にわたりカメラから画像を取り込み(カメラにかざした手のひらを撮影し)、そして、撮影画像の「緑←→赤」方向の色成分を抽出し、10秒間の色変化をグラフにしてみたのです。
Pause[5]; (* 手をかざすまでの待ち時間 *) img = Table[ Pause[0.1]; CurrentImage[], {100}]; lab = ImageData@(ColorConvert[#, "LAB"]) & /@ img; bImg = Table[ Map[(#[[2]]) &, data[[i]], {2, 2}], {i, 1, Length@data}]; ListPlot[ (Apply[Plus, Flatten[#] ]) & /@ bImg ](Webカメラに手をかざしつつ)このコードを実行した結果が、下に貼り付けたグラフです。横軸がフレーム数(10フレームで約1秒です)で、縦軸が「緑←→赤」方向の色成分量です。
10秒間に12間程度の色変化が見て取れます。…ということは、1分間あたりに換算すると70回程度の「色振動」が生じています。
…なるほど、これが脈拍を反映した肌の色変化なのかもしれません。今この時点のわたしの脈拍は70(回/分)程度のようです(点滅を高速に繰り返す照明周期と撮影周期のビートが生じていないか?という点は気にかかりますが)。
ノートPC付属のWebCamがユーザの脈拍検出も容易にできるようになると…「やってみたい面白いこと」がたくさん頭に浮かんできますね。