(57)【特許請求の範囲】
【請求項１】
コンピュータが、
所定の計測範囲内に存在する物体までの距離の情報を含む画像から、対象者の上肢部分と対応する上肢領域を検出し、
前記画像における前記上肢領域の形状及び位置に基づいて、該画像内での手中心及び上肢の関節の位置を検出するとともに、検出した前記手中心及び前記関節のそれぞれの前記計測範囲内での三次元座標を算出し、
算出した前記手中心の三次元座標及び前記関節の三次元座標のそれぞれが、予め定められた前記対象者の上肢における手中心及び各関節の位置関係と整合しているか否かを判定し、
算出した前記三次元座標と予め定められた前記手中心及び各関節の位置関係とが整合していない場合には、前記画像内での前記手中心の位置を変更して前記手中心の三次元座標及び前記関節の三次元座標を補正し、
算出した前記三次元座標と予め定められた前記手中心及び各関節の位置関係とが整合している場合には、現在の前記手中心の三次元座標及び前記関節の三次元座標を前記計測範囲内での三次元座標に決定する、
処理を実行することを特徴とする手位置検出方法。
【請求項２】
前記画像内での手中心及び上肢の関節の位置を検出するとともに、検出した前記手中心及び前記関節のそれぞれの前記計測範囲内での三次元座標を算出する処理では、前記コンピュータは、
前記手中心の位置を検出した後、
検出した前記手中心の位置に基づいて、前記上肢の関節のうちの前記手中心に近い関節から順に該関節の位置を検出する、
ことを特徴とする請求項１に記載の手位置検出方法。
【請求項３】
前記手中心の位置に基づいて前記上肢の関節の位置を検出する処理では、前記コンピュータは、前記上肢の関節の位置が前記上肢領域外となることを許容する、
ことを特徴とする請求項２に記載の手位置検出方法。
【請求項４】
前記コンピュータは、前記手中心の三次元座標及び前記関節の三次元座標を補正する処理を行った後、補正後の前記三次元座標と予め定められた前記手中心及び各関節の位置関係とが整合しているか否かを判定する、
ことを特徴とする請求項１に記載の手位置検出方法。
【請求項５】
前記手中心の三次元座標及び前記関節の三次元座標を補正する処理では、前記コンピュータは、
変更後の前記手中心の位置が前記上肢領域の外側となる場合には、前記上肢領域の外側であって、変更後の前記手中心の位置を含む隣接領域の距離の情報を読み出し、
前記隣接領域の距離が前記上肢領域の距離よりも短い場合には、変更後の前記手中心の位置に基づいて前記手中心の三次元座標及び前記関節の三次元座標を補正する、
ことを特徴とする請求項１に記載の手位置検出方法。
【請求項６】
前記手中心の三次元座標及び前記関節の三次元座標を補正する処理では、前記コンピュータは、
変更後の前記手中心の位置が前記上肢領域の外側であり、かつ変更後の前記手中心の位置を含む隣接領域の距離が前記上肢領域の距離よりも短い場合には、前記上肢領域の距離の情報に基づいて変更後の前記手中心の位置における該手中心と対応する距離を算出し、算出した前記距離に基づいて前記手中心の三次元座標を算出する、
ことを特徴とする請求項１に記載の手位置検出方法。
【請求項７】
算出した前記三次元座標と予め定められた前記手中心及び各関節の位置関係とが整合しているか否かを判定する処理では、前記コンピュータは、
前記手中心及び前記関節毎に、前記三次元座標に基づいて前記画像内での前記手中心又は前記関節の位置と、距離とを算出し、
算出した前記距離が、前記画像における前記手中心又は前記関節の位置の距離よりも短い場合に、前記三次元座標と予め定められた前記手中心及び各関節の位置関係とが整合していないと判定する、
ことを特徴とする請求項１に記載の手位置検出方法。
【請求項８】
算出した前記三次元座標と予め定められた前記手中心及び各関節の位置関係とが整合しているか否かを判定する処理では、前記コンピュータは、
１つの前記上肢領域から検出された手中心及び関節の組毎に、隣接する手中心と関節との三次元距離、及び隣接する関節同士の三次元距離を算出し、
算出した三次元距離と、予め定められた前記手中心及び各関節の位置関係に基づいて特定される寸法との差が閾値以上である場合に、前記三次元座標と予め定められた前記手中心及び各関節の位置関係とが整合していないと判定する、
ことを特徴とする請求項１に記載の手位置検出方法。
【請求項９】
算出した前記三次元座標と予め定められた前記手中心及び各関節の位置関係とが整合しているか否かを判定する処理では、前記コンピュータは、
算出した前記三次元座標と、予め定められた前記手中心及び各関節の位置関係に基づいて特定される三次元座標とから前記手中心及び前記関節の移動速度を算出し、
前記手中心及び前記関節のいずれかの前記移動速度が閾値以上となる場合に、前記三次元座標と予め定められた前記手中心及び各関節の位置関係とが整合していないと判定する、
ことを特徴とする請求項１に記載の手位置検出方法。
【請求項１０】
前記コンピュータが行う処理は、更に、前記画像から、前記対象者の胴体部分と対応する体領域を検出し、該体領域から肩の位置を推定する処理を含み、
前記画像内での手中心及び上肢の関節の位置を検出するとともに、検出した前記手中心及び前記関節のそれぞれの前記計測範囲内での三次元座標を算出する処理では、前記コンピュータは、
前記手中心の位置を検出した後、検出した前記手中心の位置と推定した前記肩の位置とに基づいて、前記上肢の関節の位置を検出する、
ことを特徴とする請求項１に記載の手位置検出方法。
【請求項１１】
所定の計測範囲内に存在する物体までの距離の情報を含む画像から、対象者の上肢部分と対応する上肢領域を検出し、前記画像における前記上肢領域の形状及び位置に基づいて、該画像内での手中心及び上肢の関節の位置を検出するとともに、検出した前記手中心及び前記関節のそれぞれの前記計測範囲内での三次元座標を算出する関節位置算出部と、
算出した前記手中心の三次元座標及び前記関節の三次元座標のそれぞれが、予め定められた前記対象者の上肢における手中心及び各関節の位置関係と整合しているか否かを判定し、算出した前記三次元座標と予め定められた前記手中心及び各関節の位置関係とが整合していない場合には、前記画像内での前記手中心の位置を変更して前記手中心の三次元座標及び前記関節の三次元座標を補正し、算出した前記三次元座標と予め定められた前記手中心及び各関節の位置関係とが整合している場合には、現在の前記手中心の三次元座標及び前記関節の三次元座標を前記計測範囲内での三次元座標に決定する補正部と、
を備えることを特徴とする手位置検出装置。
【請求項１２】
所定の計測範囲内に存在する物体までの距離の情報を含む画像から、対象者の上肢部分と対応する上肢領域を検出し、
前記画像における前記上肢領域の形状及び位置に基づいて、該画像内での手中心及び上肢の関節の位置を検出するとともに、検出した前記手中心及び前記関節のそれぞれの前記計測範囲内での三次元座標を算出し、
算出した前記手中心の三次元座標及び前記関節の三次元座標のそれぞれが、予め定められた前記対象者の上肢における手中心及び各関節の位置関係と整合しているか否かを判定し、
算出した前記三次元座標と予め定められた前記手中心及び各関節の位置関係とが整合していない場合には、前記画像内での前記手中心の位置を変更して前記手中心の三次元座標及び前記関節の三次元座標を補正し、
算出した前記三次元座標と予め定められた前記手中心及び各関節の位置関係とが整合している場合には、現在の前記手中心の三次元座標及び前記関節の三次元座標を前記計測範囲内での三次元座標に決定する、
処理をコンピュータに実行させる手位置検出プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、手位置検出方法、手位置検出装置、及び手位置検出プログラムに関する。
【背景技術】
【０００２】
近年、工場等の作業現場では、深度センサ等の距離計測装置を利用して所定の空間内における作業者の上肢の動作を検出し、作業員の作業状況を管理することが検討されている。この種の技術では、例えば、距離計測装置により得られる計測空間内の距離の情報に基づいて、コンピュータが、計測空間における作業員の手のひら及び関節の三次元座標を算出する。この際、コンピュータは、距離の情報に基づいて、作業員の上肢と対応する上肢領域を検出し、該上肢領域から手のひらの位置、手首、肘、肩等の関節の位置を検出した後、それぞれの三次元座標を算出する。
【０００３】
ところが、距離計測装置による距離の計測を行う場合、作業員自身の頭部又は胴体部分、或いは作業エリアに設置された棚等により作業員の上肢の一部分が隠れた状態（すなわちオクルージョンが発生した状態）で計測することがある。上肢の一部分が隠れた状態で計測した距離の情報に基づいて検出される上肢領域は、上肢の一部分（例えば手のひら）と対応する領域が欠損している。このような上肢の一部分と対応する領域が欠損した上肢領域を検出した場合、手のひらの位置や各関節の位置を誤検出してしまい、誤った三次元座標を算出してしまうことがある。
【０００４】
オクルージョンによる手のひらの位置や各関節の位置の誤検出を防ぐ技術の１つとして、距離の計測結果における第１関節位置までの距離と、該第１関節位置と隣接する第２関節位置までの距離との関係を学習しておく方法がある（例えば、特許文献１を参照）。この種の技術では、オクルージョンにより第２関節位置までの距離が計測結果に含まれない場合でも、計測された第１関節位置までの距離と、学習しておいた関係とに基づいて第２関節位置までの距離を推定することが可能となる。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２０１６−２１２６８８号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
しかしながら、距離の計測結果における各関節位置までの距離の関係を学習する場合、手のひらや上肢の各関節までの距離が計測される状態で計測した結果（学習データ）を、事前に大量に収集する必要がある。また、関節位置までの距離の関係に基づいて関節位置までの距離を推定する方法では、距離の計測結果に手のひらまでの距離及び各関節までの距離の情報が含まれない場合には、手のひらや各関節の位置を検出することが困難となる。
【０００７】
１つの側面において、本発明は、手のひらや上肢の各関節が隠れた状態で計測された距離の情報から、手のひらや各関節の位置を正しく検出することを目的とする。
【課題を解決するための手段】
【０００８】
１つの態様の手位置検出方法では、コンピュータが、下記の５つの処理を行う。第１の処理は、所定の計測範囲内に存在する物体までの距離の情報を含む画像から、対象者の上肢部分と対応する上肢領域を検出する処理である。第２の処理は、画像における上肢領域の形状及び位置に基づいて、該画像内での手中心及び上肢の関節の位置を検出するとともに、検出した手中心及び関節のそれぞれの計測範囲内での三次元座標を算出する処理である。第３の処理は、算出した手中心の三次元座標及び関節の三次元座標のそれぞれが、予め定められた前記対象者の上肢における手中心及び各関節の位置関係と整合しているか否かを判定する処理である。第４の処理は、算出した三次元座標と予め定められた手中心及び各関節の位置関係とが整合していない場合に、画像内での手中心の位置を変更して手中心の三次元座標及び関節の三次元座標を補正する処理である。第５の処理は、算出した三次元座標と予め定められた手中心及び各関節の位置関係とが整合している場合に、現在の手中心の三次元座標及び関節の三次元座標を計測範囲内での三次元座標に決定する処理である。
【発明の効果】
【０００９】
上述の態様によれば、手のひらや上肢の各関節が隠れた状態で計測した距離の情報から、手のひらや各関節の位置を正しく検出することが可能となる。
【図面の簡単な説明】
【００１０】
【図１】第１の実施形態に係る手位置検出装置の機能的構成を示す図である。
【図２】寸法情報の内容を示す図である。
【図３】第１の実施形態に係る座標算出処理の内容を説明するフローチャートである。
【図４】第１の実施形態における座標補正処理の内容を説明するフローチャートである。
【図５】第１の実施形態における整合性判別処理の内容を説明するフローチャートである。
【図６】第１の実施形態における座標再計算処理の内容を説明するフローチャートである。
【図７】手位置検出装置の適用例を説明する図である。
【図８】手領域の距離を示す情報が欠落した深度画像の例を示す図である。
【図９】背景差分法による上肢領域の検出方法を説明する図である。
【図１０】深度画像における手中心及び各関節の位置の検出方法の一例を説明する図である。
【図１１】空間整合性の判別方法を説明する図である。
【図１２】手中心の位置の変更方法を説明する図である。
【図１３】三次元座標の算出に用いる深度値の推定方法を説明するグラフ図である。
【図１４Ａ】座標補正処理の変形例を説明するフローチャート（その１）である。
【図１４Ｂ】座標補正処理の変形例を説明するフローチャート（その２）である。
【図１５】隣接領域判別処理の内容を説明するフローチャートである。
【図１６】隣接領域と判別結果との関係を説明する図である。
【図１７Ａ】整合性判別処理の変形例を説明するフローチャート（その１）である。
【図１７Ｂ】整合性判別処理の変形例を説明するフローチャート（その２）である。
【図１８】第２の実施形態に係る手位置検出装置の機能的構成を示す図である。
【図１９】第２の実施形態に係る座標算出処理の内容を説明するフローチャートである。
【図２０】深度画像から体領域を検出する処理の内容を説明するフローチャートである。
【図２１】深度画像から上肢領域を検出する処理の内容を説明するフローチャートである。
【図２２】手中心及び関節の三次元座標を算出する処理の内容を説明するフローチャートである。
【図２３】第２の実施形態における整合性判別処理の内容を説明するフローチャートである。
【図２４】深度画像の撮像範囲を説明する図である。
【図２５】深度画像の例を示す図である。
【図２６Ａ】体領域の検出方法を説明する図（その１）である。
【図２６Ｂ】体領域の検出方法を説明する図（その２）である。
【図２７】上肢領域の検出結果の例を示す図である。
【図２８】手中心の位置の検出結果の例を示す図である。
【図２９】左上肢の関節の位置の決定方法を説明する図である。
【図３０】決定した手中心及び関節の位置を示す図である。
【図３１】手中心及び関節の位置の補正方法を説明する図である。
【図３２】コンピュータのハードウェア構成を示す図である。
【発明を実施するための形態】
【００１１】
［第１の実施形態］
図１は、第１の実施形態に係る手位置検出装置の機能的構成を示す図である。
【００１２】
図１に示すように、本実施形態の手位置検出装置１は、深度画像取得部１１０と、関節位置算出部１２０と、補正部１３０と、出力部１４０と、記憶部１９０とを含む。
【００１３】
深度画像取得部１１０は、手中心の位置を検出する検出領域内に存在する物体の表面までの距離（深度）を示す情報を含む深度画像を深度センサ２から取得する。ここで、手中心の位置は、検出領域内における手（手首から先の部分）の中心部分の三次元位置である。深度画像取得部１１０は、例えば、深度方向を法線方向とする平面内におけるＵ×Ｖ個の点のそれぞれと対応する深度値を含む深度画像を深度センサ２から取得する。なお、深度画像は、手中心の位置を検出する検出領域内に存在する物体の表面までの距離を示す情報の一例である。すなわち、深度画像取得部１１０は、手中心の位置を検出する検出領域内に存在する物体の表面までの距離を示す情報を取得する取得部の一例である。以下の説明では、手中心の位置を検出する検出領域のことを、深度画像の撮像範囲ともいう。
【００１４】
関節位置算出部１２０は、深度画像に基づいて、検出領域内に存在する手中心及び上肢の関節についての検出領域内での位置を示す三次元座標を算出する。本実施形態の手位置検出装置１における関節位置算出部１２０は、上肢領域検出部１２１と、画像内位置検出部１２２と、三次元座標算出部１２３とを含む。
【００１５】
上肢領域検出部１２１は、手中心の位置を検出する深度画像と、記憶部１９０に記憶させた背景画像１９１とに基づいて、深度画像内における人の上肢部分と対応する領域（上肢領域）を検出する。背景画像１９１は、人の上肢が存在しない状態の検出範囲内を深度センサ２により撮像した深度画像である。上肢領域検出部１２１は、検出対象となる深度画像を深度画像取得部１１０から直接取得してもよいし、記憶部１９０に記憶させた深度画像１９４を読み出して取得してもよい。
【００１６】
画像内位置検出部１２２は、深度画像内での上肢領域の位置及び形状に基づいて、深度画像内における手中心の位置及び上肢の関節の位置を検出する。すなわち、画像内位置検出部１２２は、上肢領域検出部１２１における上肢領域の検出結果に基づいて、深度画像内における手中心の位置及び関節の位置を検出する。画像内位置検出部１２２は、上肢の関節の位置として、例えば、手首、肘、及び肩の位置を検出する。画像内位置検出部１２２は、例えば、深度画像内における上肢領域に基づいて上肢の延伸方向を示す線分群を求めた後、該線分群に基づいて手中心の位置及び各関節の位置を検出する。このとき、画像内位置検出部１２２は、例えば、手中心の位置を検出した後、該手中心の位置と深度画像の撮像範囲内における人の上肢の寸法とに基づいて、各関節の位置を検出する。
【００１７】
三次元座標算出部１２３は、深度画像内における手中心及び各関節の位置と、深度値とに基づいて、検出領域内における手中心の位置を示す三次元座標及び各関節の位置を示す三次元座標を算出する。三次元座標算出部１２３は、既知の算出方法に従って、手中心の位置を示す三次元座標及び各関節の位置を示す三次元座標を算出する。例えば、三次元座標算出部１２３は、ピンホールカメラモデルを適用して、手中心の位置を示す三次元座標及び各関節の位置を示す三次元座標を算出する。
【００１８】
補正部１３０は、深度画像から算出した手中心及び各関節の三次元座標を補正する。補正部１３０は、深度画像から算出した手中心及び各関節の三次元座標と、記憶部１９０に記憶させた寸法情報１９２及び座標履歴１９３とに基づいて、三次元座標の補正の要否を判定する。そして、補正が必要であると判定した場合に、補正部１３０は、深度画像から算出した手中心及び各関節の三次元座標を補正する。寸法情報１９２は、深度画像の撮像範囲内で上肢を動かす人物（対象者）の上肢における手中心から手首までの寸法と、手首から肘までの寸法とを含む。座標履歴１９３は、手位置検出装置１における過去の深度画像に対する処理で決定した手中心及び各関節の三次元座標を含む。例えば、座標履歴１９３には、現在処理対象となっている深度画像の撮像時刻から所定の期間（例えば数秒程度）だけ前となる時刻までの間となる時刻に撮像された深度画像に対する処理で決定した三次元座標が格納されている。本実施形態の手位置検出装置１における補正部１３０は、整合性判定部１３１と、再計算部１３２とを含む。
【００１９】
整合性判定部１３１は、深度画像から算出した手中心及び関節の三次元座標についての空間整合性と時間整合性とに基づいて、三次元座標の補正の要否を判定する。空間整合性は、深度画像から算出した手中心及び関節の三次元座標に基づく対象者の上肢の寸法と、寸法情報１９２における対象者の上肢の寸法との整合性である。時間整合性は、座標履歴１９３に基づいて算出される、深度画像から算出した手中心及び関節の三次元座標の時間変化についての整合性である。空間整合性及び時間整合性のいずれかの整合性を示す値が閾値よりも小さい場合、整合性判定部１３１は、三次元座標を補正する必要があると判定する。三次元座標を補正する必要があると判定した場合、整合性判定部１３１は、再計算部１３２に手中心及び関節の三次元座標を再計算させる（補正させる）。一方、三次元座標を補正する必要がないと判定した場合、整合性判定部１３１（補正部１３０）は、該判定に用いた手中心及び関節の三次元座標を座標履歴１９３に格納する。
【００２０】
再計算部１３２は、深度画像における手中心の位置を変更し、変更後の手中心の位置に基づいて、撮像範囲内における手中心の三次元座標及び各関節の三次元座標を算出する（再計算する）。例えば、再計算部１３２は、まず、深度画像内における肘又は手首を始点とし手中心を終点とするベクトルの方向に、所定の距離（画素数）だけ手中心の位置を移動させる。また、再計算部１３２は、移動後の手中心の位置に基づいて深度画像内における手首や肘等の関節の位置を算出する。その後、再計算部１３２は、算出した手中心の位置及び各関節の位置に基づいて、撮像範囲内における手中心の位置を示す三次元座標及び各関節の位置を示す三次元座標を算出する。深度画像内における変更後の手中心の位置が上肢領域内である場合、再計算部１３２は、手中心の位置の深度値に基づいて手中心の三次元位置を算出する。一方、深度画像内における変更後の手中心の位置が上肢領域外となった場合、再計算部１３２は、例えば、上肢領域内の深度値を利用して手中心の三次元位置を算出する。
【００２１】
すなわち、本実施形態の手位置検出装置１における補正部１３０は、整合性判定部１３１において整合性を示す値が閾値よりも小さいと判定した場合に、再計算部１３２において手中心及び各関節の三次元座標を再度算出して補正する。再計算部１３２において手中心及び各関節の三次元座標を補正した場合、補正部１３０は、整合性判定部１３１において補正後の三次元座標と、寸法情報１９２と、座標履歴１９３とに基づいて、手中心の三次元座標の再補正の要否を判定する。そして、三次元座標を補正する必要がないと判定した場合、整合性判定部１３１（補正部１３０）は、該判定に用いた手中心及び各関節の三次元座標を座標履歴１９３に格納する。整合性判定部１３１（補正部１３０）は、例えば、手中心及び各関節の三次元座標と、処理対象となっている深度画像の撮像時刻を示す情報とを対応付けて座標履歴１９３に格納する。
【００２２】
出力部１４０は、座標履歴１９３に含まれる手中心及び各関節の三次元座標を含む情報を外部装置３に出力する。外部装置３は、例えば、手中心の三次元座標の時間変化に基づいて、作業員の作業が適切であるか否か等を管理するサーバ装置である。
【００２３】
図２は、寸法情報の内容を示す図である。
寸法情報１９２は、例えば、図２のように、深度センサ２による深度画像の撮像範囲内で上肢を動かす対象者から採寸した、対象者の上肢における３つの寸法Ｌ１，Ｌ２，及びＬ３を含む。第１の寸法Ｌ１は、手中心から手首までの長さである。第２の寸法Ｌ２は、手首から肘までの長さである。第３の寸法Ｌ３は、肘から肩までの長さである。第１の寸法Ｌ１、第２の寸法Ｌ２、及び第３の寸法Ｌ３は、それぞれ、対象者の右上肢及び左上肢のいずれか一方で採寸した寸法であってもよいし、右上肢で採寸した寸法と左上肢で採寸した寸法との平均値であってもよい。また、対象者が複数である場合、寸法情報１９２には、各対象者の第１の寸法Ｌ１、第２の寸法Ｌ２、及び第３の寸法Ｌ３を、対象者毎に識別可能な態様で登録しておく。例えば、対象者の作業者ＩＤが「Ａ」である場合、手位置検出装置１の整合性判定部１３１は、対象者の上肢の寸法Ｌ１，Ｌ２，及びＬ３として、それぞれ、図２の寸法情報１９２から寸法ＬＡ１，ＬＡ２，及びＬＡ３を読み出す。
【００２４】
本実施形態の手位置検出装置１は、深度センサ２が所定の時間間隔で撮像する深度画像を順次取得するとともに、取得した複数の深度画像のそれぞれから手中心及び上肢の関節を検出し該手中心及び関節の三次元座標を算出する。本実施形態の手位置検出装置１は、深度画像から手中心及び上肢の関節を検出し三次元座標を算出する処理として、図３のフローチャートに沿った座標算出処理を行う。
【００２５】
図３は、第１の実施形態に係る座標算出処理の内容を説明するフローチャートである。
本実施形態の手位置検出装置１は、図３のように、まず、処理の対象とする深度画像を選択し（ステップＳ１）、選択した深度画像から上肢領域を検出する（ステップＳ２）。ステップＳ１及びＳ２の処理は、手位置検出装置１における関節位置算出部１２０の上肢領域検出部１２１が行う。上肢領域検出部１２１は、例えば、上肢領域を検出する処理を行っていない深度画像のうちの、撮像時刻が最も早い深度画像を選択する。深度画像を選択した後、上肢領域検出部１２１は、選択した深度画像における各点（各画素）の深度値と、背景画像１９１における各点の深度値とに基づいて、深度画像における上肢領域を検出する。
【００２６】
次に、手位置検出装置１は、深度画像から上肢領域を検出したか否かを判定する（ステップＳ３）。ステップＳ３の判定は、上肢領域検出部１２１が行う。上肢領域が検出されなかった場合（ステップＳ３；ＮＯ）、上肢領域検出部１２１は、例えば、選択中の深度画像から上肢領域が検出されなかったことを示す情報を座標履歴１９３に格納し（ステップＳ１１）、該深度画像に対する座標算出処理を終了させる。一方、深度画像から上肢領域を検出した場合（ステップＳ３；ＹＥＳ）、手位置検出装置１は、ステップＳ４〜Ｓ７の処理を行う。
【００２７】
深度画像から上肢領域を検出した場合（ステップＳ３；ＹＥＳ）、手位置検出装置１は、次に、深度画像における上肢領域内の手中心及び関節の位置を検出する（ステップＳ４）。ステップＳ４の処理は、手位置検出装置１における関節位置算出部１２０の画像内位置検出部１２２が行う。画像内位置検出部１２２は、例えば、上肢領域の形状及び位置に基づいて深度画像内における上肢の延伸方向を示す線分群を抽出した後、該線分群の線分上で手中心の位置、及び上肢の関節（手首、肘、及び肩）の位置を検出する。画像内位置検出部１２２は、例えば、深度画像において上肢の延伸方向（関節間を結ぶ線分の方向）となり得る方向に基づいて、上肢領域における上肢の延伸方向と直交した方向の寸法を縮めて、上肢の延伸方向を示す線分群を抽出する。線分群を抽出した後、画像内位置検出部１２２は、まず、線分群に含まれる線分上の各点のなかから手中心の位置を検出する。画像内位置検出部１２２は、例えば、深度画像内における手（手のひら）の大きさと対応した領域を示す情報に基づいて、線分上での手中心の位置を検出する。手中心の位置を検出した後、画像内位置検出部１２２は、例えば、検出した手中心の位置と、深度画像における手中心から手首までの距離（画素数）を示す情報に基づいて、手首の位置を検出する。その後、画像内位置検出部１２２は、検出した関節の位置と、深度画像における関節間の距離（画素数）を示す情報に基づいて、隣接する関節の位置を順次検出する。なお、関節の位置を検出する際、画像内位置検出部１２２は、線分群において線分が折れ曲がる位置を関節の候補とし、該折れ曲がる位置で接続する２本の線分がなす角も含めて関節の位置を検出する。
【００２８】
次に、手位置検出装置１は、検出した手中心及び関節の三次元座標を算出する（ステップＳ５）。ステップＳ５の処理は、手位置検出装置１における関節位置算出部１２０の三次元座標算出部１２３が行う。三次元座標算出部１２３は、ピンホールカメラモデルを適用し、深度画像の撮像範囲と、深度画像の画素数と、深度画像における手中心及び関節の位置と、深度値とに基づいて、手中心及び関節の三次元座標を算出する。なお、ステップＳ５で算出する三次元座標は、手中心の位置を検出する三次元空間における任意の二点間の距離の実測値と対応する世界座標系での座標とする。
【００２９】
次に、手位置検出装置１は、手中心及び関節の三次元座標を補正する座標補正処理（ステップＳ６）を行う。座標補正処理は、三次元座標の補正の要否を判定する処理と、手中心の位置を補正して手中心及び関節の三次元座標を算出する（再計算する）処理とを含む。座標補正処理は、手位置検出装置１における補正部１３０が行う。補正部１３０は、上記のように、空間整合性及び時間整合性に基づいて、三次元座標の補正の要否を判定する。この判定は、補正部１３０の整合性判定部１３１が行う。整合性判定部１３１は、深度画像から算出した手中心及び関節の三次元座標と寸法情報１９２とに基づいて、空間整合性を示す値を算出する。また、整合性判定部１３１は、深度画像から算出した手中心及び関節の三次元座標と座標履歴１９３とに基づいて、時間整合性を示す値を算出する。そして、整合性判定部１３１は、算出した空間整合性を示す値及び時間整合性を示す値に基づいて三次元座標が空間的又は時間的に整合しないと判定した場合に、再計算部１３２に三次元座標を再計算させる（補正させる）。
【００３０】
整合性判定部１３１は、手中心及び関節のそれぞれについての空間整合性を示す値として、例えば、三次元座標と深度画像とに基づいて算出される距離値と、深度画像における深度値との差を算出する。また、整合性判定部１３１は、手中心及び関節のそれぞれについての空間整合性を示す値として、例えば、三次元座標に基づいて算出される上肢の寸法と、寸法情報１９２における対象者の上肢の寸法との差を算出する。このとき、整合性判定部１３１は、算出した差が閾値以下である場合に三次元座標が空間的に整合すると判定する。また、整合性判定部１３１は、手中心及び関節のそれぞれについての時間整合性を示す値として、例えば、移動速度を算出する。このとき、整合性判定部１３１は、算出した移動速度が閾値以下である場合に三次元座標が時間的に整合すると判定する。
【００３１】
再計算部１３２は、深度画像における手中心の位置を変更して手中心の三次元座標を算出するとともに、算出しなおした手中心の三次元座標に基づいて、関節の三次元座標を算出する。再計算部１３２において三次元座標を補正した場合、補正部１３０の整合性判定部１３１が、補正後の三次元座標に基づいて三次元座標の補正の要否を判定する。以降、補正部１３０は、整合性判定部１３１において再補正をしなくてもよいと判定するまで、三次元座標の補正と補正の要否の判定とを繰り返す。なお、座標補正処理は、三次元座標の補正回数に上限が設定されていてもよい。設定した上限の回数だけ三次元座標を補正した場合、補正部１３０は、整合性の有無によらず、現在の三次元座標を、処理対象となっている深度画像の撮像時刻における手中心及び関節の三次元座標に決定する。
【００３２】
座標補正処理を終えると、手位置検出装置１は、座標補正処理により決定した手中心及び関節の三次元座標を含む情報を座標履歴１９３に格納し（ステップＳ７）、現在処理対象に選択されている深度画像に対する算出処理を終了する。ステップＳ７の処理は、補正部１３０が行う。補正部１３０は、決定した手中心及び関節の三次元座標と、現在処理対象となっている深度画像の撮像時刻を示す情報とを対応付けて、座標履歴１９３に格納する。
【００３３】
手位置検出装置１は、処理の対象とする複数の深度画像の全てに対しステップＳ２以降の処理を行うまで、図３のフローチャートに沿った処理を繰り返す。なお、手位置検出装置１は、複数の深度画像に対するステップＳ１〜Ｓ７，及びＳ１１の処理をパイプライン化して行ってもよい。
【００３４】
このように、本実施形態の手位置検出装置１は、深度画像から検出した手中心及び関節の位置に基づいて手中心及び関節の三次元座標を算出した後、補正部１３０により座標補正処理（ステップＳ６）を行って座標履歴１９３に格納する三次元座標を決定する。座標補正処理として、補正部１３０は、上記のように、手中心及び関節のそれぞれについての三次元座標のうちの空間的又は時間的に整合しない三次元座標を整合するように補正する処理を行う。補正部１３０は、座標補正処理として、例えば、図４のフローチャートに沿った処理を行う。
【００３５】
図４は、第１の実施形態における座標補正処理の内容を説明するフローチャートである。
【００３６】
補正部１３０は、図４のように、まず、三次元座標の補正回数を示す変数ｒを「０」にする（ステップＳ６０１）。ステップＳ６０１の処理は、例えば、整合性判定部１３１が行う。
【００３７】
次に、補正部１３０は、深度画像から検出した上肢領域の１つを選択し、該上肢領域内から検出した手中心及び各関節についての三次元座標を読み出す（ステップＳ６０２）。ステップＳ６０２の処理は、補正部１３０の整合性判定部１３１が行う。
【００３８】
次に、補正部１３０は、ステップＳ６０２で読み出した三次元座標、すなわち現在処理対象となっている手中心及び各関節の三次元座標に対する整合性判別処理（ステップＳ６０３）を行う。整合性判別処理は、整合性判定部１３１が行う。整合性判定部１３１は、手中心及び各関節の三次元座標が空間的に整合し、かつ時間的に整合するか否かを判定する。
【００３９】
整合性判定部１３１は、例えば、手中心及び各関節のそれぞれについて、三次元座標から深度画像内での位置と距離とを算出し、算出した距離と深度画像における深度値との差を算出する。そして、算出した差の絶対値が閾値以上となる場合、整合性判定部１３１は、三次元座標が空間的に整合していないと判定する。また、整合性判定部１３１は、例えば、手中心及び各関節のそれぞれについて、三次元座標に基づいて隣接する関節との三次元距離を算出し、算出した三次元距離と寸法情報１９２における対象者の上肢の寸法との差を算出する。そして、算出した差の絶対値が閾値以上となる場合、整合性判定部は、三次元座標が空間的に整合していないと判定する。
【００４０】
更に、整合性判定部１３１は、例えば、手中心及び各関節のそれぞれについて、三次元座標に基づいて移動速度を算出する。そして、算出した移動速度が閾値以上となる場合、整合性判定部１３１は、三次元座標が時間的に整合していないと判定する。
【００４１】
整合性判別処理を終えると、補正部１３０は、次に、現在処理対象となっている手中心及び各関節のなかに、時間的又は空間的に整合しない手中心又は関節があるか否かを判定する（ステップＳ６０４）。ステップＳ６０４の判定は、整合性判定部１３１が行う。手中心及び各関節の全てが時間的及び空間的に整合している場合（ステップＳ６０４；ＮＯ）、整合性判定部１３１（補正部１３０）は、現在の手中心及び各関節の三次元座標を、履歴情報１９３に格納する三次元座標に決定する（ステップＳ６０８）。
【００４２】
一方、手中心及び各関節のいずれかが、時間的又は空間的に整合していない場合（ステップＳ６０４；ＹＥＳ）、整合性判定部１３１は、次に、変数ｒが閾値Ｎよりも小さいか否かを判定する（ステップＳ６０５）。閾値Ｎは、三次元座標を補正する回数の上限値である。ｒ≧Ｎの場合（ステップＳ６０５；ＮＯ）、整合性判定部１３１（補正部１３０）は、現在の手中心及び各関節の三次元座標を、履歴情報１９３に格納する三次元座標に決定する（ステップＳ６０８）。これに対し、ｒ＜Ｎの場合（ステップＳ６０５；ＹＥＳ）、整合性判定部１３１（補正部１３０）は、手中心及び各関節の三次元座標を再計算する座標再計算処理（ステップＳ６０６）を再計算部１３２に行わせる。座標再計算処理において、再計算部１３２は、深度画像における手中心の位置を変更した後、変更後の手中心の位置に基づいて、手中心及び各関節の三次元座標を算出する（再計算する）。手中心及び各関節の三次元座標を算出した後、再計算部１３２は、算出した三次元座標を整合性判定部１３１に通知して、座標再計算処理を終了する。
【００４３】
再計算部１３２が座標再計算処理（ステップＳ６０６）を終えると、補正部１３０は、変数ｒをｒ＋１に更新し（ステップＳ６０７）、整合性判別処理（ステップＳ６０３）を行う。ステップＳ６０７の処理は、整合性判定部１３１が行う。整合性判定部１３１は、再計算部１３２から三次元座標を受け取ると、変数ｒを更新して整合性判別処理Ｓ６０３を行う。以降、補正部１３０は、手中心及び各関節の全てが時間的及び空間的に整合する（ステップＳ６０４；ＮＯ）か、又はｒ≧Ｎとなる（ステップＳ６０５；ＮＯ）まで、ステップＳ６０３〜Ｓ６０７の処理を繰り返す。そして、手中心及び各関節の全てが時間的及び空間的に整合するか、又はｒ≧Ｎとなると、整合性判定部１３１（補正部１３０）は、現在の三次元座標を座標履歴１９３に格納する三次元座標に決定する（ステップＳ６０８）。
【００４４】
ステップＳ６０８の処理を終えると、補正部１３０は、次に、処理対象である深度画像から検出された上肢領域のなかに未選択の上肢領域があるか否かを判定する（ステップＳ６０９）。ステップＳ６０９の判定は、整合性判定部１３１が行う。未選択の上肢領域がある場合（ステップＳ６０９；ＹＥＳ）、整合性判定部１３１（補正部１３０）は、未選択の上肢領域に対するステップＳ６０１以降の処理を行う。そして、全ての上肢領域に対するステップＳ６０１以降の処理を行うと（ステップＳ６０９；ＮＯ）、整合性判定部１３１（補正部１３０）は、処理対象である深度画像に対する座標補正処理を終了する。
【００４５】
このように、補正部１３０が行う座標補正処理は、整合性判別処理（ステップＳ６０３）と、座標再計算処理（ステップＳ６０３）とを含む。そして、補正部１３０は、整合性判別処理において空間的及び時間的に整合していると判定した場合、又は座標再計算処理を行った回数が所定の回数（Ｎ回）以上となった場合に、その時点における三次元座標を座標履歴１９３に格納する三次元座標に決定する。
【００４６】
図５は、第１の実施形態における整合性判別処理の内容を説明するフローチャートである。
【００４７】
整合性判別処理（ステップＳ６０３）は、補正部１３０の整合性判定部１３１が行う。本実施形態の手位置検出装置１における整合性判定部１３１は、図５のように、まず、手中心及び各関節を識別する変数ｉを「０」にするとともに、整合性パラメータＣｉを「True」に設定する（ステップＳ６０３０１）。ここで、変数ｉは、１個の上肢領域から手中心及び各関節の位置を検出したときに、手中心及び各関節のそれぞれを識別するために付した数値（０，１，２，・・・）である。整合性パラメータＣｉは、変数ｉにより指定される手中心又は関節を示す点Ｐｉの三次元座標が空間的かつ時間的に整合しているか否かを示す値である。本実施形態では、整合性パラメータＣｉは、「True」と「False」との２つの値のいずれかの値とする。「True」は、三次元座標が空間的かつ時間的に整合していることを示す値である。「False」は、三次元座標が空間的又は時間的に整合していないことを示す値である。
【００４８】
次に、整合性判定部１３１は、手中心又は関節を示す点Ｐｉの三次元座標（Ｘｉ，Ｙｉ，Ｚｉ）から深度画像内での座標（ｘｉ，ｙｉ）と距離ｚｉとを算出する（ステップＳ６０３０２）。ステップＳ６０３０２では、整合性判定部１３１は、深度画像内での手中心又は関節を示す点Ｐｉの位置と対応する三次元座標（Ｘｉ，Ｙｉ，Ｚｉ）を算出する際の算出式に基づく逆算（逆変換）により、深度画像内での座標（ｘｉ，ｙｉ）と距離ｚｉとを算出する。
【００４９】
次に、整合性判定部１３１は、深度画像における座標（ｘｉ，ｙｉ）の深度値ｚｉ’を読み出し（ステップＳ６０３０３）、ｚｉ’＞ｚｉ＋Ｍであるか否かを判定する（ステップＳ６０３０４）。ここで、Ｍは、距離ｚｉに対するマージンである。マージンＭは、点Ｐｉの三次元座標（Ｘｉ，Ｙｉ，Ｚｉ）と、深度画像における座標（ｘｉ，ｙｉ）及び深度値ｚ’から算出される三次元座標とが整合している（一致している）とみなす範囲に基づいて設定する。言い換えると、マージンＭは、例えば、上肢の太さ等に基づいて、深度値ｚｉ’がｚｉ’＞ｚｉ＋Ｍである場合には該深度値ｚｉ’が対象者の上肢とは異なる物体までの距離を示す値であると認められる値に設定する。すなわち、整合性判定部１３１は、ｚｉ’＞ｚｉ＋Ｍである場合には、点Ｐｉの三次元座標（Ｘｉ，Ｙｉ，Ｚｉ）と、深度画像における座標（ｘｉ，ｙｉ）及び深度値ｚｉ’から算出される三次元座標とが空間的に整合していないと判定する。従って、ｚｉ’＞ｚｉ＋Ｍである場合（ステップＳ６０３０４；ＹＥＳ）、整合性判定部１３１は、整合性パラメータＣｉを「False」に変更する（ステップＳ６０３１２）。
【００５０】
一方、ｚｉ’≦ｚｉ＋Ｍである場合（ステップＳ６０３０４；ＮＯ）、整合性判定部１３１は、次に、現在処理対象となっている手中心又は関節を示す点Ｐｉと、該手中心又は関節と隣接した関節を示す点Ｐｉ＋１との三次元距離ｌｅｎを算出する（ステップＳ６０３０５）。すなわち、ステップＳ６０３０５の処理では、整合性判定部１３１は、現在の変数ｉで指定される手中心又は関節の三次元座標（Ｘｉ，Ｙｉ，Ｚｉ）と、変数ｉ＋１で指定される関節の三次元座標（Ｘｉ＋１，Ｙｉ＋１，Ｚｉ＋１）との距離ｌｅｎを算出する。
【００５１】
次に、整合性判定部１３１は、寸法情報１９２を参照し、算出した三次元距離ｌｅｎと、対象者の上肢における三次元距離ｌｅｎに対応する寸法との差ΔＬを算出する（ステップＳ６０３０６）。例えば、整合性判定部１３１は、変数ｉの値により、点Ｐｉが手中心、手首、肘、及び肩のいずれを示す点であるかを認識可能である。点Ｐｉが手中心、手首、肘、及び肩のいずれであるかを認識した整合性判定部１３１は、該認識結果に基づいて、対象者の上肢における三次元距離ｌｅｎに対応する寸法が寸法情報１９２における３つの寸法Ｌ１，Ｌ２，及びＬ３のいずれであるかを認識する。例えば、点Ｐｉが手中心であれば、整合性判定部１３１は、三次元距離ｌｅｎと対応する寸法が手中心から手首までの距離を示す第１の寸法Ｌ１であると認識し、寸法情報１９２から対象者の第１の寸法Ｌ１を読み出す。点Ｐｉ及び点Ｐｉ＋１の三次元座標は、それぞれ、図３のフローチャートにおけるステップＳ５の処理で算出した座標である。すなわち、点Ｐｉ及び点Ｐｉ＋１の三次元座標は、それぞれ、手中心の位置を検出する三次元空間における任意の二点間の距離の実測値と対応する世界座標系での座標である。従って、点Ｐｉと点Ｐｉ＋１との三次元距離ｌｅｎは、長さの次元を持つ。よって、三次元距離ｌｅｎと対応する寸法を読み出した後、整合性判定部１３１は、三次元距離ｌｅｎと読み出した寸法との差ΔＬを算出する。
【００５２】
次に、整合性判定部１３１は、算出した差ΔＬの絶対値｜ΔＬ｜が閾値ＴＨＬよりも大きいか否かを判定する（ステップＳ６０３０７）。例えば、点Ｐｉ及び点Ｐｉ＋１が、それぞれ、対象者の手中心及び手首の位置と正しく対応している場合、ステップＳ６０３０５で算出した三次元距離ｌｅｎは、対象者の手中心から手首までの寸法と略一致する。また、点Ｐｉ及び点Ｐｉ＋１が、それぞれ、対象者の手首及び肘の位置と正しく対応している場合、ステップＳ６０３０５で算出した三次元距離ｌｅｎは、対象者の手首から肘までの寸法と略一致する。従って、三次元距離ｌｅｎと、該三次元距離ｌｅｎと対応する対象者の寸法との差ΔＬが所定の範囲内となる場合には、２つの点Ｐｉ，Ｐｉ＋１の位置関係と、対象者の上肢の寸法に基づく位置関係とが空間的に整合しているといえる。すなわち、三次元距離ｌｅｎと、該三次元距離ｌｅｎと対応する対象者の寸法との差ΔＬの絶対値｜ΔＬ｜が閾値ＴＨＬよりも大きい場合には、２つの点Ｐｉ，Ｐｉ＋１の位置関係と、対象者の上肢の寸法に基づく位置関係とは空間的に整合していないといえる。よって、｜ΔＬ｜＞ＴＨＬである場合（ステップＳ６０３０７；ＹＥＳ）、整合性判定部１３１は、整合性パラメータＣｉを「False」に変更する（ステップＳ６０３１２）。
【００５３】
これに対し、｜ΔＬ｜≦ＴＨＬである場合（ステップＳ６０３０７；ＮＯ）、整合性判定部１３１は、次に、点Ｐｉの移動速度Ｓｉを算出する（ステップＳ６０３０８）。ステップＳ６０３０８の処理では、整合性判定部１３１は、まず、座標履歴１９３を参照して点Ｐｉについての過去の三次元座標を読み出し、現在の三次元座標と過去の三次元座標との三次元距離Ｄｉを算出する。座標履歴１９３から読み出す三次元座標は、例えば、現在処理対象となっている深度画像の撮像タイミングの１回前となる撮像タイミングで撮像した深度画像に基づいて決定した三次元座標とする。１回前となる撮像タイミングで撮像した深度画像から決定した三次元座標が座標履歴１９３に存在しない場合、整合性判定部１３１は、例えば、２回以上前の撮像タイミングで撮像した深度画像から決定した三次元座標を読み出す。三次元座標を読み出した後、整合性判定部１３１は、２つの三次元座標の三次元距離Ｄｉを算出する。三次元距離Ｄｉを算出した後、整合性判定部１３１は、算出した三次元距離Ｄｉと、深度画像の撮像時刻の差とに基づいて、移動速度Ｓｉを算出する。
【００５４】
次に、整合性判定部１３１は、算出した移動速度Ｓｉが閾値ＴＨＳよりも大きいか否かを判定する（ステップＳ６０３０９）。閾値ＴＨＳは、例えば、人が上肢を動かす際の手中心及び各関節の平均的な移動速度に基づいて設定する。すなわち、整合性判定部１３１は、算出した移動速度ＳｉがＳｉ＞ＴＨＳである場合には、移動速度Ｓｉの算出に用いた２つの三次元座標の位置関係が時間的に整合していないと判定する。よって、Ｓｉ＞ＴＨＳである場合（ステップＳ６０３０９；ＹＥＳ）、整合性判定部１３１は、整合性パラメータＣｉを「False」に変更する（ステップＳ６０３１２）。
【００５５】
ステップＳ６０３１２の処理を行った場合、或いはＳｉ≦ＴＨＳである場合（ステップＳ６０３０９；ＮＯ）、整合性判定部１３１は、次に、現在処理対象である手中心及び関節を示す点のなかに未判定の点があるか否かを判定する（ステップＳ６０３１０）。すなわち、ステップＳ６０３１０の判定を行う時点で、現在処理対象となっている手中心又は関節を示す点Ｐｉについての整合性パラメータＣｉは、「True」及び「False」のいずれかの値に確定する。
【００５６】
整合性を判定していない点がある場合（ステップＳ６０３１０；ＹＥＳ）、整合性判定部１３１は、変数ｉをｉ＋１に更新し整合性パラメータＣｉを「True」に設定する（ステップＳ６０３１１）。その後、整合性判定部１３１は、ステップＳ６０３０２以降の処理を行う。そして、全ての手中心及び関節の整合性を判定した場合（ステップＳ６０３１０；ＮＯ）、整合性判定部１３１は、整合性判別処理を終了する。
【００５７】
このように、本実施形態における整合性判別処理では、整合性判定部１３１は、手中心及び各関節のそれぞれについての整合性パラメータＣｉを「True」及び「False」のいずれかに決定する。この場合、整合性判別処理（ステップＳ６０３）の後に行われるステップＳ６０４の判定において、整合性判定部１３１は、Ｃｉ＝Falseである手中心又は関節の有無を判定する。そして、全ての手中心又は関節についての整合性パラメータＣｉが「True」である場合、整合性判定部１３１は、現在の三次元座標を、深度画像の撮像時刻における三次元座標、すなわち座標履歴１９３に格納する三次元座標に決定する（ステップＳ６０８）。
【００５８】
また、Ｃｉ＝Falseである手中心又は関節が存在する場合であっても、座標再計算処理の実行回数ｒがＮ回以上となった場合（ステップＳ６０５；ＮＯ）には、整合性判定部１３１は、現在の三次元座標を、座標履歴１９３に格納する三次元座標に決定する。
【００５９】
そして、Ｃｉ＝Falseである手中心又は関節が存在し、かつ座標再計算処理の実行回数ｒがＮ回未満である場合には、整合性判定部１３１は、再計算部１３２に座標再計算処理（ステップＳ６０６）を行わせる。再計算部１３２は、座標再計算処理として、例えば、図６のフローチャートに沿った処理を行う。
【００６０】
図６は、第１の実施形態における座標再計算処理の内容を説明するフローチャートである。
【００６１】
再計算部１３２は、図６のように、まず、Ｃｉ＝Falseである手中心又は関節を含む上肢領域の１つを選択し（ステップＳ６０６０１）、深度画像内における手中心の位置を変更する（ステップＳ６０６０２）。ステップＳ６０６０２の処理では、再計算部１３２は、例えば、手首又は肘の位置を始点とし変更前の手中心の位置を終点とするベクトルの方向に、所定の距離（画素数）だけ手中心の位置を移動させる。
【００６２】
次に、再計算部１３２は、変更後の手中心の位置に基づいて、深度画像内における各関節の位置を検出する（ステップＳ６０６０３）。再計算部１３２は、ステップＳ６０６０３の処理として、例えば、画像内位置検出部１２２が行う処理と同様の処理を行い、手首、肘、及び肩の位置を検出する。
【００６３】
次に、再計算部１３２は、手中心及び関節のうちの１つを選択し（ステップＳ６０６０４）、選択した手中心又は関節の位置が上肢領域内であるか否かを判定する（ステップＳ６０６０５）。選択した手中心又は関節の位置が上肢領域内である場合（ステップＳ６０６０５；ＹＥＳ）、再計算部１３２は、深度画像における当該位置の深度値を用いて、選択した手中心又は関節の三次元座標を算出する（ステップＳ６０６０６）。一方、選択した手中心又は関節の位置が上肢領域外である場合（ステップＳ６０６０５；ＮＯ）、再計算部１３２は、選択した手中心又は関節の深度値を算出し、算出した深度値を用いて三次元座標を算出する（ステップＳ６０６０７）。ステップＳ６０６０７の処理では、再計算部１３２は、例えば、上肢領域内における変更前の手中心又は関節の位置と、隣接する関節の位置とを通る線分上での深度値の変化量に基づいて、変更後の手中心又は関節の位置での深度値を算出する（推定する）。
【００６４】
ステップＳ６０６０６又はＳ６０６０７により三次元座標を算出した後、再計算部１３２は、処理対象となっている上肢領域から検出された手中心及び関節のなかに、未選択の手中心又は関節があるか否かを判定する（ステップＳ６０６０８）。未選択の手中心又は関節がある場合（ステップＳ６０６０８；ＹＥＳ）、再計算部１３２は、ステップＳ６０６０４以降の処理を行う。そして、手中心及び関節の全ての三次元座標を算出すると（ステップＳ６０６０８；ＮＯ）、再計算部１３２は、次に、Ｃｉ＝Falseである手中心又は関節を含む上肢領域のなかに未選択の上肢領域があるか否かを判定する（ステップＳ６０６０９）。
【００６５】
未選択の上肢領域がある場合（ステップＳ６０６０９；ＹＥＳ）、再計算部１３２は、未選択の上肢領域に対するステップＳ６０６０１以降の処理を行う。そして、対象となる全ての上肢領域に対する三次元座標の再計算を終えると（ステップＳ６０６０９；ＮＯ）、再計算部１３２は、算出した三次元座標を整合性判定部１３１に通知し（ステップＳ６０６１０）、座標再計算処理を終了する。
【００６６】
再計算部１３２が座標再計算処理を終了すると、上記のように、整合性判定部１３１が、座標再計算処理の回数を示す変数ｒをｒ＋１に更新し（ステップＳ６０７）、再計算した手中心及び各関節の三次元座標についての整合性判別処理（ステップＳ６０３）を行う。
【００６７】
このように、本実施形態の手位置検出装置１は、深度画像に基づいて算出した手中心及び上肢の関節の三次元座標が、対象者の上肢の寸法に基づく手中心及び上肢の関節の位置関係と整合しない場合、手中心の位置を変更して手中心及び関節の三次元座標を補正する。このとき、手位置検出装置１は、手中心の位置を手首又は肘の位置から離間する方向に変更する。このため、本実施形態の手位置検出装置１は、深度画像から検出した上肢領域に手と対応する部分領域が含まれない場合であっても、深度画像から検出した手中心の位置を深度画像の撮像範囲内における対象者の手中心の位置に近づけることが可能となる。従って、本実施形態の手位置検出装置１では、オクルージョン等により対象者の手の部分についての距離の情報が欠落した深度画像からも、対象者の上肢の寸法と対応した手中心及び上肢の関節の適切な三次元座標を算出することが可能となる。
【００６８】
図７は、手位置検出装置の適用例を説明する図である。
図７には、本実施形態の手位置検出装置１の適用例として、作業スペース６内で作業を行う作業員７の手中心の位置の時間履歴に基づいて作業状況を管理する管理システム５を示している。該管理システム５は、手位置検出装置１と、深度センサ２と、管理装置３Ａとを含む。管理システム５における手位置検出装置１及び深度センサ２は、それぞれ、インターネット等の通信ネットワーク４に接続可能な通信機能を含む。また、管理システム５における管理装置３Ａは、図１の外部装置３の一例である。なお、図７に示したｘ方向、ｙ方向、及びｚ方向は、それぞれ、作業スペース６における深度センサ２の座標系のｘ軸方向、ｙ軸方向、及びｚ軸方向を示している。
【００６９】
この種の管理システム５では、例えば、管理システム５の管理者或いは作業員７等が、予め、作業員７の上肢の寸法を入力した寸法情報１９２を作成し、該寸法情報１９２を手位置検出装置１の記憶部１９０に記憶させておく。また、この種の管理システム５では、例えば、作業員７が作業を行っていない期間に、作業スペース６の上方に設置した深度センサ２により深度画像を撮像し、該深度画像を背景画像１９１として記憶部１９０に記憶させておく。深度センサ２は、作業員７が作業を行う第１の作業台８Ａ及び第２の作業台８Ｂにおける作業エリアを含む撮像範囲１０内のＵ×Ｖ個の点についての深度値（距離の情報）を持つ深度画像を撮像する。
【００７０】
管理システム５における手位置検出装置１は、作業員７が作業を行っている期間に、深度センサ２から深度画像を取得して作業員７の手中心及び上肢の関節の三次元位置を算出する処理を行う。深度センサ２は、例えば、撮像範囲内の距離の情報（深度値）を含む深度画像を所定の時間間隔で撮像し、撮像した深度画像を、通信ネットワーク４を介して手位置検出装置１に順次送信する。
【００７１】
手位置検出装置１では、画像取得部１１０が、深度センサ２により撮像された深度画像を順次受信し、記憶部１９０に記憶する。また、手位置検出装置１では、関節位置算出部１２０及び補正部１３０が、深度画像に基づいて作業員７の手中心及び上肢の関節の三次元座標を算出する。関節位置算出部１２０及び補正部１３０は、例えば、図３のフローチャートに沿って、手中心及び上肢の関節の三次元座標を算出する。更に、手位置検出装置１では、出力部１４０が、算出した手中心及び上肢の関節の三次元座標等の情報を管理装置３Ａに出力する（送信する）。
【００７２】
管理装置３Ａでは、例えば、手位置検出装置１で算出した手中心及び上肢の関節の三次元座標の時間履歴と、作業員７が行う作業における左上肢７１０及び右上肢７２０の動きとに基づいて、作業員７が作業を正しく行っているか否か等の管理をする。
【００７３】
図７の管理システム５における深度センサ２の撮像範囲１０は、第１の作業台８Ａ及び第２の作業台８Ｂの表面における作業領域と対応している。このため、深度センサ２により撮像された撮像画像には、第１の作業台８Ａ及び第２の作業台８Ｂにおける作業領域に含まれる部分と対応した距離の情報を含む領域が存在する。また、図７のように、第２の作業台８Ｂのうちの作業領域に含まれる部分に棚９が設置されている場合、深度センサ２により撮像された撮像画像には、棚９の表面（深度センサ２側を向いた面）までの距離の情報を含む領域が存在する。更に、作業員７が作業を行っているときに深度センサ２により撮像された深度画像には、左上肢７１０及び右上肢７２０のうちの、撮像範囲１０内に存在する部分における各点までの距離を示す情報を含む上肢領域が存在する。作業員７が作業を行っているときに深度センサ２により撮像された深度画像には、例えば、左上肢７１０の手７１１及び手首７１２の部分における各点までの距離を示す情報を含む上肢領域が存在する。また、該深度画像には、例えば、右上肢７２０の手７２１、手首７２１、及び図示しない肘の部分における各点までの距離を示す情報を含む上肢領域が存在する。以下の説明では、左上肢７１０の手７１１、手首７１２、肘７１３、及び肩７１４を、それぞれ、左手７１１、左手首７１２、左肘７１３、及び左肩７１４ともいう。また、以下の説明では、右上肢７２０の手７２１、手首７２２、肘（図示せず）、及び肩７２４を、それぞれ、右手７２１、右手首７２２、右肘、及び右肩７２４ともいう。
【００７４】
なお、図７の作業スペース６において作業員７が作業を行うときには、例えば、工具の出し入れ等を目的として、第２の作業台８Ｂの表面と棚９との間に右手７２１を挿入することがある。作業員７が第２の作業台８Ｂの表面と棚９との間に右手７２１を挿入した場合、深度センサ２と作業員７の右手７２１との間には棚９が存在する。このため、作業員７が第２の作業台８Ｂの表面と棚９との間に右手７２１を挿入しているときに深度センサ２により撮像された深度画像は、例えば、図８のように作業員７の手領域（右手７２１）の距離を示す情報が欠落した深度画像となる。
【００７５】
図８は、手領域の距離を示す情報が欠落した深度画像の例を示す図である。
図８の深度画像１１０１は、撮像領域１０内におけるＵ×Ｖ個の点のそれぞれについての深度値を含む。図８におけるＱ（０，０），Ｑ（Ｕ−１，０），Ｑ（０，Ｖ−１），及びＱ（Ｕ−１，Ｖ−１）の４個の点は、それぞれ、深度画像１１０１における四隅の画素（深度値の検出位置）を示している。
【００７６】
深度画像１１０１は、第１の作業台８Ａを示す領域と、第２の作業台８Ｂを示す領域と、棚９を示す領域とを含む。図８の深度画像１１０１では、各領域の深度値を領域内のドットパターンの密度で示しており、ドットパターンの密度が高い領域ほど深度値が小さい（すなわち深度センサ２からの距離が短い）。
【００７７】
また、図８の深度画像１１０１は、作業員７の左上肢７１０と対応する第１の上肢領域と、作業員７の右上肢７２０と対応する第２の上肢領域とを含む。なお、図８の深度画像は、作業員７が右上肢７２０を伸ばして右手を第２の作業台８Ｂと棚９との間に挿入しているときに撮像した深度画像である。このため、第２の上肢領域は、右上肢７２０における手首７２２から、肘７２３と肩（図示せず）との間となる位置までを含む領域となり、手首７２２から先の手領域（右手）を含まない。一方、第１の上肢領域は、左上肢７１０における手首７１２から先の手領域（左手７１１）を含む。
【００７８】
本実施形態の手位置検出装置１において図８の深度画像１１０１から手中心及び各関節の三次元座標を算出する場合、手位置検出装置１は、図３のフローチャートに沿った処理を行う。すなわち、手位置検出装置１は、まず、図８の深度画像１１０１から第１の上肢領域及び第２の上肢領域を検出する（ステップＳ２）。手位置検出装置１は、例えば、背景画像１９１を用いた背景差分法により第１の上肢領域及び第２の上肢領域を検出する。
【００７９】
図９は、背景差分法による上肢領域の検出方法を説明する図である。
図９の（ａ）の背景画像１９１は、上記のように、作業員７が作業を行っていないときに深度センサ２で撮像した深度画像である。背景画像１９１は、第１の作業台８Ａを示す領域と、第２の作業台を示す領域と、棚９を示す領域とを含む。背景画像１９１では、各領域の深度値を領域内のドットパターンの密度で示しており、密度が高い領域ほど深度値が小さい（すなわち深度センサ２からの距離が短い）。
【００８０】
背景差分法により深度画像１１０１から上肢領域を検出する処理は、手位置検出装置１の上肢領域検出部１２１が行う。上肢領域検出部１２１は、例えば、図８の深度画像１１０１における各位置（各画素）の深度値毎に、背景画像１９１における同じ位置の深度値との差を算出し、算出した深度値の差と閾値との大小関係に基づいて深度画像１１０１内の各位置の深度値を二値化する。ここで、閾値は、例えば、三次元空間における実距離に換算すると数ｍｍから数ｃｍ程度となる値とする。このようにすると、深度画像１１０１における上肢領域内の各位置は深度値の差が閾値よりも大きくなり、上肢領域外の各位置は深度値の差が閾値以下となる。例えば、図８の深度画像１１０１における左上肢７１０と対応する領域内の各位置の深度値は、第１の作業台８Ａの表面の深度値よりも小さな値となり、その差は実距離で数ｃｍから十数ｃｍとなる。同様に、図８の深度画像１１０１における右上肢７２０と対応する領域内の各位置の深度値は、第１の作業台８Ａの表面の深度値よりも小さな値となり、その差は実距離で数ｃｍから十数ｃｍとなる。これに対し、図８の深度画像１１０１における第１の作業台８Ａの深度値を示す領域内及び第２の作業台８Ｂの深度値を示す領域内の各位置では、深度画像１１０１における深度値と背景画像１９１における深度値との差が０から数ｍｍ程度となる。また、図８の深度画像１１０１における棚９の深度値を示す領域内の各位置では、深度画像１１０１における深度値と背景画像１９１における深度値との差が０から数ｍｍ程度となる。
【００８１】
よって、上肢領域検出部１２１は、図８の深度画像１１０１と、図９の（ａ）の背景画像１９１とに基づいて、図９の（ｂ）のような二値画像１１０２を生成する。図９の（ｂ）の二値画像１１０２では、深度値の差が閾値よりも大きい画素を含む第１の上肢領域１１０２Ａ及び第２の上肢領域１１０２Ｂを白地で示し、深度値の差が閾値以下である画素を含む領域にはドットパターンを付している。
【００８２】
なお、背景差分法により二値画像１１０２を生成する場合、上肢領域検出部１２１は、例えば、上肢領域の輪郭（上肢領域内と上肢領域外との境界）が不連続となることを防止ための平滑化処理等を行ってもよい。
【００８３】
背景差分法により深度画像１１０１から上肢領域１１０２Ａ及び１１０２Ｂが検出された場合、手位置検出装置１は、上肢領域１１０２Ａ及び１１０２Ｂのそれぞれから手中心及び各関節の位置を検出する（ステップＳ４）。ステップＳ４の処理は、上記のように、手位置検出装置１の画像内位置検出部１２２が行う。画像内位置検出部１２２は、例えば、上肢領域の位置及び形状に基づいて深度画像１１０１（又は二値画像１１０２）における上肢の延在方向を示す線分を生成した後、該線分と上肢領域の輪郭とに基づいて手中心の位置及び各関節の位置を検出する。
【００８４】
図１０は、深度画像における手中心及び各関節の位置の検出方法の一例を説明する図である。
【００８５】
画像内位置検出部１２２は、例えば、上肢領域を検出する際に生成した二値画像１１０２を利用して、深度画像における手中心及び各関節の位置を検出する。図９の（ｂ）の二値画像１１０２のように第１の上肢領域１１０２Ａと第２の上肢領域１１０２Ｂとが検出された場合、画像内位置検出部１２２は、例えば、まず、第１の上肢領域１１０２Ａから手中心及び各関節の位置を検出する。
【００８６】
第１の上肢領域１１０２Ａから手中心及び各関節の位置を検出する場合、画像内位置検出部１２２は、図１０に示すように、第１の上肢領域１１０２Ａにおける上肢の延伸方向を示す線分群ＦＬを生成する。図１０の二値画像１１０２では、画像下方に対象者が存在する。このため、二値画像１１０２における第１の上肢領域１１０２Ａと対応する左上肢の延在方向は、二値画像１１０２の下辺から上辺に向かう方向となる。よって、画像内位置検出部１２２は、例えば、まず、第１の上肢領域１１０２Ａにおける左右方向の端部の距離を縮めてゆき第１の上肢領域１１０２Ａを曲線に変換する。その後、画像内位置検出部１２２は、変換して得られた第１の上肢領域１１０２Ａと対応する曲線を、該曲線を近似する複数の線分に変換する。これにより、図１０の二値画像１１０２に示したような、左上肢の延在方向を示す複数の線分を含む線分群ＦＬが生成される。
【００８７】
左上肢の延在方向を示す線分群ＦＬを生成した後、画像内位置検出部１２２は、線分群ＦＬと第１の上肢領域１１０２Ａの輪郭とに基づいて、手中心（左手の中心）の位置を決定する。上記のように、作業者７は二値画像１１０２の下方に存在している。このため、手中心及び各関節が線分群の線分上に存在する場合、線分に沿った二値画像１１０２の下辺から手中心までの距離は、手首や肘等の関節までの距離よりも長くなる。また、手中心は手のひらの中心であるため、第１の上肢領域１１０２Ａにおける手中心と対応する部分の寸法及び形状は、手のひらの寸法及び形状と略一致する。従って、画像内位置検出部１２２は、例えば、線分群ＦＬの両端のうちの二値画像１１０２の下辺から遠いほうの端Ｑ１０を始点とし、二値画像１１０２の下辺と接する端Ｑ１３に向かって手中心の位置を検出する処理を行う。このとき、画像内位置検出部１２２は、例えば、線分群ＦＬ上の複数の点のなかから、線分上の点を中心とする所定の半径の円Ｈが第１の上肢領域１１０２Ａに内接する点を検出する。図１０の二値画像１１０２における第１の上肢領域１１０２Ａでは、線分群ＦＬにおける折れ曲がり点Ｑ１１で、円Ｈが第１の上肢領域１１０２Ａに内接している。このため、画像内位置検出部１２２は、折れ曲がり点Ｑ１１を手中心の位置を示す点Ｐ０として検出する。
【００８８】
手中心の位置を検出した後、画像内位置検出部１２２は、手中心の位置と、線分群における折れ曲がり点の位置と、二値画像１１０２における手中心から手首までの距離の平均値とに基づいて、手首の位置を検出する。手首の位置を検出する際、画像内位置検出部１２２は、線分群における手中心の位置から手首の位置となる方向に存在する折れ曲がり点を検出し、手首の位置として適切か否かを判定する。画像内位置検出部１２２は、図１０の二値画像１１０２の線分群ＦＬにおいて手中心の位置Ｑ１１から手首の位置となる方向に存在する折れ曲がり点Ｑ１２を検出し、該折れ曲がり点Ｑ１２が手首の位置として適切か否かを判定する。このとき、画像内位置検出部１２２は、例えば、手中心の位置Ｑ１１から折れ曲がり点Ｑ１２までの距離が手中心から手首までの距離と対応しているか否かに基づいて、折れ曲がり点Ｑ１２が手首の位置として適切か否かを判定する。また、画像内位置検出部１２２は、例えば、折れ曲がり点Ｑ１２で接続している２本の線分のなす角が、手首の屈曲可能な角度範囲内であるか否かに基づいて、折れ曲がり点Ｑ１２が手首の位置として適切か否かを判定する。そして、折れ曲がり点Ｑ１２が手首の位置として適切であると判定した場合、画像内位置検出部１２２は、折れ曲がり点Ｑ１２を手首の位置を示す点Ｐ２として検出する。
【００８９】
その後、画像内位置検出部１２２は、続けて、肘の位置を検出する。しかしながら、図１０の二値画像１１０２における第１の上肢領域１１０２Ａは、左肘の部分を含まない。このため、画像内位置検出部１２２は、第１の上肢領域１１０２Ａから手中心及び各関節の位置を検出する処理を終了し、次に、第２の上肢領域１１０２Ｂから手中心及び各関節の位置を検出する処理を行う。
【００９０】
第２の上肢領域１１０２Ｂから手中心及び各関節の位置を検出する場合も、画像内位置検出部１２２は、まず、第２の上肢領域１１０２Ｂと対応する上肢の延伸方向を示す線分群ＦＲを生成する。その後、画像内位置検出部１２２は、生成した線分群ＦＲにおいて日画像１１０２の下辺から最も遠い端Ｑ２０を始点とし、線分群ＦＲにおける他端Ｑ２３に向かって手中心の位置を検出する処理を行う。このとき、画像内位置検出部１２２は、線分群ＦＲにおける折れ曲がり点Ｑ２１を手中心の位置を示す点Ｐ０として検出する。
【００９１】
第２の上肢領域１１０２Ｂにおける手中心の位置を検出した後、画像内位置検出部１２２は、線分群ＦＲ上で手首の位置を検出する。しかしながら、図１０の二値画像における線分群ＦＲでは、折れ曲がり点Ｑ２１から手首の方向に見たときに最初に現れる折れ曲がり点Ｑ２２は、第２の上肢領域１１０２Ｂと対応する右上肢の肘の部分に存在する。このため、手中心の位置（折れ曲がり点Ｑ２１）から折れ曲がり点Ｑ２２までの距離は、手中心から手首までの距離よりも長くなる。すなわち、線分群ＦＲにおける折れ曲がり点Ｑ２１を手中心の位置とした場合、線分群ＦＲには手首の位置と対応する折れ曲がり点が存在しない。このように、線分群に手首の位置と対応する折れ曲がり点が存在しない場合、画像内位置検出部１２２は、例えば、手中心の位置（折れ曲がり点Ｑ２１）と折れ曲がり点Ｑ２２とを結ぶ線分上の点Ｑ２４を、手首の位置を示す点Ｐ１として検出する。点Ｑ２４は、手中心の位置と折れ曲がり点Ｑ２２とを結ぶ線分上の複数の点のうちの、手中心の位置からの距離が深度画像における手中心から手首までの距離となる点である。
【００９２】
その後、画像内位置検出部１２２は、線分群ＦＲにおける折れ曲がり点Ｑ２２を肘の位置を示す点Ｐ２として検出する。また、肘の位置を検出した後、画像内位置検出部１２２は、肩の位置を検出する処理を行うが、図１０の二値画像１１０２における第２の上肢領域は、右肩の部分を含まない。このため、画像内位置検出部１２２は、第１の上肢領域１１０２Ａから手中心及び各関節の位置を検出する処理を終了する。
【００９３】
二値画像に基づいて上肢領域内の手中心及び各関節の位置を検出した後、手位置検出装置１は、三次元座標算出部１２３により検出した手中心及び各関節の三次元座標を算出する。三次元座標算出部１２３は、ピンホールカメラモデルを適用し、深度画像の撮像範囲と、深度画像の画素数と、深度画像における手中心及び関節の位置と、深度値とに基づいて、手中心及び関節の三次元座標を算出する。
【００９４】
三次元座標算出１２３は、深度画像１１０１（二値画像１１０２）から検出された上肢領域毎に、検出した手中心及び各関節の三次元座標を算出する。例えば、三次元座標算出部１２３は、まず、図１０の第１の上肢領域１１０２Ａから検出した手中心の位置を示す点Ｐ０の三次元座標、及び手首の位置を示す点Ｐ１の三次元座標を算出する。三次元座標算出部１２３は、ピンホールカメラモデルを適用し、深度画像１１０１における手中心の位置Ｑ１１と、該位置Ｑ１１の深度値と、深度画像１１０１の撮像範囲と、深度画像１１０１の画素数とに基づいて、手中心及び手首の三次元座標を算出する。その後、三次元座標算出部１２３は、図１０の第２の上肢領域１１０２Ｂから検出した手中心の位置を示す点Ｐ０の三次元座標、手首の位置を示す点Ｐ１の三次元座標、及び肘の位置を示す点Ｐ２の三次元座標を算出する。
【００９５】
深度画像１１０１から検出した手中心及び各関節についての三次元座標を算出した後、手位置検出装置１は、補正部１３０により三次元座標の補正の有無の判定及び補正を行う。三次元座標の補正の有無の判定は、整合性判定部１３１が行う。整合性判定部１３１は、図５のフローチャートに沿った整合性判別処理を行って、三次元座標の補正の有無を判定する。整合性判定部１３１が行う整合性判別処理は、空間整合性の判別と、時間整合性の判別とを含む。
【００９６】
図１１は、空間整合性の判別方法を説明する図である。
図１１の深度画像１１０１には、上肢領域１１０１Ａ及び１１０１Ｂと、手中心及び各関節の位置とを示している。
【００９７】
整合性判定部１３１は、深度画像１１０１における上肢領域毎に、手中心及び各関節の三次元座標（位置）についての空間整合性及び時間整合性の判別を行う。このとき、本実施形態の手位置検出装置１における整合性判定部１３１は、図５のフローチャートのように、まず、空間整合性の判別を行う。
【００９８】
例えば、図１１の深度画像１１０１における第１の上肢領域１１０１Ａには、手中心を示す点Ｐ０と手首を示す点Ｐ１とが示されている。空間整合性の判別では、整合性判定部１３１は、手中心と手首との位置関係についての空間的な整合性を判別する。整合性判定部１３１は、まず、手中心を示す点Ｐ０についての整合性パラメータＣ０を「True」とし（ステップＳ６０３０１）、点Ｐ０の三次元座標（Ｘ０，Ｙ０，Ｚ０）から深度画像１１０１内の座標（ｘ０，ｙ０）と距離ｚ０とを算出する（ステップＳ６０３０２）。ここで、整合性判定部１３１は、深度画像１１０１の座標及び深度値から三次元座標を算出する数式に対する逆算の数式により、三次元座標（Ｘ０，Ｙ０，Ｚ０）を深度画像内の座標（ｘ０，ｙ０）と距離ｚ０とに変換する。
【００９９】
次に、整合性判定部１３１は、点Ｐ０についての距離ｚ０と、深度画像１１０１における座標（ｘ０，ｙ０）の深度値ｚ０’との大小関係がｚ０’＞ｚ０＋Ｍであるか否かを判定する（ステップＳ６０３０３及びＳ６０３０４）。深度画像１１０１における座標（ｘ０，ｙ０）の深度値が深度画像の撮像範囲内に存在する手中心までの距離と対応している場合、距離ｚ０と深度値ｚ０’との大小関係は、上記のようにｚ０’≦ｚ０＋Ｍとなる。図１１の深度画像１１０１における手中心を示す点Ｐ０は第１の上肢領域１１０１Ａ内に含まれ、かつ手のひらの中央部に存在する。このため、手中心を示す点Ｐ０についての距離ｚ０と深度値ｚ０’との大小関係は、ｚ０’≦ｚ０＋Ｍとなる。この場合、整合性判定部１３１は、次に、手中心の位置と、隣接する関節（手首）の位置との三次元距離ｌｅｎを算出し、距離ｌｅｎが対象者の手中心から手首までの寸法と整合するか否かを判定する（ステップＳ６０３０５〜Ｓ６０３０７）。
【０１００】
ｚ０’≦ｚ０＋Ｍである場合、整合性判定部１３１は、次に、手中心を示す点Ｐ０の三次元座標（Ｘ０，Ｙ０，Ｚ０）と、隣接する手首を示す点Ｐ１の三次元座標（Ｘ１，Ｙ１，Ｚ１）との三次元距離ｌｅｎを算出する（ステップＳ６０３０５）。図１１の深度画像１１０１における点Ｐ０と点Ｐ１との距離ｌｅｎ１’は、三次元距離ｌｅｎと対応する深度画像内での距離（平面内距離）を示している。三次元距離ｌｅｎを算出した後、整合性判定部１３１は、寸法履歴１９２から対象者の手中心から手首までの寸法（第１の寸法Ｌ１）を読み出して差ΔＬ＝ｌｅｎ−Ｌ１を算出する（ステップＳ６０３０６）。
【０１０１】
三次元距離ｌｅｎと対象者の寸法との差ΔＬを算出した後、整合性判定部１３１は、算出した差ΔＬの絶対値｜ΔＬ｜と閾値ＴＨＬとの関係が｜ΔＬ｜＞ＴＨＬであるか否かを判定する（ステップＳ６０３０７）。
【０１０２】
図１１の深度画像１１０１における第１の上肢領域１１０１Ａ内の点Ｐ１の位置は、手首の部分に存在する。このため、深度画像１１０１における点Ｐ１の位置の座標（ｘ１，ｙ１）及び深度値に基づいて算出した点Ｐ１の三次元座標は、深度画像の撮像範囲内における手首の位置と対応している。従って、点Ｐ０の三次元座標と点Ｐ１の三次元座標との三次元距離ｌｅｎは、手中心と深度画像の撮像範囲内における対象者の手中心から手首までの寸法と略一致する。すなわち、整合性判定部１３１が算出した差ΔＬは非常に小さな値となるため、絶対値｜ΔＬ｜と閾値ＴＨＬとの大小関係は｜ΔＬ｜≦ＴＨＬとなる。この場合、整合性判定部１３１は、手中心を示す点Ｐ０の三次元座標（Ｘ０，Ｙ０，Ｚ０）と、深度画像の撮像範囲内における対象者の手中心の位置とが空間的に整合すると判定する。空間的に整合すると判定した場合、整合性判定部１３１は、次に、手中心を示す点Ｐ０の三次元座標（Ｘ０，Ｙ０，Ｚ０）が時間的に整合するか否か（時間整合性）を判定する（ステップＳ６０３０８及びＳ６０３０９）。
【０１０３】
点Ｐ０の三次元座標についての時間整合性を判定するため、本実施形態の整合性判定部１３１は、点Ｐ０の移動速度Ｓ０を算出する（ステップＳ６０３０８）。移動速度Ｓ０を算出するため、整合性判定部１３１は、過去の深度画像１１０１における第１の上肢領域１１０１Ａから検出した手中心を示す点Ｐ０の三次元座標（Ｘ０’，Ｙ０’，Ｚ０’）を座標履歴１９３から読み出す。例えば、図１１の深度画像１１０１が時刻ｔに撮像された深度画像である場合、整合性判定部１３１は、例えば、時刻ｔ−Δｔに撮像された深度画像から検出した点Ｐ０の三次元座標を読み出す。ここで、Δｔは、例えば、深度センサ２における深度画像の撮像間隔である。
【０１０４】
過去の点Ｐ０の三次元座標を読み出した後、整合性判定部１３１は、現在の点Ｐ０の三次元座標（Ｘ０，Ｙ０，Ｚ０）と過去の点Ｐ０の三次元座標（Ｘ０’，Ｙ０’，Ｚ０’）との三次元距離と、深度画像の撮像間隔Δｔとに基づいて、移動速度Ｓ０を算出する。
【０１０５】
深度画像の撮像範囲１０内で作業員７の上肢が動いている場合、作業員７が動かしている手の移動速度には上限がある。このため、現在の点Ｐ０の三次元座標（Ｘ０，Ｙ０，Ｚ０）と過去の点Ｐ０の三次元座標（Ｘ０’，Ｙ０’，Ｚ０’）とが、それぞれ、深度画像の撮像範囲内における対象者の左手の手中心と対応している場合には、移動速度Ｓ０は、必ず閾値ＴＨＳ以下となる。言い換えると、移動速度Ｓ０が閾値ＴＨＳよりも大きい場合、現在の点Ｐ０の三次元座標（Ｘ０，Ｙ０，Ｚ０）と対応する対象者の上肢内での位置は、過去の点Ｐ０の三次元座標（Ｘ０’，Ｙ０’，Ｚ０’）と対応する対象者の上肢内での位置とは異なるといえる。よって、Ｓ０≦ＴＨＳである場合には、整合性判定部１３１は、手中心を示す点Ｐ０の三次元座標（Ｘ０，Ｙ０，Ｚ０）と、過去の手中心の三次元座標とが時間的に整合すると判定する。時間的に整合すると判定した場合、整合性判定部１３１は、手中心を示す点Ｐ０に対する整合性パラメータＣ０を「True」のままとする。一方、Ｓ０＞ＴＨＳである場合には、整合性判定部１３１は、手中心を示す点Ｐ０の三次元座標（Ｘ０，Ｙ０，Ｚ０）と、過去の手中心の三次元座標とは時間的に整合しないと判定する。時間的に整合しないと判定した場合、整合性判定部１３１は、手中心を示す点Ｐ０に対する整合性パラメータＣ０を「False」に変更する（ステップＳ６０３１２）。
【０１０６】
整合性判定部１３１は、第１の上肢領域１１０１Ａから検出した手中心を示す点Ｐ０についての整合性の判別を終えると、次に、第１の上肢領域１１０１Ａから検出した手首を示す点Ｐ１についての整合性の判別を行う。図１１の深度画像１１０１では、第１の上肢領域１１０１Ａから検出された関節が手首のみである。このため、点Ｐ１についての整合性の判別を終えると、整合性判定部１３１は、第１の上肢領域１１０１Ａから検出された手中心及び関節を処理対象とする整合性判別処理を終了する。
【０１０７】
また、整合性判定部１３１は、図１１の深度画像１１０１における第２の上肢領域１１０１Ｂから検出された手中心及び関節を処理対象と整合性判別処理では、以下のような処理を行う。
【０１０８】
整合性判定部１３１は、まず、第２の上肢領域１１０１Ｂから検出された手中心を示す点Ｐ０の整合性パラメータＣ０を「True」に設定し、点Ｐ０の三次元座標の空間整合性についての判定を行う。整合性判定部１３１は、まず、点Ｐ０の三次元座標から深度画像内での座標（ｘ０，ｙ０）と距離ｚ０とを算出し、距離ｚ０と深度画像における座標（ｘ０，ｙ０）の深度値ｚ０’との関係がｚ０’＞ｚ０＋Ｍであるか否かを判定する。図１１の深度画像１１０１では、点Ｐ０の位置が第２の上肢領域１１０１Ｂ内である。このため、距離ｚ０と深度値ｚ０’との関係は、ｚ０’≦ｚ０＋Ｍとなる。従って、整合性判定部１３１は、次に、第２の上肢領域１１０１Ｂから検出された手中心を示す点Ｐ０と手首を示す点Ｐ１との三次元距離ｌｅｎを算出し、該三次元距離ｌｅｎと対象者の手中心から手首までの寸法との差ΔＬを算出する。その後、整合性判定部１３１は、算出した差ΔＬの絶対値｜ΔＬ｜と閾値ＴＨＬとの関係が｜ΔＬ｜＞ＴＨＬであるか否かを判定する。
【０１０９】
図１１の深度画像１１０１の第２の上肢領域１１０１Ｂにおける手首を示す点Ｐ１の位置は、例えば、手中心を示す点Ｐ０と肘を示す点Ｐ２とを結ぶ線分上であって、点Ｐ０からの距離が手中心から手首までの寸法となる点である。このため、手中心を示す点Ｐ０と手首を示す点Ｐ１との三次元距離ｌｅｎは、対象者の手中心から手首までの寸法と略一致する。よって、絶対値｜ΔＬ｜と閾値ＴＨＬとの大小関係は、｜ΔＬ｜≦ＴＨＬとなる。この場合、整合性判定部１３１は、手中心を示す点Ｐ０の三次元座標（Ｘ０，Ｙ０，Ｚ０）と、深度画像の撮像範囲内における対象者の手中心の位置とが空間的に整合すると判定する。空間的に整合すると判定した場合、整合性判定部１３１は、次に、手中心を示す点Ｐ０の三次元座標（Ｘ０，Ｙ０，Ｚ０）の移動速度Ｓ０を算出し、点Ｐ０の三次元座標が時間的に整合するか否か（時間整合性）を判定する。時間的に整合する場合、整合性判定部１３１は、点Ｐ０の整合性パラメータＣ０を「True」のままとする。一方、時間的に整合しない場合、整合性判定部１３１は、点Ｐ０の整合性パラメータＣ０を「False」に変更する。その後、整合性判定部１３１は、第２の上肢領域１１０１Ｂから検出された手首を示す点Ｐ１の三次元座標の空間整合性についての判定する。
【０１１０】
詳細な説明は省略するが、整合性判定部１３１が点Ｐ１の三次元座標から算出した距離ｚ１と、深度画像１１０１における深度値ｚ１’との関係は、ｚ１’＜ｚ１＋Ｍとなる。このため、整合性判定部１３１は、次に、手首を示す点Ｐ１と肘を示す点Ｐ２との三次元距離ｌｅｎが対象者の手首から肘までの寸法と整合するか否かを判定する。図１１の深度画像１１０１における第２の上肢領域１１０１Ｂは、上記のように、オクルージョンにより対象者の右上肢における手の部分と対応する領域１１０１Ｃが欠落している。第２の上肢領域１１０１Ｂが手の部分と対応する領域１１０１Ｃを含む場合、第２の上肢領域１１０Ｂから検出される手中心及び手首の位置は、それぞれ、図１１の深度画像１１０１における点ＰＣ０及び点ＰＣ１の位置となる。すなわち、オクルージョンにより対象者の右上肢における手の部分と対応する領域１１０１Ｃが欠落している深度画像１１０１では、手中心を示す点Ｐ０及び手首を示す点Ｐ１の位置が、それぞれ、実際の位置よりも肘関節側に寄っている。従って、手首を示す点Ｐ１と肘を示す点Ｐ２との三次元距離ｌｅｎは、正しい手首の位置を示す点ＰＣ１と肘を示す点Ｐ２との三次元距離よりも短く、かつ距離の差が略同一であるとは言い難い大きさとなる。図１１の深度画像１１０１における第２の上肢領域１１０１Ｂ内の点Ｐ１と点Ｐ２との距離ｌｅｎ２’は、該２つの点Ｐ１及びＰ２の三次元距離ｌｅｎと対応する深度画像内での距離（平面内距離）を示している。また、図１１の深度画像１１０１における点ＰＣ１と点Ｐ２との距離ｌｅｎｃ’は、該２つの点ＰＣ１及びＰ２の三次元距離と対応する深度画像内での距離（平面内距離）を示している。
【０１１１】
すなわち、第２の上肢領域１１０１Ｂから検出した手首を示す点Ｐ１が判定対象である場合、点Ｐ１と点Ｐ２との三次元距離ｌｅｎと、対象者の手首から肘までの寸法との差ΔＬの絶対値｜ΔＬ｜は、｜ΔＬ｜＞ＴＨＬとなる。｜ΔＬ｜＞ＴＨＬである場合、整合性判定部１３１は、第２の上肢領域１１０１Ｂから検出した手首を示す点Ｐ１の三次元座標と、隣接する肘を示す点Ｐ２の三次元座標とが空間的に整合しないと判定する。このため、整合性判定部１３１は、第２の上肢領域１１０１Ｂから検出した手首を示す点Ｐ１の整合性パラメータＣ１を「False」に変更する（ステップＳ６０３１２）。このように、空間的に整合しないと判定した場合、整合性判定部１３１は、点Ｐ１に対する時間整合性についての判定を省略し、次に、点Ｐ２の整合性についての判定を行う。図１１の深度画像１１０１では、第２の上肢領域１１０１Ｂから検出された関節が手首及び肘のみである。このため、点Ｐ２の整合性についての判定を終えると、整合性判定部１３１は、第２の上肢領域１１０１Ｂから検出された手中心及び関節を処理対象とする整合性判別処理を終了する。
【０１１２】
図１１の深度画像１１０１から検出した手中心及び関節に対する整合性判別処理を終えると、整合性判定部１３１は、上肢領域毎に、整合性パラメータＣｉが「False」である手中心又は関節が存在するか否かを判定する（ステップＳ６０４）。判定の対象となっている上肢領域と対応する手中心及び関節の全ての整合性パラメータが「True」である場合、整合性判定部１３１（補正部１３０）は、手中心及び各関節の現在の三次元座標を、座標履歴１９３に格納する三次元座標に決定する（ステップＳ６０８）。
【０１１３】
一方、整合性パラメータが「False」である手中心又は関節が存在する場合、整合性判定部１３１は、手中心の位置を変更して手中心及び各関節の三次元座標を再計算する座標再計算処理（ステップＳ６０６）を再計算部１３２に行わせる。なお、本実施形態の手位置検出装置１における整合性判定部１３１は、図４のフローチャートのように、座標再計算処理を行った回数ｒがＮ回以下である場合に、再計算部１３２に座標再計算処理を行わせる。
【０１１４】
処理の対象となっている深度画像が図１１の深度画像１１０１であり、かつ整合性判別処理の判定対象が第１の上肢領域１１０１Ａである場合、整合性パラメータは全て「True」である。このため、整合性判定部１３１は、第１の上肢領域１１０１Ａと対応する手中心を示す点Ｐ０の現在の三次元座標及び手首を示す点Ｐ１の現在の三次元座標を、座標履歴１９３に格納する三次元座標に決定する。
【０１１５】
これに対し、処理の対象となっている深度画像が図１１の深度画像１１０１であり、かつ整合性判別処理の判定対象が第２の上肢領域１１０１Ｂである場合、手首を示す点Ｐ１の整合性パラメータＣ１が「False」となっている。このため、整合性判定部１３１は、第２の上肢領域１１０１Ｂと対応する手中心及び各関節の三次元座標を再計算する座標再計算処理を、再計算部１３２に行わせる。再計算部１３２は、座標再計算処理として、図６のフローチャートに沿った処理を行う。すなわち、再計算部１３２は、図１１の深度画像１１０１における第２の上肢領域１１０１Ｂ内の手中心を示す点Ｐ０の位置を変更し、変更後の点Ｐ０の位置に基づいて、第２の上肢領域１１０１Ｂと対応する手中心及び各関節の三次元座標を算出する。
【０１１６】
再計算部１３２は、まず、深度画像１１０１における第２の上肢領域１１０Ｂと対応する手中心を示す点Ｐ０の位置を変更する（ステップＳ６０６０１）。ステップＳ６０６０１の処理では、再計算部１３２は、例えば、手首を示す点Ｐ１又は肘を示す点Ｐ２を始点とし、手中心を示す点Ｐ０を終点とする深度画像１１０１内のベクトルの方向に、所定の距離（画素数）だけ、点Ｐ１の位置を移動させる。
【０１１７】
図１２は、手中心の位置の変更方法を説明する図である。図１２には、図１１の深度画像１１０１における第２の上肢領域１１０１Ｂと対応する手中心を示す点Ｐ０の位置の変更方法の例を示している。
【０１１８】
図１２の深度画像１１０１における変更前の点Ｐ０の位置は、図１０の線分群ＦＲにおける折れ曲がり点Ｑ２１の位置である。また、図１２の深度画像１１０１における肘を示す点Ｐ２の位置は、図１０の線分群ＦＲにおける折れ曲がり点Ｑ２２の位置である。また、図１２の深度画像１１０１における手首を示す点Ｐ１の位置は、線分群ＦＲにおける点Ｑ２１と点Ｑ２２とを結ぶ線分上の点Ｑ２４の位置である。
【０１１９】
手中心を示す点Ｐ０の位置を変更する場合、再計算部１３２は、手首を示す点Ｐ１を始点とし、手中心を示す点Ｐ０を終点とする深度画像１１０１内のベクトルの方向に所定の距離（画素数）だけ移動させる。点Ｐ０の位置を変更する前の深度画像１１０１における点Ｐ０及び点Ｐ１の位置はそれぞれ、位置Ｑ２１及びＱ２４である。図１２の深度画像１１０１が処理の対象である場合、再計算部１３２は、位置Ｑ２４を始点とし、位置Ｑ２１を終点とするベクトルの方向に手中心を示す点Ｐ０の位置を変更する。すなわち、再計算部１３２は、深度画像１１０１における位置Ｑ２１及びＱ２４を通る線分ＬＳ１上であって、位置Ｑ２４からの距離が位置Ｑ２１よりも長くなる方向に、所定の画素数分だけ、手中心の位置Ｐ０を変更する。
【０１２０】
手中心を示す点Ｐ０の位置を変更した後、再計算部１３２は、変更後の点０の位置に基づいて手首を示す点Ｐ１の位置、肘を示す点Ｐ２の位置を変更する（ステップＳ６０６０２）。図１２の深度画像１１０１における点Ｐ０の位置が位置Ｑ２１から位置Ｑ２５に変更された場合、再計算部１３２は、例えば、点Ｐの移動量分だけ手首を示す点Ｐ１の位置を位置Ｑ２４から位置Ｑ２１側に移動させる。また、再計算部１３２は、肘を示す点Ｐ２の位置は位置Ｑ２２のままとする。
【０１２１】
深度画像１１０１における手中心及び各関節の位置を変更した後、再計算部１３２は、手中心及び各関節の三次元座標を算出する（ステップＳ６０６０３〜Ｓ６０６０７）。手中心及び各関節の三次元座標を算出する際、再計算部１３２は、まず、三次元座標を算出する手中心又は関節の深度画像内での位置が上肢領域内であるか否かを判定する（ステップＳ６０６０４）。手中心又は関節の位置が上肢領域内である場合、再計算部１３２は、該手中心又は関節の位置の深度値に基づいて三次元座標を算出する（ステップＳ６０６０５）。一方、手中心又は関節の位置が上肢領域外である場合、再計算部１３２は、該手中心又は関節の深度値を算出し、該深度値に基づいて三次元座標を算出する（ステップＳ６０６０６）。
【０１２２】
例えば、図１２の深度画像１１０１における手中心の三次元座標を算出する場合、再計算部１３２は、変更後の手中心の位置が上肢領域１１０１Ｂ内であるか否かを判定する。変更後の手中心の位置が上肢領域１１０１Ｂ内（例えば位置Ｑ２５）である場合、再計算部１３２は、深度画像１１０１における位置Ｑ２５の座標、及び位置Ｑ２５の深度値を利用して、手中心を示す点Ｐ０の三次元座標を算出する。一方、変更後の手中心の位置が上肢領域１１０１Ｂ外（例えば位置Ｑ２６）である場合、再計算部１３２は、位置Ｑ２６における手中心の深度値を算出し、該深度値を利用して手中心を示す点Ｐ０の三次元座標を算出する。
【０１２３】
変更後の手中心の位置が上肢領域１１０１Ｂ外の位置Ｑ２６である場合、深度画像１１０１における位置Ｑ２６の深度値は、対象者の手までの距離ではなく、例えば、図８の深度画像１１０１における棚９までの距離と対応する。このため、深度画像１１０１における位置Ｑ２６の座標、及び位置Ｑ２６の深度値を利用して算出した三次元座標は、対象者の手中心の位置ではなく、棚９の位置を示す値となる。よって、変更後の手中心の位置が上肢領域１１０１Ｂ外となる場合、再計算部１３２は、手中心の三次元座標を正しく算出するために変更後の手中心の位置における手中心の深度値を算出する（推定する）。
【０１２４】
手中心の位置が上肢領域外である場合、再計算部１３２は、上肢領域１１０１内における手中心と手首とを通る線分上での深度値の分布に基づいて手中心の深度値を算出する。
【０１２５】
図１３は、三次元座標の算出に用いる深度値の推定方法を説明するグラフ図である。図１３のグラフ図における横軸は、図１２の深度画像１１０１における線分ＬＳ１上の位置である。また、図１３のグラフ図における縦軸は、深度画像１１０１における深度（ｍｍ）であり、深度センサ２からの距離と対応している。
【０１２６】
図１３のグラフ図の横軸における位置Ｑ３０，Ｑ２２，Ｑ２１，Ｑ２５，Ｑ３１，Ｑ２６，及びＱ３２は、それぞれ、図１２の深度画像１１０１における線分ＬＳ１上における位置と対応する。すなわち、図１３のグラフ図における位置Ｑ３０から位置Ｑ３１までの区間の太線ＢＺ１は、対象者の上肢における線分ＬＳ１上の各位置と対応する深度値を示している。また、図１３のグラフ図における位置Ｑ３１から位置Ｑ３２までの区間の太線ＢＺ２は、深度画像１１０１における各位置の深度値であり、棚９の表面と対応する深度値を示している。一方、図１３のグラフ図における位置Ｑ３１から位置Ｑ３２までの区間の太い点線ＢＺ３は、太線ＢＺ１の深度値の変化から推定される、対象者の上肢における線分ＬＳ１上の各位置と対応する深度値を示している。
【０１２７】
手中心を示す点Ｐ０の変更後の位置が位置Ｑ２６のように、上肢領域１１０１Ｂ外となる場合、再計算部１３２は、上肢領域１１０１Ｂ内の深度値の分布に基づいて、太い点線ＢＺ３の分布を見積もる。再計算部１３２は、例えば、線分ＬＳ１上における、変更前の手中心の位置Ｑ２１又は手首の位置Ｑ２４から、上肢領域１１０１Ｂの外周と交差する位置Ｑ３１までの深度値の変化量に基づいて、位置Ｑ３１から位置Ｑ３２までの上肢の深度値の変化を示す太い点線ＢＺ３を算出する。その後、再計算部１３２は、算出した太い点線ＢＺ３における位置Ｑ２６と対応する点の深度値Ｚ６を算出し、該深度値Ｚ６を手中心の深度値として手中心の三次元座標を算出する。
【０１２８】
このように、手中心を示す点Ｐ０の変更後の位置が上肢領域外である場合に手中心の深度値を算出して（推定して）三次元座標を算出することで、オクルージョンにより深度画像に写っていない手中心の三次元座標を正しく算出することが可能となる。
【０１２９】
なお、再計算部１３２は、例えば、手首を示す点Ｐ１の変更後の位置が上肢領域外である場合にも、上肢領域内での深度値の分布に基づいて手首の深度値を算出し（推定して）三次元座標を算出する。
【０１３０】
手中心及び各関節の三次元座標の算出を終えると、再計算部１３２は、算出した三次元座標を整合性判別部１３１に通知し（ステップＳ６０６０９）、座標再計算処理を終了する。その後、整合性判定部１３１は、再計算部１３２で算出した手中心及び各関節の三次元座標についての空間整合性及び時間整合性を判定する。そして、手中心及び各関節の全てが空間的及び時間的に整合していると判定した場合、整合性判定部１３１は、現在の手中心及び各関節の三次元座標を座標履歴１９３に格納する三次元座標に決定する。一方、手中心及び各関節のいずれかが、空間的又は時間的に整合していない場合、整合性判定部１３１は、手中心及び各関節の三次元座標を補正する処理を再計算部１３２に行わせる。
【０１３１】
以上のように、本実施形態の手位置検出装置１では、深度画像における上肢領域の位置及び形状に基づいて対象者の手中心及び各関節の位置を検出し、深度画像内での位置と深度値とに基づいて、手中心及び各関節の三次元座標を算出する。また、手位置検出装置１は、深度画像から算出した手中心及び各関節の三次元座標と、対象者から採寸した上肢の寸法とが空間的に整合しない場合、深度画像から算出した手中心及び各関節の三次元座標を補正する。手中心及び各関節の三次元座標を補正する際、手位置検出装置１は、深度画像内における手中心及び各関節の位置が、該深度画像における上肢領域の外側の位置となることを許容する。このため、オクルージョンにより深度画像内に手中心までの深度値が含まれない場合でも、本実施形態の手位置検出装置１によれば、手中心の三次元座標を正しく算出することが可能となる。
【０１３２】
また、本実施形態の手位置検出装置１では、空間的な整合性の判別とは別に、時間的な整合性の判別を行う。すなわち、深度画像から算出した手中心又は関節の三次元座標の移動速度Ｓｉが所定の速度閾値ＴＨＳよりも大きい場合、手位置検出装置１は、手中心及び各関節の三次元座標を補正する。このように空間的及び時間的に整合するか否かを判定することにより、本実施形態の手位置検出装置１では、手中心の三次元位置をより正しく算出することが可能となる。
【０１３３】
更に、本実施形態の手位置検出装置１では、再計算部１３２において手中心及び各関節の三次元座標を算出した（再計算した）後、整合性判定部１３１において空間的及び時間的に整合するか否かを判定する。そして、整合性判定部１３１において空間的及び時間的に整合すると判定されるまで、再計算部１３２における手中心及び各関節の三次元座標の算出（再計算）を複数回行う。このため、深度画像における正しい手中心の位置と、上肢領域に基づいて検出した手中心の位置とのずれが大きい場合でも、手中心の三次元座標を正しく算出することが可能となる。
【０１３４】
なお、本実施形態の手位置検出装置１では、上記のように、再計算部１３２における三次元座標の算出回数に上限を設けている。三次元座標の算出回数に上限を設けることにより、手位置検出装置１では、再計算部１３２での三次元座標の再計算の回数の増大による処理負荷の増大及び処理の遅延を防ぐことが可能となる。
【０１３５】
また、図４のフローチャートは、本実施形態の手位置検出装置１（補正部１３０）が行う座標補正処理の一例に過ぎない。本実施形態の手位置検出装置１が行う座標補正処理は、本実施形態の要旨を逸脱しない範囲において適宜変更可能である。本実施形態の手位置検出装置１は、座標補正処理として、例えば、図１４Ａ及び図１４Ｂのフローチャートに沿った処理を行ってもよい。
【０１３６】
図１４Ａは、座標補正処理の変形例を説明するフローチャート（その１）である。図１４Ｂは、座標補正処理の変形例を説明するフローチャート（その２）である。なお、図１４Ａ及び図１４Ｂのフローチャートにおける各処理ステップのうちの、図４のフローチャートにおける処理ステップと処理内容が同じである処理ステップには、図４のフローチャートの処理ステップと同じ符号（例えばＳ６０１及びＳ６０２等）を付している。
【０１３７】
図１４Ａ及び図１４Ｂのフローチャートに沿った座標補正処理は、手位置検出装置１の補正部１３０が行う。補正部１３０は、まず、図１４Ａのように、再計算部１３２で三次元座標を再計算した回数を示す変数ｒを「０」とし（ステップＳ６０１）、続けて、上肢領域を１つ選択して手中心及び関節の三次元座標を読み出す（ステップＳ６０２）。ステップＳ６０１及びＳ６０２の処理は、例えば、補正部１３０の整合性判定部１３１が行う。
【０１３８】
次に、補正部１３０は、読み出した手中心及び関節の三次元座標の空間整合性及び時間整合性について判別する整合性判別処理（ステップＳ６０３）を行い、整合しない手中心又は関節があるか否かを判定する（ステップＳ６０４）。ステップＳ６０３の整合性判別処理及びステップＳ６０４の判定は、整合性判定部１３１が行う。整合性判定部１３１は、整合性判別処理（ステップＳ６０３）として、例えば、図５のフローチャートに沿った処理を行う。手中心及び関節の三次元座標の全てが空間的及び時間的に整合している場合（ステップＳ６０４；ＮＯ）、整合性判定部１３１は、図１４Ｂのように、現在の三次元座標を座標履歴１９３に格納する三次元座標に決定する（ステップＳ６０８）。これに対し、手中心及び関節の三次元座標のいずれかが、空間的又は時間的に整合していない場合（ステップＳ６０４；ＹＥＳ）、整合性判定部１３１は、次に、変数ｒがｒ＜Ｎであるか否かを判定する（ステップＳ６０５）。ｒ≧Ｎの場合（ステップＳ６０５；ＮＯ）、整合性判定部１３１は、図１４Ｂのように、現在の三次元座標を座標履歴１９３に格納する三次元座標に決定する（ステップＳ６０８）。これに対し、ｒ＜Ｎの場合（ステップＳ６０５；ＹＥＳ）、整合性判定部１３１は、次に、隣接領域判別処理（ステップＳ６１１）を行う。
【０１３９】
隣接領域判別処理（ステップＳ６１１）は、深度画像において上肢領域と隣接する領域のうちの、手中心の位置を変更する際の移動方向となる隣接領域が、上肢よりも手前（深度センサ２側）に存在する物体の深度値を示す領域であるか否かを判別する処理である。以下の説明では、深度画像における上肢よりも手前（深度センサ２側）に存在する物体の深度値を示す領域を手前領域という。整合性判別部１３１は、隣接領域判別処理として、例えば、図１２の深度画像１１０１における線分ＬＳ１上の各点の深度値に基づいて、位置Ｑ２６を含む隣接領域が手前領域であるか否かを判別する。
【０１４０】
隣接領域判別処理の後、整合性判定部１３１は、上肢領域と隣接する手前領域があるか否かを判定する（ステップＳ６１２）。上肢領域と隣接する手前領域がない場合（ステップＳ６１２；ＮＯ）、整合性判定部１３１は、図１４Ｂのように、現在の三次元座標を座標履歴１９３に格納する三次元座標に決定する（ステップＳ６０８）。一方、上肢領域と隣接する手前領域がある場合（ステップＳ６１２；ＹＥＳ）、整合性判定部１３１は、座標再計算処理（ステップＳ６０６）を再計算部１３２に行わせる。再計算部１３２は、座標再計算処理として、例えば、図６のフローチャートに沿った処理を行う。
【０１４１】
再計算部１３２が座標再計算処理（ステップＳ６０６）を終えると、補正部１３０の整合性判定部１３１は、再計算した三次元座標に対する整合性判別処理（ステップＳ６０３）を行う。その後、ステップＳ６０４，Ｓ６０５，及びＳ６１２のいずれかにおいて「ＮＯ」と判定されるまで、補正部１３０は、再計算部１３２による三次元座標の再計算と、整合性判定部１３１による整合性についての判定とを繰り返す。そして、ステップＳ６０４，Ｓ６０５，及びＳ６１２のいずれかにおいて「ＮＯ」と判定された場合、補正部１３０（整合性判定部１３１）は、図１４Ｂのように、現在の三次元座標を座標履歴１９３に格納する三次元座標に決定する（ステップＳ６０８）。
【０１４２】
ステップＳ６０８の処理を終えると、補正部１３０（整合性判定部１３１）は、次に、未選択の上肢領域があるか否かを判定する（ステップＳ６０９）。未選択の上肢領域がある場合（ステップＳ６０９；ＹＥＳ）、整合性判定部１３１は、未選択の上肢領域に対するステップＳ６０１以降の処理を行う。そして、全ての上肢領域に対してステップＳ６０１以降の処理を行うと、補正部１３０は、座標補正処理を終了する。
【０１４３】
このように座標補正処理の変形例では、手位置検出装置１は、手中心及び関節の三次元座標のいずれかが、空間的又は時間的に整合しない場合、座標再計算処理を行う前に、隣接領域判別処理（ステップＳ６１１）を行う。隣接領域判別処理は、上記のように、上肢領域と隣接する手前領域の有無を判別する処理である。隣接領域判別処理は、例えば、手位置検出装置１の補正部１３０の整合性判定部１３１が行う。整合性判定部１３１は、隣接領域判別処理として、例えば、図１５のフローチャートに沿った処理を行う。
【０１４４】
図１５は、隣接領域判別処理の内容を説明するフローチャートである。
隣接領域判別処理では、整合性判定部１３１は、まず、現在選択されている上肢領域における手中心の位置から関節の位置とは反対の方向に延伸した線分上であって、手中心の位置から所定の距離となる位置Ｐａを算出する（ステップＳ６１１０１）。
【０１４５】
次に、整合性判定部１３１は、上肢領域内の手中心の位置と関節の位置とを通る線分上の各点における深度値に基づいて、位置Ｐａが上肢の一部を示す点である場合の深度値ｚａを算出する（ステップＳ６１１０２）。ステップＳ６１１０２では、整合性判定部１３１は、例えば、図１３のグラフ図における太線ＢＺ１に基づいて太い点線ＢＺ３を推定し、位置Ｐａが上肢の一部を示す点である場合の深度値ｚａを算出する。
【０１４６】
次に、整合性判定部１３１は、深度画像における位置Ｐａの座標の深度値ｚａ’を読み出し（ステップＳ６１１０３）、ｚａ−Ｍａ＞ｚａ’であるか否かを判定する（ステップＳ６１１０４）。ここで、Ｍａは、深度値ｚａに対するマージンである。マージンＭａは、深度画像における位置Ｐａの深度値ｚａ’が上肢よりも手前（深度センサ２側）に存在する物体の深度値であるとみなすことが可能な範囲に基づいて設定する。すなわち、マージンＭａは、ｚａ−Ｍａ＞ｚａ’である場合には、深度画像における位置Ｐａの深度値ｚａ’が上肢よりも手前（深度センサ２側）に存在する物体の深度値であるとみなすことが可能な値とする。従って、ｚａ−Ｍａ＞ｚａ’である場合（ステップＳ６１１０４；ＹＥＳ）、整合性判定部１３１は、上肢領域と隣接する手前領域があると判別し（ステップＳ６１１０５）、隣接領域判別処理を終了する。一方、ｚａ−Ｍａ≦ｚａ’である場合（ステップＳ６１１０４；ＮＯ）、整合性判定部１３１は、上肢領域と隣接する手前領域はないと判別し（ステップＳ６１１０６）、隣接領域判別処理を終了する。
【０１４７】
図１６は、隣接領域と判別結果との関係を説明する図である。
図１６の深度画像１１０１には、該深度画像１１０１から検出した第１の上肢領域１１０１Ａと、第２の上肢領域１１０１Ｂとを示している。また、図１６の深度画像１１０１には、該深度画像１１０１における棚９の深度値を示す領域１１０１Ｄと、第１の作業台８Ａの深度値を示す領域１１０１Ｅと、第２の作業台８Ｂの深度値を示す領域１１０１Ｆとを示している。更に、図１６の深度画像１１０１には、棚９と第２の作業台８Ｂとの間に存在する、対象者の右手部分を示す領域１１０１Ｃを二点鎖線で示している。
【０１４８】
対象者の右手部分が棚９と第２の作業台８Ｂとの間に存在する場合、深度画像１１０１から検出される第２の上肢領域１１０１Ｂは、対象者の右手部分と対応する領域１１０１Ｃを含まない。このため、手位置検出装置１は、第２の上肢領域１１０１Ｂに基づいて手中心を示す点Ｐ０の位置を検出する際に、第２の上肢領域１１０１Ｂのうちの実際には手首と対応する位置よりも肘側となる位置Ｑ２１を検出する。よって、図１６の深度画像１１０１が処理の対象である場合、手位置検出装置１の整合性判定部１３１は、第２の上肢領域１１０１Ｂから算出した手中心及び関節の三次元座標のいずれかが空間的に整合しないと判定する。空間的に整合しないと判定した場合、整合性判定部１３１は、隣接領域判別処理（ステップＳ６１１）を行い第２の上肢領域１１０１Ｂと隣接する手前領域の有無を判別する。
【０１４９】
第２の上肢領域１１０１Ｂが処理の対象である場合、整合性判定部１３１は、深度画像における位置Ｑ２１及びＱ２４を通る線分ＬＳ１上であって、位置Ｑ２１から位置Ｑ２４とは反対側の方向の距離ＬＬとなる位置Ｐａを算出する（ステップＳ６１１０１）。
【０１５０】
次に、整合性判定部１３１は、第２の上肢領域１１０１Ｂ内における線分ＬＳ１上の深度値の分布に基づいて、位置Ｐａが上肢の一部である場合の深度値ｚａを算出する（ステップＳ６１１０２）。ステップＳ６１１０２では、整合性判定部１３１は、例えば、図１３のグラフ図に基づいて、位置Ｐａが上肢の一部である場合の深度値ｚａを算出する。図１６の深度画像１１０１における位置Ｐａは、第２の上肢領域１１０１Ｂの外側となっている。このため、整合性判定部１３１は、図１３のグラフ図における太い点線ＢＺ３に基づいて深度値ｚａを算出する。
【０１５１】
その後、整合性判定部１３１は、深度画像１１０１における位置Ｐａの深度値ｚａ’を読み出し（ステップＳ６１１０３）、ｚａ−Ｍａ＞ｚａ’であるか否かを判定する（ステップＳ６１１０４）。深度画像１１０１における位置Ｐａは、第２の上肢領域１１０１Ｂと隣接する領域１１０１Ｄに含まれる。領域１１０１Ｄは、第２の作業台１Ｂの上に設置された棚９の深度値を示す領域であり、対象者の右手部分を示す領域１１０１Ｃよりも手前（深度センサ２側）に存在する。このとき、ステップＳ６１１０２で算出した深度値ｚａと、深度画像１１０１Ｄにおける深度値ｚａ’との間には、両者が同一物体の同一部分の深度値を示しているとはいいがたい大きさの差が生じる（例えば図１３を参照）。よって、整合性判定部１３１は、第２の上肢領域１１０１Ｂと隣接する手前領域が存在すると判別し（ステップＳ６１１０５）、隣接領域判別処理を終了する。この場合、整合性判定部１３１は、座標再計算処理（ステップＳ６０６）を再計算部１３２に行わせる。
【０１５２】
また、図１６の深度画像１１０１における第１の上肢領域１１０１Ａの手中心を示す点Ｐ０又は手首を示す点Ｐ１が空間的又は時間的に整合しておらず、かつｒ＜Ｎであると判定した場合、整合性判定部１３１は、隣接領域判別処理（ステップＳ６１１）を行う。この場合、整合性判定部１３１は、第１の上肢領域１１０１Ａにおける二点Ｐ０及びＰ１を通る線分ＬＳ２上であって、点Ｐ０から点Ｐ１とは反対の方向の距離ＬＬとなる位置Ｐａを算出する（ステップＳ６１１０１）。
【０１５３】
次に、整合性判定部１３１は、第１の上肢領域１１０１Ａ内における線分ＬＳ２上の各点の深度値に基づいて、位置Ｐａが上肢の一部である場合の深度値を算出する（ステップＳ６１１０２）。
【０１５４】
その後、整合性判定部１３１は、深度画像１１０１における位置Ｐａの深度値ｚａ’を読み出し（ステップＳ６１１０３）、ｚａ−Ｍａ＞ｚａ’であるか否かを判定する（ステップＳ６１１０４）。深度画像１１０１における位置Ｐａは、第１の上肢領域１１０１Ａと隣接する領域１１０１Ｅに含まれる。領域１１０１Ｅは、第１の作業台１Ａの深度値を示す領域であり、対象者の左手部分を含む第１の上肢領域１１０１Ａよりも奥方（深度センサ２からみて遠方側）に存在する。このとき、ステップＳ６１１０２で算出した深度値ｚａと、深度画像１１０１Ｄにおける深度値ｚａ’との関係は、ｚａ＜ｚａ’（すなわちｚａ−Ｍａ＜ｚａ’）となる。よって、整合性判定部１３１は、第２の上肢領域１１０１Ｂと隣接する手前領域は存在しないと判別し（ステップＳ６１１０６）、隣接領域判別処理を終了する。この場合、整合性判定部１３１は、座標再計算処理（ステップＳ６０６）を省略し、現在の三次元座標を座標履歴１９３に格納する三次元座標に決定する（ステップＳ６０８）。
【０１５５】
隣接領域判別処理において上肢領域と隣接する手前領域があると判別した場合、深度画像における手中心の移動方向には、棚９等の上肢よりも手前に存在する物体により隠れている対象者の正しい手中心が存在すると考えられる。このため、座標補正処理の変形例では、図１４Ａのように、上肢領域と隣接する手前領域がある場合には、手中心の位置を移動させて手中心及び関節の三次元座標を再計算する座標再計算処理（ステップＳ６０６）を行う。一方、上肢領域と隣接する手前領域がない場合、深度画像における手中心の移動方向には、上肢よりも手前となる位置で上肢の一部を隠している物体が存在しない。このため、移動させた手中心の位置が上肢領域の外側になってしまうと、手中心の三次元座標が誤った座標となってしまう。従って、座標補正処理の変形例では、図１４Ａ及び図１４Ｂのように、上肢領域と隣接する手前領域がない場合には、座標再計算処理を行わず、現在の三次元座標を座標履歴１９３に格納する三次元座標に決定する。これにより、移動後の手中心の位置が上肢領域外となった場合に、再計算部１３２が誤った深度値により誤った手中心の三次元座標を算出することを防ぐことが可能となる。
【０１５６】
また、図５のフローチャートは、本実施形態の手位置検出装置１（整合性判定部１３１）が行う整合性判別処理の一例に過ぎない。本実施形態の手位置検出装置１が行う整合性判別処理は、本実施形態の要旨を逸脱しない範囲において適宜変更可能である。本実施形態の手位置検出装置１は、整合性判別処理として、例えば、図１７Ａ及び図１７Ｂのフローチャートに沿った処理を行ってもよい。
【０１５７】
図１７Ａは、整合性判別処理の変形例を説明するフローチャート（その１）である。図１７Ｂは、整合性判別処理の変形例を説明するフローチャート（その２）である。なお、図１７Ａ及び図１７Ｂのフローチャートにおける各処理ステップのうちの、図５のフローチャートにおける処理ステップと処理内容が同じである処理ステップには、図５のフローチャートの処理ステップと同じ符号（例えばＳ６０３０２等）を付している。
【０１５８】
図１７Ａ及び図１７Ｂのフローチャートに沿った整合性判別処理は、手位置検出装置１における補正部１３０の整合性判定部１３１が行う。整合性判定部１３１は、まず、図１７Ａのように、手中心及び各関節を識別する変数ｉを「０」にするとともに、変数ｉにより指定される手中心又は関節についての整合性パラメータＣｉの値を「１．０」とする（ステップＳ６０３２１）。
【０１５９】
次に、整合性判定部１３１は、手中心又は関節を示す点Ｐｉの三次元座標から、深度画像内での座標（ｘｉ，ｙｉ）と距離ｚｉとを算出する（ステップＳ６０３０２）。その後、整合性判定部１３１は、深度画像から座標座標（ｘｉ，ｙｉ）の深度値ｚｉ’を読み出し（ステップＳ６０３０３）、ｚｉ’＞ｚｉ＋Ｍであるか否かを判定する（ステップＳ６０３０４）。ｚｉ’＞ｚｉ＋Ｍである場合（ステップＳ６０３０４；ＹＥＳ）、整合性判定部１３１は、整合性パラメータＣｉの値から０．３を減じる（ステップＳ６０３２２）。
【０１６０】
一方、ｚｉ’≦ｚｉ＋Ｍである場合（ステップＳ６０３０４；ＮＯ）、整合性判定部１３１は、整合性パラメータＣｉの値を変更せずに、次に、点Ｐｉと点Ｐｉ＋１との三次元距離ｌｅｎを算出する（ステップＳ６０３０５）。その後、整合性判定部１３１は、三次元距離ｌｅｎと対象者の寸法との差ΔＬを算出し（ステップＳ６０３０６）、｜ΔＬ｜＞ＴＨＬであるか否かを判定する（ステップＳ６０３０７）。｜ΔＬ｜＞ＴＨＬである場合（ステップＳ６０３０７；ＹＥＳ）、整合性判定部１３１は、整合性パラメータＣｉの値から０．３を減じる（ステップＳ６０３２２）。
【０１６１】
これに対し、｜ΔＬ｜≦ＴＨＬである場合（ステップＳ６０３０７；ＮＯ）、整合性判定部１３１は、次に、点Ｐｉの移動速度Ｓｉを算出し（ステップＳ６０３０８）、Ｓｉ＞ＴＨＳであるか否かを判定する（ステップＳ６０３０９）。また、ステップＳ６０３２２の処理を行った場合も、整合性判定部１３１は、ステップＳ６０３２２の処理の次に、点Ｐｉの移動速度Ｓｉを算出し（ステップＳ６０３０８）、Ｓｉ＞ＴＨＳであるか否かを判定する（ステップＳ６０３０９）。Ｓｉ＞ＴＨＳである場合（ステップＳ６０３０９；ＹＥＳ）、整合性判定部１３１は、整合性パラメータＣｉの値から０．２を減算し（ステップＳ６０３２３）、減算後の整合性パラメータＣｉを点Ｐｉの整合性パラメータに決定する。その後、整合性判定部１３１は、図１７Ｂのように、整合性パラメータＣｉの値を決定していない手中心又は関節の有無を判定する（ステップＳ６０３１０）。一方、Ｓｉ≦ＴＨＳである場合（ステップＳ６０３０９；ＮＯ）、整合性判定部１３１は、整合性パラメータＣｉの値を変更せずに、次にステップＳ６０３１０の判定を行う。すなわち、Ｓｉ≦ＴＨＳである場合、整合性判定部１３１は、ステップＳ６０３０９の判定時における整合性パラメータＣｉを点Ｐｉの整合性パラメータに決定する。
【０１６２】
整合性パラメータＣｉを決定していない手中心又は関節がある場合（ステップＳ６０３１０；ＹＥＳ）、整合性判定部１３１は、変数ｉをｉ＋１に更新するとともに整合性パラメータＣｉを「１．０」とする（ステップＳ６０３２４）。その後、整合性判定部１３１は、ステップＳ６０３０２以降の処理を行う。そして、現在処理の対象となっている手中心及び関節の全ての整合性パラメータＣｉを決定すると（ステップＳ６０３１０；ＮＯ）、整合性判定部１３１は、整合性判別処理を終了する。
【０１６３】
図１７Ａ及び図１７Ｂのフローチャートに沿って手中心及び各関節の整合性パラメータＣｉの値を決定した場合、整合性判定部１３１は、ステップＳ６０４において、Ｃｉ＜１．０であるか否かに基づいて、整合していない手中心又は関節の有無を判定する。図１７Ａ及び図１７Ｂのフローチャートでは、空間的に整合していない場合、及び時間的に整合していない場合に、整合性パラメータＣｉの値を減算する。このため、ステップＳ６０４において、整合性判定部１３１は、判定の対象となっている手中心及び関節の全てがＣｉ＝１．０である場合に、手中心及び関節の全てが整合している（ステップＳ６０４；ＮＯ）と判定する。
【０１６４】
このように、手中心及び関節の三次元座標の空間的及び時間的な整合性の判別に用いる整合性パラメータＣｉは、「True」及び「False」の二値に限らず、数値化してもよい。また、整合性パラメータＣｉを数値化する場合、ステップＳ６０３２２及びＳ６０３２３で減算する値の組み合わせは適宜変更可能である。
【０１６５】
更に、整合性判定部１３１が行う整合性判別処理は、手中心及び関節の三次元座標の空間整合性及び時間整合性のいずれか一方の整合性についての判別のみを行ってもよい。また、整合性判定部１３１は、整合性判別処理において、寸法情報１９２に登録された対象者の上肢の寸法の代わりに、座標履歴１９３に格納された手中心及び関節の三次元座標を利用して空間整合性についての判別を行ってもよい。
【０１６６】
また、本実施形態の手位置検出装置１において手中心及び各関節の三次元座標を算出する際には、深度センサ２で撮像した深度画像１１０１と背景画像１９１とに限らず、他の距離測定装置により測定した距離の情報を利用してもよい。
【０１６７】
［第２の実施形態］
図１８は、第２の実施形態に係る手位置検出装置の機能的構成を示す図である。
【０１６８】
図１８に示すように、本実施形態の手位置検出装置１は、深度画像取得部１１０と、関節位置算出部１２０と、補正部１３０と、出力部１４０と、記憶部１９０とを含む。
【０１６９】
深度画像取得部１１０は、手中心の位置を検出する検出領域内に存在する物体の表面までの距離（深度）を示す情報を含む深度画像を深度センサ２から取得する。
【０１７０】
関節位置算出部１２０は、深度画像に基づいて、検出領域内に存在する手中心及び上肢の関節についての検出領域内での位置を示す三次元座標を算出する。本実施形態の手位置検出装置１における関節位置算出部１２０は、上肢領域検出部１２１と、画像内位置検出部１２２と、三次元座標算出部１２３とを含む。更に、本実施形態の手位置検出装置１における関節位置算出部１２０は、体領域検出部１２４を含む。
【０１７１】
体領域検出部１２４は、手中心の位置を検出する深度画像と、記憶部１９０に記憶させた背景画像１９１とに基づいて、深度画像内における対象者の胴体部分（体幹部）を示す体領域を検出する。上肢領域検出部１２１は、手中心の位置を検出する深度画像と、記憶部１９０に記憶させた背景画像１９１とに基づいて、深度画像内における人の上肢部分と対応する領域（上肢領域）を検出する。
【０１７２】
画像内位置検出部１２２は、深度画像内における体領域の位置及び形状と、上肢領域の位置及び形状とに基づいて、深度画像内における手中心の位置及び上肢の関節の位置を検出する。画像内位置検出部１２２は、例えば、体領域の位置及び形状から深度画像内における肩の位置を推定する。また、画像内位置検出部１２２は、上肢領域内で検出した手中心の位置と、推定した肩の位置とに基づいて、手首、肘、及び肩の位置を検出する。
【０１７３】
三次元座標算出部１２３は、深度画像内における手中心及び各関節の位置と、深度値とに基づいて、検出領域内における手中心の位置を示す三次元座標及び各関節の位置を示す三次元座標を算出する。
【０１７４】
補正部１３０は、深度画像から算出した手中心及び各関節の三次元座標を補正する。本実施形態の手位置検出装置１における補正部１３０は、第１の実施形態の補正部１３０と同様、整合性判定部１３１と、再計算部１３２とを含む。整合性判定部１３１は、深度画像から算出した手中心及び各関節の三次元座標と、記憶部１９０に記憶させた寸法情報１９２及び座標履歴１９３とに基づいて、三次元座標の空間整合性及び時間整合性についての判定をする。整合性判定部１３１は、手中心及び関節のいずれかが、空間的又は時間的に整合していない場合に、三次元座標を補正すると判定し、再計算部１３２に手中心及び関節の三次元座標を再計算させる。再計算部１３２は、まず、深度画像における手中心の位置を変更し、変更後の手中心の位置に基づいて深度画像における各関節の位置を算出する。その後、再計算部１３２は、手中心及び各関節の三次元座標を算出する。
【０１７５】
出力部１４０は、座標履歴１９３に含まれる手中心及び各関節の三次元座標を含む情報を外部装置３に出力する。外部装置３は、例えば、手中心の三次元座標の時間変化に基づいて、作業員の作業が適切であるか否か等を管理するサーバ装置である。
【０１７６】
本実施形態の手位置検出装置１は、深度センサ２が所定の時間間隔で撮像する深度画像を順次取得するとともに、取得した複数の深度画像のそれぞれから手中心及び上肢の関節を検出し該手中心及び関節の三次元座標を算出する。本実施形態の手位置検出装置１は、深度画像から手中心及び上肢の関節を検出し三次元座標を算出する処理として、図１９のフローチャートに沿った座標算出処理を行う。
【０１７７】
図１９は、第２の実施形態に係る座標算出処理の内容を説明するフローチャートである。なお、図１９のフローチャートにおける各処理ステップのうちの、図３のフローチャートにおける処理ステップと処理内容が同じである処理ステップには、図３のフローチャートの処理ステップと同じ符号（例えばＳ１及びＳ２等）を付している。
【０１７８】
本実施形態の手位置検出装置１は、図１９のように、まず、処理の対象とする深度画像を選択する（ステップＳ１）、選択した深度画像から体領域を検出する（ステップＳ１２）。ステップＳ１及びＳ１２の処理は、例えば、手位置検出装置１における関節位置算出部１２０の体領域検出部１２４が行う。体領域検出部１２４は、例えば、体領域を検出する処理を行っていない深度画像のうちの、撮像時刻が最も早い深度画像を選択する。深度画像を選択した後、体領域検出部１２４は、選択した深度画像における各点（各画素）の深度値と、背景画像１９１における各点の深度値とに基づいて、深度画像における体領域を検出する。体領域を検出するステップＳ１２の処理において、体領域検出部１２４は、例えば、まず、深度画像のうちの体領域検出エリアに対する背景差分法により、該体領域検出エリア内から体領域の候補を検出する。その後、体領域検出部１２４は、体領域の候補の輪郭部分における深度値の分布に基づいて、体領域の輪郭を補正し、体領域を抽出する。
【０１７９】
次に、手位置検出装置１は、選択した深度画像から上肢領域を検出する（ステップＳ２）。ステップＳ２の処理は、手位置検出装置１における関節位置算出部１２０の上肢領域検出部１２１が行う。上肢領域検出部１２１は、例えば、深度画像のうちの上肢領域検出エリアに対する背景差分法により、該上肢領域検出エリア内から上肢領域を検出する。このとき、上肢領域検出部１２１は、例えば、背景画像１９１における深度値との差が閾値以上となる複数の領域のうちの、深度値が深度センサ２から上肢までの距離と対応する領域を、上肢領域として検出する。
【０１８０】
次に、手位置検出装置１は、深度画像から上肢領域を検出したか否かを判定する（ステップＳ３）。ステップＳ３の判定は、上肢領域検出部１２１が行う。上肢領域が検出されなかった場合（ステップＳ３；ＮＯ）、上肢領域検出部１２１は、例えば、選択中の深度画像から上肢領域が検出されなかったことを示す情報を座標履歴１９３に格納し（ステップＳ１１）、該深度画像に対する座標算出処理を終了させる。一方、深度画像から上肢領域を検出した場合（ステップＳ３；ＹＥＳ）、手位置検出装置１は、ステップＳ１４，Ｓ１５，Ｓ６，及びＳ７の処理を行う。
【０１８１】
深度画像から上肢領域を検出した場合（ステップＳ３；ＹＥＳ）、手位置検出装置１は、次に、深度画像における上肢領域内の手中心の位置を検出する（ステップＳ１４）。ステップＳ１４の処理は、手位置検出装置１における関節位置算出部１２０の画像内位置検出部１２２が行う。画像内位置検出部１２２は、例えば、上肢領域の形状及び位置に基づいて深度画像内における上肢領域内で手中心の位置を検出する。画像内位置検出部１２２は、例えば、深度画像において上肢の延伸方向（関節間を結ぶ線分の方向）となり得る方向に基づいて、上肢領域における上肢の延伸方向と直交した方向の寸法を縮めて、上肢の延伸方向を示す線分を抽出する。線分を抽出した後、画像内位置検出部１２２は、線分上の各点のなかから手中心の位置を検出する。画像内位置検出部１２２は、例えば、深度画像内における手（手のひら）の大きさと対応した領域を示す情報に基づいて、線分上での手中心の位置を検出する。
【０１８２】
手中心の位置を検出した後、手位置検出装置１は、手中心及び上肢の関節の三次元座標を算出する（ステップＳ１５）。ステップＳ１５の処理は、手位置検出装置１における関節位置算出部１２０の三次元座標算出部１２３が行う。三次元座標算出部１２３は、ピンホールカメラモデルを適用し、深度画像から検出した上肢領域毎に、手中心及び関節の三次元座標を算出する。１つの上肢領域と対応する手中心及び関節の三次元座標を算出する処理において、三次元座標算出部１２３は、まず、手中心の三次元座標を算出する。次に、三次元座標算出部１２３は、深度画像から検出した体領域の形状及び位置に基づいて、上肢領域と対応する肩の位置を推定する。その後、三次元座標算出部１２３は、手中心の三次元座標と、推定した肩の位置とに基づいて、手首の三次元座標、肘の三次元座標、及び肩の三次元座標を順次算出する。手首、肘、及び肩の三次元座標を算出する際、三次元座標算出部１２３は、例えば、手中心の位置と、推定した肩の位置とに基づいて、上肢の延伸方向を決定し、決定した該上肢の延伸方向を示す線分上で手首、肘、及び肩の三次元位置を検出し、それぞれの三次元座標を算出する。
【０１８３】
手中心及び関節の三次元座標を算出すると、手位置検出装置１は、次に、座標補正処理（ステップＳ６）を行う。座標補正処理は、手位置検出装置１の補正部１３０が行う。補正部１３０は、第１の実施形態で説明したように、まず、上肢領域毎に、手中心及び関節の現在の三次元座標の空間整合性及び時間整合性についての判別を行う。そして、１つの上肢領域と対応する手中心及び関節の全ての三次元座標が空間的及び時間的に整合する場合、補正部１３０は、該上肢領域と対応する手中心及び関節の三次元座標の補正は不要と判定する。この場合、補正部１３０は、判定の対象となっている上肢領域と対応する手中心及び関節の現在の三次元座標を座標履歴に格納する三次元座標に決定し、座標補正処理を終了する。一方、手中心及び関節のいずれかの三次元座標が、空間的又は時間的に整合していない場合、補正部１３０は、手中心及び関節の三次元座標を補正すると判定する。この場合、補正部１３０は、まず手中心の三次元座標を補正し、補正後の手中心の三次元座標に基づいて手首、肘、及び肩の三次元座標を補正する。また、三次元座標を補正した場合、補正部１３０は、補正後の三次元座標の整合性についての判定を行う。その後、補正部１３０は、整合していると判定するか、三次元座標の補正回数が上限値に達するまで、三次元座標の補正を繰り返す。補正後の三次元座標が空間的及び時間的に整合していると判定した場合、又は三次元座標の補正回数が上限値に達した場合、補正部１３０は、現在の三次元座標を座標履歴１９３に格納する三次元座標に決定し、座標補正処理を終了する。
【０１８４】
座標補正処理を終えると、手位置検出装置１は、手中心及び関節の三次元座標を座標履歴１９３に格納し（ステップＳ７）、現在処理の対象となっている深度画像に対する座標算出処理を終了する。
【０１８５】
このように、本実施形態の手位置検出装置１は、深度画像から対象者の胴体部分を示す体領域を検出し、該体領域に基づいて推定した対象者の肩の位置を利用して、対象者の上肢の関節の位置（三次元座標）を算出する。
【０１８６】
図２０は、深度画像から体領域を検出する処理の内容を説明するフローチャートである。
【０１８７】
深度画像から体領域を検出する処理（ステップＳ１２）は、体領域検出部１２４が行う。体領域検出部１２４は、図２０のように、まず、深度画像と背景画像とに基づいて、深度画像における体領域検出エリアを二値化する（ステップＳ１２０１）。ステップＳ１２０１の処理では、体領域検出部１２４は、手中心及び関節を検出する深度画像を上肢領域検出エリアと体領域検出エリアとに分割し、体領域検出エリアに対する背景差分法により、体領域検出エリアを二値化する。ここで、上肢領域検出エリアは、深度画像の撮像範囲内のうちの、対象者の上肢（特に手の部分）が移動する部分領域である。一方、体領域検出エリアは、深度画像の撮像範囲内のうちの、対象者の胴体部分が存在する領域である。深度画像における上肢領域検出エリアと体領域検出エリアとの境界は、例えば、深度画像の撮像範囲と、該撮像範囲内における対象者の立ち位置とに基づいて予め設定しておく。体領域検出部１２４は、深度画像の体領域検出エリアに含まれる画素毎に、深度画像における深度値と背景画像の対応する画素の深度値との差を算出し、算出した差と閾値との大小関係に基づいて、深度値を二値化する。
【０１８８】
次に、体領域検出部１２４は、二値化した体領域検出エリアにおける、深度値の差が閾値以上である画素が連続した領域のうちの最大領域を体領域として選択する（ステップＳ１２０２）。
【０１８９】
その後、体領域検出部１２４は、選択した体領域の輪郭部分における深度値に基づいて体領域を補正し（ステップＳ１２０３）、深度画像から体領域を検出する処理を終了する。ステップＳ１２０３の処理では、体領域検出部１２４は、深度画像における体領域の輪郭を境として隣接する体領域内の画素と体領域外の画素との深度値の差に基づいて、体領域の輪郭の位置を補正する。例えば、体領域検出部１２４は、体領域内の画素と体領域外の画素との深度値の差が所定の範囲内である場合、体領域外の画素が体領域に含まれるよう輪郭を広げる補正をする。このとき、体領域検出部１２４は、体領域の輪郭が上肢領域検出エリアに張り出すことを許容する。
【０１９０】
体領域を検出する処理の後、手位置検出装置１は、深度画像から上肢領域を検出する処理（ステップＳ２）を行う。上肢領域を検出する処理は、手位置検出装置１における関節位置算出部１２０の上肢領域検出部１２１が行う。上肢領域検出部１２１は、深度画像から上肢領域を検出する処理として、例えば、図２１のフローチャートに沿った処理を行う。
【０１９１】
図２１は、深度画像から上肢領域を検出する処理の内容を説明するフローチャートである。
【０１９２】
上肢領域を検出する処理では、上肢領域検出部１２１は、図２１のように、まず、深度画像と背景画像とに基づいて、深度画像における上肢領域検出エリア内の各点（各画素）の深度値の差を算出する（ステップＳ２０１）。
【０１９３】
次に、上肢領域検出部１２１は、算出した深度値の差に基づいて、上肢領域検出エリアを複数の領域に分割する（ステップＳ２０２）。ステップＳ２０２の処理では、上肢領域検出部１２１は、例えば、深度値の差を複数の区間に分割し、各画素の深度値の差が複数の区間のいずれの区間に含まれるかに基づいて、上肢領域検出エリアを複数の領域に分割する。このとき、深度値の差は、例えば、背景画像に存在する物体と対象者の上肢との深度値の差と、背景画像に存在する物体と対象者の頭部との深度値の差とが異なる区間になるよう分割する。
【０１９４】
その後、上肢領域検出部１２１は、深度値の差が所定の範囲内である領域を上肢領域として抽出し（ステップＳ２０３）、深度画像から上肢領域を検出する処理を終了する。ステップＳ２０３では、上肢領域検出部１２１は、深度値の差に基づいて分割した上肢領域検出エリア内の複数の領域のうちの、深度値の差が背景画像に存在する物体と対象者の上肢との深度値の差と対応した区間に含まれる領域を、上肢領域として抽出する。
【０１９５】
深度画像から上肢領域を検出した後、手位置検出装置１は、上肢領域毎に手中心の位置を検出する（ステップＳ１４）。ステップＳ１４の処理は、画像内位置検出部１２２が行う。画像内位置検出部１２２は、第１の実施形態で説明したような方法により、上肢領域毎に手中心の位置を検出する。なお、上肢領域を線分群に変換して手中心の位置を検出することができない場合、画像内位置検出部１２２は、上肢領域内における任意の一点を手中心の位置として検出する。
【０１９６】
手中心の位置を検出した後、手位置検出装置１は、上肢領域毎に手中心及び関節の三次元座標を算出する（ステップＳ１５）。ステップＳ１５の処理は、三次元座標算出部１２２が行う。本実施形態の手位置検出装置１における三次元座標算出部１２２は、手中心及び関節の三次元座標を算出する処理として、例えば、図２１のフローチャートに沿った処理を行う。
【０１９７】
図２２は、手中心及び関節の三次元座標を算出する処理の内容を説明するフローチャートである。
【０１９８】
本実施形態に係る三次元座標算出部１２２は、図２２のように、まず、深度画像から検出した体領域に基づいて体重心の三次元座標を算出し（ステップＳ１５０１）、深度画像内における肩の位置を推定する（ステップＳ１５０２）。ステップＳ１５０１の処理では、三次元座標算出部１２２は、まず、深度画像から検出した体領域における体重心の位置を算出する。その後、三次元座標算出部１２２は、ピンホールカメラモデルを適用し、深度画像における体重心の位置（座標）と該位置の深度値とに基づいて、深度画像を撮像した三次元空間における体重心の三次元座標を算出する。このとき、三次元座標算出部１２２は、世界座標系での三次元座標を算出する。
【０１９９】
また、ステップＳ１５０２の処理では、三次元座標算出部１２２は、まず、所定の身長値から深度画像を撮像した三次元空間における両肩のおおよその高さと肩幅を算出する。ここで、肩幅は、例えば、ウィトルウィウィス的人体比率に基づいて算出する。その後、三次元座標算出部１２２は、例えば、深度画像における横方向中心が肩幅の中心となるよう、両肩の位置を算出する。
【０２００】
次に、三次元座標算出部１２２は、上肢領域を１つ選択し、該上肢領域から検出した手中心の三次元座標を算出する（ステップＳ１５０３）。ステップＳ１５０３の処理では、三次元座標算出部１２２は、深度画像から検出した上肢領域のうちの、手中心の三次元座標を算出していない上肢領域を選択する。また、ステップＳ１５０３の処理では、三次元座標算出部１２２は、ピンホールカメラモデルを適用し、深度画像内における手中心を示す点Ｐ０の位置（座標）と、該位置の深度値とに基づいて、深度画像を撮像した三次元空間における手中心の三次元座標を算出する。
【０２０１】
次に、三次元座標算出部１２２は、深度画像内での手首の位置を検出し、該手首の三次元座標を算出する（ステップＳ１５０４）。ステップＳ１５０４の処理では、三次元座標算出部１２２は、例えば、深度画像から抽出した上肢の延伸方向を示す線分群から検出した手中心の位置と、線分の折れ曲がり位置とに基づいて、深度画像における手首の位置を検出する。なお、上肢領域から線分群を抽出できなかった場合等、線分を利用して手首の位置を検出することができない場合、三次元座標算出部１２２は、例えば、手中心から手首までの寸法の平均値（例えば６０ｍｍ）に基づいて深度画像における手首の位置を検出する。この場合、三次元座標算出部１２２は、例えば、深度画像における手中心の位置と肩の推定位置とを結ぶ線分上であって、手中心からの三次元距離が手中心から手首までの寸法の平均値となるような位置を手首の位置として検出する。
【０２０２】
次に、三次元座標算出部１２２は、深度画像内での肘の位置を検出し、該肘の三次元座標を算出する（ステップＳ１５０５）。ステップＳ１５０５の処理では、三次元座標算出部１２２は、例えば、深度画像から抽出した上肢の延伸方向を示す線分群から検出した手首の位置と、線分の折れ曲がり位置とに基づいて、深度画像における肘の位置を検出する。なお、上肢領域から線分群を抽出できなかった場合等、線分を利用して肘の位置を検出することができない場合、三次元座標算出部１２２は、例えば、手首から肘までの寸法の平均値（例えば２６０ｍｍ）に基づいて深度画像における肘の位置を検出する。この場合、三次元座標算出部１２２は、例えば、深度画像における手首の位置と肩の推定位置とを結ぶ線分上であって、手首からの三次元距離が手首から肘までの寸法の平均値となるような位置を肘の位置として検出する。
【０２０３】
次に、三次元座標算出部１２２は、深度画像内での肩の位置を検出し、該肩の三次元座標を算出する（ステップＳ１５０６）。ステップＳ１５０５の処理では、三次元座標算出部１２２は、例えば、深度画像から抽出した上肢の延伸方向を示す線分群から検出した肘の位置と、線分の終点又は折れ曲がり位置とに基づいて、深度画像における肩の位置を検出する。なお、上肢領域から線分群を抽出できなかった場合等、線分を利用して肩の位置を検出することができない場合、三次元座標算出部１２２は、例えば、推定した肩の位置と、肘から肩までの寸法の平均値とに基づいて深度画像における肩の位置を検出する。この場合、三次元座標算出部１２２は、例えば、深度画像における肘の位置と肩の推定位置とを結ぶ線分上であって、手首からの三次元距離が手首から肘までの寸法の平均値となるような位置を肘の位置として検出する。
【０２０４】
ステップＳ１５０４〜Ｓ１５０６により手首、肘、及び肩の三次元座標を算出した後、三次元座標算出部１２２は、未選択の上肢領域があるか否かを判定する（ステップＳ１５０７）。ステップＳ１５０７の判定では、三次元座標算出部１２２は、手中心及び各関節の三次元座標を算出していない上肢領域がある場合に、未選択の上肢領域があると判定する。未選択の上肢領域がある場合（ステップＳ１５０７；ＹＥＳ）、三次元座標算出部１２２は、ステップＳ１５０３以降の処理を繰り返す。そして、全ての上肢領域で手中心及び各関節の三次元座標を算出した場合（ステップＳ１５０７；ＮＯ）、三次元座標算出部１２２は、手中心及び関節の三次元座標を算出する処理を終了する。
【０２０５】
手中心及び関節の三次元座標を算出する処理（ステップＳ１５）が終了すると、手位置検出装置１は、次に、座標補正処理（ステップＳ６）を行う。座標補正処理は、手位置検出装置１の補正部１３０が行う。本実施形態の手位置検出装置１における補正部１３０は、座標補正処理として、例えば、図４のフローチャートに沿った処理を行う。なお、本実施形態に係る補正部１３０は、図４のフローチャートにおける整合性判別処理（ステップＳ６０３）として、例えば、図２３のフローチャートに沿った処理を行う。
【０２０６】
図２３は、第２の実施形態における整合性判別処理の内容を説明するフローチャートである。
【０２０７】
図２３の整合性判別処理（ステップＳ６０３）は、補正部１３０の整合性判定部１３１が行う。本実施形態の手位置検出装置１における整合性判定部１３１は、図２３のように、まず、手中心及び各関節を識別する変数ｉを「０」にするとともに、整合性パラメータＣｉを「True」に設定する（ステップＳ６０３０１）。ここで、変数ｉは、１個の上肢領域から手中心及び各関節の位置を検出したときに、手中心及び各関節のそれぞれを識別するために付した数値（０，１，２，・・・）である。整合性パラメータＣｉは、変数ｉにより指定される手中心又は関節を示す点Ｐｉの三次元座標が空間的かつ時間的に整合しているか否かを示す値である。本実施形態では、整合性パラメータＣｉは、「True」と「False」との２つの値のいずれかの値とする。「True」は、三次元座標が空間的かつ時間的に整合していることを示す値である。「False」は、三次元座標が空間的又は時間的に整合していないことを示す値である。
【０２０８】
次に、整合性判定部１３１は、手中心又は関節を示す点Ｐｉの三次元座標（Ｘｉ，Ｙｉ，Ｚｉ）から深度画像内での座標（ｘｉ，ｙｉ）と距離ｚｉとを算出する（ステップＳ６０３０２）。ステップＳ６０３０２では、整合性判定部１３１は、深度画像内での手中心又は関節を示す点Ｐｉの位置と対応する三次元座標（Ｘｉ，Ｙｉ，Ｚｉ）を算出する際の算出式に基づく逆算（逆変換）により、深度画像内での座標（ｘｉ，ｙｉ）と距離ｚｉとを算出する。
【０２０９】
次に、整合性判定部１３１は、深度画像における座標（ｘｉ，ｙｉ）の深度値ｚｉ’を読み出し（ステップＳ６０３０３）、ｚｉ’＞ｚｉ＋Ｍであるか否かを判定する（ステップＳ６０３０４）。ｚｉ’＞ｚｉ＋Ｍである場合（ステップＳ６０３０４；ＹＥＳ）、整合性判定部１３１は、整合性パラメータＣｉを「False」に変更する（ステップＳ６０３１２）。
【０２１０】
一方、ｚｉ’≦ｚｉ＋Ｍである場合（ステップＳ６０３０４；ＮＯ）、整合性判定部１３１は、次に、点Ｐｉの移動速度Ｓｉを算出する（ステップＳ６０３０８）。ステップＳ６０３０８の処理では、整合性判定部１３１は、まず、座標履歴１９３を参照して点Ｐｉについての過去の三次元座標を読み出し、現在の三次元座標と過去の三次元座標との三次元距離Ｄｉを算出する。三次元距離Ｄｉを算出した後、整合性判定部１３１は、算出した三次元距離Ｄｉと、深度画像の撮像時刻の差とに基づいて、移動速度Ｓｉを算出する。
【０２１１】
次に、整合性判定部１３１は、算出した移動速度Ｓｉが閾値ＴＨＳよりも大きいか否かを判定する（ステップＳ６０３０９）。閾値ＴＨＳは、例えば、人が上肢を動かす際の手中心及び各関節の平均的な移動速度に基づいて設定する。すなわち、整合性判定部１３１は、算出した移動速度ＳｉがＳｉ＞ＴＨＳである場合には、移動速度Ｓｉの算出に用いた２つの三次元座標の位置関係が時間的に整合していないと判定する。よって、Ｓｉ＞ＴＨＳである場合（ステップＳ６０３０９；ＹＥＳ）、整合性判定部１３１は、整合性パラメータＣｉを「False」に変更する（ステップＳ６０３１２）。
【０２１２】
ステップＳ６０３１２の処理を行った場合、或いはＳｉ≦ＴＨＳである場合（ステップＳ６０３０９；ＮＯ）、整合性判定部１３１は、次に、現在処理対象である手中心及び関節を示す点のなかに未判定の点があるか否かを判定する（ステップＳ６０３１０）。すなわち、ステップＳ６０３１０の判定を行う時点で、現在処理対象となっている手中心又は関節を示す点Ｐｉについての整合性パラメータＣｉは、「True」及び「False」のいずれかの値に確定する。
【０２１３】
整合性を判定していない点がある場合（ステップＳ６０３１０；ＹＥＳ）、整合性判定部１３１は、変数ｉをｉ＋１に更新し整合性パラメータＣｉを「True」に設定する（ステップＳ６０３１１）。その後、整合性判定部１３１は、ステップＳ６０３０２以降の処理を行う。そして、全ての手中心及び関節の整合性を判定した場合（ステップＳ６０３１０；ＮＯ）、整合性判定部１３１は、整合性判別処理を終了する。
【０２１４】
このように、図２３の整合性判別処理では、図５の整合性判別処理におけるステップＳ６０３０５からステップＳ６０３０７までの処理が省略されている。すなわち、本実施形態の整合性判定部１３１が行う整合性判別処理では、手中心又は関節を示す点Ｐｉの三次元座標から算出した距離ｚｉと、深度画像における深度値ｚｉ’とが整合しない場合、点Ｐｉの三次元座標は空間的に整合しないと判定する。このため、本実施形態の手位置検出装置１では、三次元距離ｌｅｎを算出して対象者の寸法との整合性を判定する場合に比べて処理数が低減し、手位置検出装置１の処理負荷を軽減することが可能となる。なお、本実施形態の手位置検出装置１における整合性判別処理として、整合性判定部１３１が図５のフローチャートに沿った処理を行ってもよいことはもちろんである。また、整合性判定部１３１は、整合性判別処理として、図１７Ａ及び図１７Ｂのフローチャートに沿った処理を行ってもよい。
【０２１５】
図２４は、深度画像の撮像範囲を説明する図である。
図２４には、本実施形態の手位置検出装置１の適用例として、作業スペース６内で作業を行う作業員７の手中心の位置の時間履歴に基づいて作業状況を管理する管理システム５を示している。該管理システム５は、手位置検出装置１と、深度センサ２と、管理装置３Ａとを含む。管理システム５における手位置検出装置１及び深度センサ２は、それぞれ、インターネット等の通信ネットワーク４に接続可能な通信機能を含む。また、管理システム５における管理装置３Ａは、図１の外部装置３の一例である。なお、図２４に示したｘ方向、ｙ方向、及びｚ方向は、それぞれ、作業スペース６における深度センサ２の座標系のｘ軸方向、ｙ軸方向、及びｚ軸方向を示している。
【０２１６】
この種の管理システム５では、例えば、管理システム５の管理者或いは作業員７等が、予め、作業員７の上肢の寸法を入力した寸法情報１９２を作成し、該寸法情報１９２を手位置検出装置１の記憶部１９０に記憶させておく。また、この種の管理システム５では、例えば、作業員７が作業を行っていない期間に、作業スペース６の上方に設置した深度センサ２により深度画像を撮像し、該深度画像を背景画像１９１として記憶部１９０に記憶させておく。深度センサ２は、作業員７が作業を行う作業台８Ａにおける作業エリアを含む撮像範囲１０内のＵ×Ｖ個の点についての深度値（距離の情報）を持つ深度画像を撮像する。
【０２１７】
また、本実施形態で例示する管理システム５では、図２４のように、深度センサ２の撮像範囲１０が作業エリアよりも作業者７側に張り出している。このため、作業者７が作業を行っているときに深度センサ２で撮像した深度画像には、作業者７の頭部７５０や胴体７６０についての深度値の情報が含まれる。
【０２１８】
図２５は、深度画像の例を示す図である。
図２５の深度画像１１０１は、図２４の作業エリア６内で作業員７が作業を行っているときに深度センサ２で撮像した深度画像である。深度画像１１０１は、撮像範囲１０内のＵ×Ｖ個の点のそれぞれについての深度値の情報を含む。
【０２１９】
深度画像１１０１の撮像範囲１０は、作業領域である作業台８Ａと隣接する作業員７が立っている領域を含む。このため、深度画像１１０１は、作業台８Ａを示す領域と、作業員７の左上肢７１０を示す領域と、右上肢７２０を示す領域との他に、頭部７５０の深度値を示す領域と、作業員７の胴体部分７６０の深度値を示す部分とを含む。なお、深度画像１１０１を撮像する深度センサ２は、作業員７の上方に設置されている。このため、深度画像１１０１における作業員７の左上肢７１０を示す領域と、右上肢７２０を示す領域は、それぞれ、作業員７の頭部７５０及び胴体部分７６０により一部分が欠落した状態となることがある。図２５の深度画像１１０１では、作業員７の左上肢７１０のうちの手７１１の部分が頭部７５０に隠れており、肘７１３の部分が胴体部分７６０に隠れている。同様に、図２５の深度画像１１０１では、作業員７の右上肢７２０のうちの手７２１の部分が頭部７５０に隠れており、肘７１３の部分が胴体部分７６０に隠れている。
【０２２０】
本実施形態の手位置検出装置１は、上記のように、まず、処理対象である深度画像から体領域を検出する処理（ステップＳ１２）と、上肢領域を検出する処理（ステップＳ２）とを行う。
【０２２１】
図２６Ａは、体領域の検出方法を説明する図（その１）である。図２６Ｂは、体領域の検出方法を説明する図（その２）である。
【０２２２】
図２６Ａの（ａ）には、深度画像１１０１における体領域検出エリア１１０５と、上肢領域検出エリア１１０６とを示している。体領域検出エリア１１０５は、作業台８Ａにおける作業領域と隣接する、作業員７が立っている領域である。このため、以下の説明では、背景画像において作業台８Ａの下端となる位置を境界Ｂとし、深度画像１１０１における境界Ｂよりも下方側の部分領域を体領域検出エリア１１０５とする。すなわち、体領域検出部１２４は、まず、深度画像１１０１における境界Ｂよりも下方側である体領域検出エリア１１０５に含まれる各位置（画素）の深度値に基づいて二値画像を生成する。
【０２２３】
体領域検出部１２４が二値画像を生成する際に用いる背景画像は、図示は省略するが、深度画像１１０１における境界Ｂを含む境界Ｂよりも上方側に作業台８Ａの深度値を示す領域のみが存在し、境界Ｂよりも下方側には床面の深度値を示す領域のみが存在する。このため、体領域検出エリア１１０５の深度値に基づいて生成される二値画像は、例えば、図２６Ａの（ｂ）の二値画像１１０２のようになる。なお、図２６Ａの（ｂ）の二値画像では、上肢領域検出エリア１１０６内の各位置（画素）の深度値を、体領域検出エリア１１０５における体領域１１０２Ｃ外の深度値と一致させている。
【０２２４】
すなわち、体領域検出エリア１１０５内での深度値の差に基づいて生成される二値画像１１０２における体領域１１０２Ｃは、上肢領域検出エリア１１０６内に存在する作業員７の胴体部分を含まない。このため、体領域１１０２Ｃは、作業員７の胴体部分を正しく示しているとはいえない。よって、体領域検出部１２４は、次に、体領域１１０２Ｃの輪郭部分における深度値に基づいて、体領域１１０２Ｃを補正する。
【０２２５】
図２６Ａの（ａ）の深度画像１１０１と（ｂ）の二値画像１１０２とを比較すると、体領域１１０２Ｃの輪郭のうちの境界Ｂと重なる部分に、体領域１１０２Ｃ内の深度値と体領域１１０２Ｃ外の深度値との差が略０となる区間が存在する。このため、体領域検出部１２４は、体領域１１０２Ｃの輪郭のうちの、体領域１１０２Ｃ内の深度値と体領域１１０２Ｃ外の深度値との差が略０となる部分を、上肢領域検出エリア１１０６側に広げる。これにより、体領域検出部１２４は、例えば、図２６Ｂの二値画像１１０２のように、深度画像１１０１における胴体部分７６０の深度値を示す領域と対応した体領域１１０２Ｄを検出する。
【０２２６】
深度画像１１０１から体領域１１０２Ｄを検出した後、手位置検出装置１では、上肢領域検出部１２１が深度画像１１０１から上肢領域を検出する。上肢領域検出部１２１は、背景差分法により、深度画像１１０１における上肢領域検出エリア１１０６内から上肢領域を検出する。
【０２２７】
図２７は、上肢領域の検出結果の例を示す図である。
図２７の二値画像１１０２は、図２５の深度画像１１０１と、図示しない背景画像１９１とに基づいて生成される二値画像を示している。図２５の深度画像１１０１には、背景画像１９１には存在しない作業者７の頭部７５０、胴体部分７６０、左上肢７１０、及び右上肢７２０の各部についての深度値を示す領域が含まれる。従って、図２５の深度画像１１０１と、背景画像１９１とに基づいて生成される二値画像１１０２では、第１の上肢領域１１０２Ａ、第２の上肢領域１１０２Ｂ、体領域１１０２Ｄ、及び頭部領域１１０２Ｅが、背景から分離される。このため、上肢領域検出部１２１は、次に、背景から分離された４つの領域１１０２Ａ，１１０２Ｂ，１１０２Ｄ，及び１１０２Ｅから、上肢領域１１０２Ａ及び１１０２Ｂを抽出する。
【０２２８】
背景から分離された４つの領域１１０２Ａ，１１０２Ｂ，１１０２Ｄ，及び１１０２Ｅのうちの、上肢領域１１０２Ａ及び１１０２Ｂと、体領域１１０２Ｄ及び頭部領域１１０２Ｅとでは、二値画像１１０２を生成する際に算出した深度値の差の大きさが異なる。上肢領域１１０２Ａ及び１１０２Ｂと対応する作業員７の上肢７１０及び７２０は、体領域１１０２Ｄと対応する胴体部分７６０及び頭部領域１１０２Ｅと対応する頭部７５０よりも作業台８Ａに近い位置に存在する。このため、上肢領域１１０２Ａ及び１１０２Ｂ内の画素における深度値の差は、体領域１１０２Ｄ及び頭部領域１１０２Ｅ内の画素における深度値の差よりも小さくなる。よって、上肢領域検出部１２１は、背景から分離された４つの領域１１０２Ａ，１１０２Ｂ，１１０２Ｄ，及び１１０２Ｅのうちの、深度値の差が第１の閾値と第２の閾値との間となる小さい領域１１０２Ａ及び１１０２Ｂを上肢領域として検出する。この場合、上肢領域検出部１２１は、二値画像１１０２においては、図２７のように、深度値の差が第２の閾値よりも大きくなる領域１１０２Ｄ及び１１０２Ｅを背景とみなす。従って、画像内位置検出部１２２は、深度画像１１０１内での手中心の位置を検出する際に、図２７の二値画像１１０２における白地の領域（第１の上肢領域１１０２Ａ及び第２の上肢領域１１０２Ｂ）のそれぞれから、手中心の位置を検出する。
【０２２９】
図２８は、手中心の位置の検出結果の例を示す図である。
図２８の深度画像１１０１には、図２７の二値画像１１０２に基づいて検出した第１の上肢領域１１０１Ａ及び第２の上肢領域１１０１Ｂと、各上肢領域１１０１Ａ及び１１０１Ｂから検出した手中心を示す点Ｐ０の位置を示している。
【０２３０】
画像内位置検出部１２２は、第１の実施形態で説明したように、上肢領域を線分化して上肢の延伸方向を示す線分群に変換し、線分群の線分上で手中心の位置を検出する。このため、画像内位置検出部１２２は、図２８の深度画像１１０１のように、第１の上肢領域１１０１Ａ内の手中心を示す点Ｐ０の位置として該領域内の位置Ｑ１０を検出し、第２の上肢領域１１０２Ｂ内の手中心を示す点Ｐ０の位置として該領域内の位置Ｑ２０を検出する。
【０２３１】
画像内位置検出部１２２が手中心を示す点Ｐ０の位置を検出した後、本実施形態の手位置検出装置１では、三次元座標算出部１２３が手中心及び上肢の関節の三次元座標を算出する処理（ステップＳ１５）を行う。
【０２３２】
図２９は、左上肢の関節の位置の決定方法を説明する図である。図３０は、決定した手中心及び関節の位置を示す図である。
【０２３３】
三次元座標算出部１２３は、深度画像１１０１（二値画像１１０２）から検出した上肢領域毎に、関節の位置を決定する。図２９の（ａ）の深度画像１１０１には、処理の対象が第１の上肢領域１１０１Ａである場合の手首を示す点Ｐ１の位置Ｑ１１の例を示している。図２９の（ａ）の深度画像１１０１を撮像した時点では、作業員７の左上肢７１０における手首から肩までの部分のうちの大部分が胴体部分７６０に隠れている。このため、深度画像１１０１における第１の上肢領域１１０１Ａは上肢の延伸方向となり得る方向の寸法が短く、三次元座標算出部１２３は、上肢領域を線分化した線分群から手首の位置を検出することができない。この場合、三次元座標算出部１２３は、第１の上肢領域１１０１Ａから検出した手中心を示す点Ｐ０の位置Ｑ１０と、手中心から手首までの寸法の平均値（例えば６０ｍｍ）とに基づいて、手首を示す点Ｐ１の位置を決定する。このとき、三次元座標算出部１２３は、例えば、深度画像１１０１内における手中心の位置Ｑ１０と、肩の推定位置ＱＳ１とを通る線分ＬＳ１上であって、手中心の位置Ｑ１０からの距離がＬ１’となる位置Ｑ１１を、手首を示す点Ｐ１の位置とする。ここで、手中心の位置Ｑ１０と手首の位置Ｑ１１との距離Ｌ１’は、三次元距離が手中心から手首までの寸法と略一致する距離とする。すなわち、深度画像１１０１における上肢領域を線分化した線分群から手首の位置を検出することができない場合、三次元座標算出部１２３は、手首を示す点Ｐ１の三次元座標を算出した後、深度画像１１０１内における点Ｐ１の位置を決定する処理を行う。
【０２３４】
第１の上肢領域１１０１Ａと対応する手首の位置を決定した後、三次元座標算出部１２３は、決定した手首の位置に基づいて、肘を示す点Ｐ２の位置を決定する。三次元座標算出部１２３は、手中心の位置に基づいて手首の位置を決定するときと同様の方法により、肘を示す点Ｐ２の位置を決定する。すなわち、三次元座標算出部１２３は、図２９の（ｂ）の深度画像１１０１のように、手首の位置Ｑ１１を通る線分ＬＳ１上であって、該位置Ｑ１１からの距離Ｌ２’が手首から肘までの寸法と対応する距離となる位置Ｑ１２を、肘を示す点Ｐ２の位置に決定する。ここで、手首の位置Ｑ１１と肘の位置Ｑ１２との距離Ｌ２’は、三次元距離が手首から肘までの寸法と略一致する距離とする。すなわち、深度画像１１０１における上肢領域を線分化した線分群から肘の位置を検出することができない場合、三次元座標算出部１２３は、肘を示す点Ｐ２の三次元座標を算出した後、深度画像１１０１内における点Ｐ２の位置を決定する処理を行う。
【０２３５】
第１の上肢領域１１０１Ａと対応する手首の位置を決定した後、三次元座標算出部１２３は、決定した肘の位置と、肩の推定位置とに基づいて、左肩を示す点Ｐ３の位置を決定する。
【０２３６】
第１の上肢領域１１０１Ａと対応する左上肢の手首、肘、及び肩の位置を決定してそれぞれの三次元座標を算出した後、三次元座標算出部１２３は、第２の上肢領域１１０２Ｂと対応する右上肢の手首、肘、及び肩の位置を決定してそれぞれの三次元座標を算出する。三次元座標算出部１２３は、例えば、図３０の深度画像１１０１における線分ＬＳ２上の位置Ｑ２１を第２の上肢領域１１０１Ｂと対応する手首を示す点Ｐ１の位置に決定して三次元座標を算出する。また、三次元座標算出部１２３は、例えば、図２９の深度画像１１０１における線分ＬＳ２上の位置Ｑ２２を第２の上肢領域１１０１Ｂと対応する手首を示す点Ｐ１の位置に決定して三次元座標を算出する。
【０２３７】
手中心及び関節の三次元座標を算出した後、手位置検出装置１は、座標補正処理（ステップＳ６）において整合性判別処理（ステップＳ６０３）を行い、手中心及び関節の三次元座標の補正の要否を判定する。本実施形態の手位置検出装置１は、整合性判別処理として、図２３のフローチャートに沿った処理を行う。すなわち、手中心又は関節を示す点Ｐｉの三次元座標から算出した距離値ｚｉと深度画像１１０１における深度値ｚｉ’との関係がｚｉ’＞ｚｉ＋Ｍである場合、手位置検出装置１は、点Ｐｉと対応する手中心又は関節が空間的に整合していないと判定する。図３０の深度画像１１０１における、第１の上肢領域１１０１Ａと対応する手首を示す点Ｐ１及び肘を示す点Ｐ２は、それぞれ、第１の上肢領域１１０１Ａの外側に存在する。ただし、点Ｐ１の位置Ｑ１１は体領域１１０１Ｄ内であり、点Ｐ２の位置Ｑ１２は体領域１１０１Ｄの外側である。すなわち、位置Ｑ１１の深度値ｚ１は、深度センサ２から胴体部分までの距離を示す値であり、深度センサ２から上肢（手首）までの距離を示す値よりも小さい。これに対し、点Ｐ２の深度値は、深度センサ２から床までの距離を示す値であり、深度センサ２から上肢（手首）までの距離を示す値よりも大きい。このため、第１の上肢領域１１０１Ａと対応する手中心及び関節を処理の対象とする整合性判別処理において、手位置検出装置１の整合性判別部１３１は、肘を示す点Ｐ２が空間的に整合していないと判別する。この場合、整合性判定部１３１は、手中心及び各関節の三次元座標を再計算する処理を再計算部１３２に行わせる。再計算部１３２は、第１の実施形態で説明したように、深度画像１１０１内で手中心を示す点Ｐ０の位置を変更し、変更後の点Ｐ０の位置に基づいて、手中心及び各関節の三次元座標を算出する（再計算する）。
【０２３８】
図３１は、手中心及び関節の位置の補正方法を説明する図である。
図３１の深度画像１１０１には、第１の上肢領域１１０１Ａと対応する手中心及び肘の位置の補正例を示している。
【０２３９】
第１の上肢領域１１０１Ａと対応する手首を示す点Ｐ１及び肘を示す点Ｐ２が空間的に整合していない場合、再計算部１３２は、まず、深度画像１１０１内での手中心を示す点Ｐ０の位置を変更する。このとき、再計算部１３２は、例えば、図３０のように、手首の位置Ｑ１１を始点とし、変更前の手中心の位置Ｑ１０を終点とするベクトルの方向であって、手中心の位置Ｑ１０から所定の距離となる位置Ｑ１０’に、手中心を示す点Ｐ０の位置を変更する。言い換えると、再計算部１３２は、変更前の手中心の位置Ｑ１０と手首の位置Ｑ１１とを通る線分ＬＳ１上であって、手首の位置Ｑ１１から離間する（遠ざかる）方向に手中心の位置を変更する。
【０２４０】
手中心を示す点Ｐ０の位置を位置Ｑ１０’に変更した後、再計算部１３２は、深度画像１１０１における変更後の位置Ｑ１０’（座標）に基づいて、手中心を示す点Ｐ０の三次元座標を算出する。この際、再計算部１３２は、第１の実施形態で説明したように、変更後の位置Ｑ１０’が第１の上肢領域１１０１Ａ内であるか否かに応じて、三次元座標の算出に用いる深度値を切り替える。変更後の位置Ｑ１０’が第１の上肢領域１１０１Ａ内である場合、再計算部１３２は、位置Ｑ１０’の深度値を利用して三次元座標を算出する。一方、変更後の位置Ｑ１０’が第１の上肢領域１１０１Ａ外である場合、再計算部１３２は、例えば、第１の上肢領域１１０１Ａ内における線分ＬＳ１上での深度値の分布に基づいて、三次元座標の算出に用いる深度値を算出する（推定する）。
【０２４１】
その後、図示は省略するが、再計算部１３２は、変更後の手中心の位置Ｑ１０’に基づいて、手首を示す点Ｐ１の位置を変更し、変更後の点Ｐ１の三次元座標を算出する。その後更に、再計算部１３２は、図３１のように、肘を示す点Ｐ２の位置を、位置Ｑ１２から位置Ｑ１２’に変更し、変更後の点Ｐ２の三次元座標を算出する。ここで、図３１のように、肘を示す点Ｐ２の変更後の位置Ｑ１２が胴体部分と対応する体領域１１０１Ｄに含まれるとすると、深度画像１１０１における位置Ｑ１２’の深度値は、深度センサ２から上肢（肘）までの距離を示す値よりも小さくなる。このため、再計算部１３２が三次元座標を算出した後で整合性判定部１３１が行う整合性判別処理では、肘を示す点Ｐ２の三次元座標から算出した距離ｚ２と、深度画像１１０１の位置Ｑ１２’の深度値ｚ２’との関係がｚ２’≦ｚ２＋Ｍとなる。よって、整合性判定部１３１は、肘を示す点Ｐ２の三次元座標が空間的に整合すると判定する。従って、肘を示す点Ｐ２の移動速度Ｓ２と閾値ＴＨＳとの関係がＳ２≦ＴＨＳとなれば、肘を示す点Ｐ２の整合性パラメータＣ２は「True」のままとなる。この場合、整合性判定部１３１は、肘を示す点Ｐ２は空間的及び時間的に整合すると判別する。
【０２４２】
また、図３１の深度画像１１０１では、第２の上肢領域１１０１Ｂと対応する手首を示す点Ｐ１の位置Ｑ２１が第２の上肢領域１１０１Ｂ内であり、肘を示す点Ｐ２の位置Ｑ２２が体領域１１０１Ｄ内である。この場合、整合性判定部１３１は、第２の上肢領域１１０１Ｂと対応する手中心及び関節を処理の対象とした整合性判別処理において、点Ｐ１及び点Ｐ２の三次元座標が空間的に整合していると判定する。このため、点Ｐ１及び点Ｐ２の三次元座標が時間的にも整合している場合には、整合性判定部１３１は、第２の上肢領域１１０１Ｂと対応する手中心及び各関節の三次元座標を、座標履歴１９３に格納する三次元座標に決定する。
【０２４３】
このように、本実施形態の手位置検出装置１では、深度画像における上肢領域内から手中心を示す点の位置を検出した後、検出した該手中心の位置に基づいて、手中心及び上肢の関節の三次元座標を算出する。このとき、手位置検出装置１は、深度画像における関節の位置が上肢領域外となることを許容し、手中心及び各関節の三次元空間での位置関係が上肢の寸法と略一致するように各関節の三次元座標の位置（三次元座標）を決定する。その後、手位置検出装置１は、手中心及び各関節の三次元座標から算出される距離と深度画像における深度値とに基づいて三次元座標の空間的な整合性について判別し、空間的に整合していない場合には手中心及び各関節の三次元座標を補正する。本実施形態の手位置検出装置１では、深度画像における深度値が関節の三次元座標から算出した距離よりも大きい場合には、該関節の三次元座標が空間的に整合していないと判別して三次元座標を補正する。よって、本実施形態の手位置検出装置１では、上肢の関節が胴体部分や頭部により隠れている深度画像から、上肢の関節の三次元座標を正しく算出することが可能となる。
【０２４４】
なお、図３のフローチャートは、本実施形態の手位置検出装置１が行う座標算出処理の一例に過ぎない。本実施形態の手位置検出装置１が行う座標算出処理は、本実施形態の要旨を逸脱しない範囲において適宜変更可能である。例えば、座標算出処理は、深度画像から体領域を検出する処理（ステップＳ１２）と深度画像から上肢領域を検出する処理（ステップＳ２）との処理の順序が逆であってもよいし、該２つの処理が並列に行われるものであってもよい。
【０２４５】
また、図２０のフローチャートは、深度画像から体領域を検出する処理の一例に過ぎない。同様に、図２１のフローチャートは、深度画像から上肢領域を検出する処理の一例に過ぎない。深度画像から体領域を検出する処理、及び上肢領域を検出する処理は、それぞれ、本実施形態の要旨を逸脱しない範囲において適宜変更可能である。また、例えば、深度画像から体領域を検出する処理と上肢領域を検出する処理とは、１つの処理としてもよい。すなわち、手位置検出装置１は、図２７の二値画像１１０２を生成する際に検出される体領域１１０２Ｄのように、上肢領域１１０２Ａ及び１１０２Ｂよりも深度値の差が大きく、かつ体領域検出エリアに含まれる領域を体領域として検出してもよい。
【０２４６】
また、図２２のフローチャートは、手中心及び関節の三次元座標を算出する処理の一例に過ぎない。本実施形態の手位置検出装置１が行う手中心の位置を検出する処理（ステップＳ１４）と手中心及び関節の三次元座標を算出する処理（ステップＳ１５）とは、本実施形態の要旨を逸脱しない範囲において適宜変更可能である。また、手中心及び関節の三次元座標を算出する処理では、上肢の寸法の平均値（例えば手中心から手首までの寸法の平均値）に限らず、寸法情報１９２に登録された対象者の寸法を用いて三次元位置を算出してもよい。
【０２４７】
更に、図２２のフローチャートは、整合性判別処理の一例に過ぎない。本実施形態の手位置検出装置１が行う整合性判別処理は、例えば、図５のフローチャートに沿った処理であってもよいし、図１７Ａ及び図１７Ｂのフローチャートに沿った処理であってもよい。
【０２４８】
上記の手位置検出装置１は、コンピュータと、該コンピュータに実行させるプログラムとにより実現可能である。以下、図３２を参照して、コンピュータとプログラムとにより実現される距離計測装置１について説明する。
【０２４９】
図３２は、コンピュータのハードウェア構成を示す図である。
図３２に示すように、コンピュータ２０は、プロセッサ２００１と、主記憶装置２００２と、補助記憶装置２００３と、入力装置２００４と、出力装置２００５と、入出力インタフェース２００６と、通信制御装置２００７と、媒体駆動装置２００８と、を備える。コンピュータ２０におけるこれらの要素２００１〜２００８は、バス２０１０により相互に接続されており、要素間でのデータの受け渡しが可能になっている。
【０２５０】
プロセッサ２００１は、Central Processing Unit（ＣＰＵ）やMicro Processing Unit（ＭＰＵ）等である。プロセッサ２００１は、オペレーティングシステムを含む各種のプログラムを実行することにより、コンピュータ２０の全体の動作を制御する。また、プロセッサ２００１は、例えば、図３〜図６のフローチャートにおける各処理を含む手位置検出プログラムを実行することにより、深度画像を撮像した三次元空間における手中心及び上肢の関節の三次元座標を算出する。なお、手位置検出プログラムは、例えば、図１９〜図２３のフローチャートにおける各処理を含むプログラムであってもよい。また、手位置検出プログラムにおける座標補正処理（ステップＳ６）は、図４のフローチャートに沿った処理に限らず、例えば、図１４Ａ及び図１４Ｂのフローチャートに沿った処理であってもよい。また、手位置検出プログラムにおける整合性判別処理（ステップＳ６０３）は、例えば、図１７Ａ及び図１７Ｂのフローチャートに沿った処理であってもよい。
【０２５１】
主記憶装置２００２は、図示しないRead Only Memory（ＲＯＭ）及びRandom Access Memory（ＲＡＭ）を含む。主記憶装置２００２のＲＯＭには、例えば、コンピュータ２０の起動時にプロセッサ２００１が読み出す所定の基本制御プログラム等が予め記録されている。また、主記憶装置２００２のＲＡＭは、プロセッサ２００１が、各種のプログラムを実行する際に必要に応じて作業用記憶領域として使用する。主記憶装置２００２のＲＡＭは、例えば、背景画像１９１、寸法情報１９２、座標履歴１９３、及び深度画像１９４等の記憶に利用可能である。
【０２５２】
補助記憶装置２００３は、例えば、Hard Disk Drive（ＨＤＤ）や、フラッシュメモリ等の不揮発性メモリ（Solid State Drive（ＳＳＤ）を含む）等、主記憶装置２００２のＲＡＭと比べて容量の大きい記憶装置である。補助記憶装置２００３は、プロセッサ２００１によって実行される各種のプログラムや各種のデータ等の記憶に利用可能である。補助記憶装置２００３は、例えば、上記の手位置検出プログラムの記憶に利用可能である。また、補助記憶装置２００３は、例えば、背景画像１９１、寸法情報１９２、座標履歴１９３、及び深度画像１９４等の記憶に利用可能である。
【０２５３】
入力装置２００４は、例えば、キーボード装置、マウス装置、及びタッチパネル装置等である。入力装置２００４は、例えば、寸法情報１９２の入力、及び背景画像１９１の設定に利用可能である。また、入力装置２００４は、深度センサ２等の距離計測装置を含んでもよい。
【０２５４】
出力装置２００５は、例えば、液晶表示装置等の表示装置、及びプリンタ等である。出力装置２００５は、例えば、座標履歴１９３の表示や印刷に利用可能である。
【０２５５】
入出力インタフェース２００６は、コンピュータ２０と、他の電子機器とを接続する。入出力インタフェース２００６は、例えば、Universal Serial Bus（ＵＳＢ）規格のコネクタ等を備える。入出力インタフェース２００６は、例えば、コンピュータ２０と、深度センサ２等の距離計測装置との接続に利用可能である。
【０２５６】
通信制御装置２００７は、コンピュータ２０をインターネット等のネットワークに接続し、ネットワークを介したコンピュータ２０と他の電子機器との各種通信を制御する装置である。通信制御装置２００７は、例えば、ネットワーク４を介した、手位置検出装置１として動作させるコンピュータ２０と深度センサ２との通信に利用可能である（図７及び図２４を参照）。また、通信制御装置２００７は、例えば、ネットワーク４を介した、手位置検出装置１として動作させるコンピュータ２０と外部装置３との通信に利用可能である。
【０２５７】
媒体駆動装置２００８は、可搬型記録媒体２１に記録されているプログラムやデータの読み出し、補助記憶装置２００３に記憶されたデータ等の可搬型記録媒体２１への書き込みを行う。媒体駆動装置２００８には、例えば、１種類以上の規格に対応したメモリカード用リーダ／ライタが利用可能である。媒体駆動装置２００８としてメモリカード用リーダ／ライタを用いる場合、可搬型記録媒体２１としては、メモリカード用リーダ／ライタが対応している規格、例えば、Secure  Digital（ＳＤ）規格のメモリカード（フラッシュメモリ）等を利用可能である。また、可搬型記録媒体２１としては、例えば、ＵＳＢ規格のコネクタを備えたフラッシュメモリが利用可能である。更に、コンピュータ２０が媒体駆動装置２００８として利用可能な光ディスクドライブを搭載している場合、当該光ディスクドライブで認識可能な各種の光ディスクを可搬型記録媒体２１として利用可能である。可搬型記録媒体２１として利用可能な光ディスクには、例えば、Compact Disc（ＣＤ）、Digital Versatile Disc（ＤＶＤ）、Blu-ray Disc（登録商標）等がある。可搬型記録媒体２１は、例えば、上記の手位置検出プログラムの記憶に利用可能である。また、可搬型記録媒体２１は、例えば、背景画像１９１、寸法情報１９２、座標履歴１９３、深度画像１９４等の記憶に利用可能である。
【０２５８】
コンピュータ２０に手中心及び関節の三次元座標を算出する処理の開始命令が入力されると、プロセッサ２００１は、補助記憶装置２００３等の非一時的な記録媒体に記憶させた手位置検出プログラムを読み出して実行する。手位置検出プログラムを実行している間、プロセッサ２００１は、手位置検出装置１における深度画像取得部１１０、関節位置算出部１２０、補正部１３０、及び出力部１４０として機能する（動作する）。なお、手位置検出装置１における出力部１４０の機能の一部は、コンピュータ２０の入出力インタフェース２００６、通信制御装置２００７、及び媒体駆動装置２００８が担う。また、手位置検出プログラムを実行している間、主記憶装置２００２のＲＡＭ及び補助記憶装置２００３等の記憶装置は、手位置検出装置１の記憶部１９０として機能する。
【０２５９】
なお、手位置検出装置１として動作させるコンピュータ２０は、図３２に示した全ての要素２００１〜２００８を含む必要はなく、用途や条件に応じて一部の要素を省略することも可能である。例えば、コンピュータ２０は、媒体駆動装置２００８が省略されたものであってもよい。
【０２６０】
以上記載した各実施形態に関し、更に以下の付記を開示する。
（付記１）
コンピュータが、
所定の計測範囲内に存在する物体までの距離の情報を含む画像から、対象者の上肢部分と対応する上肢領域を検出し、
前記画像における前記上肢領域の形状及び位置に基づいて、該画像内での手中心及び上肢の関節の位置を検出するとともに、検出した前記手中心及び前記関節のそれぞれの前記計測範囲内での三次元座標を算出し、
算出した前記手中心の三次元座標及び前記関節の三次元座標のそれぞれが、予め定められた前記対象者の上肢における手中心及び各関節の位置関係と整合しているか否かを判定し、
算出した前記三次元座標と予め定められた前記手中心及び各関節の位置関係とが整合していない場合には、前記深度画像内での前記手中心の位置を変更して前記手中心の三次元座標及び前記関節の三次元座標を補正し、
算出した前記三次元座標と予め定められた前記手中心及び各関節の位置関係とが整合している場合には、現在の前記手中心の三次元座標及び前記関節の三次元座標を前記計測範囲内での三次元座標に決定する、
処理を実行することを特徴とする手位置検出方法。
（付記２）
前記画像内での手中心及び上肢の関節の位置を検出するとともに、検出した前記手中心及び前記関節のそれぞれの前記計測範囲内での三次元座標を算出する処理では、前記コンピュータは、
前記手中心の位置を検出した後、
検出した前記手中心の位置に基づいて、前記上肢の関節のうちの前記手中心に近い関節から順に該関節の位置を検出する、
ことを特徴とする付記１に記載の手位置検出方法。
（付記３）
前記手中心の位置に基づいて前記上肢の関節の位置を検出する処理では、前記コンピュータは、前記上肢の関節の位置が前記上肢領域外となることを許容する、
ことを特徴とする付記２に記載の手位置検出方法。
（付記４）
前記コンピュータは、前記手中心の三次元座標及び前記関節の三次元座標を補正する処理を行った後、補正後の前記三次元座標と予め定められた前記手中心及び各関節の位置関係とが整合しているか否かを判定する、
ことを特徴とする付記１に記載の手位置検出方法。
（付記５）
前記コンピュータは、前記手中心の三次元座標及び前記関節の三次元座標の補正回数が閾値以上となった場合には、補正後の前記三次元座標と予め定められた前記手中心及び各関節の位置関係とが整合しているかによらず、現在の前記手中心の三次元座標及び前記関節の三次元座標を前記計測範囲内での三次元座標に決定する、
ことを特徴とする付記４に記載の手位置検出方法。
（付記６）
前記手中心の三次元座標及び前記関節の三次元座標を補正する処理では、前記コンピュータは、
変更後の前記手中心の位置が前記上肢領域の外側となる場合には、前記上肢領域の外側であって、変更後の前記手中心の位置を含む隣接領域の距離の情報を読み出し、
前記隣接領域の距離が前記上肢領域の距離よりも短い場合には、変更後の前記手中心の位置に基づいて前記手中心の三次元座標及び前記関節の三次元座標を補正する、
ことを特徴とする付記１に記載の手位置検出方法。
（付記７）
前記手中心の三次元座標及び前記関節の三次元座標を補正する処理では、前記コンピュータは、
変更後の前記手中心の位置が前記上肢領域の外側であり、かつ変更後の前記手中心の位置を含む隣接領域の距離が前記上肢領域の距離よりも短い場合には、前記上肢領域の距離の情報に基づいて変更後の前記手中心の位置における該手中心と対応する距離を算出し、算出した前記距離に基づいて前記手中心の三次元座標を算出する、
ことを特徴とする付記１に記載の手位置検出方法。
（付記８）
前記手中心の三次元座標及び前記関節の三次元座標を補正する処理では、前記コンピュータは、
前記隣接領域の距離と前記上肢領域の距離との差が閾値以上である場合に、前記隣接領域の距離が前記上肢領域の距離よりも短いと判定する、
ことを特徴とする付記６及び７のいずれかに記載の手位置検出方法。
（付記９）
算出した前記三次元座標と予め定められた前記手中心及び各関節の位置関係とが整合しているか否かを判定する処理では、前記コンピュータは、
前記手中心及び前記関節毎に、前記三次元座標に基づいて前記画像内での前記手中心又は前記関節の位置と、距離とを算出し、
算出した前記距離が、前記画像における前記手中心又は前記関節の位置の距離よりも短い場合に、前記三次元座標と予め定められた前記手中心及び各関節の位置関係とが整合していないと判定する、
ことを特徴とする付記１に記載の手位置検出方法。
（付記１０）
算出した前記三次元座標と予め定められた前記手中心及び各関節の位置関係とが整合しているか否かを判定する処理では、前記コンピュータは、
１つの前記上肢領域から検出された手中心及び関節の組毎に、隣接する手中心と関節との三次元距離、及び隣接する関節同士の三次元距離を算出し、
算出した三次元距離と、予め定められた前記手中心及び各関節の位置関係に基づいて特定される寸法との差が閾値以上である場合に、前記三次元座標と予め定められた前記手中心及び各関節の位置関係とが整合していないと判定する、
ことを特徴とする付記１に記載の手位置検出方法。
（付記１１）
算出した前記三次元座標と予め定められた前記手中心及び各関節の位置関係とが整合しているか否かを判定する処理では、前記コンピュータは、
算出した前記三次元座標と、予め定められた前記手中心及び各関節の位置関係に基づいて特定される三次元座標とから前記手中心及び前記関節の移動速度を算出し、
前記手中心及び前記関節のいずれかの前記移動速度が閾値以上となる場合に、前記三次元座標と予め定められた前記手中心及び各関節の位置関係とが整合していないと判定する、
ことを特徴とする付記１に記載の手位置検出方法。
（付記１２）
前記コンピュータが行う処理は、更に、前記画像から、前記対象者の胴体部分と対応する体領域を検出し、該体領域から肩の位置を推定する処理を含み、
前記画像内での手中心及び上肢の関節の位置を検出するとともに、検出した前記手中心及び前記関節のそれぞれの前記計測範囲内での三次元座標を算出する処理では、前記コンピュータは、
前記手中心の位置を検出した後、検出した前記手中心の位置と推定した前記肩の位置とに基づいて、前記上肢の関節の位置を検出する、
ことを特徴とする付記１に記載の手位置検出方法。
（付記１３）
予め定められた前記手中心及び各関節の位置関係は、前記対象者から採寸した上肢の寸法を示す情報に基づいて算出された情報である、
ことを特徴とする付記１に記載の手位置検出方法。
（付記１４）
予め定められた前記手中心及び各関節の位置関係は、現在処理の対象となっている前記画像の撮像時刻よりも所定の時間だけ前の時刻に撮像された前記画像から算出された前記手中心の三次元座標及び前記関節の三次元座標に基づいて算出される情報である、
ことを特徴とする付記１に記載の手位置検出方法。
（付記１５）
所定の計測範囲内に存在する物体までの距離の情報を含む画像から、対象者の上肢部分と対応する上肢領域を検出し、前記画像における前記上肢領域の形状及び位置に基づいて、該画像内での手中心及び上肢の関節の位置を検出するとともに、検出した前記手中心及び前記関節のそれぞれの前記計測範囲内での三次元座標を算出する関節位置算出部と、
算出した前記手中心の三次元座標及び前記関節の三次元座標のそれぞれが、予め定められた前記対象者の上肢における手中心及び各関節の位置関係と整合しているか否かを判定し、算出した前記三次元座標と予め定められた前記手中心及び各関節の位置関係とが整合していない場合には、前記深度画像内での前記手中心の位置を変更して前記手中心の三次元座標及び前記関節の三次元座標を補正し、算出した前記三次元座標と予め定められた前記手中心及び各関節の位置関係とが整合している場合には、現在の前記手中心の三次元座標及び前記関節の三次元座標を前記計測範囲内での三次元座標に決定する補正部と、
を備えることを特徴とする手位置検出装置。
（付記１６）
所定の計測範囲内に存在する物体までの距離の情報を含む画像から、対象者の上肢部分と対応する上肢領域を検出し、
前記画像における前記上肢領域の形状及び位置に基づいて、該画像内での手中心及び上肢の関節の位置を検出するとともに、検出した前記手中心及び前記関節のそれぞれの前記計測範囲内での三次元座標を算出し、
算出した前記手中心の三次元座標及び前記関節の三次元座標のそれぞれが、予め定められた前記対象者の上肢における手中心及び各関節の位置関係と整合しているか否かを判定し、
算出した前記三次元座標と予め定められた前記手中心及び各関節の位置関係とが整合していない場合には、前記深度画像内での前記手中心の位置を変更して前記手中心の三次元座標及び前記関節の三次元座標を補正し、
算出した前記三次元座標と予め定められた前記手中心及び各関節の位置関係とが整合している場合には、現在の前記手中心の三次元座標及び前記関節の三次元座標を前記計測範囲内での三次元座標に決定する、
処理をコンピュータに実行させる手位置検出プログラム。
【符号の説明】
【０２６１】
１  手位置検出装置
１１０  深度画像取得部
１２０  関節位置算出部
１２１  上肢領域検出部
１２２  画像内位置検出部
１２３  三次元座標算出部
１２４  体領域検出部
１３０  補正部
１３１  整合性判定部
１３２  再計算部
１４０  出力部
１９０  記憶部
１９１  背景画像
１９２  寸法情報
１９３  座標履歴
１９４  深度画像
２  深度センサ
３  外部装置
３Ａ  管理装置
４  ネットワーク
５  管理システム
６  作業空間
７  作業員
７１０  左上肢
７２０  右上肢
７１１，７２１  手
７１２，７２２  手首
７１３  肘
７１４，７２４  肩
７５０  頭部
７６０  胴体部分
１１０１  深度画像
１１０２  二値画像
１１０１Ａ，１１０１Ｂ，１１０２Ａ，１１０２Ｂ  上肢領域
２０  コンピュータ
２００１  プロセッサ
２００２  主記憶装置
２００３  補助記憶装置
２００４  入力装置
２００５  出力装置
２００６  入出力インタフェース
２００７  通信制御装置
２００８  媒体駆動装置
２０１０  バス
２１  可搬型記録媒体
【図１】
0006988406.tif 000002
【図２】
0006988406.tif 000003
【図３】
0006988406.tif 000004
【図４】
0006988406.tif 000005
【図５】
0006988406.tif 000006
【図６】
0006988406.tif 000007
【図７】
0006988406.tif 000008
【図８】
0006988406.tif 000009
【図９】
0006988406.tif 000010
【図１０】
0006988406.tif 000011
【図１１】
0006988406.tif 000012
【図１２】
0006988406.tif 000013
【図１３】
0006988406.tif 000014
【図１４Ａ】
0006988406.tif 000015
【図１４Ｂ】
0006988406.tif 000016
【図１５】
0006988406.tif 000017
【図１６】
0006988406.tif 000018
【図１７Ａ】
0006988406.tif 000019
【図１７Ｂ】
0006988406.tif 000020
【図１８】
0006988406.tif 000021
【図１９】
0006988406.tif 000022
【図２０】
0006988406.tif 000023
【図２１】
0006988406.tif 000024
【図２２】
0006988406.tif 000025
【図２３】
0006988406.tif 000026
【図２４】
0006988406.tif 000027
【図２５】
0006988406.tif 000028
【図２６Ａ】
0006988406.tif 000029
【図２６Ｂ】
0006988406.tif 000030
【図２７】
0006988406.tif 000031
【図２８】
0006988406.tif 000032
【図２９】
0006988406.tif 000033
【図３０】
0006988406.tif 000034
【図３１】
0006988406.tif 000035
【図３２】
0006988406.tif 000036