ビデオから心拍数を推定する
皮下の血流による皮膚の色の変化はビデオでも見ることができ,心拍数の推定を求めるために使うことができる.その変化はわずか過ぎて人間の目には見えないが,連続フレームの皮膚の画素から,信号をうまく抽出し解析することができる.
ビデオのフレームとその時間を取得する.
In[1]:= | ![]() X |
In[2]:= | ![]() X |
すべてのフレームにおける顔の境界ボックスを判別し,最初のフレームの中の顔をハイライトする.
In[3]:= | ![]() X |
Out[3]= | ![]() |
境界ボックスの正規化された動きを判別し,境界ボックスの中央値の大きさを使って,すべてのフレームから検出された顔のみを切り取る.
In[4]:= | ![]() X |
In[5]:= | ![]() X |
In[6]:= | ![]() X |
最初のフレームに対する顔の動きを判別し,動きを取り消すことでビデオを安定化する.
In[7]:= | ![]() X |
In[8]:= | ![]() X |
顔の皮膚を検出するために,Labカラーに基づいた典型的な皮膚の分類器を使って,顔の境界ボックス内の平均的な肌の確率分布を決定する.
In[9]:= | ![]() X |
In[10]:= | ![]() X |
In[11]:= | ![]() X |
Out[11]= | ![]() |
各フレームについて,上記の皮膚の確率分布により重みが付けられた平均的なLabカラーをすべての画素から抽出する.
In[12]:= | ![]() X |
In[13]:= | ![]() X |
Out[13]= | ![]() |
差異の変動が最小の信号を探すことにより,最適の偏析角度 α を求める.
In[14]:= | ![]() X |
Out[14]= | ![]() |
最適のパルス信号を抽出し,0.5Hzから3Hzまでの周波数を通過させるバンドパスフィルタでパルス信号を正規化する.
In[15]:= | ![]() X |
In[16]:= | ![]() X |
In[17]:= | ![]() X |
Out[17]= | ![]() |
FindPeaksを使って心拍数を抽出する.
In[18]:= | ![]() X |
Out[18]= | ![]() |
In[19]:= | ![]() X |
Out[19]= | ![]() |
フレーム数を時間に変換し,心拍数の間隔を抽出する.
In[20]:= | ![]() X |
Out[20]= | ![]() |
心拍数の中央値と分散.
In[21]:= | ![]() X |
Out[21]= | ![]() |
In[22]:= | ![]() X |
Out[22]= | ![]() |
In[23]:= | ![]() X |
Out[23]= | ![]() |