以下、本発明の各実施の形態について、図面を参照して詳細に説明する。
(実施の形態1)
本発明の実施の形態1は、本発明を、動画撮影された人の姿勢状態を推定する装置に適用した例である。
以下の説明において、「部位」とは、人の身体のうち関節によって分割された部分の一まとまりをいうものとする。すなわち、部位は、例えば、頭、肩、右上腕、右前腕、左上腕、左前腕、右膝上、右膝下、左膝上、および左膝下である。また、「部位領域」とは、画像においてある部位が占め得る領域、つまり、部位の可動範囲であるものとする。
また、「部位軸」とは、部位の長手方向の仮想的な中心軸であり、具体的には、部位を他の第1の部位と接続する関節と、部位を他の第2の部位と接続する関節または部位の端部とを結ぶ線分をいうものとする。例えば、右上腕の部位軸の位置、向き、および長さは、右上腕の骨の中心軸の位置、向き、および長さにほぼ一致する。
また、「部位長」とは、部位軸の長さ(部位の長手方向の長さ)であり、具体的には、部位を他の第1の部位と接続する関節と、部位を他の第2の部位と接続する関節または部位の端部(例えば指先や頭頂部)との距離をいうものとする。例えば、右上腕の部位長は、右上腕の骨の長さ、つまり、右上腕の右肩関節から右肘関節までの長さにほぼ一致する。
また、「部位長比」とは、部位長の、所定長さに対する比である。本実施の形態では、この所定長さは、人の基準モデルにおける対応する部位の部位長とする。人の基準モデルは、本実施の形態に係る物体検出装置で用いられる後述の身体制約情報を生成するのに用いられ身体モデルであり、その体型は、一意に決まればどのような体型をしていてもよい。
また、「関節角度」とは、2つの部位のそれぞれの長手方向の間の角度をいうものとする。例えば、右肘の関節角度は、右上腕の部位軸と右前腕の部位軸とが成す角度である。なお、
また、「部位候補」とは、部位の位置の候補であり、画像データから推定される部位の位置である。
また、「姿勢状態」とは、着目すべき2つ以上の部位の姿勢(位置およびまたは角度)の組み合わせの種別をいうものとし、例えば、「右腕が曲がっている」、「直立状態である」等である。ここで、「姿勢」とは、部位を接続する関節の位置、または、関連する各部位の長さおよび部位間の角度等の情報によって表現されるものとする。したがって、「物体に関する情報の検出」とは、これらの情報を取得すること、およびこれらの情報から姿勢状態を推定することを含む概念とする。
なお、本実施の形態では画素を単位として説明するが、物体検出装置100は、所定のサイズに相当する複数の画素の一まとまりを、それぞれ一つの画素とみなして、同様の処理を行っても良い。これにより、物体検出装置は、処理を高速に行うことができる。複数の画素をひとつの画素とみなす場合、複数の画素の重心となる画素の値をその複数の画素の値として用いても良いし、複数の画素の値の平均値を、その複数の画素の値として用いても良い。
図1は、本発明の実施の形態に係る物体検出装置の構成を示すブロック図である。説明の簡便化のため、物体検出装置の周辺機器についても併せて図示する。
図1において、物体検出装置100は、身体制約情報格納部110、画像データ取得部120、部位領域推定部130、部位候補抽出部140、姿勢状態推定部150、および物体検出部160を有する。
身体制約情報格納部110は、人の体格や姿勢に関する制約条件(以下「身体制約情報」という)を、予め格納する。身体制約情報は、後述の部位領域の推定や部位候補の抽出に用いられる情報である。身体制約情報の具体的な内容は、部位領域の推定手法や部位候補の抽出手法により異なるため、後述する。
画像データ取得部120は、所定の3次元座標空間に設置された単眼カメラ200によって撮像された画像の画像データを、有線通信または無線通信により取得し、部位領域推定部130へ出力する。なお、本実施の形態では、単眼カメラ200はビデオカメラであるものとする。画像データ取得部120は、単眼カメラ200において連続的にリアルタイムで撮影された動画像データを入力し、動画像データを構成する各静止画像データを、順次、部位領域推定部130へ出力する。以下の説明では、画像データは、一人のみの画像を含むものとして説明するが、この限りではなく、複数人の画像を含んでも良いし、人の画像を含んでいなくても良い。
図2は、画像データを説明するための図である。
図2に示すように、例えば、単眼カメラ200の位置を地面に投射した位置を原点Oとする3次元の座標系410を設定する。座標系410は、例えば、垂直方向をY軸とし、Y軸および単眼カメラ200の光軸411と直交する方向をX軸とし、X軸およびY軸に直交する方向をZ軸とする。
単眼カメラ200の設置角度は、例えば、Y軸と光軸411との間の角度θにより表される。そして、単眼カメラ200は、単眼カメラ200の画角φの範囲に含まれるある平面412に焦点(フォーカス)を合わせて撮像を行う。このように撮影された画像の画像データは、物体検出装置100へ送信される。
図1の部位領域推定部130は、画像データ取得部120から入力された画像データに基づいて、各部位の部位領域を推定する。具体的には、部位領域推定部130は、画像データから、人の基準部位の位置および向きを推定する。基準部位とは、他の部位より前にその位置および向きの推定が行われ、その推定結果が他の部位の位置および向きの推定に影響を与える部位である。画像取得空間において、安定して映像が得られる部位とすることが望ましい。そして、部位領域推定部130は、推定した基準部位の位置および向きを基準として、各部位の部位領域を推定する。
本実施の形態では、基準部位は、人の頭部および肩部とする。また、基準部位の向きは、肩部の向きとし、肩部の向きは、右肩部と左肩部とを結ぶ直線の方向とする。そして、部位領域推定部130は、画像データと、部位毎の部位領域を示す情報(以下「部位領域データ」という)とを、部位候補抽出部140へ出力する。
部位候補抽出部140は、入力された画像データから、入力された部位領域データに基づいて、各部位候補を抽出し、姿勢状態推定部150へ出力する。なお、本実施の形態では、部位候補は、画像上の位置、つまり、画像の2次元座標系により表現されるものとし、部位候補を示す情報は、各部位が位置することの尤もらしさの分布を示す尤度マップであるものとする。
部位候補抽出部140は、部位領域推定部130から入力された部位領域データが示す部位領域以外の領域については、その部位領域に対応する指定部位が位置することの尤もらしさを低くした尤度マップを生成する。以下、画像データに基づいて生成された尤度マップは、「推定尤度マップ」という。
姿勢状態推定部150は、部位候補抽出部140から入力された推定尤度マップに基づいて、画像データに含まれる人(以下「被写体」という)の姿勢状態の推定を行う。より具体的には、姿勢状態推定部150は、姿勢状態毎に、その姿勢状態にある基準モデルから学習された尤度マップ(以下「学習尤度マップ」という)を、予め保持している。そして、姿勢状態推定部150は、推定尤度マップといずれかの学習尤度マップとの一致度が高いとき、該当する学習尤度マップに対応する姿勢状態を、被写体の姿勢状態として推定する。そして、姿勢状態推定部150は、ディスプレイ装置等の情報出力装置300に対して、有線通信または無線通信により情報を送信し、ユーザに対して推定結果を通知する。なお、姿勢状態推定部150は、姿勢状態だけでなく、被写体の向き(例えば、右に向いて座っているか、左に向いて座っているか)を併せて推定しても良い。
物体検出部160は、画像データから取得される隣り合う2つの部位の部位候補から、それら2つの部位を接続する関節の角度を抽出し、抽出した関節の角度に基づいて、被写体の部位長比に関する情報の推定を行う。
図3は、物体検出部160の構成を示すブロック図である。
図3において、物体検出部160は、関節角度抽出部161、関節位置抽出部162、基準比姿勢データベース(DB:database)163、基準比関節位置取得部164、および部位長比推定部165を有する。
関節角度抽出部161は、入力される部位毎の部位候補から、隣り合う2つの部位のそれぞれの長手方向の間の角度を、これらの部位を接続する関節の関節角度として抽出する。そして、関節角度抽出部161は、抽出した関節角度を構成する2つの部位の部位軸の位置および方向を、関節位置抽出部162へ出力する。また、関節角度抽出部161は、抽出した関節角度を、基準比関節位置取得部164へ出力する。なお、本実施の形態では、関節角度は、画像上の角度として表されるものとする。
関節位置抽出部162は、入力された部位軸の位置および方向から、部位が構成する関節の関節位置を抽出する。そして、関節位置抽出部162は、抽出した関節の関節位置を、部位長比推定部165へ出力する。以下、画像データから抽出された関節位置は、「抽出関節位置」という。なお、本実施の形態では、関節位置は、画像上の絶対位置として表されるものとする。
基準比姿勢データベース163は、人の基準モデルに関する情報(以下「基準モデル情報」という)を、予め保持する。基準モデル情報は、例えば、ある姿勢状態をある視点から見たときの画像上の状態(以下「画像姿勢状態」という)毎の、各関節の画像上の関節角度および位置を示す情報(例えば、各部位の画像上の部位長および可動範囲)を含む。言い換えると、基準モデル情報は、基準モデルの体格や姿勢に関する制約条件である。
なお、基準モデル情報は、上述の学習尤度マップの学習に用いられた基準モデルの情報であることが望ましい。
基準比関節位置取得部164は、関節角度抽出部161から入力された関節角度に最も近い関節角度の画像姿勢状態を推定し、推定した画像姿勢状態にあるときの基準モデルの各関節の位置を取得する。そして、基準比関節位置取得部164は、抽出した位置を、部位長比推定部165へ出力する。以下、基準モデル情報から抽出された関節位置は、「基準比関節位置」という。
なお、基準比関節位置取得部164が推定する画像姿勢状態は、姿勢状態推定部150が推定する姿勢状態に対応するとは限らない。上述の通り、学習尤度マップの基となった基準モデルの体格と、被写体の体格とが大きく異なる場合、姿勢状態推定部150では誤った推定がされ得るが、基準比関節位置取得部164では正しい推定が行われる場合があるからである。これは、同じ姿勢状態では、体格によらず各関節の関節角度はほぼ同一となるためである。
部位長比推定部165は、入力された抽出関節位置および基準比関節位置に基づいて、被写体の部位長および基準モデルの部位長を算出し、部位長比の推定を行う。なお、本実施の形態では、部位長比推定部165が算出する部位長は、画像の2次元座標系における絶対値により表現されるものとする。部位長比は、つまり、基準モデルにおける部位長に対する、画像データから抽出された部位長の比である。
また、部位長比推定部165は、入力された抽出関節位置および基準比関節位置と、推定した部位長比とに基づいて、身体制約情報格納部110に格納された身体制約情報を修正する。具体的には、身体制約情報の内容が、被写体の体格や姿勢に合うように、身体制約情報を修正する。
物体検出装置100は、CPU(central processing unit)およびRAM(random access memory)等の記憶媒体等を含むコンピュータである。すなわち、物体検出装置100は、記憶する制御プログラムをCPUが実行することによって動作する。
このような物体検出装置100は、画像データから、被写体の関節の角度を抽出するので、同一の姿勢状態にある基準モデルとの間で部位長を比較して部位長比を推定することができる。また、物体検出装置100は、被写体の部位長比を取得することができるので、姿勢状態推定に用いられる身体制約情報を、体格や姿勢に合うように修正することができる。したがって、物体検出装置100は、画像データから、被写体の部位領域、部位候補、および姿勢状態を、高精度に検出することができる。
また、物体検出装置100は、部位毎の尤度の分布を示す尤度マップを用いるので、例えば、画像上で胴体の外形に右腕が収まっている場合でも、「右腕が曲がっている」という姿勢状態にあるか否かを判定することができる。
また、物体検出装置100は、指定部位の可動領域である部位領域を推定し、部位領域以外の領域については尤度値を低くするので、尤度マップの精度を向上させることができる。
次に、物体検出装置100の動作について説明する。
図4は、物体検出装置100の動作の一例を示すフローチャートである。
まず、ステップS1100において、部位領域推定部130は、画像データ取得部120を介して、単眼カメラ200から、静止画像1枚分の画像データを取得する。
そして、ステップS1200において、部位領域推定部130は、基準部位の位置および向きを推定する処理(以下「基準部位推定処理」という)を行う。
ここで、基準部位推定処理の詳細の例について説明する。基準部位推定処理は、大きく分けて、人の肩関節位置を推定する第1の処理と、人の胴体の向きを推定する第2の処理とから成る。
まず、人の肩関節位置を推定する第1の処理について説明する。
部位領域推定部130は、画像データから、オメガ形状を検出し、オメガ形状に基づいて肩関節位置を推定する。
図5は、オメガ形状を説明するための図である。
オメガ(Ω)形状は、人の頭部および肩部を含む領域の特徴的なエッジ形状であり、人の身体のうち、監視カメラ等を用いた場合に最も安定して撮影される確率が高い形状である。また、頭部および肩部は、人の胴体との相対位置の変化が少ない。したがって、部位領域推定部130は、オメガ形状をまず検出して人の頭部および肩部の位置を検出し、これらを基準として他の部位の部位領域を推定することにより、部位領域を高精度に推定する。
オメガ形状は、例えば、充分な数のサンプル画像を用いてReal AdaBoost等により作成された検出器を用いて、検出することができる。検出器に用いられる特徴量としては、例えば、HoG(histogram of gradient)特徴量、Sparse特徴量、Haar特徴量等を用いることができる。また、学習方法としては、例えば、Boosting手法のほか、SVM(サポートベクタマシン)、ニューラルネットワークなどを利用することも可能である。
部位領域推定部130は、画像データの画像420から、まず、オメガ形状421を検出する。ここで、オメガ領域422の画素のうち、オメガ形状421を構成する画素(エッジ部分の画素)はデジタル信号「1」であり、他の画素はデジタル信号「0」であるものとする。そして、オメガ形状421を包含する比較的小さい矩形領域を、オメガ領域422として決定する。ここで、オメガ領域422の下の辺を基準線423という。
部位領域推定部130は、オメガ領域422に含まれるノイズを取り除く。具体的には、部位領域推定部130は、オメガ領域422の画素のうち、オメガ形状421に囲まれた領域に存在するデジタル信号「1」を、ノイズとして、これをデジタル信号「0」に修正する。この修正は、例えば、いわゆるクロージング処理を行うことにより可能である。クロージング処理とは、所定の画素分または所定の割合で、画像領域を拡大また縮小する処理である。この修正により、後述の距離ヒストグラムの精度を向上させることができる。
そして、部位領域推定部130は、基準線423からオメガ形状421までの垂直距離を、基準線423の各位置について取得する。
図6は、基準線423からオメガ形状421までの垂直距離を説明するための図である。
図6に示すように、部位領域推定部130は、基準線423の方向をX軸とし、基準線423の垂直方向をY軸として扱う。部位領域推定部130は、例えば、基準線423の左端からの画素数を、X座標値とする。そして、部位領域推定部130は、基準線423からオメガ形状421を構成する画素までのY軸方向の画素数、つまり、オメガ形状421までの垂直距離を、垂直距離d(X)として取得する。オメガ形状421を構成する画素とは、例えば、デジタル信号「1」の画素のうち、基準線423から直近のものである。
そして、部位領域推定部130は、n個(nは正の整数)の垂直距離d(X)のデータをX座標に対応付けた距離ヒストグラムを生成する。
図7は、部位領域推定部130が図5に示すオメガ領域422に基づいて生成する距離ヒストグラムの一例を示す図である。
図7に示すように、部位領域推定部130は、XY座標系に、垂直距離d(X)をY軸の値として、垂直距離d(X)の分布を示す距離ヒストグラム430を生成する。距離ヒストグラム430は、肩部に対応する形状で盛り上がり、そのうち、頭部の中心部に対応する範囲で突出した形状となる。
そして、部位領域推定部130は、生成した距離ヒストグラム430に対して、所定の閾値Thを適用して、2値化処理を行う。具体的には、部位領域推定部130は、垂直距離d(X)が閾値Th以上となっているX座標のY座標値を、「1」に置き換え、垂直距離d(X)が閾値Th未満となっているX座標のY座標値を、「0」に置き換える。閾値Thは、オメガ領域422において、高い確率で、肩部上端の垂直距離d(X)よりも大きく、頭部上端の垂直距離d(X)よりも小さくなる値が設定される。なお、2値化処理はこれに限定されるものではなく、例えば、いわゆる大津の2値化(大津の手法)等、他の手法としても良い。
図8は、図7に示す距離ヒストグラム430を2値化処理した結果の一例である。
図8に示すように、「1」となる範囲441は、頭部の中央部分の画像領域(以下「頭領域」という)のX座標の範囲を示すことになる。また、「1」となる範囲441を含む全体の範囲442は、肩部の画像領域(以下「肩領域」という)のX座標の範囲を示すことになる。したがって、部位領域推定部130は、画像データの画像420のうち、オメガ領域422のX軸方向範囲を、肩領域のX軸方向範囲として抽出し、「1」となる範囲441のX軸方向範囲を、頭領域のX軸方向範囲として抽出する。
そして、部位領域推定部130は、抽出した肩領域および頭領域に基づいて、基準部位の位置および向きを示す各種パラメータを算出する。
図9は、基準部位を示す各種パラメータを説明するための図である。
ここで、部位領域推定部130は、図9に示すように、基準部位の位置を示す記号(括弧内は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は、左肩の関節の位置(以下「左肩位置」という)である。
部位領域推定部130は、例えば、以下のようにして各パラメータの値を算出する。
まず、部位領域推定部130は、2値化処理の結果に基づいて抽出した肩領域から、人(の胴体)が単眼カメラ200側に向いているか否かに基づいて、右肩領域を決定する。部位領域推定部130は、頭領域の色情報の肌色成分が所定の閾値以上となっているか否かに基づいて、人が単眼カメラ200側に向いているか否かを判断する。ここでは、人は単眼カメラ200側に向いており、画像に向かって左側の肩領域が、右肩領域に決定されたものとする。
次に、部位領域推定部130は、右肩領域の重心位置を、右肩位置RS(x_rs,y_rs)として算出する。また、部位領域推定部130は、頭部の重心位置H(xh,yh)を算出し、重心位置H(xh,yh)と基のオメガ形状421とのY軸方向の距離(以下「頭部高さΔh」という)用いて、右肩位置RS(x_rs,y_rs)を算出しても良い。具体的には、部位領域推定部130は、例えば、頭部高さΔhに対して予め定められた比となる値を、頭部の重心位置Hから右肩位置RSまでのX軸方向の距離(xh−x_rs)とすれば良い。また、部位領域推定部130は、例えば、肩の高さから頭部高さΔhの半分の値Δh/2だけ低い位置を、右肩位置RSのY座標y_rsとしても良い。
更に、部位領域推定部130は、オメガ形状421のエッジの傾き(つまり距離ヒストグラムの変化率)が閾値を越えた点を、右肩の端部の位置RSE(x_rse)として算出する。そして、部位領域推定部130は、頭部の重心位置Hと右肩の端部の位置RSEとのX軸方向の距離RD(x_rd)を算出する。
最後に、部位領域推定部130は、頭部の重心位置HからX軸方向において距離RDの80%の位置に、右肩位置RSがあるものと推定する。すなわち、部位領域推定部130は、右肩位置RSのX座標x_rsを、 x_rs=x_rse+0.2×RD により算出する。また、部位領域推定部130は、右肩位置RSを通り垂直な直線(Y軸に並行な直線)とオメガ形状421のエッジとの交点を、右肩の頂部の位置RSU(y_rsu)として算出する。そして、部位領域推定部130は、右肩位置RSのY座標y_rsを、 y_rs=y_rsu−0.2×RD により算出する。
また、部位領域推定部130は、同様にして、左肩位置LSについても算出する。
なお、各パラメータの算出手法は、上述の例に限定されるものではない。例えば、肩幅(例えば右肩位置RSと左肩位置LSとの距離)等の部位長が、身体制約情報の1つとして身体制約情報格納部110に格納されている場合、部位領域推定部130は、その身体制約情報を用いて各パラメータを算出しても良い。
次に、人の胴体の向きを推定する第2の処理について説明する。
本実施の形態では、部位領域推定部130は、身体制約情報格納部110に身体制約情報の1つとして予め保持された基準部位対応テーブルを参照して、第2の処理を行うものとする。
基準部位対応テーブルは、頭部の重心位置Hと、右肩位置RSと、左肩位置LSとの組み合わせ(以下「基準部位の位置」という)と、その基準部位の位置から推定される身体の向き(以下「基準部位の向き」という)とを対応付けて記述したテーブルである。すなわち、基準部位テーブルは、各部位の相対的な位置関係を記述したテーブルである。なお、基準部位とは、上述の通り、人の頭部および肩部を示すオメガ形状の部分である。したがって、基準部位の向きとは、人の身体(胴体)の向きである。
部位領域推定部130は、画像データから算出した基準部位の位置に対応する基準部位の向きを、基準部位対応テーブルから導出する。
なお、保持された基準部位対応テーブルに記述される基準部位の位置、および、部位領域推定部130が画像データから算出する基準部位の位置は、人の画面上の大きさによらない正規化された値であることが望ましい。具体的には、部位領域推定部130は、例えば、頭部の重心位置Hを原点とし、頭部の重心位置Hと右肩位置RSまたは左肩位置LSとの間の長さが1となるように正規化した値を用いて、準部位の向きを導出する。
また、基準部位対応テーブルには、右肩位置RSおよび左肩位置LSが記述されていても良い。また、基準部位対応テーブルには、頭部の重心位置Hと右肩位置RSまたは左肩位置LSとを通る線と、頭部の重心位置Hを通る垂直な直線(以下「頭部垂直線」という)とが成す角が記述されていても良い。また、基準部位対応テーブルには、頭部の重心位置Hと右肩位置RSとの間の距離を1としたときの頭部の重心位置Hと左肩位置LSとの間の距離が記述されていても良い。部位領域推定部130は、基準部位対応テーブルに記述されたパラメータに対応するパラメータを算出することにより、基準部位の向きを導出する。
図10は、基準部位対応テーブルの内容の一例を示す図である。
図10に示すように、基準部位対応テーブル450は、識別子451に対応付けて、射影角度452、左肩位置LSの座標453、頭部の重心位置Hの座標454、および基準部位の向き455を記述する。各座標は、例えば、右肩位置RSを原点とし、画面の2次元座標系に平行な所定の2次元座標系を用いて表現される。射影角度452は、例えば、図2で説明した3次元座標系410のXZ平面に対する、この所定の2次元座標系の角度(つまり図2に示す設置角度θ)である。また、基準部位の向き455は、例えば、図2で説明した3次元座標系410のXYZ軸のそれぞれに対する回転角度で表される。なお、各座標は、腕の部位長や身長等の他の長さを1とする座標系を用いて表現されても良い。
このようにして、部位領域推定部130は、身体制約情報を用いて、基準部位の位置および向きを推定する。以上で基準部位推定処理の説明を終える。
次に、図4のステップS1300において、部位領域推定部130は、推定した基準部位の位置および向きに基づいて、部位毎に部位領域を推定する処理(以下「部位領域推定処理」という)を行う。
ここで、部位領域推定処理の詳細の例について説明する。
本実施の形態では、部位領域推定部130は、身体制約情報格納部110に身体制約情報の1つとして予め保持された部位領域対応テーブルを参照して、部位領域推定処理を行うものとする。
部位領域対応テーブルは、基準部位の位置と向きと、他の部位の部位領域とを対応付けて記述したテーブルである。
部位領域推定部130は、画像データから推定した基準部位の位置および向きに対応する部位領域を、部位領域対応テーブルから導出する。
部位領域は、例えば、画像データの画像の画素位置により定義される。したがって、部位領域推定部130は、画像データの画像全体の全ての画素について、各画素がいずれかの部位の部位領域に属する画素であるかを判断する。
図11は、部位領域対応テーブルの内容の一例を示す図である。
図11に示すように、部位領域対応テーブル460は、識別子461に対応付けて、頭肩領域(基準部位)の位置463、頭肩領域(基準部位)の向き464、および各部位の領域465を記述する。
各位置および領域は、例えば、画像の2次元座標系の値で表される。射影角度462は、例えば、図2で説明した3次元座標系410のXZ平面に対する、この所定の2次元座標系の角度(つまり図2に示す設置角度θ)である。頭肩領域の位置463は、例えば、右肩位置RSである。頭肩領域の向き464は、例えば、図2で説明した3次元座標系410のXYZ軸のそれぞれに対する回転角度で表される。各部位の領域465は、例えば、領域が円で近似される場合における、その円の中心座標と半径とにより表される。半径は、つまり、部位長である。
なお、識別子461が基準部位対応テーブル450の識別子451と共通である場合には、頭肩領域の向き464は、必ずしも部位領域対応テーブル460に記述されていなくても良い。
なお、部位領域を推定する際には、他の種類の身体制約情報を用いることもできる。また、身体制約情報は、上述の構成以外の構成を取ることもできる。
ここで、部位領域の推定に用いられ得る他の身体制約情報について説明する。
身体制約情報は、例えば、所定の部位の長さ、および関節の角度のうち少なくとも一方を基準として、所定の部位に接続する部位が存在し得る領域(つまり部位領域)を制限する。この場合、身体制約情報は、例えば、ある部位と他の部位との間の長さの比および関節の可動角度のうち少なくとも一方を含む。例えば、身体制約情報は、肩幅を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は、このような値を身体制約情報として保持する場合には、併せて、射影角度に関する情報を保持しておく必要がある。
以上で、部位領域の推定に用いられる他の身体制約情報の例についての説明を終える。
部位領域推定部130は、部位領域の推定を完了すると、画像データの画像全体の全ての画素について、画素毎に部位の部位領域であるか否かを示す情報を、部位領域データとして部位候補抽出部140へ出力する。
部位領域データは、例えば、画像データの全ての画素位置(i,j)について、いずれかの部位の部位領域に該当するか否かを示す画素情報Kijを並べた構造を有し得る。画素情報Kijの各要素は、例えば、対応する部位の部位領域に属する場合には「1」を取り、属しない場合には「0」を取る。画素情報Kijは、例えば、Kij=[k1,k2]というように、部位の数と同数の次元を有する。ここでは、k1は右上腕の部位領域に対応し、k2は右前腕の部位領域に対応するものとする。
例えば、部位領域推定部130は、ある画素位置Kabが、右上腕の部位領域に含まれるが右前腕の部位領域には含まれないと判定した場合、Kab=[1,0]という画素情報を生成する。部位領域推定部130は、このように生成した各画素の画素情報の集合を、部位領域データとして生成する。
なお、部位領域データによる部位領域の表し方は、上述の例に限定されるものではない。例えば、部位領域データは、画像に予め設定された部分領域毎に、いずれの部位の部位領域に該当するかを示しても良いし、部位毎に部位領域の外縁の座標を示しても良い。
なお、基準部位の位置を正規化した位置が基準部位推定処理において用いられる場合には、部位領域対応テーブルには、正規化された基準部位に対応する部位領域が記述されていることが望ましい。また、部位領域データには、上述の基準部位対応テーブルの場合と同様に、右肩位置RSおよび左肩位置LS等の他の情報が記述されていても良い。部位領域推定部130は、部位領域対応テーブルに記述されたパラメータに対応するパラメータを算出することにより、各部位の部位領域を導出する。
図12は、部位領域データの内容の一例を示す図である。ここでは、説明の簡便化のため、直立状態にある場合の各部位の位置を併せて図示する。
図12に示すように、部位領域データは、画像データの画像420において、右上腕の部位領域471と、右前腕の部位領域472とを示す。これらの部位領域471、472は、上述の通り、先に推定された基準部位473の位置および向きを基準として推定されたものである。
このようにして、部位領域推定部130は、身体制約情報を用いて、各部位の部位領域を推定する。以上で部位領域推定処理の説明を終える。
次に、図4のステップS1400において、部位候補抽出部140は、部位毎に部位領域について尤度値を算出して推定尤度マップを生成する処理(以下「推定尤度マップ生成処理」という)を行う。
ここで、推定尤度マップ生成処理の詳細の第1の例について説明する。
まず、部位候補抽出部140は、画像データから、各部位の部位領域内の画素毎に、その部位の位置および向きの状態を表すのに適した画像特徴量を判別して部位が位置することの尤もらしさを示す尤度値を算出する。そして、部位候補抽出部140は、画像データから算出された尤度値を用いて、各画素の尤度値の分布を示す推定尤度マップを生成する。尤度値は、0〜1の範囲となるように正規化した値であっても良いし、正の整数や負の数を含む実数であっても良い。
画像から注目対象を認識する手法としては、例えば、矩形情報を基にした複数の弱識別器の総和をAdaBoostにより統合して強識別器を作成し、強識別器をカスケード接続させて、画像中の注目対象として顔を認識する技術を採用することができる。また、画像特徴量としては、例えば、SIFT(scale-invariant feature transform)特徴量を採用することができる(例えば、非特許文献1参照)。SIFT特徴量は、128次元のベクトルにより構成されており、画素毎に計算される値である。SIFT特徴量は、検出の対象となる物体のスケール変化、回転、および平行移動に影響を受けないため、特に、腕のように、様々な方向に回転し得る部位の検出に有効である。すなわち、SIFT特徴量は、姿勢状態を2つ以上の部位の相対的な関節の位置および角度によって定義する本実施の形態に好適である。
SIFT特徴量を用いた手法を本実施の形態に適用した場合、強識別器Hk(k=1,2)は、右上腕(k=1)、右前腕(k=2)等、部位領域毎に、予め機械学習により生成され、部位候補抽出部140に保持される。識別器Hkは、AdaBoostアルゴリズムにより生成される。すなわち、強識別器Hkは、予め部位毎に用意されている複数の学習画像に対して、右上腕であるか否か、および、右前腕であるか否かが、所望の精度で判定できるまで学習が繰り返され、複数の弱識別器がカスケード接続されることによって生成される。
部位候補抽出部140は、部位毎および画素毎に画像特徴量を算出すると、その画像特徴量を強識別器Hkに入力し、その強識別器Hkを構成する各弱識別器の出力に対して弱識別器毎に予め得られた信頼度αを乗算した値の総和を算出する。そして、部位候補抽出部140は、算出した総和から所定の閾値Thを減算して、部位毎および画素毎の尤度値ckを算出する。ここでは、c1は右上腕の尤度値を示し、c2は右前腕の尤度値を示す。
部位候補抽出部140は、各部位の尤度値を統合した画素毎の尤度値Cijを、Cij=[c1,c2]とする。そして、部位候補抽出部140は、画像全体の全ての画素の尤度値Cijを、推定尤度マップとして、姿勢状態推定部150へ出力する。
部位候補抽出部140は、各画素について、その画素がいずれかの部位領域に含まれるか否かを判断し、含まれればその部位の識別器を用いて尤度値を算出し、含まなければその部位の尤度値を0としても良い。換言すると、部位候補抽出部140は、部位領域推定部130から出力された画素情報の行列式(Kij)と、部位領域とは無関係に算出した各画素の尤度値の行列式(Cij)とを積算した結果を、最終的な推定尤度マップとしても良い。
図13は、推定尤度マップの一例を示す図である。ここでは、推定尤度マップのうち1つの部位(例えば右上腕)の尤度値のみを表し、尤度値がより高い画素ほどより濃い網掛けを付している。図13に示すように、推定尤度マップ478は、部位が位置することの尤もらしさの分布を表す。
尤度マップの画素毎の情報は、例えば、部位kの尤度値をckと表し、部位がn個存在する場合には、尤度ベクトルCij=[c1,c2,…,ck,…,cn]というデータ構造となる。
このようにして、部位候補抽出部140は、推定尤度マップを生成する。以上で推定尤度マップ生成処理の詳細の第1の例についての説明を終える。
次いで、推定尤度マップ生成処理の詳細の第2の例について説明する。
部位候補抽出部140は、例えば、画像データに含まれるエッジから平行線を抽出することにより、推定尤度マップを生成する。
この場合、部位候補抽出部140は、例えば、身体制約情報格納部110に身体制約情報の1つとして予め保持された、肩関節の長さと各部位の標準的な太さの値とを対応付けた対応テーブルを参照して、平行線の抽出を行う。部位候補抽出部140は、部位領域内に、その部位の標準的な太さに相当する距離で離隔する平行線の組を、判定する方向を360度回転させながら検索する。そして、部位候補抽出部140は、該当する平行線の組が存在する場合に、それらの平行線によって囲まれた領域の各画素に対して投票を行う処理を繰り返し、最終的な各画素の投票数に基づいて推定尤度マップを生成する。
このような手法の場合、推定尤度マップおよび学習尤度マップは、画素毎および部位毎に、平行線の方向と投票数(以下「方向の尤度値」という)とを含むことになる。例えば、平行線の角度を8つに分類した場合、画素毎および部位毎の尤度値は、8方向に対応した8次元の値となる。更に、例えば、平行線の幅を2つに分類した場合、画素毎および部位毎の尤度値は、2×8=16次元の値となる。なお、投票の対象となる平行線の距離や角度は、部位毎に異なっていても良い。平行線の幅を複数求めて、そのうちの尤度値が尤も高くなる幅の尤度値を用いることにより、体型や服装の違いを吸収して、尤度を求めることができる。
そして、部位候補抽出部140は、例えば、部位毎に、方向の尤度値が最も高い方向を、その部位の主要なエッジ方向と判定する。このとき、姿勢状態推定部150は、方向毎に全画素の尤度値の合計値を取り、その合計値が最も高い方向を、方向の尤度値が最も高い方向であると判定しても良い。
このようにして、部位候補抽出部140は、身体制約情報を用いて、推定尤度マップを生成する。以上で推定尤度マップ生成処理の詳細の第2の例についての説明を終える。
次に、ステップS1500において、姿勢状態推定部150は、いずれかの学習尤度マップと推定尤度マップとが一致するか否かを、その一致度が所定のレベル以上であるか否かに基づいて判断する一致度判定処理を行う。
ここで、一致度判定処理の詳細の例について説明する。まず、上述の推定尤度マップ生成処理の第1の例が採用されている場合に対応する、一致度判定処理の詳細の第1の例について説明する。
姿勢状態推定部150は、まず、推定尤度マップおよび各学習尤度マップをそれぞれ所定の閾値を用いて2値化する。具体的には、姿勢状態推定部150は、画素毎および部位毎の尤度値を、所定の閾値以上である場合はデジタル信号「0」に、所定の閾値未満である場合にはデジタル信号「1」に変換する。
図14は、図13に示す推定尤度マップを2値化した後の状態の一例を示す図である。ここでは、デジタル信号「1」の画素は灰色、デジタル信号「0」の画素は白色で表している。図14に示すように、2値化後の推定尤度マップ479は、部位が位置することの尤もらしさが高い部分の分布を表す。
そして、姿勢状態推定部150は、学習尤度マップ毎に、推定尤度マップと学習尤度マップとの間で、画素毎および部位毎に2値化された尤度値の積を取り、全ての画素および全ての部位についての値の和を、評価値とする。具体的には、姿勢状態推定部150は、推定尤度マップと学習尤度マップとを所定の位置関係で重ね、画素毎に2値化後の尤度値情報を掛け算し、掛け算した値の全ての画素および部位についての和を求める。
姿勢状態推定部150は、推定尤度マップと学習尤度マップとの重ね合わせの位置関係を、移動および回転によりずらしていき、各位置関係について上述の演算処理を行う。そして、姿勢状態推定部150は、求めた評価値のうちの最大値を、学習尤度マップとの一致度を表す最終的な評価値として取得する。そして、姿勢状態推定部150は、この評価値が所定の閾値以上となる学習尤度マップが存在するとき、その学習尤度マップと推定尤度マップとが一致すると判断する。閾値は、予め、学習等により適切な値が設定される。
なお、姿勢状態推定部150は、必ずしも推定尤度マップおよび学習尤度マップを2値化しなくても良い。この場合には、姿勢状態推定部150は、学習尤度マップと推定尤度マップとの一致度をより精度良く判定することができる。また、2値化した場合には、姿勢状態推定部150は、高速に一致度の判定を行うことができる。
このようにして、姿勢状態推定部150は、推定尤度マップと学習尤度マップとの一致度を判定する。以上で一致度判定処理の第1の例についての説明を終える。
次いで、上述の推定尤度マップ生成処理の第2の例が採用されている場合に対応する、一致度判定処理の詳細の第2の例について説明する。
そして、姿勢状態推定部150は、部位毎に、それぞれの主要なエッジ方向が一致するように推定尤度マップと学習尤度マップとを重ね合わせて、一致度を算出する。以降の処理は、上述の第1の例と同様である。
このように、エッジの方向を考慮した手法は、推定尤度マップと学習尤度マップとの重ね合わせの位置関係に制約を加えることができるので、処理負荷を軽減することができる。
なお、姿勢状態推定部150は、推定尤度マップと学習尤度マップとの一致度を算出する際に、エッジ方向の情報のみを用いても良い。この場合、例えば、姿勢状態推定部150は、複数の指定部位間で各指定部位のエッジ方向が成す角の一致度を、推定尤度マップと学習尤度マップとの一致度を表す評価値とする。そして、姿勢状態推定部150は、評価値が所定の範囲内であるとき、被写体の姿勢が、該当する学習尤度マップに対応する姿勢状態にあると判定する。
このように、エッジ方向のみを用いて一致度を判定する手法は、画像を回転させながら複数の評価値を繰り返し算出する処理を不要とすることができるため、処理負荷を更に低減することができる。以上で一致度判定処理の第2の例についての説明を終える。
姿勢状態推定部150は、学習尤度マップと推定尤度マップとが一致する場合(S1500:YES)、ステップS1600へ進む。また、姿勢状態推定部150は、学習尤度マップと推定尤度マップとが一致しない場合(S1500:NO)、ステップS1700へ進む。
ステップS1600において、姿勢状態推定部150は、推定尤度マップと一致する学習尤度マップに対応する姿勢状態を、情報出力装置300を介してユーザに通知して、ステップS1700へ進む。
ステップS1700において、関節角度抽出部161は、部位候補抽出部140から出力された部位候補に基づいて、被写体の各関節の関節角度を抽出する。
具体的には、まず、関節角度抽出部161は、部位候補から、各部位の部位軸の方向(角度、以下「軸方向」という)を抽出する。例えば、関節角度抽出部161は、部位候補が示す部位の外形が楕円に近似することができる場合、その楕円の長軸を部位軸とする。また、関節角度抽出部161は、その領域の各画素の尤度値の平均値が所定の閾値を超えるような領域を楕円に近似し、その楕円の長軸を部位軸としても良い。また、関節角度抽出部161は、部位候補が方向成分を含む場合、部位候補内で最も多い平行成分を部位の軸方向として採用し、軸方向の尤度の値が所定の閾値以上となる画素を含む領域の重心を通る直線を部位軸としても良い。
そして、関節角度抽出部161は、各関節について、その関節を挟む2つ部位の軸方向から、その関節の関節角度を算出する。そして、関節角度抽出部161は、部位軸の位置および軸方向を、その部位軸が対応する部位の識別子(ID)と共に、関節位置抽出部162へ出力する。また、関節角度抽出部161は、関節角度を、その関節角度が対応する関節の識別子と共に、基準比関節位置取得部164へ出力する。
そして、ステップS1800において、関節位置抽出部162は、入力された部位軸の位置および軸方向から、各関節の関節位置を推定する。具体的には、関節位置抽出部162は、部位毎に部位軸の交点となる位置を求め、求めた位置を、対応する関節の関節位置とする。そして、関節位置抽出部162は、求めた関節位置(つまり抽出関節位置)を、その識別子と共に、部位長比推定部165へ出力する。
また、ステップS1900において、基準比関節位置取得部164は、基準比姿勢データベース163の基準モデル情報を参照して、入力された関節の識別子に対応する関節のそれぞれについて、関節位置を抽出する。そして、基準比関節位置取得部164は、求めた関節位置(つまり基準比関節位置)を、その識別子と共に、部位長比推定部165へ出力する。
より具体的には、まず、基準比関節位置取得部164は、関節角度抽出部161から入力された関節角度および関節の識別子の組に基づき、被写体の画像上の姿勢状態に画像姿勢状態が一致する基準モデル情報を検索する。すなわち、基準比関節位置取得部164は、各関節の画像上での角度が近似している画像姿勢状態を検索し、その画像姿勢状態における基準モデルの各関節の位置を、基準比関節位置として抽出する。そして、基準比関節位置取得部164は、抽出した各基準比関節位置を、それぞれが対応する関節の識別子(ID)と共に、部位長比推定部165へ出力する。
ここで、基準モデル情報の詳細の例について説明する。
基準モデル情報は、例えば、姿勢状態毎に関節位置等を3次元座標系を用いて表現する第1段階の情報(以下「基準モデル3次元情報」という)と、その姿勢状態をある視点から見たときの関節位置等を2次元座標系を用いて表現する第2段階の情報(以下「基準モデル2次元情報」という)とから成る。以下、上記第1段階の情報は、「基準モデル3次元情報」といい、上記第2段階の情報は、「基準モデル2次元情報」という。この場合、基準モデル2次元情報は、基準モデル1次元情報を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次元情報は、関節に関する情報と部位に関する情報とを別のファイルで記述しても良い。これにより、複数の姿勢状態の間でファイルを共有することが可能となり、基準比姿勢データベース163のサイズを小さくすることができる。
また、基準モデル3次元情報は、関節位置と姿勢状態との対応関係と、関節角度と姿勢状態との対応関係とを、別のファイルで記述しても良い。これにより、体格の異なる複数の基準モデルについての基準モデル3次元情報を用意する場合に、関節角度と姿勢状態との対応関係を記述したファイルを共通のファイルとすることができ、基準比姿勢データベース163のサイズを小さくすることができる。
また、基準モデル3次元情報は、各関節の関節角度と部位長および部位の太さ等を記述し、関節位置は記述しなくても良い。この場合には、関節位置は、関節角度と身体制約とから算出することができる。これにより、基準比姿勢データベース163のサイズを小さくすることができる。
例えば、上述の右上腕に関する基準モデル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次元情報は、予め生成されて基準比姿勢データベース163に格納されていても良いし、基準モデル3次元情報から都度生成されても良い。複数の視点を想定する場合、基準モデル2次元情報を都度生成するようにすることにより、基準比姿勢データベース163のサイズを小さくすることができる。基準モデル2次元情報は、例えば、基準比姿勢データベース163または基準比関節位置取得部164により生成される。なお、基準モデル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次元モデル情報の場合と同様に、画像姿勢状態毎あるいは情報の種別毎に、別のファイルで記述しても良い。これにより、基準比姿勢データベース163のサイズを小さくすることができる。
また、基準モデル3次元情報の2次元座標系への射影角度は、固定値であっても良いし、算出された肩向きに応じて変化する値であっても良い。後者の場合、基準比関節位置取得部164は、部位候補抽出部140が抽出した肩向きを取得する必要がある。また、基準比関節位置取得部164は、射影角度を任意の値に設定するような射影角度設定処理部を有していても良い。
以上で基準モデル情報の例についての説明を終える。
次に、図4のステップS2000において、部位長比推定部165は、入力された抽出関節位置により定まる各部位の部位長と、入力された基準比関節位置により定まる各部位の部位長を算出する。そして、部位長比推定部165は、部位毎に、基準比関節位置による部位長に対する抽出関節位置による部位長の比を算出する。すなわち、部位長比推定部165は、基準モデルの部位長に対する、画像データから抽出された被写体の部位長の比を、部位毎に算出する。
ここで、部位長比の算出手法の具体例について説明する。
図15は、同一の画像姿勢状態にある基準モデルと被写体との関係の一例を示す図である。
図15に示すように、例えば、被写体481の頭部から腰までの部分の部位軸の長さlが、基準モデル482の頭部から腰までの部分の部位軸の長さlcよりも長い場合がある。このような場合、図15から明らかなように、頭部に対する足の位置は、足の長さや角度が同じであったとしても、被写体481と基準モデル482との間でずれることになる。
このような部位のずれは、部位領域の推定、部位候補の推定、および姿勢状態の推定のそれぞれの精度を低下させる。
一方で、同一の関節において、画像データから抽出された関節角度と抽出された画像姿勢状態の関節角度との一致度は高いはずであるため、図15に示すように、その関節に接続する部位軸もほぼ平行となる。
このため、図4のステップS2100において、部位長比推定部165は、身体制約情報が規定すると基準モデル482の部位長を、被写体481の部位長に一致するように伸縮させることに相当する修正を、身体制約情報に対して行う。
図15の例の場合、例えば、部位長比推定部165は、基準モデル482の頭部から腰までの部分の部位長を下方に伸ばして、被写体481と基準モデル482との間で足の位置が一致するようにする。これにより、部位領域の推定、部位候補の推定、および姿勢状態の推定のそれぞれの精度を向上させることができる。
具体的には、例えば、部位長比推定部165は、m番目の部位の部位長比rmを、被写体のm番目の部位の部位長lmと、基準モデルの方のm番目の部位の部位長lcmとを用いて、以下の式(1)を用いて算出する。
rm=lm/lcm ・・・・・・(1)
そして、部位長比推定部165は、各部位長比rmに基づいて、身体制約情報格納部110の身体制約情報を修正する。すなわち、部位長比推定部165は、身体制約情報が示す各部位長lcmが、現在の値に対応する部位長比rmを乗じた値と一致するように、身体制約情報を修正する。具体的には、部位長比推定部165は、例えば、部位領域対応テーブル460(図11参照)に記述された部位の領域464のうち、その円の半径を、基準モデルの場合の半径に部位長比を乗じた値に修正する。
なお、部位長比推定部165は、身体制約情報に対して行う修正と対応する内容の修整を、基準比姿勢データベース163の基準モデル情報に対しても行うことが望ましい。これにより、被写体が同一である間は、身体制約情報の修整処理を、最初の1回で済ませることが可能となる。
なお、部位長比推定部165は、算出された被写体の部位長lmをそのまま用いて身体制約情報格納部110の身体制約情報を修正しても良い。但し、身体制約情報の部位長に相当するパラメータを表現する2次元座標系と基準モデル2次元情報の2次元座標系とが一致していない場合や、身体制約情報の部位長に相当するパラメータが3次元座標系の値である場合がある。これらの場合には、2次元座標系の長さである部位長lmよりも部位長比rmの方が演算に適している。
そして、ステップS2200において、部位領域推定部130は、ユーザ操作等により処理終了の指示があったか否かを判断する。部位領域推定部130は、処理終了の指示がない場合(S2200:NO)、ステップS1100へ戻り、次の静止画像に対する処理へ移る。また、部位領域推定部130は、処理終了の指示があった場合には(S2200:YES)、一連の処理を終了する。
このような動作により、物体検出装置100は、画像データから、被写体の関節の角度を抽出し、被写体の各部位の部位長比を推定して、姿勢状態推定の精度を向上させることができる。
なお、姿勢状態推定部150は、身体制約情報の内容が被写体の体格に一致するのに十分な時間が経過してから、姿勢状態の推定を行ったり、推定結果の出力を行ったりしても良い。これにより、姿勢状態推定の推定結果の信頼性を向上させることができる。
また、部位長比推定部165は、数フレーム分の画像データから得られた部位比の平均値を用いて、身体制約情報を修整しても良い。これにより、各画像データから抽出される情報のばらつきに対する姿勢状態推定のロバスト性を向上させることができる。
また、部位長比推定部165は、被写体が、部位長を精度良く検出することが可能な、特定の姿勢状態にあるときの部位長比のみによって、身体制約情報の修整を行うようにしても良い。これにより、姿勢状態の推定精度を更に向上させることができる。
以上のように、本実施の形態に係る物体検出装置100は、画像データから、被写体の関節の角度を抽出して、被写体の各部位の部位長比を推定するので、画像データからその画像データに含まれる人に関する情報を高精度に検出することができる。
また、物体検出装置100は、被写体の部位長比に基づいて、姿勢状態推定に用いられる身体制約情報を、体格や姿勢に合うように修正することができるので、体格の個人差や姿勢の違いの姿勢状態推定への影響を抑えることができる。また、これにより、物体検出装置100は、平均的な体格のモデルや、被検者毎の体格のモデル等の特別な基準モデルを事前に用意することなく、高精度な姿勢状態推定を行うことができる。
なお、物体検出装置100は、具体的に指定されたある姿勢状態のみについて推定を行い、指定された姿勢状態に該当するか否かを推定結果として出力するようにしても良い。
また、物体検出に用いられる画像データは、ステレオカメラまたは複数のカメラによって撮影された画像のデータであっても良い。ステレオカメラの画像データを用いる場合には、物体検出装置100は、片方のカメラによって撮像された画像データと、ステレオカメラの設置パラメータから得られる被写体の位置情報とを用いても良い。また、複数のカメラの画像データを用いる場合には、物体検出装置100は、それらのうち一台のカメラによって撮像された画像データと、各カメラの設置パラメータから得られる被写体の位置情報とを用いても良い。
また、部位領域推定部130は、基準部位の位置および向きが既知である場合や指定される場合には、上述の基準部位推定処理を行わなくても良い。また、部位領域推定部130は、例えば人の歩行する方向が決まっており、基準部位の向きがほぼ一定である場合には、身体の向き情報を保持しておいても良い。
また、部位領域推定部130が行う部位領域の推定の手法は、上述の例に限定されない。例えば、部位領域推定部130は、画像データから画像のエッジ部分(以下、単に「エッジ」という)を抽出し、エッジにより囲まれた領域のY座標の値の範囲に基づいて、各部位領域を推定しても良い。具体的には、例えば、部位領域推定部130は、エッジにより囲まれた領域において、Y座標の値が最も高い位置から20%までの領域を頭部の部位領域というように推定する。同様に、例えば、部位領域推定部130は、15%から65%までの領域を胴の部位領域、55%から85%までの領域を膝上の部位領域、75%から100%までの領域を膝下の部位領域というように推定する。この場合には、各領域のパーセンテージに対応する値が、身体制約情報となる。
また、部位領域推定部130は、基の動画像データにおける画像間で背景差分を取ることにより動体を抽出し、抽出した領域を含む領域全体を、各部位の部位領域の候補としても良い。これにより、部位領域を推定する際の処理の高速化を図ることができる。
また、物体検出装置100は、基準部位から近い順に1つずつ部位の位置を推定し、推定した位置に基づいて次の部位の部位領域を推定するという処理を繰り返すことにより、各着目部位の部位領域を推定するようにしても良い。
また、物体検出装置100は、必ずしも部位領域推定を行わなくても良い。この場合には、部位候補抽出部140は、画像の全ての領域に対して均一に、尤度値の算出を行うことになる。
また、姿勢状態推定部150は、学習尤度マップに、その学習尤度マップの基となった画像の光軸方向に関する情報が対応付けられている場合には、単眼カメラ200の設置角度θに対応する学習尤度マップを比較対象とするようにしても良い。
また、姿勢状態推定部150が行う姿勢状態の推定の手法は、上述の例に限定されない。例えば、姿勢状態推定部150は、学習尤度マップではなく、基準比姿勢データベース163の基準モデル情報を用いて、姿勢状態の推定を行っても良い。
また、物体検出装置100は、被写体を無線タグ等により識別可能である場合には、被写体毎に身体制約情報を保持し、姿勢推定や身体制約情報の修整等の処理を行うようにしても良い。これにより、物体検出装置100は、1つの画面に複数の被写体が含まれている場合に対応することができる。また、同じ被写体が2回以上検出されるとき、2回目以降においては早期に高い検出精度を得ることが可能となる。
また、物体検出装置100は、関節位置に基づいて、被写体の姿勢状態の推定を行っても良い。
以下、関節位置に基づく姿勢状態推定の一例について説明する。
基準比関節位置取得部164は、関節角度抽出部161から入力された関節角度に基づき、関節角度が近似する複数の画像姿勢状態を、被写体の画像姿勢状態の候補として抽出する。
そして、基準比関節位置取得部164は、各画像姿勢状態の基準となる1つの関節の関節位置を、被写体から推定される同じ間接の関節位置に合わせる。
具体的には、次の通りである。ここで、右肩関節を基準となる関節とし、被写体の右肩関節の関節位置が(xa,ya)であり、p番目の画像姿勢状態の右肩関節の位置が(xbp,ybp)であるとする。この場合、基準比関節位置取得部164は、p番目の画像姿勢状態の各関節位置を、(xa−xbp,ya−ybp)だけ平行移動させる。
そして、基準比関節位置取得部164は、部位長比推定部165と同様に、基準となる部位(例えば肩部)について、p番目の画像姿勢状態に対する部位長比rpを算出する。すなわち、部位長比rpは、体格の比を表す値である。
なお、被写体から推定される関節位置は、例えば、部位候補抽出部140が抽出した部位候補から求められる。
そして、基準比関節位置取得部164は、算出した部位長比rpを用いて、各画像姿勢状態の基準モデルの体格を、被写体の体格に合わせこむ。
具体的には、次の通りである。基準比関節位置取得部164は、p番目の画像姿勢状態のq番目の関節の、平行移動前の関節位置を(xpq,ypq)とすると、体格を合わせ込んだ後の各関節位置(xpq',ypq')を、例えば、以下の式(2)を用いて算出する。(xpq',ypq')=({xpq−xa+xbp}rp,{ypq−ya+ybp}rp)
・・・・・・(2)
そして、基準比関節位置取得部164は、体格を合わせ込んだ後の各関節位置(xpq',ypq')を用いて、画像姿勢状態毎に各部位の位置、軸方向、および部位長を算出する。
そして、基準比関節位置取得部164は、部位毎に、その部位軸を含む画素の尤度値の総和を求める。尤度値は、例えば、上述の推定尤度マップの値である。また、基準比関節位置取得部164は、部位軸からの距離が所定の範囲内となる領域についての尤度値の総和を用いても良いし、部位軸を長軸とする楕円領域についての尤度値の総和を用いても良い。
そして、基準比関節位置取得部164は、全ての部位についての尤度値の総和が最も高い画像姿勢状態を、被写体の画像姿勢状態として特定する。特定された画像姿勢状態に対応する基準モデル2次元情報は、画像上の被写体の関節位置を示すことになる。また、その基準モデル2次元情報の基となった基準モデル3次元情報は、3次元座標系における被写体の関節位置を示すことになる。
以上で、関節位置に基づく姿勢状態推定についての説明を終える。
また、物体検出装置100は、物体検出結果として出力する姿勢状態を、関節角度のみに基づいて推定された姿勢状態としても良い。この場合、物体検出装置100は、例えば、基準比関節位置取得部164が推定した姿勢状態を、被写体の姿勢状態として出力する。また、この場合において、被写体の関節角度を3次元空間における角度として取得可能である場合には、物体検出装置100は、3次元空間における各関節の関節角度を用いて、画像姿勢状態を推定し、関節位置の比較を行っても良い。これにより、基準モデル情報は、姿勢状態毎に関節角度のみを記述した内容とすることができる。
また、本発明の適用は、人の姿勢状態推定に限定されるものではない。本発明は、例えば、被写体の体格の検出、体格に基づく年齢、性別、人種等の属性の検出、ロボット等の関節により接続された複数の部位を有する各種の物体の姿勢状態検出等にも適用することができる。
以下、更に凹凸マップを用いて姿勢推定を行う例を、本発明の実施の形態2として説明する。ここで、凹凸マップとは、画像を、画像に映し出された被写体の面を凹凸で区分したマップである。
(実施の形態2)
図16は、本発明の実施の形態2に係る物体検出装置の要部構成を示すブロック図であり、実施の形態1の図1の物体検出装置100に対応するものである。なお、図16において、図1と共通する構成部分には、図1と同一の符号を付して説明を省略する。
図16の物体検出装置100aは、図1の構成に加えて、更に、凹凸マップ推定部145aを有する。また、物体検出装置100aは、図1の姿勢状態推定部150および物体検出部160に代えて、姿勢状態推定部150aおよび物体検出部160aを有する。
凹凸マップ推定部145aは、各部位の凹凸マップを生成する。より具体的には、凹凸マップ推定部145aは、部位候補抽出部140から、推定尤度マップおよび画像データを入力する。そして、凹凸マップ推定部145aは、入力した情報に基づいて凹凸マップを生成し、生成した凹凸マップを、姿勢状態推定部150aへ出力する。凹凸マップの生成手法の詳細については、後述する。以下、画像データから生成された凹凸マップは、「推定凹凸マップ」という。
姿勢状態推定部150aは、学習尤度マップに加えて、姿勢状態毎に、その姿勢状態にある基準モデルから学習された凹凸マップ(以下「学習凹凸マップ」という)を、予め保持している。そして、姿勢状態推定部150aは、推定尤度マップと学習尤度マップとの一致度に加えて、推定凹凸マップと学習凹凸マップとの一致度に基づいて、被写体の姿勢状態の推定を行う。すなわち、姿勢状態推定部150aは、実施の形態1の動作に加えて、推定凹凸マップと学習凹凸マップとのマッチングを更に行う。
物体検出部160aは、部位軸からその位置を推定することができない関節について、推定凹凸マップに基づき、その位置の推定を行う。
図17は、物体検出部160aの構成の一例を示すブロック図であり、実施の形態1の図3に対応するものである。図3と同一部分には同一符号を付し、これについての説明を省略する。
図17に示すように、物体検出部160aは、関節位置推定部166aを更に有する。。
関節位置推定部166aは、凹凸マップ推定部145aから推定凹凸マップを入力し、関節位置が抽出することができない関節について、入力した推定凹凸マップから、関節位置を推定する。より具体的には、関節位置推定部166aは、例えば、部位軸の始点から終点に向かって、順番に、部位軸上の画素位置の推定凹凸マップの値を参照し、推定凹凸マップの値が変化した位置を、関節位置として抽出する。そして、関節位置推定部166aは、求めた関節位置(つまり推定関節位置)を、その識別子と共に、部位長比推定部165へ出力する。
関節位置が抽出することができない関節とは、例えば、隣り合う部位の間で部位軸の角度が同じである場合である。本実施の形態に係る物体検出部160aは、凹凸マップを用いることにより、部位軸の角度が同じである場合に関節位置を抽出することを可能にする。
まず、凹凸マップについて説明する。
凹凸マップ推定部145aは、画像上の部位の明るさ情報から部位の面の向きを推定する。関節位置推定部166aは、凹凸マップが示す面が等しい1つの領域を、1つの部位の領域と推定することにより、関節位置の推定を行う。ここで、明るさとは、例えば、輝度のレベルであり、明るさ情報とは、輝度または輝度のレベルを示す情報である。
図18は、人の姿勢と各部位の明るさとの関係を説明するための図である。
図18Aに示す第1の姿勢と図18Bに示す第2の姿勢は、異なる姿勢であるにもかかわらず、図18Cに示すように、正面から見たときのシルエットが同一であるとする。この場合、正面画像のエッジからなる領域情報からだけでは、対象人物の姿勢が第1の姿勢であるか第2の姿勢であるかを、正しく推定することができない。
例えば、図18Cに示すシルエットから、右腕の長さが左腕の長さよりも短いことが分かるため、右肘が曲がっている可能性が高いことが推測できる。ところが、身体制約を満たす曲げ方には、バリエーションがある。また、図18Aや図18Bに示すように、右腕全体の角度にもバリエーションがある。
また、例えば、図18Cに示すシルエットから、左脚の長さが左腕の長さよりも短いことが分かるため、左膝が曲がって可能性があることが推測できる。ところが、図18Aや図18Bに示すように、左膝が曲がっている場合と伸びている場合とがあり得る。
上腕と前腕との区切りや膝上と膝下との区切りの位置(つまり関節)を推定することができれば、対象人物の姿勢が上述のバリエーションのどれなのかを推定することができる。ところが、図18Cのように腕や脚が直線に見える姿勢の場合、エッジからなる領域情報からだけでは、身体制約を用いたとしても、かかる区切りの位置を推定することは難しい。
そこで、このような領域情報だけからでは関節位置が特定できない姿勢に対応するため、物体検出装置100aは、領域情報に加えて、明るさ情報を用いて部位領域を推定する。
図18Dは、上からの自然光を光源とするときの、第1の姿勢を正面から撮影した場合の各部位の明るさを、濃度で示す図である。図18Eは、上からの自然光を光源とするときの、第2の姿勢を正面から撮影した場合の各部位の明るさを、濃度で示す図である。ここでは、濃度が高いほど、明るさがより低い(より暗い)ことを示す。また、明るさとして、暗い方のレベルから順に、「−2,−1,0,1,2」の5段階のレベルが定義されているものとする。レベル「0」は、例えば、地面に対して垂直方向の面の明るさのレベルである。
画像の各領域の明るさレベルは、より上を向いている面の領域ほど明るくなり、逆に、より下を向いている面の領域ほど暗くなる。
例えば、図18のDおよび図18のEに示すように、第1および第2の姿勢の両方において、頭、胴、左腕の領域は、レベル「0」となり、右脚の領域は、やや暗いレベル「−1」となる。
第1の姿勢においては、右上腕は垂直に降ろされ、右前腕は前に伸びているため、図18のDに示すように、右上腕の領域はレベル「0」となり、右前腕の領域はレベル「2」となる。これに対し、第2の姿勢においては、右上腕は後に引かれ、右前腕は下に向いているため、図18Eに示すように、右上腕の領域はレベル「−2」となり、右前腕の領域はレベル「2」となる。
また、第1の姿勢においては、左足は全体は前に伸びているため、図18Dに示すように、左膝上および左膝下の領域はレベル「1」となる。これに対し、第2の姿勢においては、左大腿は上に上げられ、左膝は後ろに向いているため、図18Eに示すように、左大腿の領域はレベル「2」となり、左膝の領域はレベル「−2」となる。
このように、各部位は、同じ明るさの面として捉えることができる。したがって、画像上の部位の明るさ情報から、部位の面の向きを推定し、更に、この部位の面の向きが変わった位置を、関節位置と推測することができる。すなわち、明るさ情報を用いることにより、領域情報から得られる角度が等しい部位(シルエットが直線状に伸びた連続する複数の部位、部位の直線が平行な複数の部位)間であっても、関節位置を推定(抽出)することが可能となる。
次に、以上のように構成された物体検出装置100aの動作について、図19の処理フローを用いて説明する。なお、図19において、実施の形態1の図4と共通するステップは、図4と同一のステップ番号を付し、その説明を省略する。
推定尤度マップが生成されると(S1400)、処理は、S1410aへ進む。
S1410aにおいて、凹凸マップ推定部145aは、推定凹凸マップ生成処理を行う。推定凹凸マップ生成処理は、S1100で取得された画像データと、S1400で生成された推定尤度マップとから、推定凹凸マップを生成する処理である。
図20は、凹凸マップ生成処理(図19のステップS1410a)の処理フローを示す図である。
推定凹凸マップの画素毎の情報は、例えば、部位kの尤度をpkと表し、部位がn個存在する場合には、凹凸ベクトルOij=[p1,p2,…,pk,…,pn]というデータ構造となる。pkは2値情報であり、pkの値は、例えば、部位kである可能性が無いことを示す0、および、部位kである可能性があることを示す1のいずれかを取る。
S3100aにおいて、凹凸マップ推定部145aは、処理の対象となる部位を1つ選択する。本実施の形態では、推定の対象となる関節位置が、右肘であるものとする。この場合、凹凸マップ推定部145aは、右腕を凹凸マップ生成処理の対象とし、まず、基幹部位から一番離れた右前腕を選択する。
そして、S3200aにおいて、凹凸マップ推定部145aは、S1400で生成された推定尤度マップから、S3100aで選択した部位の領域(以後、部位尤度領域とよぶ)を取得する。ここでは、推定尤度マップ上の右前腕の尤度が所定の閾値を超える画素を抽出し、右前腕の部位尤度領域とする。
そして、S3300aにおいて、凹凸マップ推定部145aは、S1100で取得された画像データから、S3200aで抽出した部位尤度領域の、明るさ情報を抽出する。明るさ情報は、例えば、画像データを構成する各画素のRGB値から輝度(画素の明るさ)のみを抽出したグレースケール(白黒階調の)画像へと変換することにより、抽出することができる。
そして、S3400aにおいて、凹凸マップ推定部145aは、S3300aで求めた部位尤度領域の明るさ情報を、明るさの閾値を用いてグルーピングする。凹凸マップ推定部145aは、明るさの閾値を、あらかじめ設定された固定値としても良いし、動的に設定しても良い。ここでは、閾値を動的に設定する手法の一例について説明する。
図21は、右前腕の身体制約を用いたエリア分類の手法を説明するための図である。説明を簡略化するために、胴には右腕しかないものとして説明する。
図19のステップS1200では、例えば、推定された右肩位置500aを基準として、頭肩領域とこれに接続する胴領域501aが推定される。この場合、右上腕と右前腕が存在可能な領域は、領域502aのようになり、右前腕のみ存在可能な領域は、領域503aのようになる。領域502b、503bは、例えば、図11に示す部位領域対応テーブルから算出することができる。
凹凸マップ推定部145aは、まず、右前腕の部位尤度領域のうち、右前腕のみ存在可能な領域503aから、当該領域に存在する画素の輝度値(明るさ情報)を抽出する。
そして、凹凸マップ推定部145aは、対象画素の総数mのa%をn個とすると、抽出した輝度値のデータから、小さいものから順にn個と、大きいものから順にn個とを除く。更に、凹凸マップ推定部145aは、これら2n個のデータを除いた後のデータ(データの数はm−2n)の最小値および最大値を、右前腕の明るさ情報の閾値(右前腕として扱う輝度値の範囲の上限値と下限値)とする。ここで、aは、あらかじめ設定された値である。
そして、凹凸マップ推定部145aは、例えば、右前腕の部位尤度領域のうち、この閾値に当てはまる(つまり、右前腕として扱う輝度値の範囲内である)画素の凹凸ベクトルOijのうち、右前腕を示す値に、右前腕である可能性があることを示す値(例えば1)を設定する。
このように、凹凸マップ推定部145aは、身体制約により右前腕しか存在しない部位尤度領域の明るさ情報のみを用いて、輝度値の閾値を設定する。これにより、凹凸マップ推定部145aは、他の部位の影響を受けずに、右前腕の明るさ情報を持つ画素を特定することができる。
次に、凹凸マップ推定部145aは、右前腕の部位尤度領域のうち、右上腕と右前腕のみ存在可能な領域502aから、画素の輝度値(明るさ情報)を抽出する。
そして、凹凸マップ推定部145aは、抽出した輝度値のデータの中から、前ステップで求めた右前腕の明るさ情報の閾値に当てはまるものを削除する。そして、凹凸マップ推定部145aは、残った輝度値のデータの総数pのb%をq個とすると、抽出した輝度値のデータから、小さいものから順にq個と、大きいものから順にq個とを除く。更に、凹凸マップ推定部145aは、これら2q個のデータを除いた後のデータ(データの数はp−2q)の最小値および最大値を、右上腕の明るさ情報の閾値(右前腕として扱う輝度値の範囲の上限値と下限値)とする。ここで、bの値は、あらかじめ設定された値である。
そして、凹凸マップ推定部145aは、例えば、右前腕の部位尤度領域のうち、この閾値に当てはまる(つまり、右上腕として扱う輝度値の範囲内である)画素の凹凸ベクトルOijの、右上腕を示す値に、右上腕である可能性があることを示す値(例えば1)を設定する。
このように、凹凸マップ推定部145aは、身体制約により右上腕と右前腕しか存在しない部位尤度領域の明るさ情報のデータから、右前腕として扱う輝度値の範囲内のデータを除いて閾値を設定する。これにより、凹凸マップ推定部145aは、他の部位の影響を受けずに右上腕の明るさ情報を持つ画素を特定し、右上腕の明るさ情報を持つ画素を精度良く特定することができる。
このように、凹凸マップ推定部145aは、基幹部位から離れた部位から順に、その部位だけ存在する領域の明るさ情報を用いて明るさ情報の閾値を設定していき、部位ごとの明るさ情報をグルーピングして領域を推定する。
なお、右前腕のみ存在可能な領域503aに、右前腕の部位尤度領域がない場合もあり得る。このような場合、凹凸マップ推定部145aは、例えば、右前腕と右上腕の部位尤度領域のうち、右上腕と右前腕のみ存在可能な領域502aに存在する画素の輝度情報を抽出し、右前腕と右上腕の2グループに分類する処理を行っても良い。そして、凹凸マップ推定部145aは、例えば、大津の2値化を用いて、上述の閾値を設定する。これにより、凹凸マップ推定部145aは、右前腕のみ存在可能な領域503aに右前腕の部位尤度領域がない場合にも、右上腕と右前腕の明るさ情報の閾値を設定することができる。
また、右前腕のみ存在可能な領域503aで右前腕の明るさ情報を設定した後、右上腕と右前腕のみ存在可能な領域502aにもかかわらず、右前腕と異なる明るさ情報の画素がないために、右前腕と異なる閾値が設定できない場合もあり得る。このような場合、凹凸マップ推定部145aは、例えば、右上腕の明るさ情報に対して、右前腕と同じ値を設定しても良い。これにより、凹凸マップ推定部145aは、右上腕と右前腕の面の向きが似ている場合(真っ直ぐに伸びている場合)にも、右上腕の明るさ情報を設定することができる。
図20のS3500aにおいて、凹凸マップ推定部145aは、凹凸マップ生成処理の対象となる部位の全てについて処理したかを判断する。例えば、左腕に関しても推定凹凸マップを生成する場合には、凹凸マップ推定部145aは、S3100aに戻り、左腕に関して、右腕と同様の処理を行う。
そして、凹凸マップ推定部145aは、生成した推定凹凸マップを、姿勢状態推定部150aおよび関節位置推定部166aへ出力する。
図19のS1500aにおいて、姿勢状態推定部150aは、学習尤度マップと推定尤度マップとのマッチングを行い、その後、学習凹凸マップと推定凹凸マップとのマッチングを行う。そして、姿勢状態推定部150aは、推定尤度マップが、いずれかの学習尤度マップと一致するか否かを、実施の形態1と同様に判断する。
より具体的には、姿勢状態推定部150aは、凹凸マップの尤度の値が2値の場合には、推定凹凸マップと学習凹凸マップとの間で、画素ごとに、尤度の一致度を評価する。例えば、姿勢状態推定部150aは、全画素に関して、識別子が一致する画素をカウントし、カウント値が最も大きい学習凹凸マップに対して、推定凹凸マップとの一致度が高いと判断する。なお、姿勢状態推定部150aは、尤度マップと同様に、サイズが異なる場合には、画像領域に対する拡大縮小処理を行ってからマッチングを行っても良い。
図18で説明したように、学習尤度マップは同一であっても、学習凹凸マップが異なるような姿勢状態もあり得る。したがって、学習尤度マップだけでなく、学習凹凸マップとのマッチングを併せて行うことにより、より正確な姿勢状態推定が可能となる。ここで、学習尤度マップも学習凹凸マップも異なる場合には、人物の2次元のシルエットが異なっている上に、部位の凹凸も異なるということになるので、3次元姿勢は異なると判断することができる。
そして、関節角度が抽出された後(S1700)、ステップS1710aにおいて、関節位置推定部166aは、隣り合う部位間で、軸方向が異なるか否か(つまり関節角度が180度か否か)を判断する。関節位置推定部166aは、軸方向が異なる場合(S1710a:YES)、ステップS1800へ進む。また、関節位置推定部166aは、軸方向が同一である場合(S1710a:NO)、ステップS1720aへ進む。部位軸の方向が等しい場合には、交点が一意に定まらないため、部位軸からでは関節位置を推定することが困難なためである。
ステップS1720aにおいて、関節位置推定部166aは、推定凹凸マップに基づいて、関節位置を推定して、ステップS1800へ進む。
具体的には、関節位置推定部166aは、例えば、右上腕と右前腕の部位の直線の始点から終点に向かって、順番に、部位軸上の画素位置の凹凸マップの値を参照する。そして、関節位置推定部166aは、凹凸マップの値が変化した画素の位置を、関節位置として抽出する。該当する画素が複数ある場合には、関節位置推定部166aは、中央の位置を関節位置として出力しても良い。
そして、関節位置推定部166aは、求めた関節位置(つまり推定関節位置)と、その関節の識別子とを、部位長比推定部165へ出力する。部位長比推定部165は、関節位置抽出部から入力された関節位置および関節位置推定部166aから入力された関節位置に基づいて、部位の位置を取得する。
このように、本実施の形態に係る物体検出装置100aは、凹凸マップを生成し、凹凸マップに基づいて各関節の位置を推定するので、部位の直線の角度が同じであり接続する部位の線が並行であるような場合であっても、部位長比を求めることができる。そして、これにより、姿勢推定の精度を向上させることができる。また、物体検出装置100aは、凹凸マップのマッチングを併用するので、姿勢推定の精度を更に向上させることができる。なお、図16において、凹凸マップ推定部の結果を姿勢状態推定部150aと物体検出部160aの2つに出力する例を説明したが、どちらかのみに適用するようにしてもよい。
2010年12月9日出願の特願2010−274674の日本出願に含まれる明細書、図面および要約書の開示内容は、すべて本願に援用される。