以下に、本願の開示する脈波検出装置、脈波検出方法及び脈波検出プログラムの実施例を図面に基づいて説明する。なお、この実施例は開示の技術を限定するものではない。そして、各実施例は、処理内容を矛盾させない範囲で適宜組み合わせることが可能である。
[脈波検出装置の構成]
まず、本実施例に係る脈波検出装置の機能的構成について説明する。図1は、実施例1に係る脈波検出装置の機能的構成を示すブロック図である。図1に示す脈波検出装置10は、太陽光や室内光などの一般の環境光の下で生体に計測器具を接触させずに、被験者が撮影された画像を用いて被験者の脈波、すなわち心臓の拍動に伴う血液の体積の変動を検出する脈波検出処理を実行するものである。
一態様としては、脈波検出装置10は、パッケージソフトウェアやオンラインソフトウェアとして提供される脈波検出プログラムを所望のコンピュータにインストールさせることによって実装できる。例えば、スマートフォン、携帯電話機やPHS(Personal Handyphone System)などの通信端末のみならず、通信機能を持たないタブレット端末やスレート端末を含む携帯端末装置に上記の脈波検出プログラムをインストールさせる。これによって、携帯端末装置を脈波検出装置10として機能させることができる。なお、ここでは、脈波検出装置10の実装例として携帯端末装置を例示したが、パーソナルコンピュータを始めとする固定端末に脈波検出プログラムをインストールさせることとしてもかまわない。
図1に示すように、脈波検出装置10は、カメラ11と、画像メモリ11aと、取得部12と、第1の分割部13gと、第2の分割部13rと、統計処理部14g1〜14gn及び統計処理部14r1〜14rnとを有する。さらに、脈波検出装置10は、BPF(Band-Pass Filter)15g1〜15gn及びBPF15r1〜15rnと、差演算部16−1〜16−nと、二値化部17−1〜17−nと、測定部18と、算出部19とを有する。
かかる脈波検出装置10は、図1に示した機能部以外にも既知の携帯端末装置が有する各種の機能部を有することとしてもかまわない。例えば、脈波検出装置10がタブレット端末やスレート端末として実装される場合には、入力デバイス、表示デバイス、あるいは入力可能かつ表示可能なタッチパネルをさらに有することとしてもよい。また、脈波検出装置10が移動体端末として実装される場合には、アンテナ、キャリア網を介して通信を行うキャリア通信部、GPS(Global Positioning System)受信機などの機能部をさらに有していてもかまわない。
図1に示す機能部のうち、カメラ11は、CCD(Charge Coupled Device)やCMOS(Complementary Metal Oxide Semiconductor)などの撮像素子を搭載する撮像装置である。例えば、カメラ11には、R(red)、G(green)、B(blue)など3種以上の受光素子を搭載することができる。かかるカメラ11の実装例としては、デジタルカメラやWebカメラを外部端子を介して接続することとしてもよいし、カメラが出荷時から搭載されている場合にはそのカメラを流用できる。なお、ここでは、脈波検出装置10がカメラ11を有する場合を例示したが、ネットワークまたは記憶デバイスを経由して画像を取得できる場合には、必ずしも脈波検出装置10がカメラ11を有さずともよい。
ここで、脈波検出装置10は、上記の脈波検出処理を実行するアプリケーションプログラムがプリインストールまたはインストールされている場合に、カメラ11によって脈波を検出し易い被験者の画像が撮像されるように画像の撮影操作を案内することができる。なお、以下では、上記のアプリケーションプログラムのことを「脈波検出用アプリ」と記載する場合がある。
かかる脈波検出用アプリは、図示しない入力デバイスを介して起動されると、カメラ11を起動する。これを受けて、カメラ11は、カメラ11の撮影範囲に収容された被写体の撮影を開始する。このとき、被験者の顔が映る画像を撮影させる場合には、脈波検出用アプリは、カメラ11が撮影する画像を図示しない表示デバイスに表示しつつ、被験者の鼻を映す目標位置を照準として表示させることもできる。これによって、被験者の眼、耳、鼻や口などの顔パーツの中でも被験者の鼻が撮影範囲の中心部分に収まった画像が撮影できるようにする。そして、脈波検出用アプリは、カメラ11によって被験者の顔が撮影された画像を画像メモリ11aへ保存する。なお、以下では、顔が映った画像のことを「顔画像」と記載する場合がある。
画像メモリ11aは、画像を記憶する記憶デバイスである。一態様としては、画像メモリ11aには、カメラ11によって被験者の顔が撮影される度に、被験者の顔画像が保存される。このとき、画像メモリ11aには、所定の圧縮符号化方式によってエンコードされた動画が保存されることとしてもよいし、被験者の顔が映る静止画の集合が保存されることとしてもよい。以下では、カメラ11によって被験者の顔が撮影された動画が取得される場合を想定し、動画を形成する各フレームの画像を「フレーム画像」と記載する場合がある。なお、ここでは、カメラ11によって撮影された顔画像が保存される場合を例示したが、ネットワークを介して受信した顔画像が保存されることとしてもかまわない。
取得部12は、画像を取得する処理部である。一態様としては、取得部12は、画像メモリ11aに記憶された被験者の顔画像を取得する。他の一態様としては、取得部12は、被験者の顔が撮影された画像を蓄積するハードディスクや光ディスクなどの補助記憶装置またはメモリカードやUSB(Universal Serial Bus)メモリなどのリムーバブルメディアから画像を取得することもできる。更なる一態様としては、取得部12は、外部装置からネットワークを介して受信した顔画像を取得することもできる。なお、取得部12は、CCDやCMOSなどの撮像素子による出力から得られる2次元のビットマップデータやベクタデータなどの画像データを用いて処理を実行する場合を例示したが、1つのディテクタから出力される信号をそのまま取得して後段の処理を実行させることとしてもよい。
ここで、本実施例に係る脈波検出装置10は、画像に含まれる3つの波長成分、すなわちR成分、G成分およびB成分のうちR成分とG成分の2つの波長成分の信号を用いて脈波の検出が行われる場合を例示する。例えば、取得部12は、画像メモリ11aに記憶された顔画像を読み出す度に、画素ごとにG成分の輝度値を持つ顔画像Gを第1の分割部13gへ出力するとともに、画素ごとにR成分の輝度値を持つ顔画像Rを第2の分割部13rへ出力する。
第1の分割部13g及び第2の分割部13rは、顔画像を分割する処理部である。すなわち、第1の分割部13gが顔画像Gの分割を担当し、第2の分割部13rが顔画像Rの分割を担当する以外は、第1の分割部13g及び第2の分割部13rで同様の処理が実行される。なお、ここでは、第1の分割部13g及び第2の分割部13rを代表して第1の分割部13gで実行される処理を説明することとする。
例えば、第1の分割部13gは、取得部12から顔画像Gが入力される度に、次に説明する処理を実行する。図2及び図3は、顔画像の一例を示す図である。図2に示すように、第1の分割部13gは、顔画像200にテンプレートマッチング等の画像処理を実行することによってG成分の輝度値を持つ顔画像200から顔パーツ、例えば被験者の左目210a、右目210bやあご211などを抽出する。その上で、第1の分割部13gは、2種類の顔パーツによって顔画像が区切られた部分画像を、脈波が伝搬する方向に沿ってN個の領域へ分割する。例えば、図3に示すように、第1の分割部13gは、左目210a又は右目210bが存在する位置から水平方向に延在する直線Leと、あご211が存在する位置から水平方向に延在する直線Ljとによって挟まれた部分画像を抽出する。その上で、第1の分割部13gは、直線Le及び直線Ljによって挟まれた部分画像を脈波の伝搬方向、すなわち画像の鉛直方向に沿ってP1〜PnのN個の領域へ分割する。
このように、脈波の伝搬方向に沿って顔画像を分割するのは、各領域P1〜Pn内で脈波が到達するタイミングを略同一にするためである。すなわち、心臓から動脈に沿って血液が送出されることからも、長手方向が脈波の伝搬方向と直行する方向、すなわち画像の水平方向に延在して形成される領域では、脈波が到達するタイミングが略同一であるとみなせる点が脈波検出装置10によって利用されている。
なお、ここでは、第1の分割部13gが顔画像を分割する場合を例示したが、第2の分割部13rにおいても同様の処理が実行される。また、第1の分割部13g及び第2の分割部13rは、一方の処理部によって分割方法、例えばP1〜PnのN個の領域の位置や大きさが決定された場合に、他方の処理部にP1〜PnのN個の領域の位置や大きさを通知させることもできる。これによって、他方の処理部にはテンプレートマッチング等の画像処理を実行させることなく、顔画像を分割させることとしてもよい。また、ここでは、顔画像Gを用いて分割方法を決定する場合を例示したが、原画像、すなわち元の顔画像を用いて分割方法を決定することとしてもかまわない。
これら第1の分割部13g及び第2の分割部13rの後段の処理部では、G成分及びR成分の2つの波長成分ごと、さらには、分割がなされた領域P1〜Pnごとに、処理が実行される。このため、第1の分割部13gは、顔画像Gから分割された領域P1のG信号を統計処理部14g1へ出力し、領域P2のG信号を統計処理部14g2へ出力し、・・・、領域PnのG信号を統計処理部14gnへ出力する。また、第2の分割部13rは、顔画像Rから分割された領域P1のR信号を統計処理部14r1へ出力し、領域P2のR信号を統計処理部14r2へ出力し、・・・、領域PnのR信号を統計処理部14rnへ出力する。
統計処理部14g1〜14gn及び14r1〜14rnは、波長成分別または領域別に当該領域に含まれる画素値に対し、所定の統計処理を実行する処理部である。これら統計処理部14g1〜14gn及び14r1〜14rnは、統計処理部14g1〜14gnがG信号の統計処理を担当し、統計処理部14r1〜14rnがR信号の統計処理を担当するが、実行される統計処理の内容は同様である。したがって、統計処理部14g1〜14gn及び14r1〜14rnを代表して統計処理部14g1〜14gnで実行される統計処理について説明することとする。
一態様としては、統計処理部14g1は、領域P1に含まれる各画素が持つG成分の輝度値を平均する。ここでは、平均値を計算する場合を例示したが、中央値や最頻値を計算することとしてもよく、また、加重平均以外にも任意の平均処理、例えば加重平均や移動平均などを実行することもできる。これによって、領域P1に含まれる各画素が持つG成分の輝度値の平均値が領域P1のG成分を代表する代表値として算出される。また、統計処理部14g2は、領域P2のG成分の代表値を算出し、統計処理部14gnは、領域PnのG成分の代表値を算出する。なお、統計処理部14r1〜14rnにおいても、領域P1のR成分の代表値、領域P2のR成分の代表値、・・・、領域PnのR成分の代表値がそれぞれ算出される。
BPF15g1〜15gn及び15r1〜15rnは、いずれも所定の周波数帯の信号成分だけを通過させてそれ以外の周波数帯の信号成分を除去するバンドパスフィルタである。これらBPF15g1〜15gn及び15r1〜15rnは、ハードウェアによって実装されることとしてもよいし、ソフトウェアによって実装されることとしてもよい。
これらBPF15g1〜15gn及び15r1〜15rnは、脈波が採り得る0.7Hz以上4Hz未満の脈波周波数帯、1分あたりに換算すれば42bpm以上240bpm未満の周波数帯の信号成分を通過させる。
このように、BPF15g1によって領域P1の脈波周波数帯のG信号が抽出され、BPF15g2によって領域P2の脈波周波数帯のG信号が抽出され、さらに、BPF15gnによって領域Pnの脈波周波数帯のG信号が抽出される。一方、BPF15r1によって領域P1の脈波周波数帯のR信号が抽出され、BPF15r2によって領域P2の脈波周波数帯のR信号が抽出され、さらに、BPF15rnによって領域Pnの脈波周波数帯のR信号が抽出される。
差演算部16−1〜16−nは、領域別に、BPF15g1〜15gnによって出力された領域P1〜Pnの脈波周波数帯のG信号と、BPF15r1〜15rnによって出力された領域P1〜Pnの脈波周波数帯のR信号との差を演算する処理部である。
一態様としては、差演算部16−1は、BPF15g1によって出力された領域P1の脈波周波数帯のG信号からBPF15r1によって出力された領域P1の脈波周波数帯のR信号を減算する。同様に、差演算部16−2は、BPF15g2によって出力された領域P2の脈波周波数帯のG信号からBPF15r2によって出力された領域P2の脈波周波数帯のR信号を減算する。同様に、差演算部16−nは、BPF15gnによって出力された領域Pnの脈波周波数帯のG信号から、BPF15rnによって出力された領域Pnの脈波周波数帯のR信号を減算する。これによって、領域P1〜Pnの脈波周波数帯のG信号に含まれていたノイズ成分が領域P1〜Pnの脈波周波数帯のR信号によってキャンセルされる結果、領域P1〜PnごとにSN比の高い輝度信号を得ることができる。このようにして領域P1〜Pnごとに得られた輝度信号の時系列データは、脈拍波形として用いることもできる。
なお、ここでは、各領域P1〜Pnで脈波周波数帯のG信号から脈波周波数帯のR信号を減算する場合を説明したが、輝度信号のSN比を向上させる観点から、次のような方法を採用することもできる。例えば、脈波検出装置10は、G信号及びR信号の間でノイズに対応する周波数帯、すなわち瞬きや体の揺れの他、環境光のチラツキなどのノイズが現れやすい3bpm以上20bpm未満の周波数帯での絶対強度値の比を算出する。その上で、脈波検出装置10は、脈波周波数帯のG信号から、ノイズに対応する周波数帯での絶対強度値の比が乗算された脈波周波数帯のR信号を差し引く演算を実行する。これによって、G信号及びR信号の差を演算してノイズをキャンセルする場合に、脈波が採り得る周波数帯の信号成分の強度が低下するのを抑制しつつ、ノイズ成分を低減させることができる。
二値化部17−1〜17−nは、差演算部16−1〜16−nによって出力された領域P1〜Pnの輝度信号を二値化する処理部である。これら二値化部17−1〜17−nは、入力される輝度信号が各領域P1〜Pnで異なるものの、輝度信号を二値化する手順は同様である。したがって、二値化部17−1〜17−nを代表して二値化部17−1で実行される処理について説明する。
一態様としては、二値化部17−1は、フレーム間で領域P1の輝度信号に変化があるか否かによって二値化を行う。例えば、二値化部17−1は、今回のフレームで得られた領域P1の輝度信号と、1つ前のフレームで得られた領域P1の輝度信号との間で値の差が所定の閾値よりも大きいか否かを判定する。一例として、閾値には、フレーム間での微差の輝度変化を検出するために、ゼロを採用できる。他の一例として、閾値には、カメラ11によって撮影される顔画像に照明の点滅等のノイズが混入する場合には、ゼロよりも大きい値を採用することもできる。このとき、二値化部17−1は、今回のフレームと1つ前のフレームの間で輝度信号の値の差が閾値以下である場合には「0」を出力する一方で、今回のフレームと1つ前のフレームの間で輝度信号の値の差が閾値よりも大きい場合には「1」を出力する。なお、二値化部17−2〜17−nにおいても、上記の二値化部17−1と同様に、各々の領域P2〜Pnの輝度信号が二値化される。
測定部18は、各領域P1〜Pnの輝度変化のタイミングを測定する処理部である。一態様としては、測定部18は、二値化部17−1〜17−nによって出力される値がフレーム間で「0」から「1」へ変化した領域が存在するか否かを判定する。このとき、値が「0」から「1」へ変化した領域が存在する場合には、当該領域は、今回のフレームで輝度変化の立ち上がりが検出されたと言え、当該領域に脈波が伝搬したと推定できる。この場合には、測定部18は、輝度変化の立ち上がりが検出された領域と、当該領域の輝度変化の立ち上がりが検出された顔画像のサンプリング時間とを対応付けて図示しない内部メモリに保存する。ここで言う「サンプリング時間」とは、カメラ11によって画像が撮影された時間を指し、カメラ11のフレーム周波数によって定まる。例えば、カメラ11のフレーム周波数が30Hzである場合には、カメラ11によって画像の撮影が開始されたサンプリング時間を起点に33ms間隔でサンプリング時間が到来する。
ここで、本実施例に係る脈波検出装置10が発揮する時間分解能について説明する。図4及び図5は、輝度変化とサンプリング時間の関係の一例を示す図である。図4及び図5には、分割数Nが5であり、被験者の心臓から近い順に領域P1、P2、P3、P4、P5の輝度変化が図示されているものとする。このうち、図4には、各サンプリング点の間にも輝度変化の大きさが図示されている。一方、図5には、各サンプリング点で「0」または「1」に二値化された輝度変化が図示されている。なお、図4及び図5に示す実線は、あるタイミングT0で発生した脈波が伝搬した時の脈波に伴って発生する輝度変化であり、破線は、前記タイミングよりもわずかに遅れたタイミングT0+α(但し、αはサンプリング時間間隔33msよりも小さな時間)で発生した脈波が伝搬した時の脈波に伴って発生する輝度変化であるものとする。
図4に示す実線のように、タイミングT0の場合、領域P1だけがサンプリング時間T2の前に輝度変化が開始しており、残りの領域P2〜P5ではサンプリング時間T2〜T3の間に輝度変化が開始している。この場合、図5に示す実線のように、領域P1では、サンプリング時間T1まで「0」が出力される一方で、サンプリング時間T2からは「1」が出力される。この他の領域P2〜P5では、サンプリング時間T2まで「0」が出力される一方で、サンプリング時間T3からは「1」が出力される。
さらに、図4に示す破線のように、タイミングT0+αの場合、領域P1〜P4ではサンプリング時間T2〜T3の間に輝度変化が開始しており、残りの領域P5ではサンプリング時間T3の後に輝度変化が開始している。この場合、図5に示す破線のように、領域P1〜P4では、サンプリング時間T2まで「0」が出力される一方で、サンプリング時間T3からは「1」が出力される。残りの領域P5では、サンプリング時間T3まで「0」が出力される一方で、サンプリング時間T4からは「1」が出力される。このように、サンプリング時間間隔よりも小さなα時間の変化をサンプリング時間ごとの変化として表すことができる。
図6及び図7は、輝度変化とサンプリング時間の関係の一例を示す図である。図6及び図7においても、図4及び図5と同様に、分割数Nが5であり、被験者の心臓から近い順に領域P1、P2、P3、P4、P5の輝度変化が図示されているものとする。このうち、図6には、各サンプリング点の間にも輝度変化の大きさが図示されている。一方、図7には、各サンプリング点で「0」または「1」に二値化された輝度変化が図示されている。なお、図6及び図7に示す実線、破線、一点鎖線、細線は、各々、タイミングT0、T0+α、T0+2α、T0+3αで発生した脈波が伝搬した時の脈波に伴って発生する輝度変化であることとする。
図6に示す実線のように、タイミングT0の場合、領域P1〜P4ではサンプリング時間T1〜T2の間に輝度変化が開始しており、残りの領域P5ではサンプリング時間T2の後に輝度変化が開始している。この場合、図7に示す実線のように、領域P1〜P4では、サンプリング時間T1まで「0」が出力される一方で、サンプリング時間T2からは「1」が出力される。残りの領域P5では、サンプリング時間T2まで「0」が出力される一方で、サンプリング時間T3からは「1」が出力される。
また、図6に示す破線のように、タイミングT0+αの場合、領域P1〜P3ではサンプリング時間T1〜T2の間に輝度変化が開始しており、領域P4〜P5ではサンプリング時間T2の後に輝度変化が開始している。この場合、図7に示す破線のように、領域P1〜P3では、サンプリング時間T1まで「0」が出力される一方で、サンプリング時間T2からは「1」が出力される。残りの領域P4〜P5では、サンプリング時間T2まで「0」が出力される一方で、サンプリング時間T3からは「1」が出力される。
さらに、図6に示す一点鎖線のように、タイミングT0+2αの場合、領域P1〜P2ではサンプリング時間T1〜T2の間に輝度変化が開始しており、領域P3〜P5ではサンプリング時間T2の後に輝度変化が開始している。この場合、図7に示す一点鎖線のように、領域P1〜P2では、サンプリング時間T1まで「0」が出力される一方で、サンプリング時間T2からは「1」が出力される。残りの領域P3〜P5では、サンプリング時間T2まで「0」が出力される一方で、サンプリング時間T3からは「1」が出力される。
また、図6に示す細線のように、タイミングT0+3αの場合、領域P1ではサンプリング時間T1〜T2の間に輝度変化が開始しており、残りの領域P2〜P5ではサンプリング時間T2の後に輝度変化が開始している。この場合、図7に示す細線のように、領域P1では、サンプリング時間T1まで「0」が出力される一方で、サンプリング時間T2からは「1」が出力される。残りの領域P2〜P5では、サンプリング時間T2まで「0」が出力される一方で、サンプリング時間T3からは「1」が出力される。
これらタイミングT0〜T0+3αにわたって領域P1〜P5ごとの輝度変化をまとめると図8の通りになる。図8は、図7に示した輝度変化のタイミングの時間差の一例を示す図である。図8には、被験者の心臓から最も遠い場所に位置する領域P5で輝度変化の立ち上がりが検出されたサンプリング時間T3の1フレーム前のサンプリング時間T2における二値の状態がタイミングT0〜T0+3αにわたって図示されている。
図8に示すように、タイミングT0では、領域P5で輝度変化の立ち上がりが検出される直前のサンプリング時間T2の時点で、輝度変化の立ち上がりが領域P5以外の全ての領域P1〜P4で検出されている。また、タイミングT0+αでは、サンプリング時間T2の時点で先のタイミングT0では輝度変化の立ち上がりが検出されていた領域P4で輝度変化がなく、領域P1〜P3で輝度変化の立ち上がりが検出されている。この例では、脈波は1サンプリング、すなわち、フレーム周期の間に、領域P1〜P5まで、すなわち、4領域間を伝搬しているので、各領域の伝搬遅延が等しいとすると、1領域間を伝搬するのはフレーム周期の1/4である。従って、タイミングT0とタイミングT0+αで1領域分変化の仕方が異なるので、タイミングT0とタイミングT0+αでは、フレーム周期の1/4の時間差があることを意味する。すなわち、この例では、αは1/4周期となる。
さらに、タイミングT0+2αでは、サンプリング時間T2の時点で先のタイミングT0では輝度変化の立ち上がりが検出されていた領域P3〜P4で輝度変化がなく、領域P1〜P2で輝度変化の立ち上がりが検出されている。これは、タイミングT0及びタイミングT0+2αの間で輝度変化の立ち上がりがフレーム周期の2/4の期間の時間差があることを意味する。また、タイミングT0+3αでは、サンプリング時間T2の時点で先のタイミングT0では輝度変化の立ち上がりが検出されていた領域P2〜P4で輝度変化がなく、領域P1だけで輝度変化の立ち上がりが検出されている。これは、タイミングT0及びタイミングT0+3αの間で輝度変化の立ち上がりがフレーム周期の3/4の期間の時間差があることを意味する。
このように、複数の領域間での輝度変化のタイミングの時間差を比較することによって、フレーム周期以下の時間分解能で脈波が伝搬するタイミングを測定できる。例えば、図5の例で言えば、領域P1とP5の間では、輝度変化の立ち上がりが1サンプリング分ずれているので、1サンプリングを4分割することができる結果、時間分解能を4倍向上させることができる。例えば、カメラ11のフレーム周波数が30Hzである場合には、フレーム周期33msの1/4である約8ms(≒33ms÷4)まで時間分解能を向上させることができる。
算出部19は、領域P1〜Pnの輝度変化のタイミングの時間差から各領域P1〜Pnの脈波の遅延量を算出する処理部である。一態様としては、算出部19は、N番目の領域Pnで輝度変化の立ち上がりが検出された場合に、脈波の遅延量の算出を開始する。例えば、算出部19は、1つ前のフレームで「0」が設定されていた領域のうち、今回のフレームで「1」が設定された領域、すなわち輝度変化の立ち上がりが検出された領域の個数mを計数する。ここで、各領域の脈波の遅延量が等しいとすると、1領域の遅延量を「d」とし、1フレームの期間であるフレーム周期を「Ts」とし、フレーム間で輝度変化の立ち上がりが検出された領域の個数を「m」としたとき、遅延量dは、下記の算出式(1)によって算出することができる。算出部19は、下記の算出式(1)に既知である「Ts」及び「m」を代入することによって脈波の遅延量dを算出する。
d=Ts/m・・・(1)
図9は、輝度変化とサンプリング時間の関係の一例を示す図である。また、図10は、図9に示した輝度変化のタイミングの時間差の一例を示す図である。このうち、図9には、分割数Nが11であり、被験者の心臓から近い順に領域P1、P2、P3、・・・、P11の輝度変化が図示されているものとする。図9には、各サンプリング点の間にも輝度変化の大きさが図示されている。また、図10には、サンプリング時間T1及びT2における二値の状態が図示されている。
図9に示すように、領域P1だけがサンプリング時間T1よりも前に輝度変化が開始しており、領域P2〜P9では、サンプリング時間T1〜T2の間に輝度変化が開始しており、領域P10〜P11ではサンプリング時間T2〜T3の間に輝度変化が開始している。この場合、図10に示すように、サンプリング時間T1では、領域P1の出力は「1」となる一方で領域P2〜P11の出力は「0」となり、領域P1だけ輝度変化の立ち上がりが検出される。また、サンプリング時間T2では、領域P1〜P9の出力は「1」となる一方で領域P10〜P11の出力は「0」となり、領域P1に続いて領域P2〜P9まで輝度変化の立ち上がりが検出される。
かかる状況の下、算出部19によってサンプリング時間T1及びT2の間で輝度変化の立ち上がりが検出された領域の個数mが計数される。すなわち、サンプリング時間T1のフレームで「0」が出力された領域は、領域P1を除く領域P2〜P11である。これら領域P2〜P11のうちサンプリング時間T2のフレームで「1」が出力された領域は、領域P2〜P9である。このため、サンプリング時間T2で輝度変化の立ち上がりが検出された領域P2〜P9の8個が「m」として計数される。
このようにして個数mが既知となると、上記の算出式(1)に既知である「Ts」及び「m」を代入することによって1領域の脈波の遅延量dを算出できる。すなわち、フレーム周期Ts(=33ms)、個数m(=8個)を上記の算出式(1)に代入すると、遅延量dは、「33/8」の計算によって4.2msと算出できる。
このように、遅延量dが求まれば、領域の短辺の長さ、すなわち領域の鉛直方向の長さも既知であるので、領域の短辺の長さを画像上のスケールから実空間のスケール、例えばメートルに換算することによって所要時間が遅延量dであるときの移動量Mを算出できる。よって、移動量Mを遅延量dで除算することによって脈波伝搬速度を算出することもできる。
また、遅延量dが求まっていれば、測定部18によって各領域に対応付けて保存されたサンプリング時間を用いて、各々の領域ごとに脈波が伝搬した時刻をカメラ11の時間分解能を超えて正確に求めることもできる。例えば、同一のサンプリング時間において輝度変化の立ち上がりが検出された領域のうち心臓から最も遠く脈波の遅延が最大となる領域、すなわちPに付される番号が最大である領域を基準領域として特定する。その上で、基準領域に脈波がサンプリング時間±0の時刻で伝搬したものとし、サンプリング時間に対応するグローバルな時刻を脈波伝搬時刻とする。そして、基準領域よりも心臓に近い領域は「基準領域の脈波伝搬時刻−基準領域からの距離×遅延量d」で脈波伝搬時刻を算出し、基準領域よりも心臓から遠い領域は「基準領域の脈波伝搬時刻+基準領域からの距離×遅延量d」で脈波伝搬時刻を算出できる。なお、基準領域からの距離とは、脈波伝搬時刻を算出する対象の領域が基準領域から離れている個数を指す。
さらに、脈波伝搬時刻が求まっていれば、脈拍周期や脈拍周期のゆらぎも算出することができる。例えば、同一の領域で脈波伝搬時刻を順次算出し、今回に算出された脈波伝搬時刻から1つ前に算出された脈波伝搬時刻を差し引くことによって脈拍周期を算出することができ、脈拍周期同士で差分を計算することによって脈拍周期のゆらぎを算出することもできる。
このようにして得られる脈波の遅延量、伝搬速度、伝搬時刻、脈波周期のゆらぎや脈拍波形は、脈波検出装置10が有する図示しない表示デバイスを始め、任意の出力先へ出力することができる。例えば、脈波伝搬速度を用いて血管年齢や血圧等の測定を行う測定プログラム、脈拍数や脈拍周期のゆらぎから自律神経の働きを診断したり、脈拍波形から心疾患等を診断したりする診断プログラムが脈波検出装置10にインストールされている場合には、測定プログラムや診断プログラムを出力先とすることができる。また、測定プログラムや診断プログラムをWebサービスとして提供するサーバ装置などを出力先とすることもできる。さらに、脈波検出装置10を利用する利用者の関係者、例えば介護士や医者などが使用する端末装置を出力先とすることもできる。これによって、院外、例えば在宅や在席のモニタリングサービスも可能になる。なお、測定プログラムや診断プログラムの測定結果や診断結果も、脈波検出装置10を始め、関係者の端末装置に表示させることができるのも言うまでもない。
なお、上記の取得部12と、第1の分割部13gと、第2の分割部13rと、統計処理部14g1〜14gn及び14r1〜14rnと、BPF15g1〜15gn及び15r1〜15rnと、差演算部16−1〜16−nと、二値化部17−1〜17−nと、測定部18と、算出部19とは、CPU(Central Processing Unit)やMPU(Micro Processing Unit)などに脈波検出プログラムを実行させることによって実現できる。また、上記の各機能部は、ASIC(Application Specific Integrated Circuit)やFPGA(Field Programmable Gate Array)などのハードワイヤードロジックによっても実現できる。
また、上記の画像メモリ11aには、半導体メモリ素子や記憶装置を採用できる。例えば、半導体メモリ素子の一例としては、VRAM(Video Random Access Memory)、RAM(Random Access Memory)、ROM(Read Only Memory)やフラッシュメモリ(flash memory)などが挙げられる。また、記憶装置の一例としては、ハードディスク、光ディスクなどの記憶装置が挙げられる。
[処理の流れ]
続いて、本実施例に係る脈波検出装置の処理の流れについて説明する。図11は、実施例1に係る遅延量算出処理の手順を示すフローチャートである。この遅延量算出処理は、カメラ11によって画像が画像メモリ11aに保存される度に処理を起動し、画像メモリ11aに画像が保存されなくなるまで繰り返し実行される処理である。なお、図示しない入力デバイス等を介して中断操作を受け付けた場合には、遅延量算出処理を中止することもできる。
図11に示すように、取得部11は、画像メモリ11aに記憶された画像を取得する(ステップS101)。続いて、第1の分割部13gまたは第2の分割部13rは、顔画像から抽出された顔パーツ、例えば目およびあごによって定まる輝度変化の測定範囲を設定する(ステップS102)。
その上で、第1の分割部13g及び第2の分割部13rは、G成分の画素値を持つ顔画像及びR成分の画素値を持つ顔画像ごとに、ステップS102で設定された測定範囲に該当する部分の画像を脈波の伝搬方向に沿ってN個の領域へ分割する(ステップS103)。これによって、G成分の画素値を持つ顔画像のうち測定範囲に該当する部分の画像がN個の領域に分割されるとともに、R成分の画素値を持つ顔画像のうち測定範囲に該当する部分の画像がN個の領域に分割される。
そして、統計処理部14g1〜14gn及び14r1〜14rnは、波長成分別に各領域に含まれる各画素の輝度値を平均することによって当該領域の代表値を算出する(ステップS104)。具体的には、統計処理部14g1〜14gnは、領域P1のG成分の代表値、領域P2のG成分の代表値、・・・、領域PnのG成分の代表値を算出する。また、統計処理部14r1〜14rnは、領域P1のR成分の代表値、領域P2のR成分の代表値、・・・、領域PnのR成分の代表値を算出する。
続いて、BPF15g1〜15gn及び15r1〜15rnは、波長成分別および領域別に脈波が採り得る0.7Hz以上4Hz未満の脈波周波数帯、1分あたりに換算すれば42bpm以上240bpm未満の周波数帯の信号成分を抽出する(ステップS105)。具体的には、BPF15g1は、領域P1の脈波周波数帯のG信号を抽出し、BPF15g2は、領域P2の脈波周波数帯のG信号を抽出し、さらに、BPF15gnは、領域Pnの脈波周波数帯のG信号を抽出する。また、BPF15r1は、領域P1の脈波周波数帯のR信号を抽出し、BPF15r2は、領域P2の脈波周波数帯のR信号を抽出し、BPF15rnは、領域Pnの脈波周波数帯のR信号を抽出する。
そして、差演算部16−1〜16−nは、領域別に、BPF15g1〜15gnによって出力された領域P1〜Pnの脈波周波数帯のG信号と、BPF15r1〜15rnによって出力された領域P1〜Pnの脈波周波数帯のR信号との差を演算することによってノイズをキャンセルする(ステップS106)。これによって、領域P1〜Pnの脈波周波数帯のG信号に含まれていたノイズ成分が領域P1〜Pnの脈波周波数帯のR信号によってキャンセルされる結果、領域P1〜PnごとにSN比の高い輝度信号を得ることができる。
その後、二値化部17−1〜17−nは、差演算部16−1〜16−nによって出力された領域P1〜Pnの輝度信号を二値化する(ステップS107)。
続いて、測定部18は、二値化部17−1〜17−nによって出力される値がフレーム間で「0」から「1」へ変化した領域が存在するか否か、すなわちいずれかの領域で輝度変化の立ち上がりが検出されたか否かを判定する(ステップS108)。
ここで、領域P1〜Pnのうちいずれかの領域値で輝度変化の立ち上がりが検出された場合(ステップS108Yes)には、当該領域に脈波が伝搬したと推定できる。この場合には、測定部18は、輝度変化の立ち上がりが検出された領域と、当該領域の輝度変化の立ち上がりが検出された顔画像のサンプリング時間とを対応付けた上で(ステップS109)内部メモリへ保存する。
その後、輝度変化の立ち上がりが検出された領域がN番目の領域である場合、すなわち心臓から最も遠く脈波の遅延が最大となる領域Pnである場合(ステップS110Yes)には、次のような処理を実行する。すなわち、算出部19は、今回のフレームで輝度変化の立ち上がりが検出された領域の個数mを計数する(ステップS111)。
その上で、算出部19は、ステップS111で計数された領域の個数mでフレーム周期Tsを除算することによって各領域P1〜Pnにおける脈波の遅延量dを算出する(ステップS112)。続いて、算出部19は、ステップS112で算出された脈波の遅延量dを用いて、脈波伝搬速度や各領域の脈波伝搬時刻を算出する(ステップS113)。
このように、脈波伝搬速度や各領域の脈波伝搬時刻が算出された後、あるいは領域Pnで輝度変化の立ち上がりが検出されなかった場合(ステップS108NoまたはステップS110No)には、ステップS101に戻り、上記のステップS101〜ステップS113までの処理を繰り返し実行する。
[実施例1の効果]
上述してきたように、本実施例に係る脈波検出装置10は、被験者の生体が撮影された画像を複数の領域に分割し、各領域で輝度が変化するタイミングの時間差から脈波の遅延量を算出する。このため、本実施例に係る脈波検出装置10では、脈波が伝搬するタイミングを測定する時間分解能を動画のフレーム周期以下に向上できる。したがって、本実施例に係る脈波検出装置10によれば、脈波の遅延量を始め、脈波伝搬速度、脈波到達時刻や脈波周期のゆらぎなどの検出精度を向上させることができる。
さて、これまで開示の装置に関する実施例について説明したが、本発明は上述した実施例以外にも、種々の異なる形態にて実施されてよいものである。そこで、以下では、本発明に含まれる他の実施例を説明する。
[応用例1]
上記の実施例1では、各領域P1〜Pnの間で脈波の遅延量が一定であるとの想定の下、脈波の遅延量を算出する算出方法について説明したが、他の算出方法によって脈波の遅延量を算出することもできる。
すなわち、脈波伝搬速度は、生体の部位によって異なる。このため、各領域の脈波の伝搬方向の長さが一定であっても、領域の遅延量が同一であるとは限らない。そこで、脈波検出装置10は、各領域の遅延量の検出精度をさらに高めるために、各領域が輝度変化の立ち上がりの変化点となった頻度を用いて、各領域の間で異なる脈波の遅延量を算出することもできる。
例えば、脈波検出装置10は、複数の脈波周期にわたって各領域の輝度信号を二値化する。その上で、脈波検出装置10は、同一のサンプリング時間で輝度変化の立ち上がりが検出された領域の中で脈波の起点となる心臓から直近に位置する変化点の領域となった回数Niを計数する。具体的には、領域iと領域i+1の間で輝度変化が起きた回数を「Ni」、フレーム周期を「Ts」、1周期分の遅延領域の個数を「m」としたとき、領域iの遅延量は、下記の算出式(2)によって算出することができる。なお、下記の算出式(2)における「Σ」は、i=1〜mの総和であるものとする。
di=Ni×Ts×ΣNi・・・(2)
このように、上記の算出式(2)を用いて各領域の脈波の遅延量diを算出することによって、各領域の脈波の伝搬方向の長さが一定であっても、各領域の脈波の遅延量をより精度よく算出することができる。すなわち、変化点の領域となった回数Niが多いほど、当該領域の遅延量が大きくなると推定できる。この場合には、上記の算出式(2)によって他の領域よりも値が大きい遅延量が算出されることになる。一方、変化点の領域となった回数Niが少ないほど、当該領域の遅延量は値が小さくなると推定できる。この場合には、上記の算出式(2)によって他の領域よりも値が小さい遅延量が算出されることになる。
[応用例2]
また、脈波検出装置10は、収縮期血圧の測定値に応じて、各領域の遅延量を算出することもできる。一般に、脈波伝搬速度V1は、収縮期血圧P1に対して下記の1次式(3)で近似できることが知られている。ただし、下記の1次式(3)の傾きa1及び切片a0は、個人差によって値が異なる。このため、事前の測定によってキャリブレーションしておくことが好ましい。
V1=a1×P1+a0・・・(3)
上記の1次式を利用して、被験者の生体における複数の部位で脈波伝搬時刻の差を求め、各部位の間の距離から脈波伝搬速度を求めることによって収縮期血圧を測定することができる。ところが、脈波伝搬速度は、血圧によって変化するので、各領域の遅延量も血圧によって変化する。
そこで、脈波検出装置10は、一例として、胸の脈波から顔の脈波までの伝搬速度から血圧を求める場合には、先ず、通常時の収縮期血圧P1を仮定して脈波伝搬速度V1を決定する。その上で、脈波検出装置10は、脈波伝搬速度V1から部位別に各領域の遅延量を求め、領域ごとの遅延量から胸と顔の部位ごとに脈波伝搬時刻を測定し、胸から顔への脈波伝搬時刻の差から脈波伝搬速度V2を求め、脈波伝搬速度V2から収縮期血圧P2を求める。そして、脈波検出装置10は、最初に仮定した血圧P1と異なる場合には、最初に仮定した血圧P1を修正し、誤差が充分に小さくなるまで、以上の計算を繰り返す。
図12は、被験者が映る画像の一例を示す図である。図12には、胸と顔の各々で領域をN個に分割する態様が図示されている。図12に示すように、胸部では、脈波の起点となる心臓から近い順に胸領域1〜胸領域NbのN個の領域に分割される。一方、頭部では、脈波の起点となる心臓から近い順に顔領域1〜顔領域NfのN個の領域に分割される。
図13は、応用例2に係る遅延量算出処理の手順を示すフローチャートである。この処理は、図示しない入力デバイス等を介して遅延量の算出指示がなされた場合などに処理が起動される。図13に示すように、脈波検出装置10は、基準とする第1の血圧P1、すなわちキャリブレーション時に測定された収縮期血圧を内部の主記憶装置や補助記憶装置または外部装置から取得する(ステップS301)。そして、脈波検出装置10は、ステップS301で取得された第1の血圧P1から脈波伝搬速度V1を算出する(ステップS302)。
続いて、脈波検出装置10は、ステップS302で算出された脈波伝搬速度V1を用いて、複数の部位のうち脈波の起点となる心臓から近い第1の部位、例えば胸部の各領域1〜Nbの遅延量Dbiを算出する(ステップS303)。かかる遅延量Dbiは、胸領域1の下端から胸領域iの上端までの距離を「Lbi」としたとき、脈波伝搬速度V1でLbiを除する計算、すなわち「Lbi/V1」によって算出できる。なお、「i」は、1〜Nbの自然数である。
そして、脈波検出装置10は、取得部12によって取得される画像から第1の部位の各領域1〜Nbの輝度変化の立ち上がりを測定する(ステップS304)。その上で、脈波検出装置10は、ステップS303で算出された各領域1〜Nbの遅延量Dbiと、ステップS304で輝度変化の立ち上がりが測定された各領域1〜Nbのサンプリング時間とを用いて、第1の部位の領域1の脈波伝搬時刻Tbを算出する(ステップS305)。
また、脈波検出装置10は、ステップS302で算出された脈波伝搬速度V1を用いて、複数の部位のうち脈波の起点となる心臓から第1の部位よりも遠い第2の部位、例えば頭部の各領域1〜Nfの遅延量Dfiを算出する(ステップS306)。かかる遅延量Dfiは、顔領域1の下端から顔領域iの上端までの距離を「Lfi」としたとき、脈波伝搬速度V1でLfiを除する計算、すなわち「Lfi/V1」によって算出できる。なお、「i」は、1〜Nfの自然数である。
そして、脈波検出装置10は、取得部12によって取得される画像から第2の部位の各領域1〜Nfの輝度変化の立ち上がりを測定する(ステップS307)。その上で、脈波検出装置10は、ステップS306で算出された各領域1〜Nfの遅延量Dfiと、ステップS307で輝度変化の立ち上がりが測定された各領域1〜Nfのサンプリング時間とを用いて、第2の部位の領域Nfの脈波伝搬時刻Tfを算出する(ステップS308)。
その後、脈波検出装置10は、ステップS305で算出された第1の部位の領域1の脈波伝搬時刻Tbと、ステップS308で算出された第2の部位の領域Nfの脈波伝搬時刻Tfとを用いて、第1の部位から第2の部位までの遅延量Tbfを算出する(ステップS309)。かかる胸から顔までの遅延量Tbfは、頭部の領域Nfの脈波伝搬時刻Tfから胸部の領域1の脈波伝搬時刻Tbを差し引く計算、すなわち「Tf−Tb」によって算出できる。
その上で、脈波検出装置10は、ステップS309で算出された第1の部位から第2の部位までの遅延量Tbfと、第1の部位から第2の部位までの距離Lbfとから、脈波伝搬速度V2を算出する(ステップS310)。かかる脈波伝搬速度V2は、図12に示した第1の部位から第2の部位までの距離Lbfを、第1の部位から第2の部位までの遅延量Tbfで除する計算、すなわち「Lbf/Tbf」によって算出できる。そして、脈波検出装置10は、ステップS310で算出された脈波伝搬速度V2を用いて、第2の血圧P2を算出する(ステップS311)。これは、脈波伝搬速度V1の代わりに脈波伝搬速度V2を上記の1次式(3)へ代入することによって算出できる。
そして、脈波検出装置10は、ステップS301で取得された第1の血圧P1と、ステップS311で算出された第2の血圧P2との誤差が所定の適正範囲内であるか否かを判定する(ステップS312)。
ここで、かかる脈波伝搬速度V2は、上記の脈波伝搬速度V1を用いて算出されるが、基準とする第1の血圧P1だけで求められる値ではなく、胸部および頭部の各領域で輝度変化の立ち上がりが測定されたサンプリング時間も用いて求められる。このため、脈波伝搬速度V2は、脈波伝搬速度V1が実測値によって正確な脈波伝搬速度へ収斂している公算が高い。それゆえ、脈波伝搬速度V2を用いて算出された第2の血圧P2と第1の血圧との誤差が大きいほど、最初に仮定された脈波伝搬速度V1が実際の脈波伝搬速度と乖離しているとみなすことができる。この場合には、各領域の脈波の遅延量も実際の値と乖離している可能性が高くなる。
よって、第1の血圧P1と第2の血圧P2との誤差が適正範囲外である場合(ステップS312No)には、脈波検出装置10は、次のような処理を実行する。すなわち、脈波検出装置10は、ステップS310で算出された脈波伝搬速度V2を脈波伝搬速度V1へ、ステップS311で算出された第2の血圧P2を第1の血圧P1へ置き換え(ステップS313)、上記のステップS303〜ステップS312までの処理を繰り返し実行する。
最後に、第1の血圧P1と第2の血圧P2との誤差が適正範囲内である場合(ステップS312Yes)には、各領域の脈波の遅延量が実際の値と乖離している可能性が低いとみなすことができる。この場合には、脈波の遅延量、脈波伝搬速度V1またはV2や血圧P1またはP2を所定の出力先へ出力の上、処理を終了する。
なお、図13に示したフローチャートでは、ステップS303〜ステップS305の処理が実行されてからステップS306〜ステップS308の処理が実行される場合を図示したが、これらの処理は順序を入れ替えて実行することもできるし、並列に実行することもできる。
このように、脈波検出装置10は、収縮期血圧を用いて各領域の遅延量を正確に算出することができる。
[分割数]
なお、領域の分割数Nは、値を大きくするほど時間分解能を向上させることができるが、値を過度に大きくするとSN比が低下する場合もある。このため、例えば、フレーム間で輝度変化の立ち上がりにずれが発生する領域が少なくとも1つ発生する程度の数に分割数を設定することによって実施例1及び実施例2で説明する遅延量の算出を実現できる。
[入力信号]
上記の実施例1及び実施例2では、入力信号としてR信号およびG信号の二種類を用いる場合を例示したが、異なる複数の光波長成分を持つ信号であれば任意の種類の信号および任意の数の信号を入力信号とすることができる。例えば、R、G、B、IRおよびNIRなどの光波長成分が異なる信号のうち任意の組合せの信号を2つ用いることもできるし、また、3つ以上用いることもできる。
[他の実装例]
上記の実施例1では、脈波検出装置10が上記の脈波検出処理をスタンドアローンで実行する場合を例示したが、クライアントサーバシステムとして実装することもできる。例えば、脈波検出装置10は、脈波検出サービスを提供するWebサーバとして実装することとしてもよいし、アウトソーシングによって脈波検出サービスを提供するクラウドとして実装することとしてもかまわない。このように、脈波検出装置10がサーバ装置として動作する場合には、スマートフォンや携帯電話機等の携帯端末装置やパーソナルコンピュータ等の情報処理装置をクライアント端末として収容することができる。これらクライアント端末からネットワークを介して被験者の顔が映った画像が取得された場合に脈波検出処理を実行し、脈波の検出結果やその検出結果を用いてなされた診断結果をクライアント端末へ応答することによって脈波検出サービスを提供できる。
[分散および統合]
また、図示した各装置の各構成要素は、必ずしも物理的に図示の如く構成されていることを要しない。すなわち、各装置の分散・統合の具体的形態は図示のものに限られず、その全部または一部を、各種の負荷や使用状況などに応じて、任意の単位で機能的または物理的に分散・統合して構成することができる。例えば、脈波検出装置10が有する各機能部を脈波検出装置10の外部装置としてネットワーク経由で接続するようにしてもよい。
また、各機能部を別の装置がそれぞれ有し、ネットワーク接続されて協働することで、上記の脈波検出装置10の機能を実現するようにしてもよい。
[脈波検出プログラム]
また、上記の実施例で説明した各種の処理は、予め用意されたプログラムをパーソナルコンピュータやワークステーションなどのコンピュータで実行することによって実現することができる。そこで、以下では、図14を用いて、上記の実施例と同様の機能を有する脈波検出プログラムを実行するコンピュータの一例について説明する。
図14は、実施例1及び実施例2に係る脈波検出プログラムを実行するコンピュータの一例について説明するための図である。図14に示すように、コンピュータ100は、操作部110aと、スピーカ110bと、カメラ110cと、ディスプレイ120と、通信部130とを有する。さらに、このコンピュータ100は、CPU150と、ROM160と、HDD170と、RAM180とを有する。これら110〜180の各部はバス140を介して接続される。
HDD170には、図14に示すように、上記の実施例1で示した取得部12と、第1の分割部13gと、第2の分割部13rと、統計処理部14g1〜14gn及び14r1〜14rnと、BPF15g1〜15gn及び15r1〜15rnと、差演算部16−1〜16−nと、二値化部17−1〜17−nと、測定部18と、算出部19と同様の機能を発揮する脈波検出プログラム170aが予め記憶される。この脈波検出プログラム170aについては、図1に示した各々の機能部の各構成要素と同様、適宜統合又は分離しても良い。すなわち、HDD170に格納される各データは、常に全てのデータがHDD170に格納される必要はなく、処理に必要なデータのみがHDD170に格納されれば良い。
そして、CPU150が、脈波検出プログラム170aをHDD170から読み出してRAM180に展開する。これによって、図14に示すように、脈波検出プログラム170aは、脈波検出プロセス180aとして機能する。この脈波検出プロセス180aは、HDD170から読み出した各種データを適宜RAM180上の自身に割り当てられた領域に展開し、この展開した各種データに基づいて各種処理を実行する。なお、脈波検出プロセス180aは、図1に示した各機能部にて実行される処理、例えば図11や図13に示す処理を含む。また、CPU150上で仮想的に実現される各処理部は、常に全ての処理部がCPU150上で動作する必要はなく、処理に必要な処理部のみが仮想的に実現されれば良い。
なお、上記の脈波検出プログラム170aについては、必ずしも最初からHDD170やROM160に記憶させておく必要はない。例えば、コンピュータ100に挿入されるフレキシブルディスク、いわゆるFD、CD−ROM、DVDディスク、光磁気ディスク、ICカードなどの「可搬用の物理媒体」に各プログラムを記憶させる。そして、コンピュータ100がこれらの可搬用の物理媒体から各プログラムを取得して実行するようにしてもよい。また、公衆回線、インターネット、LAN、WANなどを介してコンピュータ100に接続される他のコンピュータまたはサーバ装置などに各プログラムを記憶させておき、コンピュータ100がこれらから各プログラムを取得して実行するようにしてもよい。