以下、本発明の各実施の形態について、図面を参照して詳細に説明する。本発明の実施の形態1および実施の形態2は、本発明の基本的態様の例であり、本発明の実施の形態3は、本発明の具体的態様の例である。
なお、以下に説明する各実施の形態において、「部位」とは、人の身体のうち関節によって分割された部分の一まとまりをいうものとする。すなわち、部位は、例えば、頭、肩、右上腕、右前腕、左上腕、左前腕、右膝上、右膝下、左膝上、および左膝下である。また、「部位領域」とは、画像においてある部位が占め得る領域、つまり、部位の可動範囲であるものとする。
また、「部位数」とは、姿勢推定における評価対象となる部位の総数である。すなわち、全身を評価対象として姿勢の推定を行う場合には、部位数は、例えば、頭、肩(胴体を含む)、右上腕、右前腕、左上腕、左前腕、右膝上、右膝下、左膝上、および左膝下で分類される部位の数であり、「10」である。
また、「部位軸」とは、部位の長手方向の仮想的な中心軸であり、具体的には、部位を基準部位側の他の第1の部位と接続する第2の関節と、部位を他の第2の部位と接続する第2の関節または部位の端部とを結ぶ線分をいうものとする。部位軸は、例えば、第1の関節の座標情報と、角度情報と、部位長さとの組により定義されてもよいし、第1の関節の座標情報と第2の関節もしくは部位の端部の座標情報とにより定義されてもよい。例えば、右上腕の部位軸の位置、向き、および長さは、右上腕の骨の中心軸の位置、向き、および長さにほぼ一致する。
また、「部位太さ」とは、部位の部位軸周りの太さであり、例えば画面上での幅である。
また、「部位候補」とは、部位の位置の候補であり、画像データから推定される部位の位置である。
また、「シルエット」とは、画面上で一人の身体が占める閉じられた領域の候補であり、画像から推定される身体の位置である。なお、部位候補およびシルエット候補は、適宜、「身体候補」と総称する。
また、「姿勢」とは、2次元座標系または3次元座標系における、部位を接続する関節の位置、または、関連する各部位の長さおよび部位間の角度等の情報によって表現されるものとする。したがって、「姿勢推定」とは、これらの情報を推定することにより、姿勢を推定することをいう。なお、上述の位置、長さ、および角度は、人の所定の身体部位を基準とした相対値により表現されてもよいし、2次元座標系または3次元座標系における絶対値により表現されてもよい。
また、以下の各実施の形態では、処理対象の単位を画素として説明するが、姿勢推定装置は、所定のサイズに相当する複数の画素の一まとまりを、それぞれ一つの画素とみなして、同様の処理を行ってもよい。これにより、姿勢推定装置は、処理を高速に行うことができる。複数の画素をひとつの画素とみなす場合、複数の画素の重心となる画素の値をその複数の画素の値として用いてもよいし、複数の画素の値の平均値を、その複数の画素の値として用いてもよい。
(実施の形態1)
図1は、本発明の実施の形態に係る姿勢推定装置の構成を示すブロック図である。
図1において、本発明の実施の形態に係る姿勢推定装置100は、関節により接続された複数の部位を有する物体である人を撮影した画像データに基づいて、その人の姿勢の推定を行う装置である。姿勢推定装置100は、基準モデル格納部140、重み付け算出部150、および姿勢推定部160を有する。
基準モデル格納部140は、姿勢毎に、部位の位置を規定する基準モデルを格納する。
重み付け算出部150は、姿勢毎に、密集部分の重みが小さくなるように部位に対して重み付けを行う。ここで、密集部分とは、胴体の前で組んだ両腕の各部位など、複数の部位が密集している部分である。すなわち、密集部分は、姿勢推定においてノイズが発生し易い部位である。
姿勢推定部160は、上述の重み付けを適用して基準モデルと人とを比較することにより、人の姿勢を推定する。
なお、姿勢推定装置100は、例えば、CPU(central processing unit)、制御プログラムを格納したROM(read only memory)などの記憶媒体、およびRAM(random access memory)などの作業用メモリをそれぞれ有する。この場合、上記した各構成部の機能は、CPUが制御プログラムを実行することにより実現される。
このような姿勢推定装置100は、ノイズが発生し易い密集部分の影響を低減して姿勢推定を行うことができる。また、これにより、姿勢推定装置100は、周囲に伸ばした腕の手や前腕など、他の部位と離れており姿勢の特徴部分となる部位(以下「分散部分」という)の重み付けを、相対的に大きくすることができる。したがって、姿勢推定装置100は、各部位が姿勢推定精度に与える影響の度合いに対応した重み付けを行うので、関節を有する人の姿勢を高精度に推定することができる。
なお、ここでは、重み付け算出部150は、姿勢毎に、密集部分の重みが小さくなるように部位に対して重み付けを行う例を説明したが、分散部分の重み付けを大きくして、密集部分の重みが相対的に小さくなるようにしてもよい。
(実施の形態2)
図2は、本発明の実施の形態に係る姿勢推定装置の構成を示すブロック図である。
図2において、本発明の実施の形態に係る姿勢推定装置100は、関節により接続された複数の部位を有する物体である人を撮影した画像データに基づいて、その人の姿勢の推定を行う装置である。姿勢推定装置100は、基準モデル格納部140、重み付け算出部150、および姿勢推定部160を有する。
基準モデル格納部140は、姿勢毎に、部位の位置を規定する基準モデルを格納する。
重み付け算出部150は、姿勢毎に、密集部分の重みが小さくなるように部位に対して重み付けを行う。重み付け算出部150は、部位間最小重み距離算出部151、最大最小重み算出部152、および姿勢毎重み付け処理部153を有する。
部位間最小重み距離算出部151は、部位毎に、部位間最小重み距離を算出する。部位間最小重み距離とは、他の部位が位置したときに当該他の部位の存在が上述の姿勢の推定のノイズとなる可能性が高い範囲を示すパラメータである。
最大最小重み算出部152は、重みの範囲を保持する。
姿勢毎重み付け処理部153は、姿勢毎に、上述の重みの範囲で、基準モデルの部位毎に小さい重みまたは大きい重みを決定して、基準モデルの各部位に対して重み付けを決定する。より具体的には、姿勢毎重み付け処理部153は、基準モデルの部位のうち、その部位間最小重み距離が示す範囲内に、当該部位間最小重み距離に対応する他の部位が位置する部位に対しては、小さい重みを決定する。また、姿勢毎重み付け処理部153は、その部位間最小重み距離が示す範囲内に、当該部位間最小重み距離に対応する他の部位が位置しない部位に対しては、大きい重みを決定する。
姿勢推定部160は、姿勢毎重み付け処理部153が決定した重み付けを適用して基準モデルと人とを比較することにより、人の姿勢を推定する。
なお、姿勢推定装置100は、例えば、CPU、制御プログラムを格納したROMなどの記憶媒体、およびRAMなどの作業用メモリをそれぞれ有する。この場合、上記した各構成部の機能は、CPUが制御プログラムを実行することにより実現される。
このような姿勢推定装置100は、他の部位が位置したときに当該他の部位の存在が姿勢推定のノイズとなる可能性が高い範囲(画像領域、部位間最小重み距離が示す範囲)を、小さい重みを決定すべき密集部分として扱うことができる。これにより、姿勢推定装置100は、ノイズが発生し易い部分に対して的確に小さい重みを設定することができるので、関節を有する人の姿勢を高精度に推定することができる。
(実施の形態3)
図3は、本発明の実施の形態に係る姿勢推定装置の構成を示すブロック図である。説明の簡便化のため、姿勢推定装置の周辺機器についても併せて図示する。
図3において、本発明の実施の形態に係る姿勢推定装置100は、関節により接続された複数の部位を有する物体である人を撮影した画像データに基づいて、その人の姿勢の推定を行う装置である。姿勢推定装置100は、身体制約情報格納部110、画像データ取得部120、身体候補推定部130、基準モデル格納部140、重み付け算出部150、および姿勢推定部160を有する。
身体制約情報格納部110は、人の体格や姿勢に関する制約条件(以下「身体制約情報」という)を、予め格納する。身体制約情報は、後述の部位領域の推定や部位候補の抽出に用いられる情報である。身体制約情報の具体的な内容は、部位領域の推定手法や部位候補の抽出手法により異なるため、後述する。
画像データ取得部120は、所定の3次元座標空間に設置された単眼カメラ200によって撮像された画像の画像データを、有線通信または無線通信により取得し、身体候補推定部130へ出力する。なお、本実施の形態において、単眼カメラ200はビデオカメラであるものとする。画像データ取得部120は、単眼カメラ200において連続的にリアルタイムで撮影された動画像データを入力し、動画像データを構成する各静止画像データを、順次、身体候補推定部130へ出力する。以下の説明において、画像データは、一人のみの画像を含むものとして説明するが、この限りではなく、複数人の画像を含んでもよいし、人の画像を含んでいなくてもよい。
図4は、画像データを説明するための図である。
図4に示すように、例えば、単眼カメラ200の位置を地面に投射した位置を原点Oとする3次元の座標系410を設定する。座標系410は、例えば、垂直方向をY軸とし、Y軸および単眼カメラ200の光軸411と直交する方向をX軸とし、X軸およびY軸に直交する方向をZ軸とする。
単眼カメラ200の設置角度は、例えば、Y軸と光軸411との間の角度θにより表される。そして、単眼カメラ200は、単眼カメラ200の画角φの範囲に含まれるある平面412に焦点(フォーカス)を合わせて撮像を行う。このように撮影された画像の画像データは、姿勢推定装置100へ送信される。
図3の身体候補推定部130は、画像データ取得部120から入力された画像データに基づいて、人の身体候補(シルエットまたは部位候補)を取得する。そして、身体候補推定部130は、取得した身体候補を示す身体候補情報(シルエット情報または部位候補情報)を、姿勢推定部160へ出力する。本実施の形態において、身体候補推定部130は、人の部位候補を取得し、部位候補情報を出力するものとする。
図5は、身体候補推定部130の構成の一例を示すブロック図である。
図5において、身体候補推定部130は、部位領域推定部131および部位候補抽出部132を有する。
部位領域推定部131は、画像データ取得部120から入力された画像データに基づいて、各部位の部位領域を推定する。具体的には、画像データ取得部120から入力された画像データに基づいて、各部位の部位領域を推定する。具体的には、部位領域推定部131は、画像データから、人の基準部位の位置および向きを推定する。「基準部位」とは、他の部位より前にその位置および向きの推定が行われ、その推定結果が他の部位の位置および向きの推定に影響を与える部位である。そして、部位領域推定部131は、推定した基準部位の位置および向きを基準として、各部位の部位領域を推定する。
基準部位は、画像取得空間において、安定して映像が得られる部位とすることが望ましい。そこで、本実施の形態において、基準部位は、人の頭部および肩部とする。また、基準部位の向きは、肩部の向きとし、肩部の向きは、右肩部と左肩部とを結ぶ直線の方向とする。そして、部位領域推定部131は、画像データと、部位毎の部位領域を示す情報(以下「部位領域データ」という)とを、部位候補抽出部132へ出力する。本実施の形態において、図4に示すように上から画像を取得するようにしている。このため、基準部位を人の頭部および肩部とすることにより、最も安定して推定を行うことができる。
部位候補抽出部132は、入力された画像データから、入力された部位領域データに基づいて、各部位候補を抽出する。そして、部位候補抽出部132は、画像データと、抽出した部位候補を示す部位候補情報とを、姿勢推定部160へ出力する。なお、本実施の形態において、部位候補は、画像上の位置、つまり、画像の2次元座標系により表現されるものとし、部位候補情報は、各部位が位置することの尤もらしさの分布を示す尤度マップであるものとする。
すなわち、本実施の形態において、部位候補抽出部132は、部位領域推定部131から入力された部位領域データが示す部位領域以外の領域については、その部位領域に対応する指定部位が位置することの尤もらしさを低くした、尤度マップを生成する。以下、画像データに基づいて生成された尤度マップは、「推定尤度マップ」という。
図3の基準モデル格納部140は、図3の姿勢推定部160の姿勢推定結果となり得る姿勢毎に、基準モデル2次元情報を格納している。基準モデル2次元情報とは、ある姿勢の基準モデルを、ある2次元平面に投影したときの各部位の相対的な位置関係によって示す情報である。基準モデル2次元情報は、非特許文献1に開示されているような、各部位の番号付投影像情報でもよいし、各部位の位置、角度からなる情報でもよい。基準モデル2次元情報の詳細については後述する。
図3の重み付け算出部150は、身体制約情報格納部110の身体制約情報を参照して、基準モデル格納部140に基準モデル2次元情報が格納されている姿勢毎に、基準モデルの各部位に対して重み付けを決定する。より具体的には、重み付け算出部150は、姿勢毎に、密集部分の重みが小さくなるように部位に対して重み付けを行う。そして、重み付け算出部150は、決定した重み付けを示す重み付け情報を、姿勢推定部160へ出力する。
図6は、重み付け算出部150の構成の一例を示すブロック図である。説明の簡便化のため、重み付け算出部150の周辺の機能部についても併せて図示する。
図6において、重み付け算出部150は、部位間最小重み距離算出部151、最大最小重み算出部152、および姿勢毎重み付け処理部153を有する。
部位間最小重み距離算出部151は、身体制約情報格納部110を参照して、姿勢毎および基準モデルの部位毎に、部位間最小重み距離を算出する。部位間最小重み距離は、上述の通り、他の部位が位置したときに当該他の部位の存在が上述の姿勢の推定のノイズとなる可能性が高い範囲を示すパラメータである。部位間最小重み距離の詳細については、後述する。
最大最小重み算出部152は、部位数に基づいて、重みの最大値と最小値を、重みの範囲として算出し、これを保持する。具体的には、最大最小重み算出部152は、後述の姿勢推定部160が比較の対象とする部位の数(部位数)に基づいて、部位数がより多いほどより広くなるように、重み範囲を決定する。
姿勢毎重み付け処理部153は、姿勢毎に、上述の重みの範囲で、基準モデルの部位毎に小さい重みまたは大きい重みを決定して、基準モデルの各部位に対して重み付けを決定する。より具体的には、姿勢毎重み付け処理部153は、基準モデルの部位のうち、その部位間最小重み距離が示す範囲内に、当該部位間最小重み距離に対応する他の部位が位置する部位に対しては、小さい重みを決定する。また、姿勢毎重み付け処理部153は、その部位間最小重み距離が示す範囲内に、当該部位間最小重み距離に対応する他の部位が位置しない部位に対しては、大きい重みを決定する。重み付けの単位は、部位、画素、複数の画素の範囲のいずれでもよい。部位毎の場合は、重み付け処理を特に高速に行うことができ、画素毎の場合には、特に精度よく姿勢を推定することができる。そして、姿勢毎重み付け処理部153は、決定した、姿勢毎の基準モデルの各部位に対する重み付けを示す重み付け情報を、姿勢推定部160へ出力する。
なお、部位間最小重み距離算出部151が算出した部位毎の部位間最小重み距離、および、最大最小重み算出部152が算出した重みの範囲は、全姿勢に共通の値となる。したがって、部位間最小重み距離算出部151および最大最小重み算出部152は、これらの値を姿勢毎に計算し直さなくてもよく、計算結果を保持しておけばよい。
図3の姿勢推定部160は、身体候補推定部130から入力された身体候補情報に基づいて、画像データに含まれる人(以下「被写体」という)の姿勢の推定を行う。本実施の形態において、姿勢推定部160は、推定尤度マップに基づいて姿勢の推定を行うものとする。
具体的には、姿勢推定部160は、姿勢毎および部位毎に、2次元基準モデルマップが示す基準モデルの各部位の位置(領域)と、推定尤度マップが示す対応部位の位置(領域)とが重なる画素の個数をカウントする。例えば、2次元基準モデルマップが、ある部位が存在する画素の値を1、存在しない画素の値を0として保持しているとする。また、推定尤度マップが、ある部位が存在する画素の値を1、存在しない画素の値を0として保持しているとする。この場合、姿勢推定部160は、部位ごとに2次元基準モデルマップの値と推定尤度マップの値とを画素ごとに掛け算し、値が1となる画素の個数をカウントする。
ここで、2次元基準モデルマップとは、基準モデル2次元情報が示す基準モデルを、所定の2次元平面に投影したときの、各部位の相対位置関係を示す情報である。この所定の2次元平面は、画像データを撮影したカメラ(ここでは単眼カメラ200)の撮像面に対応する。2次元基準モデルマップの詳細については後述する。
更に、姿勢推定部160は、姿勢毎に、各部位のカウント値に、その部位に対して決定された重みを乗じた値を、画面全体について合算する。そして、姿勢推定部160は、その合算値に基づいて、推定尤度マップが示す人と各姿勢の基準モデルとの一致度を判定する。そして、姿勢推定部160は、ディスプレイ装置等の情報出力装置300に対して、有線通信または無線通信により情報を送信し、ユーザに対して推定結果を通知する。
姿勢推定装置100は、例えば、CPU、制御プログラムを格納したROMなどの記憶媒体、およびRAMなどの作業用メモリをそれぞれ有する。この場合、上記した各構成部の機能は、CPUが制御プログラムを実行することにより実現される。
このような姿勢推定装置100は、基準モデルの部位毎に、他の部位が位置したときに当該他の部位の存在が姿勢推定のノイズとなる可能性が高い範囲(画像領域)については、相対的に重みを小さくする。
他の部位と重なっている、または、他の部位との距離が近い部位(密集部分)は、身体候補推定部130で正しく推定される確率が低くなる。特に、平行線の抽出により部位候補の推定を行う場合、密集部分は、正しく推定される確率が低くなる。
そこで、姿勢推定装置100は、密集部分の影響は小さく、分散部分の影響を大きくして、姿勢推定を行う。これにより、姿勢推定装置100は、ノイズを多く含み得る密集部分による影響を小さくしつつ、姿勢を特徴付ける分散部分による影響を大きくして、姿勢推定を行うので、姿勢推定の精度を向上させることができる。
また、人の姿勢は自由度が高いのに対し、現実的には、限定された代表的な姿勢しか基準モデルとして用意することはできない。したがって、部位数が多ければ多いほど、推定結果となるべき姿勢の基準モデルに対する構造上の細かい差異が累積し易い。
そこで、姿勢推定装置100は、部位数が多いほど、密集部分の重みと離隔部分の重みとの差を大きくする。これにより姿勢推定装置100は、1つの部位の大きな違いを見逃さないようにしつつ、細かい差異による影響を抑えた姿勢推定を行うことができる。すなわち、姿勢推定装置100は、姿勢推定の精度を更に向上させることができる。
ここで、姿勢推定装置100の動作の説明に先立って、身体制約情報および基準モデルの例について説明する。
まず、身体制約情報格納部110に格納されている身体制約情報の例について説明する。
身体制約情報は、例えば、所定の部位の長さ、および関節の角度のうち少なくとも一方を基準として、所定の部位に接続する部位が存在し得る領域(つまり部位領域)を制限する。この場合、身体制約情報は、例えば、ある部位と他の部位との間の長さの比および関節の可動角度のうち少なくとも一方を含む。例えば、身体制約情報は、肩幅を1とした場合に上腕の長さが0.6となる旨を規定する。
例えば、身体制約情報は、部位毎に、部位長比と、胴体に近い側の関節を基点としたときの運動の自由度を3方向(X軸方向、Y軸方向、Z軸方向)について記述する情報とを含む。
また、身体制約情報は、例えば、右上腕の部位IDが「3」で、右上腕の部位長の肩部の部位長に対する比が「0.8」である場合、以下のような記述のファイルまたはプログラムソースにより、右上腕の部位長を規定することができる。
Begin
部位ID:3
長さの比:0.8
End
また、身体制約情報は、例えば、右上腕の部位IDが「3」で、肩部の部位長に対する右上腕の太さの比が「0.2」である場合、以下のような記述のファイルまたはプログラムソースにより、右上腕の部位太さを規定することができる。
Begin
部位ID:3
太さの比:0.2
End
また、例えば、右肩の関節IDが「100」で、肩部の部位IDが「1」で、右上腕の部位IDが「3」であるものとする。また、右上腕の可動方向が、X軸について(−60.0,90.0)、Y軸について(−90.0,90.0)、Z軸について(−90.0,90.0)であるものとする。この場合、身体制約情報は、例えば、以下のような記述のファイルまたはプログラムソースにより、右上腕の右肩の関節に対する自由度を規定することができる。
Begin
関節ID:100
部位ID:1
部位ID:3
可動方向:rx,ry,rz
角度:(−60.0,90.0)、(−90.0,90.0)、(−90.0,90.0)
End
なお、これらの場合において、関節IDと部位IDによって示される関節と部位との接続関係を示す情報と、各関節の可動方向および角度を示す情報とは、別のファイルに記述されてもよい。
また、身体制約情報は、各位置を2次元座標系に射影した情報により記述したものであってもよい。この場合、3次元では一意である位置情報であっても、射影角度によってその値は異なり得る。また、可動方向や角度は2次元の値となる。したがって、身体制約情報格納部110は、このような値を身体制約情報として保持する場合には、併せて、射影角度に関する情報を保持しておく必要がある。
以上で、身体制約情報の例についての説明を終える。
次に、基準モデルの例について説明する。
基準モデルは、例えば、基準モデル3次元情報と、その基準モデル3次元情報についての基準モデル2次元情報とから成る。
ここで、基準モデル3次元情報とは、姿勢状態毎の基準モデルを、3次元座標系における部位位置や関節位置等によって表現する、第1段階の情報である。そして、基準モデル2次元情報とは、基準モデル3次元情報が示す姿勢状態にある基準モデルを、2次元座標系における部位位置や関節位置等によって表現する、第2段階の情報である。すなわち、基準モデル2次元情報とは、ある視点から見たとき(ある2次元平面に投影したとき)の、関節等の相対位置関係を示す情報である。
この場合、基準モデル2次元情報は、基準モデル3次元情報を2次元座標系に射影することにより得られる。また、1つの姿勢状態にある基準モデルに対して複数の視点を想定する場合、1つの基準モデル3次元情報からは、複数の基準モデル2次元情報が生成され得ることになる。複数の視点は、つまり、カメラ視点に対して、基準モデルの位置と向きとの組み合わせが複数存在することに対応する。
まず、基準モデル3次元情報について説明する。
基準モデル3次元情報は、右肩関節の関節位置を原点とし、右肩位置と左肩位置との距離を1とする所定の3次元座標系を用いて表現される。なお、基準モデル3次元情報は、他の位置を原点とする座標系や、腕の部位長や身長等の他の長さを1とする座標系を用いて表現されてもよい。
ここで、例えば、姿勢状態の姿勢IDが「200」で、右肩の関節IDが「100」で、肩部の部位IDが「1」で、右上腕の部位IDが「3」であるものとする。また、右上腕の可動方向が、X軸について(20.0)、Y軸について(90.0)、Z軸について(0.0)であるものとする。この場合、基準モデル3次元情報は、例えば、以下のような記述のファイルまたはプログラムソースにより、基準モデルの右上腕の右肩の関節に対する自由度を規定することができる。なお、基準モデル3次元情報における可動方向が、身体制約情報とは異なり、範囲ではなく一方向となっているのは、基準モデル3次元情報が姿勢状態毎の情報であるためである。ただし、基準モデル3次元情報における可動方向も、関節角度の誤差や個体差を考慮して、範囲をもって定義されてもよい。
3次元姿勢Begin
姿勢ID:200
関節Begin
関節ID:100
部位ID:1
部位ID:3
可動方向:rx,ry,rz
角度:20.0,90.0,0.0
位置:(0,0,0)
関節End
3次元姿勢End
なお、基準モデル3次元情報は、関節に関する情報と部位に関する情報とを別のファイルで記述してもよい。これにより、複数の姿勢状態の間でファイルを共有することが可能となり、基準モデル格納部140のサイズを小さくすることができる。
また、基準モデル3次元情報は、関節位置と姿勢状態との対応関係と、関節角度と姿勢状態との対応関係とを、別のファイルで記述してもよい。これにより、体格の異なる複数の基準モデルについての基準モデル3次元情報を用意する場合に、関節角度と姿勢状態との対応関係を記述したファイルを共通のファイルとすることができる。したがって、基準モデル格納部140のサイズを小さくすることができる。
また、基準モデル3次元情報は、各関節の関節角度と部位長および部位太さ等を記述し、関節位置は記述しなくてもよい。この場合には、関節位置は、関節角度と身体制約とから算出することができる。これにより、基準モデル格納部140のサイズを小さくすることができる。
例えば、上述の右上腕に関する基準モデル3次元情報は、以下のように分けて記述することができる。
3次元姿勢定義Begin
姿勢ID:200
関節Begin
関節ID:100
部位ID:1
部位ID:3
可動方向:rx,ry,rz
関節End
3次元姿勢定義End
3次元姿勢角度Begin
姿勢ID:200
関節Begin
関節ID:100
角度:20.0,90.0,0.0
関節End
3次元姿勢角度End
3次元姿勢位置Begin
姿勢ID:200
関節Begin
関節ID:100
位置:(0,0,0)
関節End
3次元姿勢位置End
また、基準モデル3次元情報は、以下のように、複数の関節に関する情報を1つのファイルに含めてもよい。なお、この場合、角度および位置は、右肩関節位置等の1つの基準点を原点とした所定の3次元座標系により表現されてもよい。あるいは、角度および位置は、胴体に近い側の関節位置および胴体に近い側の他の部位の軸方向を基準とした相対的な3次元座標系により表現されてもよい。
3次元姿勢Begin
姿勢ID:200
関節Begin
関節ID:100
部位ID:1
部位ID:3
可動方向:rx,ry,rz
角度:20.0,90.0,0.0
位置:(0,0,0)
関節End
関節Begin
・・・
関節End
3次元姿勢End
・・・
3次元姿勢Begin
姿勢ID:300
関節Begin
・・・
関節End
関節Begin
・・・
関節End
3次元姿勢End
なお、基準モデル3次元情報は、このように複数の関節に関する情報を1つのファイルに含める場合でも、上述のように、情報の種別毎に別のファイルで記述してもよい。
また、基準モデル3次元情報は、複数の姿勢状態に関する情報を、同様に1つのファイルに含めてもよい。
次に、基準モデル2次元情報について説明する。
基準モデル2次元情報は、基準モデル3次元情報に基づいて生成される。基準モデル2次元情報は、予め生成されて基準モデル格納部140に格納されていてもよいし、基準モデル格納部140、重み付け算出部150、および姿勢推定部160等により、基準モデル3次元情報から都度生成されてもよい。複数の視点を想定する場合、基準モデル2次元情報を都度生成するようにすることにより、基準モデル格納部140のサイズを小さくすることができる。基準モデル2次元情報は、例えば、基準モデル格納部140により生成される。なお、基準モデル2次元情報には、基準とする部位の長さが画像上で何画素に相当するかを示す情報が付加されるものとする。
例えば、2次元座標に射影する水平の角度が「90度」で、垂直方向の角度が「45度」で、基準とする部位が肩部であり、肩の長さ(右肩関節位置から左肩間接位置までの距離)が「20画素」であるものとする。この場合、上述の右上腕に関する基準モデル2次元情報は、以下のように記述することができる。ここで、2次元座標系は、画像における水平方向をx軸、垂直方向をy軸とし、右肩関節位置を原点とする。また、角度は、x軸に対する角度とする。なお、射影角度は、例えば、単眼カメラ200の設置角度に基づいて基準モデル2次元情報を絞り込むのに用いられる。
2次元姿勢Begin
姿勢ID:200
基準とする部位の長さ換算:20
射影Begin
射影角度:(90, 45)
関節Begin
関節ID:100
部位ID:1
部位ID:3
角度:10.0
位置:(0,0)
関節End
射影End
2次元姿勢End
なお、基準2次元モデル情報は、上述の基準3次元モデル情報の場合と同様に、画像姿勢状態毎あるいは情報の種別毎に、別のファイルで記述してもよい。
また、基準2次元モデル情報は、以下に示すように、1つの射影角度に対して複数の関節に関する情報を含んだり、1つの姿勢に対して複数の射影角度に関する情報を含んでもよい。
2次元姿勢Begin
姿勢ID:200
基準とする部位の長さ換算:20
射影Begin
射影角度:(90, 45)
関節Begin
関節ID:100
部位ID:1
部位ID:3
角度:10.0
位置:(0,0)
関節End
・・・
関節Begin
・・・
関節End
射影End
射影Begin
射影角度:(70, 45)
関節Begin
・・・
関節End
射影End
・・・
2次元姿勢End
なお、基準モデル2次元情報は、1つの姿勢に対して複数の射影角度に関する情報を含む場合でも、上述の基準3次元モデル情報の場合と同様に、画像姿勢状態毎あるいは情報の種別毎に、別のファイルで記述してもよい。これにより、基準モデル格納部140のサイズを小さくすることができる。
また、基準モデル3次元情報を基準モデル2次元情報へ変換するための、2次元座標系への射影角度は、固定値であってもよいし、算出された肩向きに応じて変化する値であってもよい。
また、基準モデル2次元情報は、2次元基準モデルマップを含んでいてもよい。ここで、2次元基準モデルマップとは、2次元情報で記述された姿勢を所定の大きさの画像上に表現したもので、各基準モデルの重み付けする画素を特定するマップである。
2次元基準モデルマップは、例えば、3次元基準モデル情報に基づき、各部位に太さを持たせた立体を2次元基準モデル情報に含まれる射影方向により平面上に射影することにより、算出することができる。また、2次元基準モデルマップは、2次元基準モデル情報に基づき、各部位の太さと長さをもつ矩形領域内をその部位の画素とすることにより、算出することができる。また、2次元基準モデルマップは、2次元基準モデル情報に基づき、各部位の関節を結ぶ軸の画素、または、各部位の中心の一点、またはその一点を含む領域をその部位の画素とすることにより、算出することができる。
2次元基準モデルマップは、画素毎に、どの部位に含まれるかの情報が格納を格納する。具体的には、2次元基準モデルマップは、画素毎および部位毎に、その部位に含まれる場合には1を、含まれない場合には0を取るフラグを有するマップ情報である。
また、姿勢推定装置100は、推定結果として2次元姿勢のみを求める場合には、3次元基準モデル情報は必ずしも保持しなくてもよい。また、2次元基準モデルマップは、予め生成されて基準モデル格納部140に格納されていてもよいし、基準モデル格納部140、重み付け算出部150、および姿勢推定部160等により、基準モデル2次元情報から都度生成されてもよい。
以上で、基準モデルの例についての説明を終える。
次に、姿勢推定装置100の動作について説明する。
図7は、姿勢推定装置100の動作の一例を示すフローチャートである。
まず、ステップS1000において、姿勢推定装置100は、部位間最小重み距離算出処理を実行する。部位間最小重み距離算出処理は、身体制約情報に基づき、各部位に対して部位間最小重み距離を算出して決定する処理である。
図8は、部位間最小重み距離算出処理の一例を示すフローチャートである。
まず、ステップS1100において、部位間最小重み距離算出部151は、評価対象となる部位の中から、注目部位pを1つ選択する。
そして、ステップS1200において、部位間最小重み距離算出部151は、選択中の注目部位pの身体制約情報のうち、部位間最小重み距離算出に必要な情報を取得する。
そして、ステップS1300において、部位間最小重み距離算出部151は、評価対象となる部位のうち、選択中の注目部位p以外の部位(以下「他の部位」という)の中から、比較部位qを選択する。
そして、ステップS1400において、部位間最小重み距離算出部151は、選択中の比較部位qの身体制約情報のうち、部位間最小重み距離算出に必要な情報を取得する。
そして、ステップS1500において、部位間最小重み距離算出部151は、選択中の注目部位pの身体制約情報および選択中の比較部位qの身体制約情報に基づいて、部位間最小重み距離Rpqを算出する。そして、部位間最小重み距離算出部151は、算出した部位間最小重み距離Rpqを、選択中の注目部位pと選択中の比較部位qとの組み合わせに対応付けて保存する。
ここで、部位間最小重み距離の算出手法の例について説明する。
図9は、基準モデルの例と推定尤度マップが示す人の例とを模式的に示す図である。
人の姿勢の自由度は大きく、部位毎に位置のばらつきがあるが、各部位の位置のばらつきの全てを包含した基準モデルを用意することは困難である。ここでは、説明の簡便化のため、図9(A)に示す第1の姿勢の基準モデル413−1と、図9(B)に示す第2の姿勢の基準モデル413−2とのみが存在した場合を想定する。そして、図9(C)に示す人414の推定尤度マップが得られたとする。
また、上方に曲げた前腕以外において、図9(D)に示すように第1の姿勢の基準モデル413−1との一致度が高く、図9(E)に示すように第2の姿勢の基準モデル413−2との一致度が低いとする。
本実施の形態において、姿勢推定部160は、上述の通り、部位毎の一致画素数のカウント値に基づいて、姿勢推定を行う。したがって、図9(E)の場合、各部位を均等に取り扱うと、第2の姿勢の基準モデル413−2との間の比較では誤差が累積する。その結果、全体として、第2の姿勢の基準モデル413−2との一致度は、第1の姿勢の基準モデル413−1との一致度よりも低くなり得る。
ところが、人414の姿勢の特徴は主に上方に曲げた前腕にあり、同様に前腕が上方に曲げた第2の姿勢の基準モデル413−2が、得られるべき推定結果である。
そこで、本実施の形態に係る姿勢推定装置100は、上述の通り、密集部分よりも分散部分に大きい重みを設定する。これにより、図9の例では、上方に曲げた前腕の一致度に重点が置かれ、推定結果として、第2の姿勢の基準モデル413−2が得られることになる。すなわち、姿勢推定の精度が向上する。
密集部分は、基準モデルにおいて他の部位との距離が近い部位である。また、分散部分は、基準モデルにおいて他の部位との距離が遠い部位である。したがって、部位間最小重み距離算出部151は、例えば、下記のような手法により、密集部分と分散部分とを区分する基準として、部位間最小重み距離を算出する。
図10および図11は、部位間最小重み距離の算出手法の例を説明するための図である。
図10および図11に示すように、基準モデルにおいて、部位太さDpの注目部位pと、部位太さDqの比較部位qとが存在していたとする。図10は、部位太さDpと部位太さDqとが同一である場合を示し、図11は、部位太さDpと部位太さDqとが同一ではない場合を示す。部位太さDp、Dqは、例えば、身体制約情報格納部110が格納する身体制約情報に含まれている。
姿勢によっては、注目部位pと比較部位qとの間の距離rが、部位太さDpおよび部位太さDqの少なくとも一方に近似する場合がある。このような場合、特に2本の平行線の組の検出に基づく部位候補抽出においては、注目部位pの内側のエッジと比較部位qの内側のエッジとの組が、部位太さDp、Dqの条件を満たす平行線の組となる。したがって、注目部位pの内側のエッジと比較部位qの内側のエッジとに挟まれた空間415が、注目部位pあるいは比較部位qの部位領域として誤って推定されてしまう可能性がある。
逆に、距離rが、部位太さDp、Dqの両方よりも十分に大きければ、空間415が注目部位pあるいは比較部位qの部位領域として誤って推定されてしまう可能性は低い。
そこで、部位間最小重み距離算出部151は、基準モデルの各部位について、他の部位と組み合わせたときのそれぞれの部位太さおよび距離に基づいて、部位間最小重み距離を算出する。具体的には、部位間最小重み距離算出部151は、例えば、以下の式(1)を用いて、部位太さDpの注目部位pと、部位太さDqの比較部位qとの間の部位間最小重み距離Rpqを算出する。
Rpq=a×Dp+b×Dq ・・・・・・(1)
ここで、パラメータa、bは、姿勢推定に対して求められる精度あるいは姿勢推定装置100が用いられる環境の条件に応じて任意に設定可能な定数であり、例えば、Dp≦Dqである場合には、a=0、b=1である。例えば、薄着で似たような体型の人しか被写体とならないような環境よりも、厚着の人や様々な体型の人が被写体となり得る環境のほうが、パラメータa、bは大きく設定すべきである。これにより、姿勢推定のロバスト性を向上させることができる。
但し、人の姿勢の自由度は大きく、部位毎に角度のばらつきがあるが、各部位の角度のばらつきの全てを包含した基準モデルを用意することは困難である。そこで、姿勢推定装置100は、一定の範囲の角度誤差を無視し、最も近似する姿勢を推定する。部位間最小重み距離算出部151は、この角度誤差を考慮して、部位間最小重み距離Rpqを算出することが望ましい。
図12は、角度誤差を考慮した部位間最小重み距離の算出手法の例を説明するための図である。
図12に示すように、注目部位pにおいて、部位長がLpであり、角度誤差の最大値(無視すべき角度誤差)をeとすると、部位の位置のずれMは、最大で、Lp×tan(e)となる。同様に、図示しないが、比較部位qにおいて、部位長がLqである場合、Lq×tan(e)だけその位置がずれている可能性がある。
したがって、部位間最小重み距離算出部151は、例えば、以下の式(2)を用いて、部位太さDpの注目部位pと、部位太さDqの比較部位qとの間の部位間最小重み距離Rpqを算出する。部位太さDp、Dq、部位長Lq、および角度誤差の最大値eは、例えば、身体制約情報格納部110が格納する身体制約情報に含まれている。
Rpq=a×Dp+b×Dq+c×Lp×tan(e)+d×Lq×tan(e)
・・・・・・(2)
ここで、パラメータa〜dは、姿勢推定に対して求められる精度あるいは姿勢推定装置100が用いられる環境の条件に応じて任意に設定可能な定数である。
すなわち、部位間最小重み距離算出部151は、式(2)を用いた場合、部位間の各部位の部位太さ、長さ、および無視すべき角度誤差に基づいて、部位間最小重み距離を算出することができる。
以上のような手法により、部位間最小重み距離算出部151は、他の部位が位置したときに当該他の部位の存在が姿勢推定のノイズとなる可能性が高い範囲を精度良く示す値として、部位間最小重み距離を算出することができる。
以上で、部位間最小重み距離の算出手法の例についての説明を終える。
そして、図8のステップS1600において、部位間最小重み距離算出部151は、全ての他の部位を比較部位qとして処理したか否かを判断する。部位間最小重み距離算出部151は、比較部位qとして処理していない他の部位が残っている場合(S1600:NO)、ステップS1300へ戻り、次の他の部位を選択して処理を繰り返す。また、部位間最小重み距離算出部151は、全ての他の部位を比較部位qとして処理した場合(S1600:YES)、ステップS1700へ進む。
ステップS1700において、部位間最小重み距離算出部151は、評価対象となる部位の全てを注目部位pとして処理したか否かを判断する。部位間最小重み距離算出部151は、注目部位pとして処理していない部位が残っている場合(S1700:NO)、ステップS1100へ戻り、次の部位を選択して処理を繰り返す。また、部位間最小重み距離算出部151は、全ての部位を注目部位pとして処理した場合(S1700:YES)、図7の処理へ戻る。
そして、図7のステップS2000において、姿勢推定装置100は、最大最小重み算出部152において、重み範囲を算出する。
ここで、重み範囲の算出手法の例について説明する。
部位数が多いほど、人の姿勢の自由度は高くなり、同一の姿勢と認められる範囲における各部位の位置の誤差の累積は大きくなる。そこで、最大最小重み算出部152は、例えば、以下の式(3)を満たすような最小重みWminおよび最大重みWmaxを算出し、最小重みWminから最大重みWmaxまでの範囲を、重みの範囲とする。
e’×(n−1)×Wmin < c×Wmax ・・・・・・(3)
ここで、nは部位数であり、uは目標分解能(度数)であり、e’は位置の誤差範囲(一致画素の度数)である。部位数nは、上述の通り評価対象の部位の総数であり、例えば10である。目標分解能uおよびパラメータcは、姿勢推定に対して求められる精度あるいは姿勢推定装置100が用いられる環境の条件に応じて任意に設定可能な定数である。誤差範囲e’は、例えば、身体制約情報格納部110が格納する身体制約情報に含まれている。
以上のような手法により、最大最小重み算出部152は、部位数がより多いほどより広くなるように、重み範囲を決定することができる。すなわち、最大最小重み算出部152は、一部の部位を除き誤差範囲内の誤差となる姿勢について、残りの部位の目標分解能を打ち消さないような重み付けを行うことができる。最大最小重み算出部152は、具体的には、最小重みWminを1などに固定して、最大重みWmaxを決定してよいし、最大重みWmaxを1などに固定して最小重みWminを決定してもよい。または、最大最小重み算出部152は、最小重みWminと最大重みWmaxとの和が1となるように、それぞれの値を決定してもよい。
以上で、重み範囲の算出手法の例についての説明を終える。
そして、ステップS3000において、姿勢推定装置100は、重み付け算出処理を実行する。重み付け算出処理は、各部位の部位間最小重み距離に基づき、基準モデル毎に各部位に対して重み付けを算出して決定する処理である。
図13は、重み付け算出処理の一例を示すフローチャートである。
まず、ステップS3100において、姿勢毎重み付け処理部153は、評価対象となる姿勢の中から1つを選択する。
そして、ステップS3200において、姿勢毎重み付け処理部153は、評価対象となる部位の中から、注目部位pを1つ選択する。
そして、ステップS3300において、姿勢毎重み付け処理部153は、他の部位の中から、比較部位qを選択する。
そして、ステップS3400において、姿勢毎重み付け処理部153は、選択中の注目部位pと選択中の比較部位qとの組み合わせに対応する部位間最小重み距離Rpqが示す範囲内の、比較部位qの画素数をカウントする。そして、カウントした画素数が、所定の閾値以上であるか否かを判断する。この所定の閾値は、姿勢推定部160における部位の一致性の判断基準に対応する値である。すなわち、姿勢毎重み付け処理部153は、画素数のカウント値が所定の閾値以上であるか否かによって、部位間最小重み距離Rpqが示す範囲内に選択中の比較部位qが位置するか否かを判断する。
上述の所定の閾値は、例えば、2次元基準モデルマップの各部位に含まれる画素数に対する割合で定義される。閾値が50%で定義され、2次元基準モデルマップのある部位に含まれる画素数が100の場合、姿勢毎重み付け処理部153は、カウントした画素数が50以上かを判断する。閾値の値を大きくするほど、部位が部位間最小重み距離Rpq内に含まれる確率が高くなり、閾値の値を小さくするほど、部位間最小重み距離Rpq内に含まれる部位の割合が低くなる。
姿勢毎重み付け処理部153は、上述の画素数が所定の閾値以上である場合(S3400:YES)、ステップS3500へ進む。これは、つまり、選択中の姿勢において、選択中の注目部位pについての部位間最小重み距離Rpqが示す範囲内に、選択中の比較部位qが位置するということを示す。
また、姿勢毎重み付け処理部153は、上述の画素数が所定の閾値未満である場合(S3400:NO)、ステップS3600へ進む。これは、つまり、選択中の姿勢において、選択中の注目部位pについての部位間最小重み距離Rpqが示す範囲内に、選択中の比較部位qが位置しないということを示す。
ステップS3500において、姿勢毎重み付け処理部153は、選択中の注目部位pに対して、重み範囲のうち、最小重みWminを、その重みとして決定する。すなわち、姿勢毎重み付け処理部153は、その部位間最小重み距離が示す範囲内に位置する他の部位が1つでも存在する部位に対しては、最小重みWminを設定する。
一方、ステップS3600において、姿勢毎重み付け処理部153は、全ての他の部位を比較部位qとして処理したか否かを判断する。姿勢毎重み付け処理部153は、比較部位qとして処理していない他の部位が残っている場合(S3600:NO)、ステップS3300へ戻り、次の他の部位を選択して処理を繰り返す。また、姿勢毎重み付け処理部153は、全ての他の部位を比較部位qとして処理した場合(S3600:YES)、ステップS3700へ進む。
ステップS3700において、姿勢毎重み付け処理部153は、選択中の注目部位pに対して、重み範囲のうち、最大重みWmaxを、その重みとして決定する。すなわち、姿勢毎重み付け処理部153は、その部位間最小重み距離が示す範囲内に位置する他の部位が1つも存在しない部位に対しては、最大重みWminを設定する。
そして、ステップS3800において、姿勢毎重み付け処理部153は、評価対象となる部位の全てを注目部位pとして処理したか否かを判断する。姿勢毎重み付け処理部153は、注目部位pとして処理していない部位が残っている場合(S3800:NO)、ステップS3200へ戻り、次の部位を選択して処理を繰り返す。また、姿勢毎重み付け処理部153は、全ての部位を注目部位pとして処理した場合(S3800:YES)、ステップS3900へ進む。
ステップS3900において、姿勢毎重み付け処理部153は、評価対象となる姿勢の全てを処理したか否かを判断する。姿勢毎重み付け処理部153は、評価対象となる姿勢に処理していないものが残っている場合(S3900:NO)、ステップS3100へ戻り、次の姿勢を選択して処理を繰り返す。また、姿勢毎重み付け処理部153は、評価対象となる姿勢の全てを処理した場合(S3900:YES)、各部位の識別子とその部位に設定された重みの値とをリスト化した情報を、重み付け情報として出力し、図7の処理へ戻る。
そして、図7のステップS4000において、姿勢推定装置100は、姿勢推定処理を実行する。姿勢推定処理は、決定した重み付けを適用して画像データに含まれる人の姿勢を推定する処理である。
図14は、姿勢推定処理の一例を示すフローチャートである。
まず、ステップS4100において、身体候補推定部130の部位領域推定部131は、画像データ取得部120を介して、単眼カメラ200から、静止画像1枚分の画像データを取得する。
そして、ステップS4200において、部位領域推定部131は、基準部位の位置および向きを推定する処理(以下「基準部位推定処理」という)を行う。
ここで、基準部位推定処理の詳細の例について説明する。基準部位推定処理は、大きく分けて、人の肩関節位置を推定する第1の処理と、人の胴体の向きを推定する第2の処理とから成る。
まず、人の肩関節位置を推定する第1の処理について説明する。
部位領域推定部131は、画像データから、オメガ形状を検出し、オメガ形状に基づいて肩関節位置を推定する。
図15は、オメガ形状を説明するための図である。
オメガ(Ω)形状は、人の頭部および肩部を含む領域の特徴的なエッジ形状であり、人の身体のうち、監視カメラ等を用いた場合に最も安定して撮影される確率が高い形状である。また、頭部および肩部は、人の胴体との相対位置の変化が少ない。したがって、部位領域推定部131は、オメガ形状をまず検出して人の頭部および肩部の位置を検出し、これらを基準として他の部位の部位領域を推定することにより、部位領域を高精度に推定する。
オメガ形状は、例えば、充分な数のサンプル画像を用いてReal AdaBoost等により作成された検出器を用いて、検出することができる。検出器に用いられる特徴量としては、例えば、HoG(histogram of gradient)特徴量、Sparse特徴量、Haar特徴量等を用いることができる。また、学習方法としては、例えば、Boosting手法のほか、SVM(サポートベクタマシン)、ニューラルネットワークなどを利用することも可能である。
部位領域推定部131は、画像データの画像420から、まず、オメガ形状421を検出する。ここで、オメガ領域422の画素のうち、オメガ形状421を構成する画素(エッジ部分の画素)はデジタル信号「1」であり、他の画素はデジタル信号「0」であるものとする。そして、オメガ形状421を包含する比較的小さい矩形領域を、オメガ領域422として決定する。ここで、オメガ領域422の下の辺を基準線423という。
部位領域推定部131は、オメガ領域422に含まれるノイズを取り除く。具体的には、部位領域推定部131は、オメガ領域422の画素のうち、オメガ形状421に囲まれた領域に存在するデジタル信号「1」を、ノイズとして、これをデジタル信号「0」に修正する。この修正は、例えば、いわゆるクロージング処理を行うことにより可能である。クロージング処理とは、所定の画素分または所定の割合で、画像領域を拡大また縮小する処理である。この修正により、後述の距離ヒストグラムの精度を向上させることができる。
そして、部位領域推定部131は、基準線423からオメガ形状421までの垂直距離を、基準線423の各位置について取得する。
図16は、基準線423からオメガ形状421までの垂直距離を説明するための図である。
図16に示すように、部位領域推定部131は、基準線423の方向をX軸とし、基準線423の垂直方向をY軸として扱う。部位領域推定部131は、例えば、基準線423の左端からの画素数を、X座標値とする。そして、部位領域推定部131は、基準線423からオメガ形状421を構成する画素までのY軸方向の画素数、つまり、オメガ形状421までの垂直距離を、垂直距離d(X)として取得する。オメガ形状421を構成する画素とは、例えば、デジタル信号「1」の画素のうち、基準線423から直近のものである。
そして、部位領域推定部131は、n個(nは正の整数)の垂直距離d(X)のデータをX座標に対応付けた距離ヒストグラムを生成する。
図17は、部位領域推定部131が図15に示すオメガ領域422に基づいて生成する距離ヒストグラムの一例を示す図である。
図17に示すように、部位領域推定部131は、XY座標系に、垂直距離d(X)をY軸の値として、垂直距離d(X)の分布を示す距離ヒストグラム430を生成する。距離ヒストグラム430は、肩部に対応する形状で盛り上がり、そのうち、頭部の中心部に対応する範囲で突出した形状となる。
そして、部位領域推定部131は、生成した距離ヒストグラム430に対して、所定の閾値Thを適用して、2値化処理を行う。具体的には、部位領域推定部131は、垂直距離d(X)が閾値Th以上となっているX座標のY座標値を、「1」に置き換え、垂直距離d(X)が閾値Th未満となっているX座標のY座標値を、「0」に置き換える。閾値Thは、オメガ領域422において、高い確率で、肩部上端の垂直距離d(X)よりも大きく、頭部上端の垂直距離d(X)よりも小さくなる値が設定される。なお、2値化処理はこれに限定されるものではなく、例えば、いわゆる大津の2値化(大津の手法)等、他の手法としてもよい。
図18は、図17に示す距離ヒストグラム430を2値化処理した結果の一例である。
図18に示すように、「1」となる範囲441は、頭部の中央部分の画像領域(以下「頭領域」という)のX座標の範囲を示すことになる。また、「1」となる範囲441を含む全体の範囲442は、肩部の画像領域(以下「肩領域」という)のX座標の範囲を示すことになる。したがって、部位領域推定部131は、画像データの画像420のうち、オメガ領域422のX軸方向範囲を、肩領域のX軸方向範囲として抽出し、「1」となる範囲441のX軸方向範囲を、頭領域のX軸方向範囲として抽出する。
そして、部位領域推定部131は、抽出した肩領域および頭領域に基づいて、基準部位の位置および向きを示す各種パラメータを算出する。
図19は、基準部位を示す各種パラメータを説明するための図である。
ここで、部位領域推定部131は、図19に示すように、基準部位の位置を示す記号(括弧内はXY座標系におけるパラメータ)として、H(xh,yh)、RSE(x_rse)、RD(x_rd)、RS(x_rs,y_rs)、RSU(y_rsu)、およびLSを用いるものとする。Hは、頭部の重心位置である。RSEは、右肩の端部の位置である。RDは、頭部の重心から右肩の端部までのX軸方向の距離である。RSは、右肩の関節の位置(以下「右肩位置」という)である。RSUは、右肩の頂部の位置である。LSは、左肩の関節の位置(以下「左肩位置」という)である。
部位領域推定部131は、例えば、以下のようにして各パラメータの値を算出する。
まず、部位領域推定部131は、2値化処理の結果に基づいて抽出した肩領域から、人(の胴体)が単眼カメラ200側に向いているか否かに基づいて、右肩領域を決定する。部位領域推定部131は、頭領域の色情報の肌色成分が所定の閾値以上となっているか否かに基づいて、人が単眼カメラ200側に向いているか否かを判断する。ここでは、人は単眼カメラ200側に向いており、画像に向かって左側の肩領域が、右肩領域に決定されたものとする。
次に、部位領域推定部131は、右肩領域の重心位置を、右肩位置RS(x_rs,y_rs)として算出する。また、部位領域推定部131は、頭部の重心位置H(xh,yh)を算出し、重心位置H(xh,yh)と基のオメガ形状421とのY軸方向の距離(以下「頭部高さΔh」という)用いて、右肩位置RS(x_rs,y_rs)を算出してもよい。具体的には、部位領域推定部131は、例えば、頭部高さΔhに対して予め定められた比となる値を、頭部の重心位置Hから右肩位置RSまでのX軸方向の距離(xh−x_rs)とする。また、部位領域推定部131は、例えば、肩の高さから頭部高さΔhの半分の値Δh/2だけ低い位置を、右肩位置RSのY座標y_rsとする。
更に、部位領域推定部131は、オメガ形状421のエッジの傾き(つまり距離ヒストグラムの変化率)が閾値を越えた点を、右肩の端部の位置RSE(x_rse)として算出する。そして、部位領域推定部131は、頭部の重心位置Hと右肩の端部の位置RSEとのX軸方向の距離RD(x_rd)を算出する。
最後に、部位領域推定部131は、頭部の重心位置HからX軸方向において距離RDの80%の位置に、右肩位置RSがあるものと推定する。すなわち、部位領域推定部131は、右肩位置RSのX座標x_rsを、 x_rs=x_rse+0.2×RD により算出する。また、部位領域推定部131は、右肩位置RSを通り垂直な直線(Y軸に並行な直線)とオメガ形状421のエッジとの交点を、右肩の頂部の位置RSU(y_rsu)として算出する。そして、部位領域推定部131は、右肩位置RSのY座標y_rsを、 y_rs=y_rsu−0.2×RD により算出する。
また、部位領域推定部131は、同様にして、左肩位置LSについても算出する。
なお、各パラメータの算出手法は、上述の例に限定されるものではない。例えば、肩幅(例えば右肩位置RSと左肩位置LSとの距離)等の部位長は、身体制約情報の1つとして、身体制約情報格納部110に格納され得る。この場合、部位領域推定部131は、その身体制約情報を用いて各パラメータを算出してもよい。
以上で、人の肩関節位置を推定する第1の処理についての説明を終える。
次に、人の胴体の向きを推定する第2の処理について説明する。
本実施の形態では、部位領域推定部131は、身体制約情報格納部110に身体制約情報の1つとして予め保持された基準部位対応テーブルを参照して、第2の処理を行うものとする。
基準部位対応テーブルは、頭部の重心位置Hと、右肩位置RSと、左肩位置LSとの組み合わせ(以下「基準部位の位置」という)と、その基準部位の位置から推定される身体の向き(以下「基準部位の向き」という)とを対応付けて記述したテーブルである。すなわち、基準部位テーブルは、各部位の相対的な位置関係を記述したテーブルである。なお、基準部位とは、上述の通り、人の頭部および肩部を示すオメガ形状の部分である。したがって、基準部位の向きとは、人の身体(胴体)の向きである。
部位領域推定部131は、画像データから算出した基準部位の位置に対応する基準部位の向きを、基準部位対応テーブルから導出する。
なお、保持された基準部位対応テーブルに記述される基準部位の位置、および、部位領域推定部131が画像データから算出する基準部位の位置は、人の画面上の大きさによらない正規化された値であることが望ましい。具体的には、部位領域推定部131は、例えば、頭部の重心位置Hを原点とし、頭部の重心位置Hと右肩位置RSまたは左肩位置LSとの間の長さが1となるように正規化した値を用いて、準部位の向きを導出する。
また、基準部位対応テーブルには、右肩位置RSおよび左肩位置LSが記述されていてもよい。また、基準部位対応テーブルには、頭部の重心位置Hと右肩位置RSまたは左肩位置LSとを通る線と、頭部の重心位置Hを通る垂直な直線(以下「頭部垂直線」という)とが成す角が記述されていてもよい。また、基準部位対応テーブルには、頭部の重心位置Hと右肩位置RSとの間の距離を1としたときの頭部の重心位置Hと左肩位置LSとの間の距離が記述されていてもよい。部位領域推定部131は、基準部位対応テーブルに記述されたパラメータに対応するパラメータを算出することにより、基準部位の向きを導出する。
図20は、基準部位対応テーブルの内容の一例を示す図である。
図20に示すように、基準部位対応テーブル450は、識別子451に対応付けて、射影角度452、左肩位置LSの座標453、頭部の重心位置Hの座標454、および基準部位の向き455を記述する。各座標は、例えば、右肩位置RSを原点とし、画面の2次元座標系に平行な所定の2次元座標系を用いて表現される。射影角度452は、例えば、図4で説明した3次元座標系410のXZ平面に対する、この所定の2次元座標系の角度(つまり図4に示す設置角度θ)である。また、基準部位の向き455は、例えば、図4で説明した3次元座標系410のXYZ軸のそれぞれに対する回転角度で表される。なお、各座標は、腕の部位長や身長等の他の長さを1とする座標系を用いて表現されてもよい。
このようにして、部位領域推定部131は、身体制約情報を用いて、基準部位の位置および向きを推定する。
以上で、人の胴体の向きを推定する第2の処理についての説明を終える。すなわち、基準部位推定処理の説明を終える。
次に、図14のステップS4300において、部位領域推定部131は、推定した基準部位の位置および向きに基づいて、部位毎に部位領域を推定する処理(以下「部位領域推定処理」という)を行う。
ここで、部位領域推定処理の詳細の例について説明する。
本実施の形態では、部位領域推定部131は、身体制約情報格納部110に身体制約情報の1つとして予め保持された部位領域対応テーブルを参照して、部位領域推定処理を行うものとする。
部位領域対応テーブルは、基準部位の位置と向きと、他の部位の部位領域とを対応付けて記述したテーブルである。
部位領域推定部131は、画像データから推定した基準部位の位置および向きに対応する部位領域を、部位領域対応テーブルから導出する。
部位領域は、例えば、画像データの画像の画素位置により定義される。したがって、部位領域推定部131は、画像データの画像全体の全ての画素について、各画素がいずれかの部位の部位領域に属する画素であるかを判断する。
図21は、部位領域対応テーブルの内容の一例を示す図である。
図21に示すように、部位領域対応テーブル460は、識別子461に対応付けて、射影角度462、頭肩領域(基準部位)の位置463、頭肩領域(基準部位)の向き464、および各部位の領域465を記述する。
各位置および領域は、例えば、画像の2次元座標系の値で表される。射影角度462は、例えば、図4で説明した3次元座標系410のXZ平面に対する、この所定の2次元座標系の角度(つまり図4に示す設置角度θ)である。頭肩領域の位置463は、例えば、右肩位置RSである。頭肩領域の向き464は、例えば、図4で説明した3次元座標系410のXYZ軸のそれぞれに対する回転角度で表される。各部位の領域465は、例えば、領域が円で近似される場合における、その円の中心座標と半径とにより表される。半径は、つまり、部位長である。
なお、識別子461が基準部位対応テーブル450の識別子451と共通である場合には、頭肩領域の向き464は、必ずしも部位領域対応テーブル460に記述されていなくてもよい。
なお、部位領域を推定する際には、他の種類の身体制約情報を用いることもできる。また、身体制約情報は、上述の構成以外の構成を取ることもできる。
部位領域推定部131は、部位領域の推定を完了すると、画像データの画像全体の全ての画素について、画素毎に部位の部位領域であるか否かを示す情報を、部位領域データとして部位候補抽出部132へ出力する。
部位領域データは、例えば、画像データの全ての画素位置(i,j)について、いずれかの部位の部位領域に該当するか否かを示す画素情報Kijを並べた構造を有し得る。画素情報Kijの各要素は、例えば、対応する部位の部位領域に属する場合には「1」を取り、属しない場合には「0」を取る。画素情報Kijは、例えば、Kij=[k1,k2]というように、部位の数と同数の次元を有する。ここでは、k1は右上腕の部位領域に対応し、k2は右前腕の部位領域に対応するものとする。
例えば、部位領域推定部131は、ある画素位置Kabが、右上腕の部位領域に含まれるが右前腕の部位領域には含まれないと判定した場合、Kab=[1,0]という画素情報を生成する。部位領域推定部131は、このように生成した各画素の画素情報の集合を、部位領域データとして生成する。
なお、部位領域データによる部位領域の表し方は、上述の例に限定されるものではない。例えば、部位領域データは、画像に予め設定された部分領域毎に、いずれの部位の部位領域に該当するかを示してもよいし、部位毎に部位領域の外縁の座標を示してもよい。
なお、基準部位の位置を正規化した位置が基準部位推定処理において用いられる場合には、部位領域対応テーブルには、正規化された基準部位に対応する部位領域が記述されていることが望ましい。また、部位領域データには、上述の基準部位対応テーブルの場合と同様に、右肩位置RSおよび左肩位置LS等の他の情報が記述されていてもよい。部位領域推定部131は、部位領域対応テーブルに記述されたパラメータに対応するパラメータを算出することにより、各部位の部位領域を導出する。
図22は、部位領域データの内容の一例を示す図である。ここでは、説明の簡便化のため、直立状態にある場合の各部位の位置を併せて図示する。
図22に示すように、部位領域データは、画像データの画像420において、右上腕の部位領域471と、右前腕の部位領域472とを示す。これらの部位領域471、472は、上述の通り、先に推定された基準部位473の位置および向きを基準として推定されたものである。
このようにして、部位領域推定部131は、身体制約情報を用いて、各部位の部位領域を推定する。
以上で、部位領域推定処理についての説明を終える。
次に、図14のステップS4400において、部位候補抽出部132は、部位毎に部位領域について部位候補の抽出を行って、抽出された部位候補を示す部位候補情報を生成する。
ここで、部位候補情報として推定尤度マップを生成する処理(以下「推定尤度マップ生成処理」という)の詳細の第1の例について説明する。
まず、部位候補抽出部132は、画像データから、各部位の部位領域内の画素毎に、その部位の位置および向きの状態を表すのに適した画像特徴量を判別して部位が位置することの尤もらしさを示す尤度値を算出する。そして、部位候補抽出部132は、画像データから算出された尤度値を用いて、各画素の尤度値の分布を示す推定尤度マップを生成する。尤度値は、0〜1の範囲となるように正規化した値であってもよいし、正の整数や負の数を含む実数であってもよい。
画像から注目対象を認識する手法としては、例えば、矩形情報を基にした複数の弱識別器の総和をAdaBoostにより統合して強識別器を作成し、強識別器をカスケード接続させて、画像中の注目対象として顔を認識する技術を、採用することができる。また、画像特徴量としては、例えば、SIFT(scale-invariant feature transform)特徴量を採用することができる(例えば、非特許文献2および非特許文献3参照)。SIFT特徴量は、128次元のベクトルにより構成されており、画素毎に計算される値である。SIFT特徴量は、検出の対象となる人のスケール変化、回転、および平行移動に影響を受けないため、特に、腕のように、様々な方向に回転し得る部位の検出に有効である。すなわち、SIFT特徴量は、姿勢を2つ以上の部位の相対的な関節の位置および角度によって定義する本実施の形態に好適である。
SIFT特徴量を用いた手法を本実施の形態に適用した場合、強識別器Hk(k=1,2)は、右上腕(k=1)、右前腕(k=2)等、部位領域毎に、予め機械学習により生成され、部位候補抽出部132に保持される。識別器Hkは、AdaBoostアルゴリズムにより生成される。すなわち、強識別器Hkは、予め部位毎に用意されている複数の学習画像に対して、右上腕であるか否か、および、右前腕であるか否かが、所望の精度で判定できるまで学習が繰り返され、複数の弱識別器がカスケード接続されることによって生成される。
部位候補抽出部132は、部位毎および画素毎に画像特徴量を算出すると、その画像特徴量を強識別器Hkに入力する。そして、部位候補抽出部132は、その強識別器Hkを構成する各弱識別器の出力に対して、弱識別器毎に予め得られた信頼度αを乗算した値の総和を、算出する。そして、部位候補抽出部132は、算出した総和から所定の閾値Thを減算して、部位毎および画素毎の尤度値ckを算出する。ここでは、c1は右上腕の尤度値を示し、c2は右前腕の尤度値を示す。
部位候補抽出部132は、各部位の尤度値を統合した画素毎の尤度値Cijを、Cij=[c1,c2]とする。そして、部位候補抽出部132は、画像全体の全ての画素の尤度値Cijを、推定尤度マップとして、姿勢推定部160へ出力する。
部位候補抽出部132は、各画素について、その画素がいずれかの部位領域に含まれるか否かを判断し、含まれればその部位の識別器を用いて尤度値を算出し、含まなければその部位の尤度値を0としてもよい。換言すると、部位候補抽出部132は、部位領域推定部131から出力された画素情報の行列式(Kij)と、部位領域とは無関係に算出した各画素の尤度値の行列式(Cij)とを積算した結果を、最終的な推定尤度マップとしてもよい。
図23は、推定尤度マップの一例を示す図である。ここでは、推定尤度マップのうち1つの部位(例えば右上腕)の尤度値のみを表し、尤度値がより高い画素ほどより濃い網掛けを付している。 図23に示すように、推定尤度マップ478は、部位が位置することの尤もらしさの分布を表す。
尤度マップの画素毎の情報は、例えば、部位kの尤度値をckと表し、部位がn個存在する場合には、尤度ベクトルCij=[c1,c2,…,ck,…,cn]というデータ構造となる。
このようにして、部位候補抽出部132は、推定尤度マップを生成する。
以上で、推定尤度マップ生成処理の詳細の第1の例についての説明を終える。
次いで、推定尤度マップ生成処理の詳細の第2の例について説明する。
部位候補抽出部132は、例えば、特許文献1記載の技術のように、画像データに含まれるエッジから平行線を抽出することにより、推定尤度マップを生成する。
この場合、部位候補抽出部132は、例えば、身体制約情報格納部110に身体制約情報の1つとして予め保持された、肩関節の長さと各部位の標準的な太さの値とを対応付けた対応テーブルを参照して、平行線の抽出を行う。部位候補抽出部132は、部位領域内に、その部位の標準的な太さに相当する距離で離隔する平行線の組を、判定する方向を360度回転させながら検索する。そして、部位候補抽出部132は、該当する平行線の組が存在する場合に、それらの平行線によって囲まれた領域の各画素に対して投票を行う処理を繰り返し、最終的な各画素の投票数に基づいて推定尤度マップを生成する。
このような手法の場合、推定尤度マップおよび2次元基準モデルマップは、画素毎および部位毎に、平行線の方向と投票数(以下「方向の尤度値」という)とを含むことになる。例えば、平行線の角度を8つに分類した場合、画素毎および部位毎の尤度値は、8方向に対応した8次元の値となる。更に、例えば、平行線の幅を2つに分類した場合、画素毎および部位毎の尤度値は、2×8=16次元の値となる。なお、投票の対象となる平行線の距離や角度は、部位毎に異なっていてもよい。平行線の幅を複数求めて、そのうちの尤度値が尤も高くなる幅の尤度値を用いることにより、体型や服装の違いを吸収して、尤度を求めることができる。
そして、部位候補抽出部132は、例えば、部位毎に、方向の尤度値が最も高い方向を、その部位の主要なエッジ方向と判定する。このとき、姿勢推定部160は、方向毎に全画素の尤度値の合計値を取り、その合計値が最も高い方向を、方向の尤度値が最も高い方向であると判定してもよい。
このようにして、部位候補抽出部132は、身体制約情報を用いて、推定尤度マップを生成する。
以上で、推定尤度マップ生成処理の詳細の第2の例についての説明を終える。
次に、図14のステップS4500において、姿勢推定部160は、適宜補完が行われた部位候補情報に基づいて、予め設定された姿勢のいずれかに、被写体の姿勢が該当するか否かを判断する。この予め設定された姿勢とは、重み付けされた2次元基準モデルのうち、判定の対象として設定された姿勢である。
姿勢推定部160は、この判断を、いずれかの重み付けされた2次元基準モデルマップと推定尤度マップとが一致するか否かに基づいて行う。この場合、姿勢推定部160は、例えば、重み付けされた2次元基準モデルマップと推定尤度マップとが一致するか否かを、その一致度が所定のレベル以上であるか否かに基づいて判断する、一致度判定処理を行う。
ここで、一致度判定処理の詳細の例について説明する。まず、上述の推定尤度マップ生成処理の第1の例が採用されている場合に対応する、一致度判定処理の詳細の第1の例について説明する。
姿勢推定部160は、まず、推定尤度マップを所定の閾値を用いて2値化する。具体的には、姿勢推定部160は、画素毎および部位毎の尤度値を、所定の閾値以上である場合はデジタル信号「0」に、所定の閾値未満である場合にはデジタル信号「1」に変換する。
図24は、図23に示す推定尤度マップを2値化した後の状態の一例を示す図である。ここでは、デジタル信号「1」の画素は灰色、デジタル信号「0」の画素は白色で表している。図24に示すように、2値化後の推定尤度マップ479は、部位が位置することの尤もらしさが高い部分の分布を表す。
そして、姿勢推定部160は、2次元基準モデルマップ毎に、推定尤度マップと重み付きモデルマップとの間で、画素毎に2値化された尤度値との積を取る。更に、姿勢推定部160は、重み値の積をとり、全ての画素および全ての部位についての値の和を、評価値とする。具体的には、姿勢推定部160は、推定尤度マップと重み付きモデルマップとを所定の位置関係で重ね、画素毎に2値化後の尤度値情報と重み情報を掛け算し、掛け算した値の全ての画素および部位についての和を求める。
姿勢推定部160は、推定尤度マップと2次元基準モデルマップの重ね合わせの位置関係を肩位置情報に基づいて決定する。両肩間の距離が異なる場合、2次元基準モデルマップを拡大縮小してから重ね合わせてもよい。更に、姿勢推定部160は、肩位置を中心に移動および回転によりずらしていき、各位置関係について上述の演算処理を行ってもよい。そして、姿勢推定部160は、求めた評価値のうちの最大値を、2次元基準モデルマップとの一致度を表す最終的な評価値として取得するようにしてもよい。こうすることで、推定尤度マップの肩位置情報に誤差がある場合にも、最適な重ね位置を探索することで、推定精度を向上させることができる。そして、姿勢推定部160は、この評価値が所定の閾値以上となる2次元基準モデルマップが存在するとき、その2次元基準モデルマップと推定尤度マップとが一致すると判断する。閾値は、予め、学習等により適切な値が設定される。
なお、姿勢推定部160は、必ずしも推定尤度マップを2値化しなくてもよい。この場合には、姿勢推定部160は、2次元基準モデルマップと推定尤度マップとの一致度をより精度良く判定することができる。また、2値化した場合には、姿勢推定部160は、高速に一致度の判定を行うことができる。
このようにして、姿勢推定部160は、推定尤度マップと2次元基準モデル尤度マップとの一致度を判定する。
以上で、一致度判定処理の第1の例についての説明を終える。
次いで、上述の推定尤度マップ生成処理の第2の例が採用されている場合に対応する、一致度判定処理の詳細の第2の例について説明する。
姿勢推定部160は、部位毎に、それぞれの主要なエッジ方向が一致するように推定尤度マップと2次元基準モデルマップとを重ね合わせて、一致度を算出する。以降の処理は、上述の第1の例と同様である。
このように、エッジの方向を考慮した手法は、推定尤度マップと2次元基準モデルマップとの重ね合わせの位置関係に制約を加えることができるので、処理負荷を軽減することができる。
以上で、一致度判定処理の第2の例についての説明を終える。
なお、姿勢推定部160は、推定尤度マップ生成処理の第3の例として、推定尤度マップと2次元基準モデルマップとの一致度を算出する際に、エッジ方向の情報のみを用いてもよい。
ここで、推定尤度マップ生成処理の第3の例について説明する。
例えば、姿勢推定部160は、複数の指定部位間で各指定部位の主要なエッジ方向が成す角の一致度を、推定尤度マップと2次元基準モデルマップとの一致度を表す評価値とする。具体的には、推定尤度マップと重み付きモデルマップの各指定部位について、主要なエッジ方向が成す角の差をもとめ、その差の値と対応する部位の重みの積をとり、全部位の和を評価値とする。値が小さいほど、一致度が高くなる評価値となっている。そして、姿勢推定部160は、評価値が所定の範囲内であるとき、被写体の姿勢が、該当する2次元基準モデルマップに対応する姿勢にあると判定する。
エッジ方向は、部位軸の方向に対応する。したがって、このような姿勢推定は、画像データから各部位軸の方向および各関節の角度を推定し、推定した部位軸方向および関節角度の、各姿勢における基準モデルとの間の一致度を評価することに相当する。
このように、エッジ方向のみを用いて一致度を判定する手法は、画素毎に繰り返し算出して評価値を求める処理を不要とすることができるため、処理負荷を更に低減することができる。また、各2次元基準モデルマップに対応する重み値は、部位の識別子と重みの値だけの情報だけあれば評価値を求めることができるので、重み付きの処理を軽減し、重み値のデータ量を削減することができる。
なお、推定尤度マップ生成処理の第3の例が採用されている場合、一致度判定処理の詳細は、一致度判定処理の第1の例と同様に処理することができる。
以上で、推定尤度マップ生成処理の第3の例についての説明を終える。
姿勢推定部160は、いずれかの重み付きモデルマップと推定尤度マップとが一致する場合(S4500:YES)、ステップS4600へ進む。また、姿勢推定部160は、重み付きモデルマップと推定尤度マップとが一致しない場合(S4500:NO)、ステップS4700へ進む。
ステップS4600において、姿勢推定部160は、推定尤度マップと一致する重み付きモデルマップに対応する姿勢を、情報出力装置300を介してユーザに通知して、ステップS4700へ進む。
ステップS4700において、部位領域推定部131は、ユーザ操作等により処理終了の指示があったか否かを判断する。部位領域推定部131は、処理終了の指示がない場合(S4700:NO)、ステップS4100へ戻り、次の静止画像に対する処理へ移る。また、部位領域推定部131は、処理終了の指示があった場合には(S4700:YES)、一連の処理を終了する。
このような動作により、姿勢推定装置100は、ノイズが多い部位(密集部分)の尤度の影響を小さくし、ノイズが少ない部位(分散部分)の尤度の影響を大きくした状態で、姿勢推定を行うことができる。これにより、姿勢推定装置100は、人の細かい構造上のばらつきに対してロバストな姿勢推定を行うことができる。
なお、図7のステップS1000の部位間最小重み距離算出処理と、ステップS2000の重み範囲算出処理は、逆の順序で実行されてもよい。
以上のように、本実施の形態に係る姿勢推定装置100は、姿勢毎に、各部位に対して、部位間最小重み距離が示す範囲に他の部位が位置するか否かに応じて、重み付けを行う。これにより、姿勢推定装置100は、ノイズを多く含み得る密集部分と姿勢を特徴付ける分散部分とを精度良く判別し、密集部分による影響を小さくしつつ分散部分による影響を大きくして姿勢推定を行うことができる。したがって、本実施の形態に係る姿勢推定装置100は、関節を有する人の姿勢を、高精度に推定することができる。
なお、重み付け算出部150は、部位ではなく、部位内の画素を単位として、重み付けの処理を行ってもよい。
この場合、具体的には、図13のS3200の処理として、姿勢毎重み付け処理部153は、注目部位を選択する代わりに注目画素を選択する。更に、ステップS3400の処理として、姿勢毎重み付け処理部153は、注目画素が含まれる部位pと比較部位qとの組み合わせに対応する部位間最小重み距離Rpqが示す範囲内に、注目画素が存在するかを判断する。そして、姿勢毎重み付け処理部153は、該当する注目画素が存在すれば(S3400:YES)、ステップS3500へ進み、注目画素の部位pに対する重みを決定する。また、姿勢毎重み付け処理部153は、該当する注目画素が存在しなければ(S3400:NO)、ステップS3700へ進み、注目画素の部位pに対する重みを決定する。なお、注目画素が複数の部位に含まれる場合、姿勢毎重み付け処理部153は、複数の部位間最小重み距離Rpqについて判断を行う。そして、ステップS3800の処理として、姿勢毎重み付け処理部153は、全ての画素について処理したかを判断する。
画素毎に行う姿勢毎の重み付け情報は、具体的には、画素毎および部位毎に、その部位に含まれる場合に「1」をとり、含まれない場合に「0」をとるフラグと、その部位に含まれる場合その部位に対応する重みとを記述したマップ情報となる。このように、画素毎に重みを算出して姿勢推定に適用した場合、姿勢推定装置100は、更に精度良く姿勢推定を行うことが可能となる。
また、重み付け算出部150は、各部位の重心または部位軸の中心点の位置を、各部位の代表位置として用いて、部位間最小重み距離内に他の部位が位置するか等の判定を行い、各部位の重みの算出を行うようにしてもよい。これにより、姿勢推定装置100は、重み付けの処理を高速化することができ、特に、上述の推定尤度マップ生成処理の第3の例に好適である。
また、身体候補推定部130は、身体候補として、部位候補ではなく、シルエットを推定してもよい。この場合、身体候補推定部130は、例えば、非特許文献1に記載の手法を用いて、カラー画像の背景差分により、シルエットを抽出する。そして、身体候補推定部130は、各画素がシルエットに含まれるか否かを示す情報を、「1」または「0」をとる値で表現したマップを、推定尤度マップとして出力する。但し、この場合、推定尤度マップには、部位の識別情報は含まれない。
なお、姿勢推定装置100が人検出の対象とする画像データは、本実施の形態では単眼カメラ200によって撮影された画像データとしたが、これに限定されない。姿勢推定装置100は、ステレオカメラまたは複数のカメラによって撮影された画像のデータを、人検出の対象としてもよい。ステレオカメラの画像データを用いる場合には、姿勢推定装置100は、片方のカメラによって撮像された画像データと、ステレオカメラの設置パラメータから得られる被写体の位置情報とを用いてもよい。また、複数のカメラの画像データを用いる場合には、姿勢推定装置100は、それらのうち一台のカメラによって撮像された画像データと、各カメラの設置パラメータから得られる被写体の位置情報とを用いてもよい。
また、部位領域推定部131は、基準部位の位置および向きが既知である場合や指定される場合には、上述の基準部位推定処理を行わなくてもよい。また、部位領域推定部131は、例えば人の歩行する方向が決まっており、基準部位の向きがほぼ一定である場合には、身体の向き情報を保持しておいてもよい。
また、部位領域推定部131が行う部位領域の推定の手法は、上述の例に限定されない。例えば、部位領域推定部131は、画像データから画像のエッジ部分(以下、単に「エッジ」という)を抽出し、エッジにより囲まれた領域のY座標の値の範囲に基づいて、各部位領域を推定してもよい。具体的には、例えば、部位領域推定部131は、エッジにより囲まれた領域において、Y座標の値が最も高い位置から20%までの領域を頭部の部位領域というように推定する。同様に、例えば、部位領域推定部131は、15%から65%までの領域を胴の部位領域、55%から85%までの領域を膝上の部位領域、75%から100%までの領域を膝下の部位領域というように推定する。この場合には、各領域のパーセンテージに対応する値が、身体制約情報となる。
また、部位領域推定部131は、基の動画像データにおける画像間で背景差分を取ることにより動体を抽出し、抽出した領域を含む領域全体を、各部位の部位領域の候補としてもよい。これにより、部位領域を推定する際の処理の高速化を図ることができる。
また、姿勢推定装置100は、基準部位から近い順に1つずつ部位の位置を推定し、推定した位置に基づいて次の部位の部位領域を推定するという処理を繰り返すことにより、各着目部位の部位領域を推定するようにしてもよい。
また、姿勢推定装置100は、必ずしも部位領域推定を行わなくてもよい。この場合には、部位候補抽出部132は、画像の全ての領域に対して均一に、尤度値の算出を行うことになる。
また、本実施の形態では、重み付け算出部150は、2段階の重み付けを決定したが、3段階以上(以下「多段階」という)の重み付けを決定してもよい。
ここで、多段階の重み付けを決定する手法の例について説明する。
まず、多段階の重み付けを決定する第1の手法について説明する。第1の手法は、姿勢毎に異なる、部位間の最大距離(身体の広がり度合い)を基準として重みの分布を変化させる例である。
姿勢毎重み付け処理部153は、部位毎に、身体制約情報を満たす動きにおける、他の部位との距離(注目部位pと比較部位qとの距離)の最大値R'pを求めておく。
そして、姿勢毎重み付け処理部153は、姿勢毎および注目部位pと比較部位qとの組み合わせ毎に、例えば以下の式(4)を用いて、重みWpqを算出する。ここで、R''pqは、その姿勢における他の部位との距離(注目部位pと比較部位qとの距離)である。
Wpq=(Wmax−Wmin)
×(R''pq−Rpq)/(R'p−Rpq)+Wmin
・・・・・・(4)
式(4)では、R''pq=R'pのとき、Wpq=Wmaxとなる。そして、姿勢毎重み付け処理部153は、姿勢毎および注目部位p毎に、算出した重みWpqの最小値を、最終的な重みとして決定する。
次に、多段階の重み付けを決定する第2の手法について説明する。第2の手法は、他の部位との距離の最大値R'pを求めず、予め定めた定数に従って重みを多段階に設定する例である。ここでは、3段階の重みを設定する例について説明する。
まず、姿勢毎重み付け処理部153は、姿勢毎および注目部位p毎に、距離R''pqが、その部位間最小重み距離Rpq以下となる比較部位qが存在するか否かを判断する。姿勢毎重み付け処理部153は、当該比較部位qが存在する場合、その姿勢における注目部位pの重みとして、最小重みWminを決定する。
次に、姿勢毎重み付け処理部153は、姿勢毎に、重みが未決定の注目部位pについて、距離R''pqが、その注目部位pと比較部位qとの部位間最小重み距離Rpqの定数倍の所定の値以下となる比較部位qが存在するか否かを判断する。この所定の値は、定数が0.5の場合、Rpq×2となる。そして、この場合、R''pq×0.5≦Rpqとなっているか否かが判断される。姿勢毎重み付け処理部153は、当該比較部位qが存在する場合、その姿勢における注目部位pの重みとして、最小重みWminと最大重みWmaxとの差の定数倍の値を決定する。この値は、定数が0.5の場合、(Wmax−Wmin)×0.5+Wminとなる。
最後に、姿勢毎重み付け処理部153は、姿勢毎に、重みが未決定の注目部位pに対して、その重みとして、最大重みWmaxを決定する。この注目部位pは、距離R''pqが、その注目部位pと比較部位qとの部位間最小重み距離Rpqの定数倍の所定の値以下となる比較部位qが存在しない部位である。
姿勢推定装置100は、このような多段階の重み付けを行うことにより、密集の度合いにきめ細かに対応させて推定精度への各部位の影響度を設定することができ、姿勢推定の高精度化を図ることができる。
また、姿勢推定部160は、本実施の形態では基準モデル格納部140から直接に基準モデル(2次元基準モデルマップ)を取得するものとしたが、これに限定されない。姿勢推定部160は、例えば、図25に示すような構成において、重み付け算出部150を経由して基準モデルを取得してもよい。この場合には、重み付け算出部150は、例えば、姿勢推定部160からの要求を受けて、都度、重み付けを算出し、その際に取得した基準モデルと共に、重み付け情報を出力すればよい。また、重み付け算出部150は、2次元基準モデルマップの各値を、重み付けを反映させた値に変更し、変更後の2次元基準モデルマップを出力してもよい。
また、本実施の形態では、重み付け算出部150は、姿勢推定部160と同一の装置に配置されているものとしたが、これに限定されない。重み付け算出部150は、例えば、姿勢推定部160とは別個の装置に配置されてもよい。
図26は、重み付け算出部150と姿勢推定部160とを別の装置に配置した姿勢推定システムの構成を示すブロック図である。
図26に示すように、姿勢推定システム500は、重み付けの決定までの処理を行う重み付け決定装置100−1と、重み付けを適用して姿勢推定の処理を行う姿勢推定装置100−2とを有する。
重み付け決定装置100−1は、第1の身体制約情報格納部110−1、第1の基準モデル格納部140−1、重み付け算出部150、および第1の重み付け格納部170−1、および第1の通信処理部180−1を有する。また、姿勢推定装置100−2は、第2の身体制約情報格納部110−2、第2の基準モデル格納部140−2、第2の重み付け格納部170−2、画像データ取得部120、身体候補推定部130、姿勢推定部160、および第2の通信処理部180−2を有する。
第1の通信処理部180−1および第2の通信処理部180−2は、インターネット等の通信ネットワーク600を介して、通信可能に接続する。
第1の身体制約情報格納部110−1および第1の基準モデル格納部140−1は、図3の身体制約情報格納部110および基準モデル格納部140に相当する。第1の重み付け格納部(重み付け情報格納部)170−1は、重み付け算出部150が決定した重み付けを示す重み付け情報を格納する。また、第1の身体制約情報格納部110−1、第1の基準モデル格納部140−1、および第1の重み付け格納部170−1は、それぞれ第1の通信処理部180−1に接続している。
第2の通信処理部180−2(重み付け情報取得部)は、第1の通信処理部180−1との通信により、第1の身体制約情報格納部110−1、第1の基準モデル格納部140−1、および第1の重み付け格納部170−1に格納された各情報を取得する。そして、第2の通信処理部180−2は、取得した身体制約情報、基準モデル、および重み付け情報を、第2の身体制約情報格納部110−2、第2の基準モデル格納部140−2、および第2の重み付け格納部170−2へそれぞれ格納する。すなわち、重み付け決定装置100−1と姿勢推定装置100−2とには、共通の身体制約情報、基準モデル、および重み付け情報が格納される。
また、身体候補推定部130は、第2の身体制約情報格納部110−2を参照して処理を行い、姿勢推定部160は、第2の基準モデル格納部140−2および第2の重み付け格納部170−2を参照して処理を行う。
このような姿勢推定システム500によっても、ノイズが発生し易い密集部分の影響を低減して姿勢推定を行うことができ、関節を有する人の姿勢を高精度に推定することができる。
また、このように装置を分離することにより、姿勢推定を行う装置の構成を簡素化しつつ、高精度の姿勢推定を実現することができる。また、一旦算出された重み付け情報その他の情報を複数の装置で共用して姿勢推定を行うことができるので、複数の場所で姿勢推定処理を行う場合に、利便性を向上させ、更にシステム全体のコストを低減することができる。
なお、重み付け決定装置100−1から姿勢推定装置100−2への情報の転送は、通信ではなく、情報を格納した記録媒体によって行われてもよい。この場合、重み付け決定装置100−1および姿勢推定装置100−2は、記録媒体への情報記録および記録媒体からの情報読み出しを行うためのインタフェースを供える必要がある。また、この場合、重み付け決定装置100−1および姿勢推定装置100−2は、必ずしも第1の通信処理部180−1および第2の通信処理部180−2を備えなくてもよい。
また、本発明は、以上説明した各実施の形態では、人の姿勢推定への適用について説明したが、これに限定されず、ロボット等の、関節により接続された複数の部位を有する人以外の各種物体の姿勢推定にも適用することができる。