[第1の実施形態]
図1は、第1の実施形態に係る手位置検出装置の機能的構成を示す図である。
図1に示すように、本実施形態の手位置検出装置1は、深度画像取得部110と、関節位置算出部120と、補正部130と、出力部140と、記憶部190とを含む。
深度画像取得部110は、手中心の位置を検出する検出領域内に存在する物体の表面までの距離(深度)を示す情報を含む深度画像を深度センサ2から取得する。ここで、手中心の位置は、検出領域内における手(手首から先の部分)の中心部分の三次元位置である。深度画像取得部110は、例えば、深度方向を法線方向とする平面内におけるU×V個の点のそれぞれと対応する深度値を含む深度画像を深度センサ2から取得する。なお、深度画像は、手中心の位置を検出する検出領域内に存在する物体の表面までの距離を示す情報の一例である。すなわち、深度画像取得部110は、手中心の位置を検出する検出領域内に存在する物体の表面までの距離を示す情報を取得する取得部の一例である。以下の説明では、手中心の位置を検出する検出領域のことを、深度画像の撮像範囲ともいう。
関節位置算出部120は、深度画像に基づいて、検出領域内に存在する手中心及び上肢の関節についての検出領域内での位置を示す三次元座標を算出する。本実施形態の手位置検出装置1における関節位置算出部120は、上肢領域検出部121と、画像内位置検出部122と、三次元座標算出部123とを含む。
上肢領域検出部121は、手中心の位置を検出する深度画像と、記憶部190に記憶させた背景画像191とに基づいて、深度画像内における人の上肢部分と対応する領域(上肢領域)を検出する。背景画像191は、人の上肢が存在しない状態の検出範囲内を深度センサ2により撮像した深度画像である。上肢領域検出部121は、検出対象となる深度画像を深度画像取得部110から直接取得してもよいし、記憶部190に記憶させた深度画像194を読み出して取得してもよい。
画像内位置検出部122は、深度画像内での上肢領域の位置及び形状に基づいて、深度画像内における手中心の位置及び上肢の関節の位置を検出する。すなわち、画像内位置検出部122は、上肢領域検出部121における上肢領域の検出結果に基づいて、深度画像内における手中心の位置及び関節の位置を検出する。画像内位置検出部122は、上肢の関節の位置として、例えば、手首、肘、及び肩の位置を検出する。画像内位置検出部122は、例えば、深度画像内における上肢領域に基づいて上肢の延伸方向を示す線分群を求めた後、該線分群に基づいて手中心の位置及び各関節の位置を検出する。このとき、画像内位置検出部122は、例えば、手中心の位置を検出した後、該手中心の位置と深度画像の撮像範囲内における人の上肢の寸法とに基づいて、各関節の位置を検出する。
三次元座標算出部123は、深度画像内における手中心及び各関節の位置と、深度値とに基づいて、検出領域内における手中心の位置を示す三次元座標及び各関節の位置を示す三次元座標を算出する。三次元座標算出部123は、既知の算出方法に従って、手中心の位置を示す三次元座標及び各関節の位置を示す三次元座標を算出する。例えば、三次元座標算出部123は、ピンホールカメラモデルを適用して、手中心の位置を示す三次元座標及び各関節の位置を示す三次元座標を算出する。
補正部130は、深度画像から算出した手中心及び各関節の三次元座標を補正する。補正部130は、深度画像から算出した手中心及び各関節の三次元座標と、記憶部190に記憶させた寸法情報192及び座標履歴193とに基づいて、三次元座標の補正の要否を判定する。そして、補正が必要であると判定した場合に、補正部130は、深度画像から算出した手中心及び各関節の三次元座標を補正する。寸法情報192は、深度画像の撮像範囲内で上肢を動かす人物(対象者)の上肢における手中心から手首までの寸法と、手首から肘までの寸法とを含む。座標履歴193は、手位置検出装置1における過去の深度画像に対する処理で決定した手中心及び各関節の三次元座標を含む。例えば、座標履歴193には、現在処理対象となっている深度画像の撮像時刻から所定の期間(例えば数秒程度)だけ前となる時刻までの間となる時刻に撮像された深度画像に対する処理で決定した三次元座標が格納されている。本実施形態の手位置検出装置1における補正部130は、整合性判定部131と、再計算部132とを含む。
整合性判定部131は、深度画像から算出した手中心及び関節の三次元座標についての空間整合性と時間整合性とに基づいて、三次元座標の補正の要否を判定する。空間整合性は、深度画像から算出した手中心及び関節の三次元座標に基づく対象者の上肢の寸法と、寸法情報192における対象者の上肢の寸法との整合性である。時間整合性は、座標履歴193に基づいて算出される、深度画像から算出した手中心及び関節の三次元座標の時間変化についての整合性である。空間整合性及び時間整合性のいずれかの整合性を示す値が閾値よりも小さい場合、整合性判定部131は、三次元座標を補正する必要があると判定する。三次元座標を補正する必要があると判定した場合、整合性判定部131は、再計算部132に手中心及び関節の三次元座標を再計算させる(補正させる)。一方、三次元座標を補正する必要がないと判定した場合、整合性判定部131(補正部130)は、該判定に用いた手中心及び関節の三次元座標を座標履歴193に格納する。
再計算部132は、深度画像における手中心の位置を変更し、変更後の手中心の位置に基づいて、撮像範囲内における手中心の三次元座標及び各関節の三次元座標を算出する(再計算する)。例えば、再計算部132は、まず、深度画像内における肘又は手首を始点とし手中心を終点とするベクトルの方向に、所定の距離(画素数)だけ手中心の位置を移動させる。また、再計算部132は、移動後の手中心の位置に基づいて深度画像内における手首や肘等の関節の位置を算出する。その後、再計算部132は、算出した手中心の位置及び各関節の位置に基づいて、撮像範囲内における手中心の位置を示す三次元座標及び各関節の位置を示す三次元座標を算出する。深度画像内における変更後の手中心の位置が上肢領域内である場合、再計算部132は、手中心の位置の深度値に基づいて手中心の三次元位置を算出する。一方、深度画像内における変更後の手中心の位置が上肢領域外となった場合、再計算部132は、例えば、上肢領域内の深度値を利用して手中心の三次元位置を算出する。
すなわち、本実施形態の手位置検出装置1における補正部130は、整合性判定部131において整合性を示す値が閾値よりも小さいと判定した場合に、再計算部132において手中心及び各関節の三次元座標を再度算出して補正する。再計算部132において手中心及び各関節の三次元座標を補正した場合、補正部130は、整合性判定部131において補正後の三次元座標と、寸法情報192と、座標履歴193とに基づいて、手中心の三次元座標の再補正の要否を判定する。そして、三次元座標を補正する必要がないと判定した場合、整合性判定部131(補正部130)は、該判定に用いた手中心及び各関節の三次元座標を座標履歴193に格納する。整合性判定部131(補正部130)は、例えば、手中心及び各関節の三次元座標と、処理対象となっている深度画像の撮像時刻を示す情報とを対応付けて座標履歴193に格納する。
出力部140は、座標履歴193に含まれる手中心及び各関節の三次元座標を含む情報を外部装置3に出力する。外部装置3は、例えば、手中心の三次元座標の時間変化に基づいて、作業員の作業が適切であるか否か等を管理するサーバ装置である。
図2は、寸法情報の内容を示す図である。
寸法情報192は、例えば、図2のように、深度センサ2による深度画像の撮像範囲内で上肢を動かす対象者から採寸した、対象者の上肢における3つの寸法L1,L2,及びL3を含む。第1の寸法L1は、手中心から手首までの長さである。第2の寸法L2は、手首から肘までの長さである。第3の寸法L3は、肘から肩までの長さである。第1の寸法L1、第2の寸法L2、及び第3の寸法L3は、それぞれ、対象者の右上肢及び左上肢のいずれか一方で採寸した寸法であってもよいし、右上肢で採寸した寸法と左上肢で採寸した寸法との平均値であってもよい。また、対象者が複数である場合、寸法情報192には、各対象者の第1の寸法L1、第2の寸法L2、及び第3の寸法L3を、対象者毎に識別可能な態様で登録しておく。例えば、対象者の作業者IDが「A」である場合、手位置検出装置1の整合性判定部131は、対象者の上肢の寸法L1,L2,及びL3として、それぞれ、図2の寸法情報192から寸法LA1,LA2,及びLA3を読み出す。
本実施形態の手位置検出装置1は、深度センサ2が所定の時間間隔で撮像する深度画像を順次取得するとともに、取得した複数の深度画像のそれぞれから手中心及び上肢の関節を検出し該手中心及び関節の三次元座標を算出する。本実施形態の手位置検出装置1は、深度画像から手中心及び上肢の関節を検出し三次元座標を算出する処理として、図3のフローチャートに沿った座標算出処理を行う。
図3は、第1の実施形態に係る座標算出処理の内容を説明するフローチャートである。
本実施形態の手位置検出装置1は、図3のように、まず、処理の対象とする深度画像を選択し(ステップS1)、選択した深度画像から上肢領域を検出する(ステップS2)。ステップS1及びS2の処理は、手位置検出装置1における関節位置算出部120の上肢領域検出部121が行う。上肢領域検出部121は、例えば、上肢領域を検出する処理を行っていない深度画像のうちの、撮像時刻が最も早い深度画像を選択する。深度画像を選択した後、上肢領域検出部121は、選択した深度画像における各点(各画素)の深度値と、背景画像191における各点の深度値とに基づいて、深度画像における上肢領域を検出する。
次に、手位置検出装置1は、深度画像から上肢領域を検出したか否かを判定する(ステップS3)。ステップS3の判定は、上肢領域検出部121が行う。上肢領域が検出されなかった場合(ステップS3;NO)、上肢領域検出部121は、例えば、選択中の深度画像から上肢領域が検出されなかったことを示す情報を座標履歴193に格納し(ステップS11)、該深度画像に対する座標算出処理を終了させる。一方、深度画像から上肢領域を検出した場合(ステップS3;YES)、手位置検出装置1は、ステップS4〜S7の処理を行う。
深度画像から上肢領域を検出した場合(ステップS3;YES)、手位置検出装置1は、次に、深度画像における上肢領域内の手中心及び関節の位置を検出する(ステップS4)。ステップS4の処理は、手位置検出装置1における関節位置算出部120の画像内位置検出部122が行う。画像内位置検出部122は、例えば、上肢領域の形状及び位置に基づいて深度画像内における上肢の延伸方向を示す線分群を抽出した後、該線分群の線分上で手中心の位置、及び上肢の関節(手首、肘、及び肩)の位置を検出する。画像内位置検出部122は、例えば、深度画像において上肢の延伸方向(関節間を結ぶ線分の方向)となり得る方向に基づいて、上肢領域における上肢の延伸方向と直交した方向の寸法を縮めて、上肢の延伸方向を示す線分群を抽出する。線分群を抽出した後、画像内位置検出部122は、まず、線分群に含まれる線分上の各点のなかから手中心の位置を検出する。画像内位置検出部122は、例えば、深度画像内における手(手のひら)の大きさと対応した領域を示す情報に基づいて、線分上での手中心の位置を検出する。手中心の位置を検出した後、画像内位置検出部122は、例えば、検出した手中心の位置と、深度画像における手中心から手首までの距離(画素数)を示す情報に基づいて、手首の位置を検出する。その後、画像内位置検出部122は、検出した関節の位置と、深度画像における関節間の距離(画素数)を示す情報に基づいて、隣接する関節の位置を順次検出する。なお、関節の位置を検出する際、画像内位置検出部122は、線分群において線分が折れ曲がる位置を関節の候補とし、該折れ曲がる位置で接続する2本の線分がなす角も含めて関節の位置を検出する。
次に、手位置検出装置1は、検出した手中心及び関節の三次元座標を算出する(ステップS5)。ステップS5の処理は、手位置検出装置1における関節位置算出部120の三次元座標算出部123が行う。三次元座標算出部123は、ピンホールカメラモデルを適用し、深度画像の撮像範囲と、深度画像の画素数と、深度画像における手中心及び関節の位置と、深度値とに基づいて、手中心及び関節の三次元座標を算出する。なお、ステップS5で算出する三次元座標は、手中心の位置を検出する三次元空間における任意の二点間の距離の実測値と対応する世界座標系での座標とする。
次に、手位置検出装置1は、手中心及び関節の三次元座標を補正する座標補正処理(ステップS6)を行う。座標補正処理は、三次元座標の補正の要否を判定する処理と、手中心の位置を補正して手中心及び関節の三次元座標を算出する(再計算する)処理とを含む。座標補正処理は、手位置検出装置1における補正部130が行う。補正部130は、上記のように、空間整合性及び時間整合性に基づいて、三次元座標の補正の要否を判定する。この判定は、補正部130の整合性判定部131が行う。整合性判定部131は、深度画像から算出した手中心及び関節の三次元座標と寸法情報192とに基づいて、空間整合性を示す値を算出する。また、整合性判定部131は、深度画像から算出した手中心及び関節の三次元座標と座標履歴193とに基づいて、時間整合性を示す値を算出する。そして、整合性判定部131は、算出した空間整合性を示す値及び時間整合性を示す値に基づいて三次元座標が空間的又は時間的に整合しないと判定した場合に、再計算部132に三次元座標を再計算させる(補正させる)。
整合性判定部131は、手中心及び関節のそれぞれについての空間整合性を示す値として、例えば、三次元座標と深度画像とに基づいて算出される距離値と、深度画像における深度値との差を算出する。また、整合性判定部131は、手中心及び関節のそれぞれについての空間整合性を示す値として、例えば、三次元座標に基づいて算出される上肢の寸法と、寸法情報192における対象者の上肢の寸法との差を算出する。このとき、整合性判定部131は、算出した差が閾値以下である場合に三次元座標が空間的に整合すると判定する。また、整合性判定部131は、手中心及び関節のそれぞれについての時間整合性を示す値として、例えば、移動速度を算出する。このとき、整合性判定部131は、算出した移動速度が閾値以下である場合に三次元座標が時間的に整合すると判定する。
再計算部132は、深度画像における手中心の位置を変更して手中心の三次元座標を算出するとともに、算出しなおした手中心の三次元座標に基づいて、関節の三次元座標を算出する。再計算部132において三次元座標を補正した場合、補正部130の整合性判定部131が、補正後の三次元座標に基づいて三次元座標の補正の要否を判定する。以降、補正部130は、整合性判定部131において再補正をしなくてもよいと判定するまで、三次元座標の補正と補正の要否の判定とを繰り返す。なお、座標補正処理は、三次元座標の補正回数に上限が設定されていてもよい。設定した上限の回数だけ三次元座標を補正した場合、補正部130は、整合性の有無によらず、現在の三次元座標を、処理対象となっている深度画像の撮像時刻における手中心及び関節の三次元座標に決定する。
座標補正処理を終えると、手位置検出装置1は、座標補正処理により決定した手中心及び関節の三次元座標を含む情報を座標履歴193に格納し(ステップS7)、現在処理対象に選択されている深度画像に対する算出処理を終了する。ステップS7の処理は、補正部130が行う。補正部130は、決定した手中心及び関節の三次元座標と、現在処理対象となっている深度画像の撮像時刻を示す情報とを対応付けて、座標履歴193に格納する。
手位置検出装置1は、処理の対象とする複数の深度画像の全てに対しステップS2以降の処理を行うまで、図3のフローチャートに沿った処理を繰り返す。なお、手位置検出装置1は、複数の深度画像に対するステップS1〜S7,及びS11の処理をパイプライン化して行ってもよい。
このように、本実施形態の手位置検出装置1は、深度画像から検出した手中心及び関節の位置に基づいて手中心及び関節の三次元座標を算出した後、補正部130により座標補正処理(ステップS6)を行って座標履歴193に格納する三次元座標を決定する。座標補正処理として、補正部130は、上記のように、手中心及び関節のそれぞれについての三次元座標のうちの空間的又は時間的に整合しない三次元座標を整合するように補正する処理を行う。補正部130は、座標補正処理として、例えば、図4のフローチャートに沿った処理を行う。
図4は、第1の実施形態における座標補正処理の内容を説明するフローチャートである。
補正部130は、図4のように、まず、三次元座標の補正回数を示す変数rを「0」にする(ステップS601)。ステップS601の処理は、例えば、整合性判定部131が行う。
次に、補正部130は、深度画像から検出した上肢領域の1つを選択し、該上肢領域内から検出した手中心及び各関節についての三次元座標を読み出す(ステップS602)。ステップS602の処理は、補正部130の整合性判定部131が行う。
次に、補正部130は、ステップS602で読み出した三次元座標、すなわち現在処理対象となっている手中心及び各関節の三次元座標に対する整合性判別処理(ステップS603)を行う。整合性判別処理は、整合性判定部131が行う。整合性判定部131は、手中心及び各関節の三次元座標が空間的に整合し、かつ時間的に整合するか否かを判定する。
整合性判定部131は、例えば、手中心及び各関節のそれぞれについて、三次元座標から深度画像内での位置と距離とを算出し、算出した距離と深度画像における深度値との差を算出する。そして、算出した差の絶対値が閾値以上となる場合、整合性判定部131は、三次元座標が空間的に整合していないと判定する。また、整合性判定部131は、例えば、手中心及び各関節のそれぞれについて、三次元座標に基づいて隣接する関節との三次元距離を算出し、算出した三次元距離と寸法情報192における対象者の上肢の寸法との差を算出する。そして、算出した差の絶対値が閾値以上となる場合、整合性判定部は、三次元座標が空間的に整合していないと判定する。
更に、整合性判定部131は、例えば、手中心及び各関節のそれぞれについて、三次元座標に基づいて移動速度を算出する。そして、算出した移動速度が閾値以上となる場合、整合性判定部131は、三次元座標が時間的に整合していないと判定する。
整合性判別処理を終えると、補正部130は、次に、現在処理対象となっている手中心及び各関節のなかに、時間的又は空間的に整合しない手中心又は関節があるか否かを判定する(ステップS604)。ステップS604の判定は、整合性判定部131が行う。手中心及び各関節の全てが時間的及び空間的に整合している場合(ステップS604;NO)、整合性判定部131(補正部130)は、現在の手中心及び各関節の三次元座標を、履歴情報193に格納する三次元座標に決定する(ステップS608)。
一方、手中心及び各関節のいずれかが、時間的又は空間的に整合していない場合(ステップS604;YES)、整合性判定部131は、次に、変数rが閾値Nよりも小さいか否かを判定する(ステップS605)。閾値Nは、三次元座標を補正する回数の上限値である。r≧Nの場合(ステップS605;NO)、整合性判定部131(補正部130)は、現在の手中心及び各関節の三次元座標を、履歴情報193に格納する三次元座標に決定する(ステップS608)。これに対し、r<Nの場合(ステップS605;YES)、整合性判定部131(補正部130)は、手中心及び各関節の三次元座標を再計算する座標再計算処理(ステップS606)を再計算部132に行わせる。座標再計算処理において、再計算部132は、深度画像における手中心の位置を変更した後、変更後の手中心の位置に基づいて、手中心及び各関節の三次元座標を算出する(再計算する)。手中心及び各関節の三次元座標を算出した後、再計算部132は、算出した三次元座標を整合性判定部131に通知して、座標再計算処理を終了する。
再計算部132が座標再計算処理(ステップS606)を終えると、補正部130は、変数rをr+1に更新し(ステップS607)、整合性判別処理(ステップS603)を行う。ステップS607の処理は、整合性判定部131が行う。整合性判定部131は、再計算部132から三次元座標を受け取ると、変数rを更新して整合性判別処理S603を行う。以降、補正部130は、手中心及び各関節の全てが時間的及び空間的に整合する(ステップS604;NO)か、又はr≧Nとなる(ステップS605;NO)まで、ステップS603〜S607の処理を繰り返す。そして、手中心及び各関節の全てが時間的及び空間的に整合するか、又はr≧Nとなると、整合性判定部131(補正部130)は、現在の三次元座標を座標履歴193に格納する三次元座標に決定する(ステップS608)。
ステップS608の処理を終えると、補正部130は、次に、処理対象である深度画像から検出された上肢領域のなかに未選択の上肢領域があるか否かを判定する(ステップS609)。ステップS609の判定は、整合性判定部131が行う。未選択の上肢領域がある場合(ステップS609;YES)、整合性判定部131(補正部130)は、未選択の上肢領域に対するステップS601以降の処理を行う。そして、全ての上肢領域に対するステップS601以降の処理を行うと(ステップS609;NO)、整合性判定部131(補正部130)は、処理対象である深度画像に対する座標補正処理を終了する。
このように、補正部130が行う座標補正処理は、整合性判別処理(ステップS603)と、座標再計算処理(ステップS603)とを含む。そして、補正部130は、整合性判別処理において空間的及び時間的に整合していると判定した場合、又は座標再計算処理を行った回数が所定の回数(N回)以上となった場合に、その時点における三次元座標を座標履歴193に格納する三次元座標に決定する。
図5は、第1の実施形態における整合性判別処理の内容を説明するフローチャートである。
整合性判別処理(ステップS603)は、補正部130の整合性判定部131が行う。本実施形態の手位置検出装置1における整合性判定部131は、図5のように、まず、手中心及び各関節を識別する変数iを「0」にするとともに、整合性パラメータCiを「True」に設定する(ステップS60301)。ここで、変数iは、1個の上肢領域から手中心及び各関節の位置を検出したときに、手中心及び各関節のそれぞれを識別するために付した数値(0,1,2,・・・)である。整合性パラメータCiは、変数iにより指定される手中心又は関節を示す点Piの三次元座標が空間的かつ時間的に整合しているか否かを示す値である。本実施形態では、整合性パラメータCiは、「True」と「False」との2つの値のいずれかの値とする。「True」は、三次元座標が空間的かつ時間的に整合していることを示す値である。「False」は、三次元座標が空間的又は時間的に整合していないことを示す値である。
次に、整合性判定部131は、手中心又は関節を示す点Piの三次元座標(Xi,Yi,Zi)から深度画像内での座標(xi,yi)と距離ziとを算出する(ステップS60302)。ステップS60302では、整合性判定部131は、深度画像内での手中心又は関節を示す点Piの位置と対応する三次元座標(Xi,Yi,Zi)を算出する際の算出式に基づく逆算(逆変換)により、深度画像内での座標(xi,yi)と距離ziとを算出する。
次に、整合性判定部131は、深度画像における座標(xi,yi)の深度値zi’を読み出し(ステップS60303)、zi’>zi+Mであるか否かを判定する(ステップS60304)。ここで、Mは、距離ziに対するマージンである。マージンMは、点Piの三次元座標(Xi,Yi,Zi)と、深度画像における座標(xi,yi)及び深度値z’から算出される三次元座標とが整合している(一致している)とみなす範囲に基づいて設定する。言い換えると、マージンMは、例えば、上肢の太さ等に基づいて、深度値zi’がzi’>zi+Mである場合には該深度値zi’が対象者の上肢とは異なる物体までの距離を示す値であると認められる値に設定する。すなわち、整合性判定部131は、zi’>zi+Mである場合には、点Piの三次元座標(Xi,Yi,Zi)と、深度画像における座標(xi,yi)及び深度値zi’から算出される三次元座標とが空間的に整合していないと判定する。従って、zi’>zi+Mである場合(ステップS60304;YES)、整合性判定部131は、整合性パラメータCiを「False」に変更する(ステップS60312)。
一方、zi’≦zi+Mである場合(ステップS60304;NO)、整合性判定部131は、次に、現在処理対象となっている手中心又は関節を示す点Piと、該手中心又は関節と隣接した関節を示す点Pi+1との三次元距離lenを算出する(ステップS60305)。すなわち、ステップS60305の処理では、整合性判定部131は、現在の変数iで指定される手中心又は関節の三次元座標(Xi,Yi,Zi)と、変数i+1で指定される関節の三次元座標(Xi+1,Yi+1,Zi+1)との距離lenを算出する。
次に、整合性判定部131は、寸法情報192を参照し、算出した三次元距離lenと、対象者の上肢における三次元距離lenに対応する寸法との差ΔLを算出する(ステップS60306)。例えば、整合性判定部131は、変数iの値により、点Piが手中心、手首、肘、及び肩のいずれを示す点であるかを認識可能である。点Piが手中心、手首、肘、及び肩のいずれであるかを認識した整合性判定部131は、該認識結果に基づいて、対象者の上肢における三次元距離lenに対応する寸法が寸法情報192における3つの寸法L1,L2,及びL3のいずれであるかを認識する。例えば、点Piが手中心であれば、整合性判定部131は、三次元距離lenと対応する寸法が手中心から手首までの距離を示す第1の寸法L1であると認識し、寸法情報192から対象者の第1の寸法L1を読み出す。点Pi及び点Pi+1の三次元座標は、それぞれ、図3のフローチャートにおけるステップS5の処理で算出した座標である。すなわち、点Pi及び点Pi+1の三次元座標は、それぞれ、手中心の位置を検出する三次元空間における任意の二点間の距離の実測値と対応する世界座標系での座標である。従って、点Piと点Pi+1との三次元距離lenは、長さの次元を持つ。よって、三次元距離lenと対応する寸法を読み出した後、整合性判定部131は、三次元距離lenと読み出した寸法との差ΔLを算出する。
次に、整合性判定部131は、算出した差ΔLの絶対値|ΔL|が閾値THLよりも大きいか否かを判定する(ステップS60307)。例えば、点Pi及び点Pi+1が、それぞれ、対象者の手中心及び手首の位置と正しく対応している場合、ステップS60305で算出した三次元距離lenは、対象者の手中心から手首までの寸法と略一致する。また、点Pi及び点Pi+1が、それぞれ、対象者の手首及び肘の位置と正しく対応している場合、ステップS60305で算出した三次元距離lenは、対象者の手首から肘までの寸法と略一致する。従って、三次元距離lenと、該三次元距離lenと対応する対象者の寸法との差ΔLが所定の範囲内となる場合には、2つの点Pi,Pi+1の位置関係と、対象者の上肢の寸法に基づく位置関係とが空間的に整合しているといえる。すなわち、三次元距離lenと、該三次元距離lenと対応する対象者の寸法との差ΔLの絶対値|ΔL|が閾値THLよりも大きい場合には、2つの点Pi,Pi+1の位置関係と、対象者の上肢の寸法に基づく位置関係とは空間的に整合していないといえる。よって、|ΔL|>THLである場合(ステップS60307;YES)、整合性判定部131は、整合性パラメータCiを「False」に変更する(ステップS60312)。
これに対し、|ΔL|≦THLである場合(ステップS60307;NO)、整合性判定部131は、次に、点Piの移動速度Siを算出する(ステップS60308)。ステップS60308の処理では、整合性判定部131は、まず、座標履歴193を参照して点Piについての過去の三次元座標を読み出し、現在の三次元座標と過去の三次元座標との三次元距離Diを算出する。座標履歴193から読み出す三次元座標は、例えば、現在処理対象となっている深度画像の撮像タイミングの1回前となる撮像タイミングで撮像した深度画像に基づいて決定した三次元座標とする。1回前となる撮像タイミングで撮像した深度画像から決定した三次元座標が座標履歴193に存在しない場合、整合性判定部131は、例えば、2回以上前の撮像タイミングで撮像した深度画像から決定した三次元座標を読み出す。三次元座標を読み出した後、整合性判定部131は、2つの三次元座標の三次元距離Diを算出する。三次元距離Diを算出した後、整合性判定部131は、算出した三次元距離Diと、深度画像の撮像時刻の差とに基づいて、移動速度Siを算出する。
次に、整合性判定部131は、算出した移動速度Siが閾値THSよりも大きいか否かを判定する(ステップS60309)。閾値THSは、例えば、人が上肢を動かす際の手中心及び各関節の平均的な移動速度に基づいて設定する。すなわち、整合性判定部131は、算出した移動速度SiがSi>THSである場合には、移動速度Siの算出に用いた2つの三次元座標の位置関係が時間的に整合していないと判定する。よって、Si>THSである場合(ステップS60309;YES)、整合性判定部131は、整合性パラメータCiを「False」に変更する(ステップS60312)。
ステップS60312の処理を行った場合、或いはSi≦THSである場合(ステップS60309;NO)、整合性判定部131は、次に、現在処理対象である手中心及び関節を示す点のなかに未判定の点があるか否かを判定する(ステップS60310)。すなわち、ステップS60310の判定を行う時点で、現在処理対象となっている手中心又は関節を示す点Piについての整合性パラメータCiは、「True」及び「False」のいずれかの値に確定する。
整合性を判定していない点がある場合(ステップS60310;YES)、整合性判定部131は、変数iをi+1に更新し整合性パラメータCiを「True」に設定する(ステップS60311)。その後、整合性判定部131は、ステップS60302以降の処理を行う。そして、全ての手中心及び関節の整合性を判定した場合(ステップS60310;NO)、整合性判定部131は、整合性判別処理を終了する。
このように、本実施形態における整合性判別処理では、整合性判定部131は、手中心及び各関節のそれぞれについての整合性パラメータCiを「True」及び「False」のいずれかに決定する。この場合、整合性判別処理(ステップS603)の後に行われるステップS604の判定において、整合性判定部131は、Ci=Falseである手中心又は関節の有無を判定する。そして、全ての手中心又は関節についての整合性パラメータCiが「True」である場合、整合性判定部131は、現在の三次元座標を、深度画像の撮像時刻における三次元座標、すなわち座標履歴193に格納する三次元座標に決定する(ステップS608)。
また、Ci=Falseである手中心又は関節が存在する場合であっても、座標再計算処理の実行回数rがN回以上となった場合(ステップS605;NO)には、整合性判定部131は、現在の三次元座標を、座標履歴193に格納する三次元座標に決定する。
そして、Ci=Falseである手中心又は関節が存在し、かつ座標再計算処理の実行回数rがN回未満である場合には、整合性判定部131は、再計算部132に座標再計算処理(ステップS606)を行わせる。再計算部132は、座標再計算処理として、例えば、図6のフローチャートに沿った処理を行う。
図6は、第1の実施形態における座標再計算処理の内容を説明するフローチャートである。
再計算部132は、図6のように、まず、Ci=Falseである手中心又は関節を含む上肢領域の1つを選択し(ステップS60601)、深度画像内における手中心の位置を変更する(ステップS60602)。ステップS60602の処理では、再計算部132は、例えば、手首又は肘の位置を始点とし変更前の手中心の位置を終点とするベクトルの方向に、所定の距離(画素数)だけ手中心の位置を移動させる。
次に、再計算部132は、変更後の手中心の位置に基づいて、深度画像内における各関節の位置を検出する(ステップS60603)。再計算部132は、ステップS60603の処理として、例えば、画像内位置検出部122が行う処理と同様の処理を行い、手首、肘、及び肩の位置を検出する。
次に、再計算部132は、手中心及び関節のうちの1つを選択し(ステップS60604)、選択した手中心又は関節の位置が上肢領域内であるか否かを判定する(ステップS60605)。選択した手中心又は関節の位置が上肢領域内である場合(ステップS60605;YES)、再計算部132は、深度画像における当該位置の深度値を用いて、選択した手中心又は関節の三次元座標を算出する(ステップS60606)。一方、選択した手中心又は関節の位置が上肢領域外である場合(ステップS60605;NO)、再計算部132は、選択した手中心又は関節の深度値を算出し、算出した深度値を用いて三次元座標を算出する(ステップS60607)。ステップS60607の処理では、再計算部132は、例えば、上肢領域内における変更前の手中心又は関節の位置と、隣接する関節の位置とを通る線分上での深度値の変化量に基づいて、変更後の手中心又は関節の位置での深度値を算出する(推定する)。
ステップS60606又はS60607により三次元座標を算出した後、再計算部132は、処理対象となっている上肢領域から検出された手中心及び関節のなかに、未選択の手中心又は関節があるか否かを判定する(ステップS60608)。未選択の手中心又は関節がある場合(ステップS60608;YES)、再計算部132は、ステップS60604以降の処理を行う。そして、手中心及び関節の全ての三次元座標を算出すると(ステップS60608;NO)、再計算部132は、次に、Ci=Falseである手中心又は関節を含む上肢領域のなかに未選択の上肢領域があるか否かを判定する(ステップS60609)。
未選択の上肢領域がある場合(ステップS60609;YES)、再計算部132は、未選択の上肢領域に対するステップS60601以降の処理を行う。そして、対象となる全ての上肢領域に対する三次元座標の再計算を終えると(ステップS60609;NO)、再計算部132は、算出した三次元座標を整合性判定部131に通知し(ステップS60610)、座標再計算処理を終了する。
再計算部132が座標再計算処理を終了すると、上記のように、整合性判定部131が、座標再計算処理の回数を示す変数rをr+1に更新し(ステップS607)、再計算した手中心及び各関節の三次元座標についての整合性判別処理(ステップS603)を行う。
このように、本実施形態の手位置検出装置1は、深度画像に基づいて算出した手中心及び上肢の関節の三次元座標が、対象者の上肢の寸法に基づく手中心及び上肢の関節の位置関係と整合しない場合、手中心の位置を変更して手中心及び関節の三次元座標を補正する。このとき、手位置検出装置1は、手中心の位置を手首又は肘の位置から離間する方向に変更する。このため、本実施形態の手位置検出装置1は、深度画像から検出した上肢領域に手と対応する部分領域が含まれない場合であっても、深度画像から検出した手中心の位置を深度画像の撮像範囲内における対象者の手中心の位置に近づけることが可能となる。従って、本実施形態の手位置検出装置1では、オクルージョン等により対象者の手の部分についての距離の情報が欠落した深度画像からも、対象者の上肢の寸法と対応した手中心及び上肢の関節の適切な三次元座標を算出することが可能となる。
図7は、手位置検出装置の適用例を説明する図である。
図7には、本実施形態の手位置検出装置1の適用例として、作業スペース6内で作業を行う作業員7の手中心の位置の時間履歴に基づいて作業状況を管理する管理システム5を示している。該管理システム5は、手位置検出装置1と、深度センサ2と、管理装置3Aとを含む。管理システム5における手位置検出装置1及び深度センサ2は、それぞれ、インターネット等の通信ネットワーク4に接続可能な通信機能を含む。また、管理システム5における管理装置3Aは、図1の外部装置3の一例である。なお、図7に示したx方向、y方向、及びz方向は、それぞれ、作業スペース6における深度センサ2の座標系のx軸方向、y軸方向、及びz軸方向を示している。
この種の管理システム5では、例えば、管理システム5の管理者或いは作業員7等が、予め、作業員7の上肢の寸法を入力した寸法情報192を作成し、該寸法情報192を手位置検出装置1の記憶部190に記憶させておく。また、この種の管理システム5では、例えば、作業員7が作業を行っていない期間に、作業スペース6の上方に設置した深度センサ2により深度画像を撮像し、該深度画像を背景画像191として記憶部190に記憶させておく。深度センサ2は、作業員7が作業を行う第1の作業台8A及び第2の作業台8Bにおける作業エリアを含む撮像範囲10内のU×V個の点についての深度値(距離の情報)を持つ深度画像を撮像する。
管理システム5における手位置検出装置1は、作業員7が作業を行っている期間に、深度センサ2から深度画像を取得して作業員7の手中心及び上肢の関節の三次元位置を算出する処理を行う。深度センサ2は、例えば、撮像範囲内の距離の情報(深度値)を含む深度画像を所定の時間間隔で撮像し、撮像した深度画像を、通信ネットワーク4を介して手位置検出装置1に順次送信する。
手位置検出装置1では、画像取得部110が、深度センサ2により撮像された深度画像を順次受信し、記憶部190に記憶する。また、手位置検出装置1では、関節位置算出部120及び補正部130が、深度画像に基づいて作業員7の手中心及び上肢の関節の三次元座標を算出する。関節位置算出部120及び補正部130は、例えば、図3のフローチャートに沿って、手中心及び上肢の関節の三次元座標を算出する。更に、手位置検出装置1では、出力部140が、算出した手中心及び上肢の関節の三次元座標等の情報を管理装置3Aに出力する(送信する)。
管理装置3Aでは、例えば、手位置検出装置1で算出した手中心及び上肢の関節の三次元座標の時間履歴と、作業員7が行う作業における左上肢710及び右上肢720の動きとに基づいて、作業員7が作業を正しく行っているか否か等の管理をする。
図7の管理システム5における深度センサ2の撮像範囲10は、第1の作業台8A及び第2の作業台8Bの表面における作業領域と対応している。このため、深度センサ2により撮像された撮像画像には、第1の作業台8A及び第2の作業台8Bにおける作業領域に含まれる部分と対応した距離の情報を含む領域が存在する。また、図7のように、第2の作業台8Bのうちの作業領域に含まれる部分に棚9が設置されている場合、深度センサ2により撮像された撮像画像には、棚9の表面(深度センサ2側を向いた面)までの距離の情報を含む領域が存在する。更に、作業員7が作業を行っているときに深度センサ2により撮像された深度画像には、左上肢710及び右上肢720のうちの、撮像範囲10内に存在する部分における各点までの距離を示す情報を含む上肢領域が存在する。作業員7が作業を行っているときに深度センサ2により撮像された深度画像には、例えば、左上肢710の手711及び手首712の部分における各点までの距離を示す情報を含む上肢領域が存在する。また、該深度画像には、例えば、右上肢720の手721、手首721、及び図示しない肘の部分における各点までの距離を示す情報を含む上肢領域が存在する。以下の説明では、左上肢710の手711、手首712、肘713、及び肩714を、それぞれ、左手711、左手首712、左肘713、及び左肩714ともいう。また、以下の説明では、右上肢720の手721、手首722、肘(図示せず)、及び肩724を、それぞれ、右手721、右手首722、右肘、及び右肩724ともいう。
なお、図7の作業スペース6において作業員7が作業を行うときには、例えば、工具の出し入れ等を目的として、第2の作業台8Bの表面と棚9との間に右手721を挿入することがある。作業員7が第2の作業台8Bの表面と棚9との間に右手721を挿入した場合、深度センサ2と作業員7の右手721との間には棚9が存在する。このため、作業員7が第2の作業台8Bの表面と棚9との間に右手721を挿入しているときに深度センサ2により撮像された深度画像は、例えば、図8のように作業員7の手領域(右手721)の距離を示す情報が欠落した深度画像となる。
図8は、手領域の距離を示す情報が欠落した深度画像の例を示す図である。
図8の深度画像1101は、撮像領域10内におけるU×V個の点のそれぞれについての深度値を含む。図8におけるQ(0,0),Q(U−1,0),Q(0,V−1),及びQ(U−1,V−1)の4個の点は、それぞれ、深度画像1101における四隅の画素(深度値の検出位置)を示している。
深度画像1101は、第1の作業台8Aを示す領域と、第2の作業台8Bを示す領域と、棚9を示す領域とを含む。図8の深度画像1101では、各領域の深度値を領域内のドットパターンの密度で示しており、ドットパターンの密度が高い領域ほど深度値が小さい(すなわち深度センサ2からの距離が短い)。
また、図8の深度画像1101は、作業員7の左上肢710と対応する第1の上肢領域と、作業員7の右上肢720と対応する第2の上肢領域とを含む。なお、図8の深度画像は、作業員7が右上肢720を伸ばして右手を第2の作業台8Bと棚9との間に挿入しているときに撮像した深度画像である。このため、第2の上肢領域は、右上肢720における手首722から、肘723と肩(図示せず)との間となる位置までを含む領域となり、手首722から先の手領域(右手)を含まない。一方、第1の上肢領域は、左上肢710における手首712から先の手領域(左手711)を含む。
本実施形態の手位置検出装置1において図8の深度画像1101から手中心及び各関節の三次元座標を算出する場合、手位置検出装置1は、図3のフローチャートに沿った処理を行う。すなわち、手位置検出装置1は、まず、図8の深度画像1101から第1の上肢領域及び第2の上肢領域を検出する(ステップS2)。手位置検出装置1は、例えば、背景画像191を用いた背景差分法により第1の上肢領域及び第2の上肢領域を検出する。
図9は、背景差分法による上肢領域の検出方法を説明する図である。
図9の(a)の背景画像191は、上記のように、作業員7が作業を行っていないときに深度センサ2で撮像した深度画像である。背景画像191は、第1の作業台8Aを示す領域と、第2の作業台を示す領域と、棚9を示す領域とを含む。背景画像191では、各領域の深度値を領域内のドットパターンの密度で示しており、密度が高い領域ほど深度値が小さい(すなわち深度センサ2からの距離が短い)。
背景差分法により深度画像1101から上肢領域を検出する処理は、手位置検出装置1の上肢領域検出部121が行う。上肢領域検出部121は、例えば、図8の深度画像1101における各位置(各画素)の深度値毎に、背景画像191における同じ位置の深度値との差を算出し、算出した深度値の差と閾値との大小関係に基づいて深度画像1101内の各位置の深度値を二値化する。ここで、閾値は、例えば、三次元空間における実距離に換算すると数mmから数cm程度となる値とする。このようにすると、深度画像1101における上肢領域内の各位置は深度値の差が閾値よりも大きくなり、上肢領域外の各位置は深度値の差が閾値以下となる。例えば、図8の深度画像1101における左上肢710と対応する領域内の各位置の深度値は、第1の作業台8Aの表面の深度値よりも小さな値となり、その差は実距離で数cmから十数cmとなる。同様に、図8の深度画像1101における右上肢720と対応する領域内の各位置の深度値は、第1の作業台8Aの表面の深度値よりも小さな値となり、その差は実距離で数cmから十数cmとなる。これに対し、図8の深度画像1101における第1の作業台8Aの深度値を示す領域内及び第2の作業台8Bの深度値を示す領域内の各位置では、深度画像1101における深度値と背景画像191における深度値との差が0から数mm程度となる。また、図8の深度画像1101における棚9の深度値を示す領域内の各位置では、深度画像1101における深度値と背景画像191における深度値との差が0から数mm程度となる。
よって、上肢領域検出部121は、図8の深度画像1101と、図9の(a)の背景画像191とに基づいて、図9の(b)のような二値画像1102を生成する。図9の(b)の二値画像1102では、深度値の差が閾値よりも大きい画素を含む第1の上肢領域1102A及び第2の上肢領域1102Bを白地で示し、深度値の差が閾値以下である画素を含む領域にはドットパターンを付している。
なお、背景差分法により二値画像1102を生成する場合、上肢領域検出部121は、例えば、上肢領域の輪郭(上肢領域内と上肢領域外との境界)が不連続となることを防止ための平滑化処理等を行ってもよい。
背景差分法により深度画像1101から上肢領域1102A及び1102Bが検出された場合、手位置検出装置1は、上肢領域1102A及び1102Bのそれぞれから手中心及び各関節の位置を検出する(ステップS4)。ステップS4の処理は、上記のように、手位置検出装置1の画像内位置検出部122が行う。画像内位置検出部122は、例えば、上肢領域の位置及び形状に基づいて深度画像1101(又は二値画像1102)における上肢の延在方向を示す線分を生成した後、該線分と上肢領域の輪郭とに基づいて手中心の位置及び各関節の位置を検出する。
図10は、深度画像における手中心及び各関節の位置の検出方法の一例を説明する図である。
画像内位置検出部122は、例えば、上肢領域を検出する際に生成した二値画像1102を利用して、深度画像における手中心及び各関節の位置を検出する。図9の(b)の二値画像1102のように第1の上肢領域1102Aと第2の上肢領域1102Bとが検出された場合、画像内位置検出部122は、例えば、まず、第1の上肢領域1102Aから手中心及び各関節の位置を検出する。
第1の上肢領域1102Aから手中心及び各関節の位置を検出する場合、画像内位置検出部122は、図10に示すように、第1の上肢領域1102Aにおける上肢の延伸方向を示す線分群FLを生成する。図10の二値画像1102では、画像下方に対象者が存在する。このため、二値画像1102における第1の上肢領域1102Aと対応する左上肢の延在方向は、二値画像1102の下辺から上辺に向かう方向となる。よって、画像内位置検出部122は、例えば、まず、第1の上肢領域1102Aにおける左右方向の端部の距離を縮めてゆき第1の上肢領域1102Aを曲線に変換する。その後、画像内位置検出部122は、変換して得られた第1の上肢領域1102Aと対応する曲線を、該曲線を近似する複数の線分に変換する。これにより、図10の二値画像1102に示したような、左上肢の延在方向を示す複数の線分を含む線分群FLが生成される。
左上肢の延在方向を示す線分群FLを生成した後、画像内位置検出部122は、線分群FLと第1の上肢領域1102Aの輪郭とに基づいて、手中心(左手の中心)の位置を決定する。上記のように、作業者7は二値画像1102の下方に存在している。このため、手中心及び各関節が線分群の線分上に存在する場合、線分に沿った二値画像1102の下辺から手中心までの距離は、手首や肘等の関節までの距離よりも長くなる。また、手中心は手のひらの中心であるため、第1の上肢領域1102Aにおける手中心と対応する部分の寸法及び形状は、手のひらの寸法及び形状と略一致する。従って、画像内位置検出部122は、例えば、線分群FLの両端のうちの二値画像1102の下辺から遠いほうの端Q10を始点とし、二値画像1102の下辺と接する端Q13に向かって手中心の位置を検出する処理を行う。このとき、画像内位置検出部122は、例えば、線分群FL上の複数の点のなかから、線分上の点を中心とする所定の半径の円Hが第1の上肢領域1102Aに内接する点を検出する。図10の二値画像1102における第1の上肢領域1102Aでは、線分群FLにおける折れ曲がり点Q11で、円Hが第1の上肢領域1102Aに内接している。このため、画像内位置検出部122は、折れ曲がり点Q11を手中心の位置を示す点P0として検出する。
手中心の位置を検出した後、画像内位置検出部122は、手中心の位置と、線分群における折れ曲がり点の位置と、二値画像1102における手中心から手首までの距離の平均値とに基づいて、手首の位置を検出する。手首の位置を検出する際、画像内位置検出部122は、線分群における手中心の位置から手首の位置となる方向に存在する折れ曲がり点を検出し、手首の位置として適切か否かを判定する。画像内位置検出部122は、図10の二値画像1102の線分群FLにおいて手中心の位置Q11から手首の位置となる方向に存在する折れ曲がり点Q12を検出し、該折れ曲がり点Q12が手首の位置として適切か否かを判定する。このとき、画像内位置検出部122は、例えば、手中心の位置Q11から折れ曲がり点Q12までの距離が手中心から手首までの距離と対応しているか否かに基づいて、折れ曲がり点Q12が手首の位置として適切か否かを判定する。また、画像内位置検出部122は、例えば、折れ曲がり点Q12で接続している2本の線分のなす角が、手首の屈曲可能な角度範囲内であるか否かに基づいて、折れ曲がり点Q12が手首の位置として適切か否かを判定する。そして、折れ曲がり点Q12が手首の位置として適切であると判定した場合、画像内位置検出部122は、折れ曲がり点Q12を手首の位置を示す点P2として検出する。
その後、画像内位置検出部122は、続けて、肘の位置を検出する。しかしながら、図10の二値画像1102における第1の上肢領域1102Aは、左肘の部分を含まない。このため、画像内位置検出部122は、第1の上肢領域1102Aから手中心及び各関節の位置を検出する処理を終了し、次に、第2の上肢領域1102Bから手中心及び各関節の位置を検出する処理を行う。
第2の上肢領域1102Bから手中心及び各関節の位置を検出する場合も、画像内位置検出部122は、まず、第2の上肢領域1102Bと対応する上肢の延伸方向を示す線分群FRを生成する。その後、画像内位置検出部122は、生成した線分群FRにおいて日画像1102の下辺から最も遠い端Q20を始点とし、線分群FRにおける他端Q23に向かって手中心の位置を検出する処理を行う。このとき、画像内位置検出部122は、線分群FRにおける折れ曲がり点Q21を手中心の位置を示す点P0として検出する。
第2の上肢領域1102Bにおける手中心の位置を検出した後、画像内位置検出部122は、線分群FR上で手首の位置を検出する。しかしながら、図10の二値画像における線分群FRでは、折れ曲がり点Q21から手首の方向に見たときに最初に現れる折れ曲がり点Q22は、第2の上肢領域1102Bと対応する右上肢の肘の部分に存在する。このため、手中心の位置(折れ曲がり点Q21)から折れ曲がり点Q22までの距離は、手中心から手首までの距離よりも長くなる。すなわち、線分群FRにおける折れ曲がり点Q21を手中心の位置とした場合、線分群FRには手首の位置と対応する折れ曲がり点が存在しない。このように、線分群に手首の位置と対応する折れ曲がり点が存在しない場合、画像内位置検出部122は、例えば、手中心の位置(折れ曲がり点Q21)と折れ曲がり点Q22とを結ぶ線分上の点Q24を、手首の位置を示す点P1として検出する。点Q24は、手中心の位置と折れ曲がり点Q22とを結ぶ線分上の複数の点のうちの、手中心の位置からの距離が深度画像における手中心から手首までの距離となる点である。
その後、画像内位置検出部122は、線分群FRにおける折れ曲がり点Q22を肘の位置を示す点P2として検出する。また、肘の位置を検出した後、画像内位置検出部122は、肩の位置を検出する処理を行うが、図10の二値画像1102における第2の上肢領域は、右肩の部分を含まない。このため、画像内位置検出部122は、第1の上肢領域1102Aから手中心及び各関節の位置を検出する処理を終了する。
二値画像に基づいて上肢領域内の手中心及び各関節の位置を検出した後、手位置検出装置1は、三次元座標算出部123により検出した手中心及び各関節の三次元座標を算出する。三次元座標算出部123は、ピンホールカメラモデルを適用し、深度画像の撮像範囲と、深度画像の画素数と、深度画像における手中心及び関節の位置と、深度値とに基づいて、手中心及び関節の三次元座標を算出する。
三次元座標算出123は、深度画像1101(二値画像1102)から検出された上肢領域毎に、検出した手中心及び各関節の三次元座標を算出する。例えば、三次元座標算出部123は、まず、図10の第1の上肢領域1102Aから検出した手中心の位置を示す点P0の三次元座標、及び手首の位置を示す点P1の三次元座標を算出する。三次元座標算出部123は、ピンホールカメラモデルを適用し、深度画像1101における手中心の位置Q11と、該位置Q11の深度値と、深度画像1101の撮像範囲と、深度画像1101の画素数とに基づいて、手中心及び手首の三次元座標を算出する。その後、三次元座標算出部123は、図10の第2の上肢領域1102Bから検出した手中心の位置を示す点P0の三次元座標、手首の位置を示す点P1の三次元座標、及び肘の位置を示す点P2の三次元座標を算出する。
深度画像1101から検出した手中心及び各関節についての三次元座標を算出した後、手位置検出装置1は、補正部130により三次元座標の補正の有無の判定及び補正を行う。三次元座標の補正の有無の判定は、整合性判定部131が行う。整合性判定部131は、図5のフローチャートに沿った整合性判別処理を行って、三次元座標の補正の有無を判定する。整合性判定部131が行う整合性判別処理は、空間整合性の判別と、時間整合性の判別とを含む。
図11は、空間整合性の判別方法を説明する図である。
図11の深度画像1101には、上肢領域1101A及び1101Bと、手中心及び各関節の位置とを示している。
整合性判定部131は、深度画像1101における上肢領域毎に、手中心及び各関節の三次元座標(位置)についての空間整合性及び時間整合性の判別を行う。このとき、本実施形態の手位置検出装置1における整合性判定部131は、図5のフローチャートのように、まず、空間整合性の判別を行う。
例えば、図11の深度画像1101における第1の上肢領域1101Aには、手中心を示す点P0と手首を示す点P1とが示されている。空間整合性の判別では、整合性判定部131は、手中心と手首との位置関係についての空間的な整合性を判別する。整合性判定部131は、まず、手中心を示す点P0についての整合性パラメータC0を「True」とし(ステップS60301)、点P0の三次元座標(X0,Y0,Z0)から深度画像1101内の座標(x0,y0)と距離z0とを算出する(ステップS60302)。ここで、整合性判定部131は、深度画像1101の座標及び深度値から三次元座標を算出する数式に対する逆算の数式により、三次元座標(X0,Y0,Z0)を深度画像内の座標(x0,y0)と距離z0とに変換する。
次に、整合性判定部131は、点P0についての距離z0と、深度画像1101における座標(x0,y0)の深度値z0’との大小関係がz0’>z0+Mであるか否かを判定する(ステップS60303及びS60304)。深度画像1101における座標(x0,y0)の深度値が深度画像の撮像範囲内に存在する手中心までの距離と対応している場合、距離z0と深度値z0’との大小関係は、上記のようにz0’≦z0+Mとなる。図11の深度画像1101における手中心を示す点P0は第1の上肢領域1101A内に含まれ、かつ手のひらの中央部に存在する。このため、手中心を示す点P0についての距離z0と深度値z0’との大小関係は、z0’≦z0+Mとなる。この場合、整合性判定部131は、次に、手中心の位置と、隣接する関節(手首)の位置との三次元距離lenを算出し、距離lenが対象者の手中心から手首までの寸法と整合するか否かを判定する(ステップS60305〜S60307)。
z0’≦z0+Mである場合、整合性判定部131は、次に、手中心を示す点P0の三次元座標(X0,Y0,Z0)と、隣接する手首を示す点P1の三次元座標(X1,Y1,Z1)との三次元距離lenを算出する(ステップS60305)。図11の深度画像1101における点P0と点P1との距離len1’は、三次元距離lenと対応する深度画像内での距離(平面内距離)を示している。三次元距離lenを算出した後、整合性判定部131は、寸法履歴192から対象者の手中心から手首までの寸法(第1の寸法L1)を読み出して差ΔL=len−L1を算出する(ステップS60306)。
三次元距離lenと対象者の寸法との差ΔLを算出した後、整合性判定部131は、算出した差ΔLの絶対値|ΔL|と閾値THLとの関係が|ΔL|>THLであるか否かを判定する(ステップS60307)。
図11の深度画像1101における第1の上肢領域1101A内の点P1の位置は、手首の部分に存在する。このため、深度画像1101における点P1の位置の座標(x1,y1)及び深度値に基づいて算出した点P1の三次元座標は、深度画像の撮像範囲内における手首の位置と対応している。従って、点P0の三次元座標と点P1の三次元座標との三次元距離lenは、手中心と深度画像の撮像範囲内における対象者の手中心から手首までの寸法と略一致する。すなわち、整合性判定部131が算出した差ΔLは非常に小さな値となるため、絶対値|ΔL|と閾値THLとの大小関係は|ΔL|≦THLとなる。この場合、整合性判定部131は、手中心を示す点P0の三次元座標(X0,Y0,Z0)と、深度画像の撮像範囲内における対象者の手中心の位置とが空間的に整合すると判定する。空間的に整合すると判定した場合、整合性判定部131は、次に、手中心を示す点P0の三次元座標(X0,Y0,Z0)が時間的に整合するか否か(時間整合性)を判定する(ステップS60308及びS60309)。
点P0の三次元座標についての時間整合性を判定するため、本実施形態の整合性判定部131は、点P0の移動速度S0を算出する(ステップS60308)。移動速度S0を算出するため、整合性判定部131は、過去の深度画像1101における第1の上肢領域1101Aから検出した手中心を示す点P0の三次元座標(X0’,Y0’,Z0’)を座標履歴193から読み出す。例えば、図11の深度画像1101が時刻tに撮像された深度画像である場合、整合性判定部131は、例えば、時刻t−Δtに撮像された深度画像から検出した点P0の三次元座標を読み出す。ここで、Δtは、例えば、深度センサ2における深度画像の撮像間隔である。
過去の点P0の三次元座標を読み出した後、整合性判定部131は、現在の点P0の三次元座標(X0,Y0,Z0)と過去の点P0の三次元座標(X0’,Y0’,Z0’)との三次元距離と、深度画像の撮像間隔Δtとに基づいて、移動速度S0を算出する。
深度画像の撮像範囲10内で作業員7の上肢が動いている場合、作業員7が動かしている手の移動速度には上限がある。このため、現在の点P0の三次元座標(X0,Y0,Z0)と過去の点P0の三次元座標(X0’,Y0’,Z0’)とが、それぞれ、深度画像の撮像範囲内における対象者の左手の手中心と対応している場合には、移動速度S0は、必ず閾値THS以下となる。言い換えると、移動速度S0が閾値THSよりも大きい場合、現在の点P0の三次元座標(X0,Y0,Z0)と対応する対象者の上肢内での位置は、過去の点P0の三次元座標(X0’,Y0’,Z0’)と対応する対象者の上肢内での位置とは異なるといえる。よって、S0≦THSである場合には、整合性判定部131は、手中心を示す点P0の三次元座標(X0,Y0,Z0)と、過去の手中心の三次元座標とが時間的に整合すると判定する。時間的に整合すると判定した場合、整合性判定部131は、手中心を示す点P0に対する整合性パラメータC0を「True」のままとする。一方、S0>THSである場合には、整合性判定部131は、手中心を示す点P0の三次元座標(X0,Y0,Z0)と、過去の手中心の三次元座標とは時間的に整合しないと判定する。時間的に整合しないと判定した場合、整合性判定部131は、手中心を示す点P0に対する整合性パラメータC0を「False」に変更する(ステップS60312)。
整合性判定部131は、第1の上肢領域1101Aから検出した手中心を示す点P0についての整合性の判別を終えると、次に、第1の上肢領域1101Aから検出した手首を示す点P1についての整合性の判別を行う。図11の深度画像1101では、第1の上肢領域1101Aから検出された関節が手首のみである。このため、点P1についての整合性の判別を終えると、整合性判定部131は、第1の上肢領域1101Aから検出された手中心及び関節を処理対象とする整合性判別処理を終了する。
また、整合性判定部131は、図11の深度画像1101における第2の上肢領域1101Bから検出された手中心及び関節を処理対象と整合性判別処理では、以下のような処理を行う。
整合性判定部131は、まず、第2の上肢領域1101Bから検出された手中心を示す点P0の整合性パラメータC0を「True」に設定し、点P0の三次元座標の空間整合性についての判定を行う。整合性判定部131は、まず、点P0の三次元座標から深度画像内での座標(x0,y0)と距離z0とを算出し、距離z0と深度画像における座標(x0,y0)の深度値z0’との関係がz0’>z0+Mであるか否かを判定する。図11の深度画像1101では、点P0の位置が第2の上肢領域1101B内である。このため、距離z0と深度値z0’との関係は、z0’≦z0+Mとなる。従って、整合性判定部131は、次に、第2の上肢領域1101Bから検出された手中心を示す点P0と手首を示す点P1との三次元距離lenを算出し、該三次元距離lenと対象者の手中心から手首までの寸法との差ΔLを算出する。その後、整合性判定部131は、算出した差ΔLの絶対値|ΔL|と閾値THLとの関係が|ΔL|>THLであるか否かを判定する。
図11の深度画像1101の第2の上肢領域1101Bにおける手首を示す点P1の位置は、例えば、手中心を示す点P0と肘を示す点P2とを結ぶ線分上であって、点P0からの距離が手中心から手首までの寸法となる点である。このため、手中心を示す点P0と手首を示す点P1との三次元距離lenは、対象者の手中心から手首までの寸法と略一致する。よって、絶対値|ΔL|と閾値THLとの大小関係は、|ΔL|≦THLとなる。この場合、整合性判定部131は、手中心を示す点P0の三次元座標(X0,Y0,Z0)と、深度画像の撮像範囲内における対象者の手中心の位置とが空間的に整合すると判定する。空間的に整合すると判定した場合、整合性判定部131は、次に、手中心を示す点P0の三次元座標(X0,Y0,Z0)の移動速度S0を算出し、点P0の三次元座標が時間的に整合するか否か(時間整合性)を判定する。時間的に整合する場合、整合性判定部131は、点P0の整合性パラメータC0を「True」のままとする。一方、時間的に整合しない場合、整合性判定部131は、点P0の整合性パラメータC0を「False」に変更する。その後、整合性判定部131は、第2の上肢領域1101Bから検出された手首を示す点P1の三次元座標の空間整合性についての判定する。
詳細な説明は省略するが、整合性判定部131が点P1の三次元座標から算出した距離z1と、深度画像1101における深度値z1’との関係は、z1’<z1+Mとなる。このため、整合性判定部131は、次に、手首を示す点P1と肘を示す点P2との三次元距離lenが対象者の手首から肘までの寸法と整合するか否かを判定する。図11の深度画像1101における第2の上肢領域1101Bは、上記のように、オクルージョンにより対象者の右上肢における手の部分と対応する領域1101Cが欠落している。第2の上肢領域1101Bが手の部分と対応する領域1101Cを含む場合、第2の上肢領域110Bから検出される手中心及び手首の位置は、それぞれ、図11の深度画像1101における点PC0及び点PC1の位置となる。すなわち、オクルージョンにより対象者の右上肢における手の部分と対応する領域1101Cが欠落している深度画像1101では、手中心を示す点P0及び手首を示す点P1の位置が、それぞれ、実際の位置よりも肘関節側に寄っている。従って、手首を示す点P1と肘を示す点P2との三次元距離lenは、正しい手首の位置を示す点PC1と肘を示す点P2との三次元距離よりも短く、かつ距離の差が略同一であるとは言い難い大きさとなる。図11の深度画像1101における第2の上肢領域1101B内の点P1と点P2との距離len2’は、該2つの点P1及びP2の三次元距離lenと対応する深度画像内での距離(平面内距離)を示している。また、図11の深度画像1101における点PC1と点P2との距離lenc’は、該2つの点PC1及びP2の三次元距離と対応する深度画像内での距離(平面内距離)を示している。
すなわち、第2の上肢領域1101Bから検出した手首を示す点P1が判定対象である場合、点P1と点P2との三次元距離lenと、対象者の手首から肘までの寸法との差ΔLの絶対値|ΔL|は、|ΔL|>THLとなる。|ΔL|>THLである場合、整合性判定部131は、第2の上肢領域1101Bから検出した手首を示す点P1の三次元座標と、隣接する肘を示す点P2の三次元座標とが空間的に整合しないと判定する。このため、整合性判定部131は、第2の上肢領域1101Bから検出した手首を示す点P1の整合性パラメータC1を「False」に変更する(ステップS60312)。このように、空間的に整合しないと判定した場合、整合性判定部131は、点P1に対する時間整合性についての判定を省略し、次に、点P2の整合性についての判定を行う。図11の深度画像1101では、第2の上肢領域1101Bから検出された関節が手首及び肘のみである。このため、点P2の整合性についての判定を終えると、整合性判定部131は、第2の上肢領域1101Bから検出された手中心及び関節を処理対象とする整合性判別処理を終了する。
図11の深度画像1101から検出した手中心及び関節に対する整合性判別処理を終えると、整合性判定部131は、上肢領域毎に、整合性パラメータCiが「False」である手中心又は関節が存在するか否かを判定する(ステップS604)。判定の対象となっている上肢領域と対応する手中心及び関節の全ての整合性パラメータが「True」である場合、整合性判定部131(補正部130)は、手中心及び各関節の現在の三次元座標を、座標履歴193に格納する三次元座標に決定する(ステップS608)。
一方、整合性パラメータが「False」である手中心又は関節が存在する場合、整合性判定部131は、手中心の位置を変更して手中心及び各関節の三次元座標を再計算する座標再計算処理(ステップS606)を再計算部132に行わせる。なお、本実施形態の手位置検出装置1における整合性判定部131は、図4のフローチャートのように、座標再計算処理を行った回数rがN回以下である場合に、再計算部132に座標再計算処理を行わせる。
処理の対象となっている深度画像が図11の深度画像1101であり、かつ整合性判別処理の判定対象が第1の上肢領域1101Aである場合、整合性パラメータは全て「True」である。このため、整合性判定部131は、第1の上肢領域1101Aと対応する手中心を示す点P0の現在の三次元座標及び手首を示す点P1の現在の三次元座標を、座標履歴193に格納する三次元座標に決定する。
これに対し、処理の対象となっている深度画像が図11の深度画像1101であり、かつ整合性判別処理の判定対象が第2の上肢領域1101Bである場合、手首を示す点P1の整合性パラメータC1が「False」となっている。このため、整合性判定部131は、第2の上肢領域1101Bと対応する手中心及び各関節の三次元座標を再計算する座標再計算処理を、再計算部132に行わせる。再計算部132は、座標再計算処理として、図6のフローチャートに沿った処理を行う。すなわち、再計算部132は、図11の深度画像1101における第2の上肢領域1101B内の手中心を示す点P0の位置を変更し、変更後の点P0の位置に基づいて、第2の上肢領域1101Bと対応する手中心及び各関節の三次元座標を算出する。
再計算部132は、まず、深度画像1101における第2の上肢領域110Bと対応する手中心を示す点P0の位置を変更する(ステップS60601)。ステップS60601の処理では、再計算部132は、例えば、手首を示す点P1又は肘を示す点P2を始点とし、手中心を示す点P0を終点とする深度画像1101内のベクトルの方向に、所定の距離(画素数)だけ、点P1の位置を移動させる。
図12は、手中心の位置の変更方法を説明する図である。図12には、図11の深度画像1101における第2の上肢領域1101Bと対応する手中心を示す点P0の位置の変更方法の例を示している。
図12の深度画像1101における変更前の点P0の位置は、図10の線分群FRにおける折れ曲がり点Q21の位置である。また、図12の深度画像1101における肘を示す点P2の位置は、図10の線分群FRにおける折れ曲がり点Q22の位置である。また、図12の深度画像1101における手首を示す点P1の位置は、線分群FRにおける点Q21と点Q22とを結ぶ線分上の点Q24の位置である。
手中心を示す点P0の位置を変更する場合、再計算部132は、手首を示す点P1を始点とし、手中心を示す点P0を終点とする深度画像1101内のベクトルの方向に所定の距離(画素数)だけ移動させる。点P0の位置を変更する前の深度画像1101における点P0及び点P1の位置はそれぞれ、位置Q21及びQ24である。図12の深度画像1101が処理の対象である場合、再計算部132は、位置Q24を始点とし、位置Q21を終点とするベクトルの方向に手中心を示す点P0の位置を変更する。すなわち、再計算部132は、深度画像1101における位置Q21及びQ24を通る線分LS1上であって、位置Q24からの距離が位置Q21よりも長くなる方向に、所定の画素数分だけ、手中心の位置P0を変更する。
手中心を示す点P0の位置を変更した後、再計算部132は、変更後の点0の位置に基づいて手首を示す点P1の位置、肘を示す点P2の位置を変更する(ステップS60602)。図12の深度画像1101における点P0の位置が位置Q21から位置Q25に変更された場合、再計算部132は、例えば、点Pの移動量分だけ手首を示す点P1の位置を位置Q24から位置Q21側に移動させる。また、再計算部132は、肘を示す点P2の位置は位置Q22のままとする。
深度画像1101における手中心及び各関節の位置を変更した後、再計算部132は、手中心及び各関節の三次元座標を算出する(ステップS60603〜S60607)。手中心及び各関節の三次元座標を算出する際、再計算部132は、まず、三次元座標を算出する手中心又は関節の深度画像内での位置が上肢領域内であるか否かを判定する(ステップS60604)。手中心又は関節の位置が上肢領域内である場合、再計算部132は、該手中心又は関節の位置の深度値に基づいて三次元座標を算出する(ステップS60605)。一方、手中心又は関節の位置が上肢領域外である場合、再計算部132は、該手中心又は関節の深度値を算出し、該深度値に基づいて三次元座標を算出する(ステップS60606)。
例えば、図12の深度画像1101における手中心の三次元座標を算出する場合、再計算部132は、変更後の手中心の位置が上肢領域1101B内であるか否かを判定する。変更後の手中心の位置が上肢領域1101B内(例えば位置Q25)である場合、再計算部132は、深度画像1101における位置Q25の座標、及び位置Q25の深度値を利用して、手中心を示す点P0の三次元座標を算出する。一方、変更後の手中心の位置が上肢領域1101B外(例えば位置Q26)である場合、再計算部132は、位置Q26における手中心の深度値を算出し、該深度値を利用して手中心を示す点P0の三次元座標を算出する。
変更後の手中心の位置が上肢領域1101B外の位置Q26である場合、深度画像1101における位置Q26の深度値は、対象者の手までの距離ではなく、例えば、図8の深度画像1101における棚9までの距離と対応する。このため、深度画像1101における位置Q26の座標、及び位置Q26の深度値を利用して算出した三次元座標は、対象者の手中心の位置ではなく、棚9の位置を示す値となる。よって、変更後の手中心の位置が上肢領域1101B外となる場合、再計算部132は、手中心の三次元座標を正しく算出するために変更後の手中心の位置における手中心の深度値を算出する(推定する)。
手中心の位置が上肢領域外である場合、再計算部132は、上肢領域1101内における手中心と手首とを通る線分上での深度値の分布に基づいて手中心の深度値を算出する。
図13は、三次元座標の算出に用いる深度値の推定方法を説明するグラフ図である。図13のグラフ図における横軸は、図12の深度画像1101における線分LS1上の位置である。また、図13のグラフ図における縦軸は、深度画像1101における深度(mm)であり、深度センサ2からの距離と対応している。
図13のグラフ図の横軸における位置Q30,Q22,Q21,Q25,Q31,Q26,及びQ32は、それぞれ、図12の深度画像1101における線分LS1上における位置と対応する。すなわち、図13のグラフ図における位置Q30から位置Q31までの区間の太線BZ1は、対象者の上肢における線分LS1上の各位置と対応する深度値を示している。また、図13のグラフ図における位置Q31から位置Q32までの区間の太線BZ2は、深度画像1101における各位置の深度値であり、棚9の表面と対応する深度値を示している。一方、図13のグラフ図における位置Q31から位置Q32までの区間の太い点線BZ3は、太線BZ1の深度値の変化から推定される、対象者の上肢における線分LS1上の各位置と対応する深度値を示している。
手中心を示す点P0の変更後の位置が位置Q26のように、上肢領域1101B外となる場合、再計算部132は、上肢領域1101B内の深度値の分布に基づいて、太い点線BZ3の分布を見積もる。再計算部132は、例えば、線分LS1上における、変更前の手中心の位置Q21又は手首の位置Q24から、上肢領域1101Bの外周と交差する位置Q31までの深度値の変化量に基づいて、位置Q31から位置Q32までの上肢の深度値の変化を示す太い点線BZ3を算出する。その後、再計算部132は、算出した太い点線BZ3における位置Q26と対応する点の深度値Z6を算出し、該深度値Z6を手中心の深度値として手中心の三次元座標を算出する。
このように、手中心を示す点P0の変更後の位置が上肢領域外である場合に手中心の深度値を算出して(推定して)三次元座標を算出することで、オクルージョンにより深度画像に写っていない手中心の三次元座標を正しく算出することが可能となる。
なお、再計算部132は、例えば、手首を示す点P1の変更後の位置が上肢領域外である場合にも、上肢領域内での深度値の分布に基づいて手首の深度値を算出し(推定して)三次元座標を算出する。
手中心及び各関節の三次元座標の算出を終えると、再計算部132は、算出した三次元座標を整合性判別部131に通知し(ステップS60609)、座標再計算処理を終了する。その後、整合性判定部131は、再計算部132で算出した手中心及び各関節の三次元座標についての空間整合性及び時間整合性を判定する。そして、手中心及び各関節の全てが空間的及び時間的に整合していると判定した場合、整合性判定部131は、現在の手中心及び各関節の三次元座標を座標履歴193に格納する三次元座標に決定する。一方、手中心及び各関節のいずれかが、空間的又は時間的に整合していない場合、整合性判定部131は、手中心及び各関節の三次元座標を補正する処理を再計算部132に行わせる。
以上のように、本実施形態の手位置検出装置1では、深度画像における上肢領域の位置及び形状に基づいて対象者の手中心及び各関節の位置を検出し、深度画像内での位置と深度値とに基づいて、手中心及び各関節の三次元座標を算出する。また、手位置検出装置1は、深度画像から算出した手中心及び各関節の三次元座標と、対象者から採寸した上肢の寸法とが空間的に整合しない場合、深度画像から算出した手中心及び各関節の三次元座標を補正する。手中心及び各関節の三次元座標を補正する際、手位置検出装置1は、深度画像内における手中心及び各関節の位置が、該深度画像における上肢領域の外側の位置となることを許容する。このため、オクルージョンにより深度画像内に手中心までの深度値が含まれない場合でも、本実施形態の手位置検出装置1によれば、手中心の三次元座標を正しく算出することが可能となる。
また、本実施形態の手位置検出装置1では、空間的な整合性の判別とは別に、時間的な整合性の判別を行う。すなわち、深度画像から算出した手中心又は関節の三次元座標の移動速度Siが所定の速度閾値THSよりも大きい場合、手位置検出装置1は、手中心及び各関節の三次元座標を補正する。このように空間的及び時間的に整合するか否かを判定することにより、本実施形態の手位置検出装置1では、手中心の三次元位置をより正しく算出することが可能となる。
更に、本実施形態の手位置検出装置1では、再計算部132において手中心及び各関節の三次元座標を算出した(再計算した)後、整合性判定部131において空間的及び時間的に整合するか否かを判定する。そして、整合性判定部131において空間的及び時間的に整合すると判定されるまで、再計算部132における手中心及び各関節の三次元座標の算出(再計算)を複数回行う。このため、深度画像における正しい手中心の位置と、上肢領域に基づいて検出した手中心の位置とのずれが大きい場合でも、手中心の三次元座標を正しく算出することが可能となる。
なお、本実施形態の手位置検出装置1では、上記のように、再計算部132における三次元座標の算出回数に上限を設けている。三次元座標の算出回数に上限を設けることにより、手位置検出装置1では、再計算部132での三次元座標の再計算の回数の増大による処理負荷の増大及び処理の遅延を防ぐことが可能となる。
また、図4のフローチャートは、本実施形態の手位置検出装置1(補正部130)が行う座標補正処理の一例に過ぎない。本実施形態の手位置検出装置1が行う座標補正処理は、本実施形態の要旨を逸脱しない範囲において適宜変更可能である。本実施形態の手位置検出装置1は、座標補正処理として、例えば、図14A及び図14Bのフローチャートに沿った処理を行ってもよい。
図14Aは、座標補正処理の変形例を説明するフローチャート(その1)である。図14Bは、座標補正処理の変形例を説明するフローチャート(その2)である。なお、図14A及び図14Bのフローチャートにおける各処理ステップのうちの、図4のフローチャートにおける処理ステップと処理内容が同じである処理ステップには、図4のフローチャートの処理ステップと同じ符号(例えばS601及びS602等)を付している。
図14A及び図14Bのフローチャートに沿った座標補正処理は、手位置検出装置1の補正部130が行う。補正部130は、まず、図14Aのように、再計算部132で三次元座標を再計算した回数を示す変数rを「0」とし(ステップS601)、続けて、上肢領域を1つ選択して手中心及び関節の三次元座標を読み出す(ステップS602)。ステップS601及びS602の処理は、例えば、補正部130の整合性判定部131が行う。
次に、補正部130は、読み出した手中心及び関節の三次元座標の空間整合性及び時間整合性について判別する整合性判別処理(ステップS603)を行い、整合しない手中心又は関節があるか否かを判定する(ステップS604)。ステップS603の整合性判別処理及びステップS604の判定は、整合性判定部131が行う。整合性判定部131は、整合性判別処理(ステップS603)として、例えば、図5のフローチャートに沿った処理を行う。手中心及び関節の三次元座標の全てが空間的及び時間的に整合している場合(ステップS604;NO)、整合性判定部131は、図14Bのように、現在の三次元座標を座標履歴193に格納する三次元座標に決定する(ステップS608)。これに対し、手中心及び関節の三次元座標のいずれかが、空間的又は時間的に整合していない場合(ステップS604;YES)、整合性判定部131は、次に、変数rがr<Nであるか否かを判定する(ステップS605)。r≧Nの場合(ステップS605;NO)、整合性判定部131は、図14Bのように、現在の三次元座標を座標履歴193に格納する三次元座標に決定する(ステップS608)。これに対し、r<Nの場合(ステップS605;YES)、整合性判定部131は、次に、隣接領域判別処理(ステップS611)を行う。
隣接領域判別処理(ステップS611)は、深度画像において上肢領域と隣接する領域のうちの、手中心の位置を変更する際の移動方向となる隣接領域が、上肢よりも手前(深度センサ2側)に存在する物体の深度値を示す領域であるか否かを判別する処理である。以下の説明では、深度画像における上肢よりも手前(深度センサ2側)に存在する物体の深度値を示す領域を手前領域という。整合性判別部131は、隣接領域判別処理として、例えば、図12の深度画像1101における線分LS1上の各点の深度値に基づいて、位置Q26を含む隣接領域が手前領域であるか否かを判別する。
隣接領域判別処理の後、整合性判定部131は、上肢領域と隣接する手前領域があるか否かを判定する(ステップS612)。上肢領域と隣接する手前領域がない場合(ステップS612;NO)、整合性判定部131は、図14Bのように、現在の三次元座標を座標履歴193に格納する三次元座標に決定する(ステップS608)。一方、上肢領域と隣接する手前領域がある場合(ステップS612;YES)、整合性判定部131は、座標再計算処理(ステップS606)を再計算部132に行わせる。再計算部132は、座標再計算処理として、例えば、図6のフローチャートに沿った処理を行う。
再計算部132が座標再計算処理(ステップS606)を終えると、補正部130の整合性判定部131は、再計算した三次元座標に対する整合性判別処理(ステップS603)を行う。その後、ステップS604,S605,及びS612のいずれかにおいて「NO」と判定されるまで、補正部130は、再計算部132による三次元座標の再計算と、整合性判定部131による整合性についての判定とを繰り返す。そして、ステップS604,S605,及びS612のいずれかにおいて「NO」と判定された場合、補正部130(整合性判定部131)は、図14Bのように、現在の三次元座標を座標履歴193に格納する三次元座標に決定する(ステップS608)。
ステップS608の処理を終えると、補正部130(整合性判定部131)は、次に、未選択の上肢領域があるか否かを判定する(ステップS609)。未選択の上肢領域がある場合(ステップS609;YES)、整合性判定部131は、未選択の上肢領域に対するステップS601以降の処理を行う。そして、全ての上肢領域に対してステップS601以降の処理を行うと、補正部130は、座標補正処理を終了する。
このように座標補正処理の変形例では、手位置検出装置1は、手中心及び関節の三次元座標のいずれかが、空間的又は時間的に整合しない場合、座標再計算処理を行う前に、隣接領域判別処理(ステップS611)を行う。隣接領域判別処理は、上記のように、上肢領域と隣接する手前領域の有無を判別する処理である。隣接領域判別処理は、例えば、手位置検出装置1の補正部130の整合性判定部131が行う。整合性判定部131は、隣接領域判別処理として、例えば、図15のフローチャートに沿った処理を行う。
図15は、隣接領域判別処理の内容を説明するフローチャートである。
隣接領域判別処理では、整合性判定部131は、まず、現在選択されている上肢領域における手中心の位置から関節の位置とは反対の方向に延伸した線分上であって、手中心の位置から所定の距離となる位置Paを算出する(ステップS61101)。
次に、整合性判定部131は、上肢領域内の手中心の位置と関節の位置とを通る線分上の各点における深度値に基づいて、位置Paが上肢の一部を示す点である場合の深度値zaを算出する(ステップS61102)。ステップS61102では、整合性判定部131は、例えば、図13のグラフ図における太線BZ1に基づいて太い点線BZ3を推定し、位置Paが上肢の一部を示す点である場合の深度値zaを算出する。
次に、整合性判定部131は、深度画像における位置Paの座標の深度値za’を読み出し(ステップS61103)、za−Ma>za’であるか否かを判定する(ステップS61104)。ここで、Maは、深度値zaに対するマージンである。マージンMaは、深度画像における位置Paの深度値za’が上肢よりも手前(深度センサ2側)に存在する物体の深度値であるとみなすことが可能な範囲に基づいて設定する。すなわち、マージンMaは、za−Ma>za’である場合には、深度画像における位置Paの深度値za’が上肢よりも手前(深度センサ2側)に存在する物体の深度値であるとみなすことが可能な値とする。従って、za−Ma>za’である場合(ステップS61104;YES)、整合性判定部131は、上肢領域と隣接する手前領域があると判別し(ステップS61105)、隣接領域判別処理を終了する。一方、za−Ma≦za’である場合(ステップS61104;NO)、整合性判定部131は、上肢領域と隣接する手前領域はないと判別し(ステップS61106)、隣接領域判別処理を終了する。
図16は、隣接領域と判別結果との関係を説明する図である。
図16の深度画像1101には、該深度画像1101から検出した第1の上肢領域1101Aと、第2の上肢領域1101Bとを示している。また、図16の深度画像1101には、該深度画像1101における棚9の深度値を示す領域1101Dと、第1の作業台8Aの深度値を示す領域1101Eと、第2の作業台8Bの深度値を示す領域1101Fとを示している。更に、図16の深度画像1101には、棚9と第2の作業台8Bとの間に存在する、対象者の右手部分を示す領域1101Cを二点鎖線で示している。
対象者の右手部分が棚9と第2の作業台8Bとの間に存在する場合、深度画像1101から検出される第2の上肢領域1101Bは、対象者の右手部分と対応する領域1101Cを含まない。このため、手位置検出装置1は、第2の上肢領域1101Bに基づいて手中心を示す点P0の位置を検出する際に、第2の上肢領域1101Bのうちの実際には手首と対応する位置よりも肘側となる位置Q21を検出する。よって、図16の深度画像1101が処理の対象である場合、手位置検出装置1の整合性判定部131は、第2の上肢領域1101Bから算出した手中心及び関節の三次元座標のいずれかが空間的に整合しないと判定する。空間的に整合しないと判定した場合、整合性判定部131は、隣接領域判別処理(ステップS611)を行い第2の上肢領域1101Bと隣接する手前領域の有無を判別する。
第2の上肢領域1101Bが処理の対象である場合、整合性判定部131は、深度画像における位置Q21及びQ24を通る線分LS1上であって、位置Q21から位置Q24とは反対側の方向の距離LLとなる位置Paを算出する(ステップS61101)。
次に、整合性判定部131は、第2の上肢領域1101B内における線分LS1上の深度値の分布に基づいて、位置Paが上肢の一部である場合の深度値zaを算出する(ステップS61102)。ステップS61102では、整合性判定部131は、例えば、図13のグラフ図に基づいて、位置Paが上肢の一部である場合の深度値zaを算出する。図16の深度画像1101における位置Paは、第2の上肢領域1101Bの外側となっている。このため、整合性判定部131は、図13のグラフ図における太い点線BZ3に基づいて深度値zaを算出する。
その後、整合性判定部131は、深度画像1101における位置Paの深度値za’を読み出し(ステップS61103)、za−Ma>za’であるか否かを判定する(ステップS61104)。深度画像1101における位置Paは、第2の上肢領域1101Bと隣接する領域1101Dに含まれる。領域1101Dは、第2の作業台1Bの上に設置された棚9の深度値を示す領域であり、対象者の右手部分を示す領域1101Cよりも手前(深度センサ2側)に存在する。このとき、ステップS61102で算出した深度値zaと、深度画像1101Dにおける深度値za’との間には、両者が同一物体の同一部分の深度値を示しているとはいいがたい大きさの差が生じる(例えば図13を参照)。よって、整合性判定部131は、第2の上肢領域1101Bと隣接する手前領域が存在すると判別し(ステップS61105)、隣接領域判別処理を終了する。この場合、整合性判定部131は、座標再計算処理(ステップS606)を再計算部132に行わせる。
また、図16の深度画像1101における第1の上肢領域1101Aの手中心を示す点P0又は手首を示す点P1が空間的又は時間的に整合しておらず、かつr<Nであると判定した場合、整合性判定部131は、隣接領域判別処理(ステップS611)を行う。この場合、整合性判定部131は、第1の上肢領域1101Aにおける二点P0及びP1を通る線分LS2上であって、点P0から点P1とは反対の方向の距離LLとなる位置Paを算出する(ステップS61101)。
次に、整合性判定部131は、第1の上肢領域1101A内における線分LS2上の各点の深度値に基づいて、位置Paが上肢の一部である場合の深度値を算出する(ステップS61102)。
その後、整合性判定部131は、深度画像1101における位置Paの深度値za’を読み出し(ステップS61103)、za−Ma>za’であるか否かを判定する(ステップS61104)。深度画像1101における位置Paは、第1の上肢領域1101Aと隣接する領域1101Eに含まれる。領域1101Eは、第1の作業台1Aの深度値を示す領域であり、対象者の左手部分を含む第1の上肢領域1101Aよりも奥方(深度センサ2からみて遠方側)に存在する。このとき、ステップS61102で算出した深度値zaと、深度画像1101Dにおける深度値za’との関係は、za<za’(すなわちza−Ma<za’)となる。よって、整合性判定部131は、第2の上肢領域1101Bと隣接する手前領域は存在しないと判別し(ステップS61106)、隣接領域判別処理を終了する。この場合、整合性判定部131は、座標再計算処理(ステップS606)を省略し、現在の三次元座標を座標履歴193に格納する三次元座標に決定する(ステップS608)。
隣接領域判別処理において上肢領域と隣接する手前領域があると判別した場合、深度画像における手中心の移動方向には、棚9等の上肢よりも手前に存在する物体により隠れている対象者の正しい手中心が存在すると考えられる。このため、座標補正処理の変形例では、図14Aのように、上肢領域と隣接する手前領域がある場合には、手中心の位置を移動させて手中心及び関節の三次元座標を再計算する座標再計算処理(ステップS606)を行う。一方、上肢領域と隣接する手前領域がない場合、深度画像における手中心の移動方向には、上肢よりも手前となる位置で上肢の一部を隠している物体が存在しない。このため、移動させた手中心の位置が上肢領域の外側になってしまうと、手中心の三次元座標が誤った座標となってしまう。従って、座標補正処理の変形例では、図14A及び図14Bのように、上肢領域と隣接する手前領域がない場合には、座標再計算処理を行わず、現在の三次元座標を座標履歴193に格納する三次元座標に決定する。これにより、移動後の手中心の位置が上肢領域外となった場合に、再計算部132が誤った深度値により誤った手中心の三次元座標を算出することを防ぐことが可能となる。
また、図5のフローチャートは、本実施形態の手位置検出装置1(整合性判定部131)が行う整合性判別処理の一例に過ぎない。本実施形態の手位置検出装置1が行う整合性判別処理は、本実施形態の要旨を逸脱しない範囲において適宜変更可能である。本実施形態の手位置検出装置1は、整合性判別処理として、例えば、図17A及び図17Bのフローチャートに沿った処理を行ってもよい。
図17Aは、整合性判別処理の変形例を説明するフローチャート(その1)である。図17Bは、整合性判別処理の変形例を説明するフローチャート(その2)である。なお、図17A及び図17Bのフローチャートにおける各処理ステップのうちの、図5のフローチャートにおける処理ステップと処理内容が同じである処理ステップには、図5のフローチャートの処理ステップと同じ符号(例えばS60302等)を付している。
図17A及び図17Bのフローチャートに沿った整合性判別処理は、手位置検出装置1における補正部130の整合性判定部131が行う。整合性判定部131は、まず、図17Aのように、手中心及び各関節を識別する変数iを「0」にするとともに、変数iにより指定される手中心又は関節についての整合性パラメータCiの値を「1.0」とする(ステップS60321)。
次に、整合性判定部131は、手中心又は関節を示す点Piの三次元座標から、深度画像内での座標(xi,yi)と距離ziとを算出する(ステップS60302)。その後、整合性判定部131は、深度画像から座標座標(xi,yi)の深度値zi’を読み出し(ステップS60303)、zi’>zi+Mであるか否かを判定する(ステップS60304)。zi’>zi+Mである場合(ステップS60304;YES)、整合性判定部131は、整合性パラメータCiの値から0.3を減じる(ステップS60322)。
一方、zi’≦zi+Mである場合(ステップS60304;NO)、整合性判定部131は、整合性パラメータCiの値を変更せずに、次に、点Piと点Pi+1との三次元距離lenを算出する(ステップS60305)。その後、整合性判定部131は、三次元距離lenと対象者の寸法との差ΔLを算出し(ステップS60306)、|ΔL|>THLであるか否かを判定する(ステップS60307)。|ΔL|>THLである場合(ステップS60307;YES)、整合性判定部131は、整合性パラメータCiの値から0.3を減じる(ステップS60322)。
これに対し、|ΔL|≦THLである場合(ステップS60307;NO)、整合性判定部131は、次に、点Piの移動速度Siを算出し(ステップS60308)、Si>THSであるか否かを判定する(ステップS60309)。また、ステップS60322の処理を行った場合も、整合性判定部131は、ステップS60322の処理の次に、点Piの移動速度Siを算出し(ステップS60308)、Si>THSであるか否かを判定する(ステップS60309)。Si>THSである場合(ステップS60309;YES)、整合性判定部131は、整合性パラメータCiの値から0.2を減算し(ステップS60323)、減算後の整合性パラメータCiを点Piの整合性パラメータに決定する。その後、整合性判定部131は、図17Bのように、整合性パラメータCiの値を決定していない手中心又は関節の有無を判定する(ステップS60310)。一方、Si≦THSである場合(ステップS60309;NO)、整合性判定部131は、整合性パラメータCiの値を変更せずに、次にステップS60310の判定を行う。すなわち、Si≦THSである場合、整合性判定部131は、ステップS60309の判定時における整合性パラメータCiを点Piの整合性パラメータに決定する。
整合性パラメータCiを決定していない手中心又は関節がある場合(ステップS60310;YES)、整合性判定部131は、変数iをi+1に更新するとともに整合性パラメータCiを「1.0」とする(ステップS60324)。その後、整合性判定部131は、ステップS60302以降の処理を行う。そして、現在処理の対象となっている手中心及び関節の全ての整合性パラメータCiを決定すると(ステップS60310;NO)、整合性判定部131は、整合性判別処理を終了する。
図17A及び図17Bのフローチャートに沿って手中心及び各関節の整合性パラメータCiの値を決定した場合、整合性判定部131は、ステップS604において、Ci<1.0であるか否かに基づいて、整合していない手中心又は関節の有無を判定する。図17A及び図17Bのフローチャートでは、空間的に整合していない場合、及び時間的に整合していない場合に、整合性パラメータCiの値を減算する。このため、ステップS604において、整合性判定部131は、判定の対象となっている手中心及び関節の全てがCi=1.0である場合に、手中心及び関節の全てが整合している(ステップS604;NO)と判定する。
このように、手中心及び関節の三次元座標の空間的及び時間的な整合性の判別に用いる整合性パラメータCiは、「True」及び「False」の二値に限らず、数値化してもよい。また、整合性パラメータCiを数値化する場合、ステップS60322及びS60323で減算する値の組み合わせは適宜変更可能である。
更に、整合性判定部131が行う整合性判別処理は、手中心及び関節の三次元座標の空間整合性及び時間整合性のいずれか一方の整合性についての判別のみを行ってもよい。また、整合性判定部131は、整合性判別処理において、寸法情報192に登録された対象者の上肢の寸法の代わりに、座標履歴193に格納された手中心及び関節の三次元座標を利用して空間整合性についての判別を行ってもよい。
また、本実施形態の手位置検出装置1において手中心及び各関節の三次元座標を算出する際には、深度センサ2で撮像した深度画像1101と背景画像191とに限らず、他の距離測定装置により測定した距離の情報を利用してもよい。
[第2の実施形態]
図18は、第2の実施形態に係る手位置検出装置の機能的構成を示す図である。
図18に示すように、本実施形態の手位置検出装置1は、深度画像取得部110と、関節位置算出部120と、補正部130と、出力部140と、記憶部190とを含む。
深度画像取得部110は、手中心の位置を検出する検出領域内に存在する物体の表面までの距離(深度)を示す情報を含む深度画像を深度センサ2から取得する。
関節位置算出部120は、深度画像に基づいて、検出領域内に存在する手中心及び上肢の関節についての検出領域内での位置を示す三次元座標を算出する。本実施形態の手位置検出装置1における関節位置算出部120は、上肢領域検出部121と、画像内位置検出部122と、三次元座標算出部123とを含む。更に、本実施形態の手位置検出装置1における関節位置算出部120は、体領域検出部124を含む。
体領域検出部124は、手中心の位置を検出する深度画像と、記憶部190に記憶させた背景画像191とに基づいて、深度画像内における対象者の胴体部分(体幹部)を示す体領域を検出する。上肢領域検出部121は、手中心の位置を検出する深度画像と、記憶部190に記憶させた背景画像191とに基づいて、深度画像内における人の上肢部分と対応する領域(上肢領域)を検出する。
画像内位置検出部122は、深度画像内における体領域の位置及び形状と、上肢領域の位置及び形状とに基づいて、深度画像内における手中心の位置及び上肢の関節の位置を検出する。画像内位置検出部122は、例えば、体領域の位置及び形状から深度画像内における肩の位置を推定する。また、画像内位置検出部122は、上肢領域内で検出した手中心の位置と、推定した肩の位置とに基づいて、手首、肘、及び肩の位置を検出する。
三次元座標算出部123は、深度画像内における手中心及び各関節の位置と、深度値とに基づいて、検出領域内における手中心の位置を示す三次元座標及び各関節の位置を示す三次元座標を算出する。
補正部130は、深度画像から算出した手中心及び各関節の三次元座標を補正する。本実施形態の手位置検出装置1における補正部130は、第1の実施形態の補正部130と同様、整合性判定部131と、再計算部132とを含む。整合性判定部131は、深度画像から算出した手中心及び各関節の三次元座標と、記憶部190に記憶させた寸法情報192及び座標履歴193とに基づいて、三次元座標の空間整合性及び時間整合性についての判定をする。整合性判定部131は、手中心及び関節のいずれかが、空間的又は時間的に整合していない場合に、三次元座標を補正すると判定し、再計算部132に手中心及び関節の三次元座標を再計算させる。再計算部132は、まず、深度画像における手中心の位置を変更し、変更後の手中心の位置に基づいて深度画像における各関節の位置を算出する。その後、再計算部132は、手中心及び各関節の三次元座標を算出する。
出力部140は、座標履歴193に含まれる手中心及び各関節の三次元座標を含む情報を外部装置3に出力する。外部装置3は、例えば、手中心の三次元座標の時間変化に基づいて、作業員の作業が適切であるか否か等を管理するサーバ装置である。
本実施形態の手位置検出装置1は、深度センサ2が所定の時間間隔で撮像する深度画像を順次取得するとともに、取得した複数の深度画像のそれぞれから手中心及び上肢の関節を検出し該手中心及び関節の三次元座標を算出する。本実施形態の手位置検出装置1は、深度画像から手中心及び上肢の関節を検出し三次元座標を算出する処理として、図19のフローチャートに沿った座標算出処理を行う。
図19は、第2の実施形態に係る座標算出処理の内容を説明するフローチャートである。なお、図19のフローチャートにおける各処理ステップのうちの、図3のフローチャートにおける処理ステップと処理内容が同じである処理ステップには、図3のフローチャートの処理ステップと同じ符号(例えばS1及びS2等)を付している。
本実施形態の手位置検出装置1は、図19のように、まず、処理の対象とする深度画像を選択する(ステップS1)、選択した深度画像から体領域を検出する(ステップS12)。ステップS1及びS12の処理は、例えば、手位置検出装置1における関節位置算出部120の体領域検出部124が行う。体領域検出部124は、例えば、体領域を検出する処理を行っていない深度画像のうちの、撮像時刻が最も早い深度画像を選択する。深度画像を選択した後、体領域検出部124は、選択した深度画像における各点(各画素)の深度値と、背景画像191における各点の深度値とに基づいて、深度画像における体領域を検出する。体領域を検出するステップS12の処理において、体領域検出部124は、例えば、まず、深度画像のうちの体領域検出エリアに対する背景差分法により、該体領域検出エリア内から体領域の候補を検出する。その後、体領域検出部124は、体領域の候補の輪郭部分における深度値の分布に基づいて、体領域の輪郭を補正し、体領域を抽出する。
次に、手位置検出装置1は、選択した深度画像から上肢領域を検出する(ステップS2)。ステップS2の処理は、手位置検出装置1における関節位置算出部120の上肢領域検出部121が行う。上肢領域検出部121は、例えば、深度画像のうちの上肢領域検出エリアに対する背景差分法により、該上肢領域検出エリア内から上肢領域を検出する。このとき、上肢領域検出部121は、例えば、背景画像191における深度値との差が閾値以上となる複数の領域のうちの、深度値が深度センサ2から上肢までの距離と対応する領域を、上肢領域として検出する。
次に、手位置検出装置1は、深度画像から上肢領域を検出したか否かを判定する(ステップS3)。ステップS3の判定は、上肢領域検出部121が行う。上肢領域が検出されなかった場合(ステップS3;NO)、上肢領域検出部121は、例えば、選択中の深度画像から上肢領域が検出されなかったことを示す情報を座標履歴193に格納し(ステップS11)、該深度画像に対する座標算出処理を終了させる。一方、深度画像から上肢領域を検出した場合(ステップS3;YES)、手位置検出装置1は、ステップS14,S15,S6,及びS7の処理を行う。
深度画像から上肢領域を検出した場合(ステップS3;YES)、手位置検出装置1は、次に、深度画像における上肢領域内の手中心の位置を検出する(ステップS14)。ステップS14の処理は、手位置検出装置1における関節位置算出部120の画像内位置検出部122が行う。画像内位置検出部122は、例えば、上肢領域の形状及び位置に基づいて深度画像内における上肢領域内で手中心の位置を検出する。画像内位置検出部122は、例えば、深度画像において上肢の延伸方向(関節間を結ぶ線分の方向)となり得る方向に基づいて、上肢領域における上肢の延伸方向と直交した方向の寸法を縮めて、上肢の延伸方向を示す線分を抽出する。線分を抽出した後、画像内位置検出部122は、線分上の各点のなかから手中心の位置を検出する。画像内位置検出部122は、例えば、深度画像内における手(手のひら)の大きさと対応した領域を示す情報に基づいて、線分上での手中心の位置を検出する。
手中心の位置を検出した後、手位置検出装置1は、手中心及び上肢の関節の三次元座標を算出する(ステップS15)。ステップS15の処理は、手位置検出装置1における関節位置算出部120の三次元座標算出部123が行う。三次元座標算出部123は、ピンホールカメラモデルを適用し、深度画像から検出した上肢領域毎に、手中心及び関節の三次元座標を算出する。1つの上肢領域と対応する手中心及び関節の三次元座標を算出する処理において、三次元座標算出部123は、まず、手中心の三次元座標を算出する。次に、三次元座標算出部123は、深度画像から検出した体領域の形状及び位置に基づいて、上肢領域と対応する肩の位置を推定する。その後、三次元座標算出部123は、手中心の三次元座標と、推定した肩の位置とに基づいて、手首の三次元座標、肘の三次元座標、及び肩の三次元座標を順次算出する。手首、肘、及び肩の三次元座標を算出する際、三次元座標算出部123は、例えば、手中心の位置と、推定した肩の位置とに基づいて、上肢の延伸方向を決定し、決定した該上肢の延伸方向を示す線分上で手首、肘、及び肩の三次元位置を検出し、それぞれの三次元座標を算出する。
手中心及び関節の三次元座標を算出すると、手位置検出装置1は、次に、座標補正処理(ステップS6)を行う。座標補正処理は、手位置検出装置1の補正部130が行う。補正部130は、第1の実施形態で説明したように、まず、上肢領域毎に、手中心及び関節の現在の三次元座標の空間整合性及び時間整合性についての判別を行う。そして、1つの上肢領域と対応する手中心及び関節の全ての三次元座標が空間的及び時間的に整合する場合、補正部130は、該上肢領域と対応する手中心及び関節の三次元座標の補正は不要と判定する。この場合、補正部130は、判定の対象となっている上肢領域と対応する手中心及び関節の現在の三次元座標を座標履歴に格納する三次元座標に決定し、座標補正処理を終了する。一方、手中心及び関節のいずれかの三次元座標が、空間的又は時間的に整合していない場合、補正部130は、手中心及び関節の三次元座標を補正すると判定する。この場合、補正部130は、まず手中心の三次元座標を補正し、補正後の手中心の三次元座標に基づいて手首、肘、及び肩の三次元座標を補正する。また、三次元座標を補正した場合、補正部130は、補正後の三次元座標の整合性についての判定を行う。その後、補正部130は、整合していると判定するか、三次元座標の補正回数が上限値に達するまで、三次元座標の補正を繰り返す。補正後の三次元座標が空間的及び時間的に整合していると判定した場合、又は三次元座標の補正回数が上限値に達した場合、補正部130は、現在の三次元座標を座標履歴193に格納する三次元座標に決定し、座標補正処理を終了する。
座標補正処理を終えると、手位置検出装置1は、手中心及び関節の三次元座標を座標履歴193に格納し(ステップS7)、現在処理の対象となっている深度画像に対する座標算出処理を終了する。
このように、本実施形態の手位置検出装置1は、深度画像から対象者の胴体部分を示す体領域を検出し、該体領域に基づいて推定した対象者の肩の位置を利用して、対象者の上肢の関節の位置(三次元座標)を算出する。
図20は、深度画像から体領域を検出する処理の内容を説明するフローチャートである。
深度画像から体領域を検出する処理(ステップS12)は、体領域検出部124が行う。体領域検出部124は、図20のように、まず、深度画像と背景画像とに基づいて、深度画像における体領域検出エリアを二値化する(ステップS1201)。ステップS1201の処理では、体領域検出部124は、手中心及び関節を検出する深度画像を上肢領域検出エリアと体領域検出エリアとに分割し、体領域検出エリアに対する背景差分法により、体領域検出エリアを二値化する。ここで、上肢領域検出エリアは、深度画像の撮像範囲内のうちの、対象者の上肢(特に手の部分)が移動する部分領域である。一方、体領域検出エリアは、深度画像の撮像範囲内のうちの、対象者の胴体部分が存在する領域である。深度画像における上肢領域検出エリアと体領域検出エリアとの境界は、例えば、深度画像の撮像範囲と、該撮像範囲内における対象者の立ち位置とに基づいて予め設定しておく。体領域検出部124は、深度画像の体領域検出エリアに含まれる画素毎に、深度画像における深度値と背景画像の対応する画素の深度値との差を算出し、算出した差と閾値との大小関係に基づいて、深度値を二値化する。
次に、体領域検出部124は、二値化した体領域検出エリアにおける、深度値の差が閾値以上である画素が連続した領域のうちの最大領域を体領域として選択する(ステップS1202)。
その後、体領域検出部124は、選択した体領域の輪郭部分における深度値に基づいて体領域を補正し(ステップS1203)、深度画像から体領域を検出する処理を終了する。ステップS1203の処理では、体領域検出部124は、深度画像における体領域の輪郭を境として隣接する体領域内の画素と体領域外の画素との深度値の差に基づいて、体領域の輪郭の位置を補正する。例えば、体領域検出部124は、体領域内の画素と体領域外の画素との深度値の差が所定の範囲内である場合、体領域外の画素が体領域に含まれるよう輪郭を広げる補正をする。このとき、体領域検出部124は、体領域の輪郭が上肢領域検出エリアに張り出すことを許容する。
体領域を検出する処理の後、手位置検出装置1は、深度画像から上肢領域を検出する処理(ステップS2)を行う。上肢領域を検出する処理は、手位置検出装置1における関節位置算出部120の上肢領域検出部121が行う。上肢領域検出部121は、深度画像から上肢領域を検出する処理として、例えば、図21のフローチャートに沿った処理を行う。
図21は、深度画像から上肢領域を検出する処理の内容を説明するフローチャートである。
上肢領域を検出する処理では、上肢領域検出部121は、図21のように、まず、深度画像と背景画像とに基づいて、深度画像における上肢領域検出エリア内の各点(各画素)の深度値の差を算出する(ステップS201)。
次に、上肢領域検出部121は、算出した深度値の差に基づいて、上肢領域検出エリアを複数の領域に分割する(ステップS202)。ステップS202の処理では、上肢領域検出部121は、例えば、深度値の差を複数の区間に分割し、各画素の深度値の差が複数の区間のいずれの区間に含まれるかに基づいて、上肢領域検出エリアを複数の領域に分割する。このとき、深度値の差は、例えば、背景画像に存在する物体と対象者の上肢との深度値の差と、背景画像に存在する物体と対象者の頭部との深度値の差とが異なる区間になるよう分割する。
その後、上肢領域検出部121は、深度値の差が所定の範囲内である領域を上肢領域として抽出し(ステップS203)、深度画像から上肢領域を検出する処理を終了する。ステップS203では、上肢領域検出部121は、深度値の差に基づいて分割した上肢領域検出エリア内の複数の領域のうちの、深度値の差が背景画像に存在する物体と対象者の上肢との深度値の差と対応した区間に含まれる領域を、上肢領域として抽出する。
深度画像から上肢領域を検出した後、手位置検出装置1は、上肢領域毎に手中心の位置を検出する(ステップS14)。ステップS14の処理は、画像内位置検出部122が行う。画像内位置検出部122は、第1の実施形態で説明したような方法により、上肢領域毎に手中心の位置を検出する。なお、上肢領域を線分群に変換して手中心の位置を検出することができない場合、画像内位置検出部122は、上肢領域内における任意の一点を手中心の位置として検出する。
手中心の位置を検出した後、手位置検出装置1は、上肢領域毎に手中心及び関節の三次元座標を算出する(ステップS15)。ステップS15の処理は、三次元座標算出部122が行う。本実施形態の手位置検出装置1における三次元座標算出部122は、手中心及び関節の三次元座標を算出する処理として、例えば、図21のフローチャートに沿った処理を行う。
図22は、手中心及び関節の三次元座標を算出する処理の内容を説明するフローチャートである。
本実施形態に係る三次元座標算出部122は、図22のように、まず、深度画像から検出した体領域に基づいて体重心の三次元座標を算出し(ステップS1501)、深度画像内における肩の位置を推定する(ステップS1502)。ステップS1501の処理では、三次元座標算出部122は、まず、深度画像から検出した体領域における体重心の位置を算出する。その後、三次元座標算出部122は、ピンホールカメラモデルを適用し、深度画像における体重心の位置(座標)と該位置の深度値とに基づいて、深度画像を撮像した三次元空間における体重心の三次元座標を算出する。このとき、三次元座標算出部122は、世界座標系での三次元座標を算出する。
また、ステップS1502の処理では、三次元座標算出部122は、まず、所定の身長値から深度画像を撮像した三次元空間における両肩のおおよその高さと肩幅を算出する。ここで、肩幅は、例えば、ウィトルウィウィス的人体比率に基づいて算出する。その後、三次元座標算出部122は、例えば、深度画像における横方向中心が肩幅の中心となるよう、両肩の位置を算出する。
次に、三次元座標算出部122は、上肢領域を1つ選択し、該上肢領域から検出した手中心の三次元座標を算出する(ステップS1503)。ステップS1503の処理では、三次元座標算出部122は、深度画像から検出した上肢領域のうちの、手中心の三次元座標を算出していない上肢領域を選択する。また、ステップS1503の処理では、三次元座標算出部122は、ピンホールカメラモデルを適用し、深度画像内における手中心を示す点P0の位置(座標)と、該位置の深度値とに基づいて、深度画像を撮像した三次元空間における手中心の三次元座標を算出する。
次に、三次元座標算出部122は、深度画像内での手首の位置を検出し、該手首の三次元座標を算出する(ステップS1504)。ステップS1504の処理では、三次元座標算出部122は、例えば、深度画像から抽出した上肢の延伸方向を示す線分群から検出した手中心の位置と、線分の折れ曲がり位置とに基づいて、深度画像における手首の位置を検出する。なお、上肢領域から線分群を抽出できなかった場合等、線分を利用して手首の位置を検出することができない場合、三次元座標算出部122は、例えば、手中心から手首までの寸法の平均値(例えば60mm)に基づいて深度画像における手首の位置を検出する。この場合、三次元座標算出部122は、例えば、深度画像における手中心の位置と肩の推定位置とを結ぶ線分上であって、手中心からの三次元距離が手中心から手首までの寸法の平均値となるような位置を手首の位置として検出する。
次に、三次元座標算出部122は、深度画像内での肘の位置を検出し、該肘の三次元座標を算出する(ステップS1505)。ステップS1505の処理では、三次元座標算出部122は、例えば、深度画像から抽出した上肢の延伸方向を示す線分群から検出した手首の位置と、線分の折れ曲がり位置とに基づいて、深度画像における肘の位置を検出する。なお、上肢領域から線分群を抽出できなかった場合等、線分を利用して肘の位置を検出することができない場合、三次元座標算出部122は、例えば、手首から肘までの寸法の平均値(例えば260mm)に基づいて深度画像における肘の位置を検出する。この場合、三次元座標算出部122は、例えば、深度画像における手首の位置と肩の推定位置とを結ぶ線分上であって、手首からの三次元距離が手首から肘までの寸法の平均値となるような位置を肘の位置として検出する。
次に、三次元座標算出部122は、深度画像内での肩の位置を検出し、該肩の三次元座標を算出する(ステップS1506)。ステップS1505の処理では、三次元座標算出部122は、例えば、深度画像から抽出した上肢の延伸方向を示す線分群から検出した肘の位置と、線分の終点又は折れ曲がり位置とに基づいて、深度画像における肩の位置を検出する。なお、上肢領域から線分群を抽出できなかった場合等、線分を利用して肩の位置を検出することができない場合、三次元座標算出部122は、例えば、推定した肩の位置と、肘から肩までの寸法の平均値とに基づいて深度画像における肩の位置を検出する。この場合、三次元座標算出部122は、例えば、深度画像における肘の位置と肩の推定位置とを結ぶ線分上であって、手首からの三次元距離が手首から肘までの寸法の平均値となるような位置を肘の位置として検出する。
ステップS1504〜S1506により手首、肘、及び肩の三次元座標を算出した後、三次元座標算出部122は、未選択の上肢領域があるか否かを判定する(ステップS1507)。ステップS1507の判定では、三次元座標算出部122は、手中心及び各関節の三次元座標を算出していない上肢領域がある場合に、未選択の上肢領域があると判定する。未選択の上肢領域がある場合(ステップS1507;YES)、三次元座標算出部122は、ステップS1503以降の処理を繰り返す。そして、全ての上肢領域で手中心及び各関節の三次元座標を算出した場合(ステップS1507;NO)、三次元座標算出部122は、手中心及び関節の三次元座標を算出する処理を終了する。
手中心及び関節の三次元座標を算出する処理(ステップS15)が終了すると、手位置検出装置1は、次に、座標補正処理(ステップS6)を行う。座標補正処理は、手位置検出装置1の補正部130が行う。本実施形態の手位置検出装置1における補正部130は、座標補正処理として、例えば、図4のフローチャートに沿った処理を行う。なお、本実施形態に係る補正部130は、図4のフローチャートにおける整合性判別処理(ステップS603)として、例えば、図23のフローチャートに沿った処理を行う。
図23は、第2の実施形態における整合性判別処理の内容を説明するフローチャートである。
図23の整合性判別処理(ステップS603)は、補正部130の整合性判定部131が行う。本実施形態の手位置検出装置1における整合性判定部131は、図23のように、まず、手中心及び各関節を識別する変数iを「0」にするとともに、整合性パラメータCiを「True」に設定する(ステップS60301)。ここで、変数iは、1個の上肢領域から手中心及び各関節の位置を検出したときに、手中心及び各関節のそれぞれを識別するために付した数値(0,1,2,・・・)である。整合性パラメータCiは、変数iにより指定される手中心又は関節を示す点Piの三次元座標が空間的かつ時間的に整合しているか否かを示す値である。本実施形態では、整合性パラメータCiは、「True」と「False」との2つの値のいずれかの値とする。「True」は、三次元座標が空間的かつ時間的に整合していることを示す値である。「False」は、三次元座標が空間的又は時間的に整合していないことを示す値である。
次に、整合性判定部131は、手中心又は関節を示す点Piの三次元座標(Xi,Yi,Zi)から深度画像内での座標(xi,yi)と距離ziとを算出する(ステップS60302)。ステップS60302では、整合性判定部131は、深度画像内での手中心又は関節を示す点Piの位置と対応する三次元座標(Xi,Yi,Zi)を算出する際の算出式に基づく逆算(逆変換)により、深度画像内での座標(xi,yi)と距離ziとを算出する。
次に、整合性判定部131は、深度画像における座標(xi,yi)の深度値zi’を読み出し(ステップS60303)、zi’>zi+Mであるか否かを判定する(ステップS60304)。zi’>zi+Mである場合(ステップS60304;YES)、整合性判定部131は、整合性パラメータCiを「False」に変更する(ステップS60312)。
一方、zi’≦zi+Mである場合(ステップS60304;NO)、整合性判定部131は、次に、点Piの移動速度Siを算出する(ステップS60308)。ステップS60308の処理では、整合性判定部131は、まず、座標履歴193を参照して点Piについての過去の三次元座標を読み出し、現在の三次元座標と過去の三次元座標との三次元距離Diを算出する。三次元距離Diを算出した後、整合性判定部131は、算出した三次元距離Diと、深度画像の撮像時刻の差とに基づいて、移動速度Siを算出する。
次に、整合性判定部131は、算出した移動速度Siが閾値THSよりも大きいか否かを判定する(ステップS60309)。閾値THSは、例えば、人が上肢を動かす際の手中心及び各関節の平均的な移動速度に基づいて設定する。すなわち、整合性判定部131は、算出した移動速度SiがSi>THSである場合には、移動速度Siの算出に用いた2つの三次元座標の位置関係が時間的に整合していないと判定する。よって、Si>THSである場合(ステップS60309;YES)、整合性判定部131は、整合性パラメータCiを「False」に変更する(ステップS60312)。
ステップS60312の処理を行った場合、或いはSi≦THSである場合(ステップS60309;NO)、整合性判定部131は、次に、現在処理対象である手中心及び関節を示す点のなかに未判定の点があるか否かを判定する(ステップS60310)。すなわち、ステップS60310の判定を行う時点で、現在処理対象となっている手中心又は関節を示す点Piについての整合性パラメータCiは、「True」及び「False」のいずれかの値に確定する。
整合性を判定していない点がある場合(ステップS60310;YES)、整合性判定部131は、変数iをi+1に更新し整合性パラメータCiを「True」に設定する(ステップS60311)。その後、整合性判定部131は、ステップS60302以降の処理を行う。そして、全ての手中心及び関節の整合性を判定した場合(ステップS60310;NO)、整合性判定部131は、整合性判別処理を終了する。
このように、図23の整合性判別処理では、図5の整合性判別処理におけるステップS60305からステップS60307までの処理が省略されている。すなわち、本実施形態の整合性判定部131が行う整合性判別処理では、手中心又は関節を示す点Piの三次元座標から算出した距離ziと、深度画像における深度値zi’とが整合しない場合、点Piの三次元座標は空間的に整合しないと判定する。このため、本実施形態の手位置検出装置1では、三次元距離lenを算出して対象者の寸法との整合性を判定する場合に比べて処理数が低減し、手位置検出装置1の処理負荷を軽減することが可能となる。なお、本実施形態の手位置検出装置1における整合性判別処理として、整合性判定部131が図5のフローチャートに沿った処理を行ってもよいことはもちろんである。また、整合性判定部131は、整合性判別処理として、図17A及び図17Bのフローチャートに沿った処理を行ってもよい。
図24は、深度画像の撮像範囲を説明する図である。
図24には、本実施形態の手位置検出装置1の適用例として、作業スペース6内で作業を行う作業員7の手中心の位置の時間履歴に基づいて作業状況を管理する管理システム5を示している。該管理システム5は、手位置検出装置1と、深度センサ2と、管理装置3Aとを含む。管理システム5における手位置検出装置1及び深度センサ2は、それぞれ、インターネット等の通信ネットワーク4に接続可能な通信機能を含む。また、管理システム5における管理装置3Aは、図1の外部装置3の一例である。なお、図24に示したx方向、y方向、及びz方向は、それぞれ、作業スペース6における深度センサ2の座標系のx軸方向、y軸方向、及びz軸方向を示している。
この種の管理システム5では、例えば、管理システム5の管理者或いは作業員7等が、予め、作業員7の上肢の寸法を入力した寸法情報192を作成し、該寸法情報192を手位置検出装置1の記憶部190に記憶させておく。また、この種の管理システム5では、例えば、作業員7が作業を行っていない期間に、作業スペース6の上方に設置した深度センサ2により深度画像を撮像し、該深度画像を背景画像191として記憶部190に記憶させておく。深度センサ2は、作業員7が作業を行う作業台8Aにおける作業エリアを含む撮像範囲10内のU×V個の点についての深度値(距離の情報)を持つ深度画像を撮像する。
また、本実施形態で例示する管理システム5では、図24のように、深度センサ2の撮像範囲10が作業エリアよりも作業者7側に張り出している。このため、作業者7が作業を行っているときに深度センサ2で撮像した深度画像には、作業者7の頭部750や胴体760についての深度値の情報が含まれる。
図25は、深度画像の例を示す図である。
図25の深度画像1101は、図24の作業エリア6内で作業員7が作業を行っているときに深度センサ2で撮像した深度画像である。深度画像1101は、撮像範囲10内のU×V個の点のそれぞれについての深度値の情報を含む。
深度画像1101の撮像範囲10は、作業領域である作業台8Aと隣接する作業員7が立っている領域を含む。このため、深度画像1101は、作業台8Aを示す領域と、作業員7の左上肢710を示す領域と、右上肢720を示す領域との他に、頭部750の深度値を示す領域と、作業員7の胴体部分760の深度値を示す部分とを含む。なお、深度画像1101を撮像する深度センサ2は、作業員7の上方に設置されている。このため、深度画像1101における作業員7の左上肢710を示す領域と、右上肢720を示す領域は、それぞれ、作業員7の頭部750及び胴体部分760により一部分が欠落した状態となることがある。図25の深度画像1101では、作業員7の左上肢710のうちの手711の部分が頭部750に隠れており、肘713の部分が胴体部分760に隠れている。同様に、図25の深度画像1101では、作業員7の右上肢720のうちの手721の部分が頭部750に隠れており、肘713の部分が胴体部分760に隠れている。
本実施形態の手位置検出装置1は、上記のように、まず、処理対象である深度画像から体領域を検出する処理(ステップS12)と、上肢領域を検出する処理(ステップS2)とを行う。
図26Aは、体領域の検出方法を説明する図(その1)である。図26Bは、体領域の検出方法を説明する図(その2)である。
図26Aの(a)には、深度画像1101における体領域検出エリア1105と、上肢領域検出エリア1106とを示している。体領域検出エリア1105は、作業台8Aにおける作業領域と隣接する、作業員7が立っている領域である。このため、以下の説明では、背景画像において作業台8Aの下端となる位置を境界Bとし、深度画像1101における境界Bよりも下方側の部分領域を体領域検出エリア1105とする。すなわち、体領域検出部124は、まず、深度画像1101における境界Bよりも下方側である体領域検出エリア1105に含まれる各位置(画素)の深度値に基づいて二値画像を生成する。
体領域検出部124が二値画像を生成する際に用いる背景画像は、図示は省略するが、深度画像1101における境界Bを含む境界Bよりも上方側に作業台8Aの深度値を示す領域のみが存在し、境界Bよりも下方側には床面の深度値を示す領域のみが存在する。このため、体領域検出エリア1105の深度値に基づいて生成される二値画像は、例えば、図26Aの(b)の二値画像1102のようになる。なお、図26Aの(b)の二値画像では、上肢領域検出エリア1106内の各位置(画素)の深度値を、体領域検出エリア1105における体領域1102C外の深度値と一致させている。
すなわち、体領域検出エリア1105内での深度値の差に基づいて生成される二値画像1102における体領域1102Cは、上肢領域検出エリア1106内に存在する作業員7の胴体部分を含まない。このため、体領域1102Cは、作業員7の胴体部分を正しく示しているとはいえない。よって、体領域検出部124は、次に、体領域1102Cの輪郭部分における深度値に基づいて、体領域1102Cを補正する。
図26Aの(a)の深度画像1101と(b)の二値画像1102とを比較すると、体領域1102Cの輪郭のうちの境界Bと重なる部分に、体領域1102C内の深度値と体領域1102C外の深度値との差が略0となる区間が存在する。このため、体領域検出部124は、体領域1102Cの輪郭のうちの、体領域1102C内の深度値と体領域1102C外の深度値との差が略0となる部分を、上肢領域検出エリア1106側に広げる。これにより、体領域検出部124は、例えば、図26Bの二値画像1102のように、深度画像1101における胴体部分760の深度値を示す領域と対応した体領域1102Dを検出する。
深度画像1101から体領域1102Dを検出した後、手位置検出装置1では、上肢領域検出部121が深度画像1101から上肢領域を検出する。上肢領域検出部121は、背景差分法により、深度画像1101における上肢領域検出エリア1106内から上肢領域を検出する。
図27は、上肢領域の検出結果の例を示す図である。
図27の二値画像1102は、図25の深度画像1101と、図示しない背景画像191とに基づいて生成される二値画像を示している。図25の深度画像1101には、背景画像191には存在しない作業者7の頭部750、胴体部分760、左上肢710、及び右上肢720の各部についての深度値を示す領域が含まれる。従って、図25の深度画像1101と、背景画像191とに基づいて生成される二値画像1102では、第1の上肢領域1102A、第2の上肢領域1102B、体領域1102D、及び頭部領域1102Eが、背景から分離される。このため、上肢領域検出部121は、次に、背景から分離された4つの領域1102A,1102B,1102D,及び1102Eから、上肢領域1102A及び1102Bを抽出する。
背景から分離された4つの領域1102A,1102B,1102D,及び1102Eのうちの、上肢領域1102A及び1102Bと、体領域1102D及び頭部領域1102Eとでは、二値画像1102を生成する際に算出した深度値の差の大きさが異なる。上肢領域1102A及び1102Bと対応する作業員7の上肢710及び720は、体領域1102Dと対応する胴体部分760及び頭部領域1102Eと対応する頭部750よりも作業台8Aに近い位置に存在する。このため、上肢領域1102A及び1102B内の画素における深度値の差は、体領域1102D及び頭部領域1102E内の画素における深度値の差よりも小さくなる。よって、上肢領域検出部121は、背景から分離された4つの領域1102A,1102B,1102D,及び1102Eのうちの、深度値の差が第1の閾値と第2の閾値との間となる小さい領域1102A及び1102Bを上肢領域として検出する。この場合、上肢領域検出部121は、二値画像1102においては、図27のように、深度値の差が第2の閾値よりも大きくなる領域1102D及び1102Eを背景とみなす。従って、画像内位置検出部122は、深度画像1101内での手中心の位置を検出する際に、図27の二値画像1102における白地の領域(第1の上肢領域1102A及び第2の上肢領域1102B)のそれぞれから、手中心の位置を検出する。
図28は、手中心の位置の検出結果の例を示す図である。
図28の深度画像1101には、図27の二値画像1102に基づいて検出した第1の上肢領域1101A及び第2の上肢領域1101Bと、各上肢領域1101A及び1101Bから検出した手中心を示す点P0の位置を示している。
画像内位置検出部122は、第1の実施形態で説明したように、上肢領域を線分化して上肢の延伸方向を示す線分群に変換し、線分群の線分上で手中心の位置を検出する。このため、画像内位置検出部122は、図28の深度画像1101のように、第1の上肢領域1101A内の手中心を示す点P0の位置として該領域内の位置Q10を検出し、第2の上肢領域1102B内の手中心を示す点P0の位置として該領域内の位置Q20を検出する。
画像内位置検出部122が手中心を示す点P0の位置を検出した後、本実施形態の手位置検出装置1では、三次元座標算出部123が手中心及び上肢の関節の三次元座標を算出する処理(ステップS15)を行う。
図29は、左上肢の関節の位置の決定方法を説明する図である。図30は、決定した手中心及び関節の位置を示す図である。
三次元座標算出部123は、深度画像1101(二値画像1102)から検出した上肢領域毎に、関節の位置を決定する。図29の(a)の深度画像1101には、処理の対象が第1の上肢領域1101Aである場合の手首を示す点P1の位置Q11の例を示している。図29の(a)の深度画像1101を撮像した時点では、作業員7の左上肢710における手首から肩までの部分のうちの大部分が胴体部分760に隠れている。このため、深度画像1101における第1の上肢領域1101Aは上肢の延伸方向となり得る方向の寸法が短く、三次元座標算出部123は、上肢領域を線分化した線分群から手首の位置を検出することができない。この場合、三次元座標算出部123は、第1の上肢領域1101Aから検出した手中心を示す点P0の位置Q10と、手中心から手首までの寸法の平均値(例えば60mm)とに基づいて、手首を示す点P1の位置を決定する。このとき、三次元座標算出部123は、例えば、深度画像1101内における手中心の位置Q10と、肩の推定位置QS1とを通る線分LS1上であって、手中心の位置Q10からの距離がL1’となる位置Q11を、手首を示す点P1の位置とする。ここで、手中心の位置Q10と手首の位置Q11との距離L1’は、三次元距離が手中心から手首までの寸法と略一致する距離とする。すなわち、深度画像1101における上肢領域を線分化した線分群から手首の位置を検出することができない場合、三次元座標算出部123は、手首を示す点P1の三次元座標を算出した後、深度画像1101内における点P1の位置を決定する処理を行う。
第1の上肢領域1101Aと対応する手首の位置を決定した後、三次元座標算出部123は、決定した手首の位置に基づいて、肘を示す点P2の位置を決定する。三次元座標算出部123は、手中心の位置に基づいて手首の位置を決定するときと同様の方法により、肘を示す点P2の位置を決定する。すなわち、三次元座標算出部123は、図29の(b)の深度画像1101のように、手首の位置Q11を通る線分LS1上であって、該位置Q11からの距離L2’が手首から肘までの寸法と対応する距離となる位置Q12を、肘を示す点P2の位置に決定する。ここで、手首の位置Q11と肘の位置Q12との距離L2’は、三次元距離が手首から肘までの寸法と略一致する距離とする。すなわち、深度画像1101における上肢領域を線分化した線分群から肘の位置を検出することができない場合、三次元座標算出部123は、肘を示す点P2の三次元座標を算出した後、深度画像1101内における点P2の位置を決定する処理を行う。
第1の上肢領域1101Aと対応する手首の位置を決定した後、三次元座標算出部123は、決定した肘の位置と、肩の推定位置とに基づいて、左肩を示す点P3の位置を決定する。
第1の上肢領域1101Aと対応する左上肢の手首、肘、及び肩の位置を決定してそれぞれの三次元座標を算出した後、三次元座標算出部123は、第2の上肢領域1102Bと対応する右上肢の手首、肘、及び肩の位置を決定してそれぞれの三次元座標を算出する。三次元座標算出部123は、例えば、図30の深度画像1101における線分LS2上の位置Q21を第2の上肢領域1101Bと対応する手首を示す点P1の位置に決定して三次元座標を算出する。また、三次元座標算出部123は、例えば、図29の深度画像1101における線分LS2上の位置Q22を第2の上肢領域1101Bと対応する手首を示す点P1の位置に決定して三次元座標を算出する。
手中心及び関節の三次元座標を算出した後、手位置検出装置1は、座標補正処理(ステップS6)において整合性判別処理(ステップS603)を行い、手中心及び関節の三次元座標の補正の要否を判定する。本実施形態の手位置検出装置1は、整合性判別処理として、図23のフローチャートに沿った処理を行う。すなわち、手中心又は関節を示す点Piの三次元座標から算出した距離値ziと深度画像1101における深度値zi’との関係がzi’>zi+Mである場合、手位置検出装置1は、点Piと対応する手中心又は関節が空間的に整合していないと判定する。図30の深度画像1101における、第1の上肢領域1101Aと対応する手首を示す点P1及び肘を示す点P2は、それぞれ、第1の上肢領域1101Aの外側に存在する。ただし、点P1の位置Q11は体領域1101D内であり、点P2の位置Q12は体領域1101Dの外側である。すなわち、位置Q11の深度値z1は、深度センサ2から胴体部分までの距離を示す値であり、深度センサ2から上肢(手首)までの距離を示す値よりも小さい。これに対し、点P2の深度値は、深度センサ2から床までの距離を示す値であり、深度センサ2から上肢(手首)までの距離を示す値よりも大きい。このため、第1の上肢領域1101Aと対応する手中心及び関節を処理の対象とする整合性判別処理において、手位置検出装置1の整合性判別部131は、肘を示す点P2が空間的に整合していないと判別する。この場合、整合性判定部131は、手中心及び各関節の三次元座標を再計算する処理を再計算部132に行わせる。再計算部132は、第1の実施形態で説明したように、深度画像1101内で手中心を示す点P0の位置を変更し、変更後の点P0の位置に基づいて、手中心及び各関節の三次元座標を算出する(再計算する)。
図31は、手中心及び関節の位置の補正方法を説明する図である。
図31の深度画像1101には、第1の上肢領域1101Aと対応する手中心及び肘の位置の補正例を示している。
第1の上肢領域1101Aと対応する手首を示す点P1及び肘を示す点P2が空間的に整合していない場合、再計算部132は、まず、深度画像1101内での手中心を示す点P0の位置を変更する。このとき、再計算部132は、例えば、図30のように、手首の位置Q11を始点とし、変更前の手中心の位置Q10を終点とするベクトルの方向であって、手中心の位置Q10から所定の距離となる位置Q10’に、手中心を示す点P0の位置を変更する。言い換えると、再計算部132は、変更前の手中心の位置Q10と手首の位置Q11とを通る線分LS1上であって、手首の位置Q11から離間する(遠ざかる)方向に手中心の位置を変更する。
手中心を示す点P0の位置を位置Q10’に変更した後、再計算部132は、深度画像1101における変更後の位置Q10’(座標)に基づいて、手中心を示す点P0の三次元座標を算出する。この際、再計算部132は、第1の実施形態で説明したように、変更後の位置Q10’が第1の上肢領域1101A内であるか否かに応じて、三次元座標の算出に用いる深度値を切り替える。変更後の位置Q10’が第1の上肢領域1101A内である場合、再計算部132は、位置Q10’の深度値を利用して三次元座標を算出する。一方、変更後の位置Q10’が第1の上肢領域1101A外である場合、再計算部132は、例えば、第1の上肢領域1101A内における線分LS1上での深度値の分布に基づいて、三次元座標の算出に用いる深度値を算出する(推定する)。
その後、図示は省略するが、再計算部132は、変更後の手中心の位置Q10’に基づいて、手首を示す点P1の位置を変更し、変更後の点P1の三次元座標を算出する。その後更に、再計算部132は、図31のように、肘を示す点P2の位置を、位置Q12から位置Q12’に変更し、変更後の点P2の三次元座標を算出する。ここで、図31のように、肘を示す点P2の変更後の位置Q12が胴体部分と対応する体領域1101Dに含まれるとすると、深度画像1101における位置Q12’の深度値は、深度センサ2から上肢(肘)までの距離を示す値よりも小さくなる。このため、再計算部132が三次元座標を算出した後で整合性判定部131が行う整合性判別処理では、肘を示す点P2の三次元座標から算出した距離z2と、深度画像1101の位置Q12’の深度値z2’との関係がz2’≦z2+Mとなる。よって、整合性判定部131は、肘を示す点P2の三次元座標が空間的に整合すると判定する。従って、肘を示す点P2の移動速度S2と閾値THSとの関係がS2≦THSとなれば、肘を示す点P2の整合性パラメータC2は「True」のままとなる。この場合、整合性判定部131は、肘を示す点P2は空間的及び時間的に整合すると判別する。
また、図31の深度画像1101では、第2の上肢領域1101Bと対応する手首を示す点P1の位置Q21が第2の上肢領域1101B内であり、肘を示す点P2の位置Q22が体領域1101D内である。この場合、整合性判定部131は、第2の上肢領域1101Bと対応する手中心及び関節を処理の対象とした整合性判別処理において、点P1及び点P2の三次元座標が空間的に整合していると判定する。このため、点P1及び点P2の三次元座標が時間的にも整合している場合には、整合性判定部131は、第2の上肢領域1101Bと対応する手中心及び各関節の三次元座標を、座標履歴193に格納する三次元座標に決定する。
このように、本実施形態の手位置検出装置1では、深度画像における上肢領域内から手中心を示す点の位置を検出した後、検出した該手中心の位置に基づいて、手中心及び上肢の関節の三次元座標を算出する。このとき、手位置検出装置1は、深度画像における関節の位置が上肢領域外となることを許容し、手中心及び各関節の三次元空間での位置関係が上肢の寸法と略一致するように各関節の三次元座標の位置(三次元座標)を決定する。その後、手位置検出装置1は、手中心及び各関節の三次元座標から算出される距離と深度画像における深度値とに基づいて三次元座標の空間的な整合性について判別し、空間的に整合していない場合には手中心及び各関節の三次元座標を補正する。本実施形態の手位置検出装置1では、深度画像における深度値が関節の三次元座標から算出した距離よりも大きい場合には、該関節の三次元座標が空間的に整合していないと判別して三次元座標を補正する。よって、本実施形態の手位置検出装置1では、上肢の関節が胴体部分や頭部により隠れている深度画像から、上肢の関節の三次元座標を正しく算出することが可能となる。
なお、図3のフローチャートは、本実施形態の手位置検出装置1が行う座標算出処理の一例に過ぎない。本実施形態の手位置検出装置1が行う座標算出処理は、本実施形態の要旨を逸脱しない範囲において適宜変更可能である。例えば、座標算出処理は、深度画像から体領域を検出する処理(ステップS12)と深度画像から上肢領域を検出する処理(ステップS2)との処理の順序が逆であってもよいし、該2つの処理が並列に行われるものであってもよい。
また、図20のフローチャートは、深度画像から体領域を検出する処理の一例に過ぎない。同様に、図21のフローチャートは、深度画像から上肢領域を検出する処理の一例に過ぎない。深度画像から体領域を検出する処理、及び上肢領域を検出する処理は、それぞれ、本実施形態の要旨を逸脱しない範囲において適宜変更可能である。また、例えば、深度画像から体領域を検出する処理と上肢領域を検出する処理とは、1つの処理としてもよい。すなわち、手位置検出装置1は、図27の二値画像1102を生成する際に検出される体領域1102Dのように、上肢領域1102A及び1102Bよりも深度値の差が大きく、かつ体領域検出エリアに含まれる領域を体領域として検出してもよい。
また、図22のフローチャートは、手中心及び関節の三次元座標を算出する処理の一例に過ぎない。本実施形態の手位置検出装置1が行う手中心の位置を検出する処理(ステップS14)と手中心及び関節の三次元座標を算出する処理(ステップS15)とは、本実施形態の要旨を逸脱しない範囲において適宜変更可能である。また、手中心及び関節の三次元座標を算出する処理では、上肢の寸法の平均値(例えば手中心から手首までの寸法の平均値)に限らず、寸法情報192に登録された対象者の寸法を用いて三次元位置を算出してもよい。
更に、図22のフローチャートは、整合性判別処理の一例に過ぎない。本実施形態の手位置検出装置1が行う整合性判別処理は、例えば、図5のフローチャートに沿った処理であってもよいし、図17A及び図17Bのフローチャートに沿った処理であってもよい。
上記の手位置検出装置1は、コンピュータと、該コンピュータに実行させるプログラムとにより実現可能である。以下、図32を参照して、コンピュータとプログラムとにより実現される距離計測装置1について説明する。
図32は、コンピュータのハードウェア構成を示す図である。
図32に示すように、コンピュータ20は、プロセッサ2001と、主記憶装置2002と、補助記憶装置2003と、入力装置2004と、出力装置2005と、入出力インタフェース2006と、通信制御装置2007と、媒体駆動装置2008と、を備える。コンピュータ20におけるこれらの要素2001〜2008は、バス2010により相互に接続されており、要素間でのデータの受け渡しが可能になっている。
プロセッサ2001は、Central Processing Unit(CPU)やMicro Processing Unit(MPU)等である。プロセッサ2001は、オペレーティングシステムを含む各種のプログラムを実行することにより、コンピュータ20の全体の動作を制御する。また、プロセッサ2001は、例えば、図3〜図6のフローチャートにおける各処理を含む手位置検出プログラムを実行することにより、深度画像を撮像した三次元空間における手中心及び上肢の関節の三次元座標を算出する。なお、手位置検出プログラムは、例えば、図19〜図23のフローチャートにおける各処理を含むプログラムであってもよい。また、手位置検出プログラムにおける座標補正処理(ステップS6)は、図4のフローチャートに沿った処理に限らず、例えば、図14A及び図14Bのフローチャートに沿った処理であってもよい。また、手位置検出プログラムにおける整合性判別処理(ステップS603)は、例えば、図17A及び図17Bのフローチャートに沿った処理であってもよい。
主記憶装置2002は、図示しないRead Only Memory(ROM)及びRandom Access Memory(RAM)を含む。主記憶装置2002のROMには、例えば、コンピュータ20の起動時にプロセッサ2001が読み出す所定の基本制御プログラム等が予め記録されている。また、主記憶装置2002のRAMは、プロセッサ2001が、各種のプログラムを実行する際に必要に応じて作業用記憶領域として使用する。主記憶装置2002のRAMは、例えば、背景画像191、寸法情報192、座標履歴193、及び深度画像194等の記憶に利用可能である。
補助記憶装置2003は、例えば、Hard Disk Drive(HDD)や、フラッシュメモリ等の不揮発性メモリ(Solid State Drive(SSD)を含む)等、主記憶装置2002のRAMと比べて容量の大きい記憶装置である。補助記憶装置2003は、プロセッサ2001によって実行される各種のプログラムや各種のデータ等の記憶に利用可能である。補助記憶装置2003は、例えば、上記の手位置検出プログラムの記憶に利用可能である。また、補助記憶装置2003は、例えば、背景画像191、寸法情報192、座標履歴193、及び深度画像194等の記憶に利用可能である。
入力装置2004は、例えば、キーボード装置、マウス装置、及びタッチパネル装置等である。入力装置2004は、例えば、寸法情報192の入力、及び背景画像191の設定に利用可能である。また、入力装置2004は、深度センサ2等の距離計測装置を含んでもよい。
出力装置2005は、例えば、液晶表示装置等の表示装置、及びプリンタ等である。出力装置2005は、例えば、座標履歴193の表示や印刷に利用可能である。
入出力インタフェース2006は、コンピュータ20と、他の電子機器とを接続する。入出力インタフェース2006は、例えば、Universal Serial Bus(USB)規格のコネクタ等を備える。入出力インタフェース2006は、例えば、コンピュータ20と、深度センサ2等の距離計測装置との接続に利用可能である。
通信制御装置2007は、コンピュータ20をインターネット等のネットワークに接続し、ネットワークを介したコンピュータ20と他の電子機器との各種通信を制御する装置である。通信制御装置2007は、例えば、ネットワーク4を介した、手位置検出装置1として動作させるコンピュータ20と深度センサ2との通信に利用可能である(図7及び図24を参照)。また、通信制御装置2007は、例えば、ネットワーク4を介した、手位置検出装置1として動作させるコンピュータ20と外部装置3との通信に利用可能である。
媒体駆動装置2008は、可搬型記録媒体21に記録されているプログラムやデータの読み出し、補助記憶装置2003に記憶されたデータ等の可搬型記録媒体21への書き込みを行う。媒体駆動装置2008には、例えば、1種類以上の規格に対応したメモリカード用リーダ/ライタが利用可能である。媒体駆動装置2008としてメモリカード用リーダ/ライタを用いる場合、可搬型記録媒体21としては、メモリカード用リーダ/ライタが対応している規格、例えば、Secure Digital(SD)規格のメモリカード(フラッシュメモリ)等を利用可能である。また、可搬型記録媒体21としては、例えば、USB規格のコネクタを備えたフラッシュメモリが利用可能である。更に、コンピュータ20が媒体駆動装置2008として利用可能な光ディスクドライブを搭載している場合、当該光ディスクドライブで認識可能な各種の光ディスクを可搬型記録媒体21として利用可能である。可搬型記録媒体21として利用可能な光ディスクには、例えば、Compact Disc(CD)、Digital Versatile Disc(DVD)、Blu-ray Disc(登録商標)等がある。可搬型記録媒体21は、例えば、上記の手位置検出プログラムの記憶に利用可能である。また、可搬型記録媒体21は、例えば、背景画像191、寸法情報192、座標履歴193、深度画像194等の記憶に利用可能である。
コンピュータ20に手中心及び関節の三次元座標を算出する処理の開始命令が入力されると、プロセッサ2001は、補助記憶装置2003等の非一時的な記録媒体に記憶させた手位置検出プログラムを読み出して実行する。手位置検出プログラムを実行している間、プロセッサ2001は、手位置検出装置1における深度画像取得部110、関節位置算出部120、補正部130、及び出力部140として機能する(動作する)。なお、手位置検出装置1における出力部140の機能の一部は、コンピュータ20の入出力インタフェース2006、通信制御装置2007、及び媒体駆動装置2008が担う。また、手位置検出プログラムを実行している間、主記憶装置2002のRAM及び補助記憶装置2003等の記憶装置は、手位置検出装置1の記憶部190として機能する。
なお、手位置検出装置1として動作させるコンピュータ20は、図32に示した全ての要素2001〜2008を含む必要はなく、用途や条件に応じて一部の要素を省略することも可能である。例えば、コンピュータ20は、媒体駆動装置2008が省略されたものであってもよい。
以上記載した各実施形態に関し、更に以下の付記を開示する。
(付記1)
コンピュータが、
所定の計測範囲内に存在する物体までの距離の情報を含む画像から、対象者の上肢部分と対応する上肢領域を検出し、
前記画像における前記上肢領域の形状及び位置に基づいて、該画像内での手中心及び上肢の関節の位置を検出するとともに、検出した前記手中心及び前記関節のそれぞれの前記計測範囲内での三次元座標を算出し、
算出した前記手中心の三次元座標及び前記関節の三次元座標のそれぞれが、予め定められた前記対象者の上肢における手中心及び各関節の位置関係と整合しているか否かを判定し、
算出した前記三次元座標と予め定められた前記手中心及び各関節の位置関係とが整合していない場合には、前記深度画像内での前記手中心の位置を変更して前記手中心の三次元座標及び前記関節の三次元座標を補正し、
算出した前記三次元座標と予め定められた前記手中心及び各関節の位置関係とが整合している場合には、現在の前記手中心の三次元座標及び前記関節の三次元座標を前記計測範囲内での三次元座標に決定する、
処理を実行することを特徴とする手位置検出方法。
(付記2)
前記画像内での手中心及び上肢の関節の位置を検出するとともに、検出した前記手中心及び前記関節のそれぞれの前記計測範囲内での三次元座標を算出する処理では、前記コンピュータは、
前記手中心の位置を検出した後、
検出した前記手中心の位置に基づいて、前記上肢の関節のうちの前記手中心に近い関節から順に該関節の位置を検出する、
ことを特徴とする付記1に記載の手位置検出方法。
(付記3)
前記手中心の位置に基づいて前記上肢の関節の位置を検出する処理では、前記コンピュータは、前記上肢の関節の位置が前記上肢領域外となることを許容する、
ことを特徴とする付記2に記載の手位置検出方法。
(付記4)
前記コンピュータは、前記手中心の三次元座標及び前記関節の三次元座標を補正する処理を行った後、補正後の前記三次元座標と予め定められた前記手中心及び各関節の位置関係とが整合しているか否かを判定する、
ことを特徴とする付記1に記載の手位置検出方法。
(付記5)
前記コンピュータは、前記手中心の三次元座標及び前記関節の三次元座標の補正回数が閾値以上となった場合には、補正後の前記三次元座標と予め定められた前記手中心及び各関節の位置関係とが整合しているかによらず、現在の前記手中心の三次元座標及び前記関節の三次元座標を前記計測範囲内での三次元座標に決定する、
ことを特徴とする付記4に記載の手位置検出方法。
(付記6)
前記手中心の三次元座標及び前記関節の三次元座標を補正する処理では、前記コンピュータは、
変更後の前記手中心の位置が前記上肢領域の外側となる場合には、前記上肢領域の外側であって、変更後の前記手中心の位置を含む隣接領域の距離の情報を読み出し、
前記隣接領域の距離が前記上肢領域の距離よりも短い場合には、変更後の前記手中心の位置に基づいて前記手中心の三次元座標及び前記関節の三次元座標を補正する、
ことを特徴とする付記1に記載の手位置検出方法。
(付記7)
前記手中心の三次元座標及び前記関節の三次元座標を補正する処理では、前記コンピュータは、
変更後の前記手中心の位置が前記上肢領域の外側であり、かつ変更後の前記手中心の位置を含む隣接領域の距離が前記上肢領域の距離よりも短い場合には、前記上肢領域の距離の情報に基づいて変更後の前記手中心の位置における該手中心と対応する距離を算出し、算出した前記距離に基づいて前記手中心の三次元座標を算出する、
ことを特徴とする付記1に記載の手位置検出方法。
(付記8)
前記手中心の三次元座標及び前記関節の三次元座標を補正する処理では、前記コンピュータは、
前記隣接領域の距離と前記上肢領域の距離との差が閾値以上である場合に、前記隣接領域の距離が前記上肢領域の距離よりも短いと判定する、
ことを特徴とする付記6及び7のいずれかに記載の手位置検出方法。
(付記9)
算出した前記三次元座標と予め定められた前記手中心及び各関節の位置関係とが整合しているか否かを判定する処理では、前記コンピュータは、
前記手中心及び前記関節毎に、前記三次元座標に基づいて前記画像内での前記手中心又は前記関節の位置と、距離とを算出し、
算出した前記距離が、前記画像における前記手中心又は前記関節の位置の距離よりも短い場合に、前記三次元座標と予め定められた前記手中心及び各関節の位置関係とが整合していないと判定する、
ことを特徴とする付記1に記載の手位置検出方法。
(付記10)
算出した前記三次元座標と予め定められた前記手中心及び各関節の位置関係とが整合しているか否かを判定する処理では、前記コンピュータは、
1つの前記上肢領域から検出された手中心及び関節の組毎に、隣接する手中心と関節との三次元距離、及び隣接する関節同士の三次元距離を算出し、
算出した三次元距離と、予め定められた前記手中心及び各関節の位置関係に基づいて特定される寸法との差が閾値以上である場合に、前記三次元座標と予め定められた前記手中心及び各関節の位置関係とが整合していないと判定する、
ことを特徴とする付記1に記載の手位置検出方法。
(付記11)
算出した前記三次元座標と予め定められた前記手中心及び各関節の位置関係とが整合しているか否かを判定する処理では、前記コンピュータは、
算出した前記三次元座標と、予め定められた前記手中心及び各関節の位置関係に基づいて特定される三次元座標とから前記手中心及び前記関節の移動速度を算出し、
前記手中心及び前記関節のいずれかの前記移動速度が閾値以上となる場合に、前記三次元座標と予め定められた前記手中心及び各関節の位置関係とが整合していないと判定する、
ことを特徴とする付記1に記載の手位置検出方法。
(付記12)
前記コンピュータが行う処理は、更に、前記画像から、前記対象者の胴体部分と対応する体領域を検出し、該体領域から肩の位置を推定する処理を含み、
前記画像内での手中心及び上肢の関節の位置を検出するとともに、検出した前記手中心及び前記関節のそれぞれの前記計測範囲内での三次元座標を算出する処理では、前記コンピュータは、
前記手中心の位置を検出した後、検出した前記手中心の位置と推定した前記肩の位置とに基づいて、前記上肢の関節の位置を検出する、
ことを特徴とする付記1に記載の手位置検出方法。
(付記13)
予め定められた前記手中心及び各関節の位置関係は、前記対象者から採寸した上肢の寸法を示す情報に基づいて算出された情報である、
ことを特徴とする付記1に記載の手位置検出方法。
(付記14)
予め定められた前記手中心及び各関節の位置関係は、現在処理の対象となっている前記画像の撮像時刻よりも所定の時間だけ前の時刻に撮像された前記画像から算出された前記手中心の三次元座標及び前記関節の三次元座標に基づいて算出される情報である、
ことを特徴とする付記1に記載の手位置検出方法。
(付記15)
所定の計測範囲内に存在する物体までの距離の情報を含む画像から、対象者の上肢部分と対応する上肢領域を検出し、前記画像における前記上肢領域の形状及び位置に基づいて、該画像内での手中心及び上肢の関節の位置を検出するとともに、検出した前記手中心及び前記関節のそれぞれの前記計測範囲内での三次元座標を算出する関節位置算出部と、
算出した前記手中心の三次元座標及び前記関節の三次元座標のそれぞれが、予め定められた前記対象者の上肢における手中心及び各関節の位置関係と整合しているか否かを判定し、算出した前記三次元座標と予め定められた前記手中心及び各関節の位置関係とが整合していない場合には、前記深度画像内での前記手中心の位置を変更して前記手中心の三次元座標及び前記関節の三次元座標を補正し、算出した前記三次元座標と予め定められた前記手中心及び各関節の位置関係とが整合している場合には、現在の前記手中心の三次元座標及び前記関節の三次元座標を前記計測範囲内での三次元座標に決定する補正部と、
を備えることを特徴とする手位置検出装置。
(付記16)
所定の計測範囲内に存在する物体までの距離の情報を含む画像から、対象者の上肢部分と対応する上肢領域を検出し、
前記画像における前記上肢領域の形状及び位置に基づいて、該画像内での手中心及び上肢の関節の位置を検出するとともに、検出した前記手中心及び前記関節のそれぞれの前記計測範囲内での三次元座標を算出し、
算出した前記手中心の三次元座標及び前記関節の三次元座標のそれぞれが、予め定められた前記対象者の上肢における手中心及び各関節の位置関係と整合しているか否かを判定し、
算出した前記三次元座標と予め定められた前記手中心及び各関節の位置関係とが整合していない場合には、前記深度画像内での前記手中心の位置を変更して前記手中心の三次元座標及び前記関節の三次元座標を補正し、
算出した前記三次元座標と予め定められた前記手中心及び各関節の位置関係とが整合している場合には、現在の前記手中心の三次元座標及び前記関節の三次元座標を前記計測範囲内での三次元座標に決定する、
処理をコンピュータに実行させる手位置検出プログラム。