(57)【要約】【課題】物体を把持する手の距離画像から手の位置を精度良く特定する。【解決手段】検出部２１１は、距離画像から、手が写っている候補領域を検出する。抽出部２１２は、候補領域を近似する複数の線分のうち隣接する２本の線分の間の角度に基づいて、候補領域を近似する複数の線分の中から、手領域を近似する線分を抽出する。特定部２１３は、手領域を近似する線分を用いて、候補領域内における手の位置を特定する。【選択図】図２
2018116397.tif 000002
【特許請求の範囲】
【請求項１】
距離画像から、手が写っている候補領域を検出する検出部と、
前記候補領域を近似する複数の線分のうち隣接する２本の線分の間の角度に基づいて、前記複数の線分の中から手領域を近似する線分を抽出する抽出部と、
前記手領域を近似する線分を用いて、前記候補領域内における前記手の位置を特定する特定部と、
を備えることを特徴とする画像処理装置。
【請求項２】
前記検出部は、前記距離画像の端部に接する領域を前記候補領域として検出し、前記抽出部は、前記角度が第１閾値よりも小さい場合、前記端部までの距離が前記２本の線分よりも遠い線分を、前記手領域を近似する線分の候補から除外し、残された線分のうち前記端部までの距離が最も遠い線分を、前記手領域を近似する線分として抽出することを特徴とする請求項１記載の画像処理装置。
【請求項３】
前記抽出部は、前記２本の線分のうち第１線分が前記端部に接しており、前記２本の線分のうち第２線分が第３線分に隣接しており、前記第３線分が第４線分に隣接しており、前記第１線分と前記第２線分の間の角度が、前記第１閾値と、前記第１閾値よりも大きな第２閾値との間の角度範囲に含まれ、前記第２線分と前記第３線分の間の角度が前記角度範囲に含まれ、前記第３線分と前記第４線分の間の角度が前記角度範囲に含まれる場合、前記手領域を近似する線分の候補から前記第４線分を除外することを特徴とする請求項２記載の画像処理装置。
【請求項４】
前記抽出部は、前記第１閾値よりも大きな第２閾値よりも前記角度が小さい場合、前記２本の線分のうち前記端部までの距離が近い方の線分に対応する、３次元空間内の線分の長さを用いて、前記２本の線分のうち前記端部までの距離が遠い方の線分を前記手領域を近似する線分の候補から除外するか否かを判定することを特徴とする請求項２記載の画像処理装置。
【請求項５】
前記抽出部は、前記端部までの距離が最も遠い線分上の複数の点それぞれから前記候補領域の輪郭までの距離に基づいて、前記端部までの距離が最も遠い線分から前記手領域を近似する部分を抽出し、前記特定部は、前記手領域を近似する部分を用いて前記手の位置を特定することを特徴とする請求項３又は４記載の画像処理装置。
【請求項６】
前記抽出部は、前記端部までの距離が遠い方の線分の前記３次元空間における方向と、前記端部までの距離が遠い方の線分を含む領域に写っている被写体の前記３次元空間における方向とを求め、求めた２つの方向の間の角度が第３閾値よりも大きい場合、前記端部までの距離が遠い方の線分を前記手領域を近似する線分の候補から除外することを特徴とする請求項３乃至５のいずれか１項に記載の画像処理装置。
【請求項７】
前記抽出部は、前記候補領域を細線化することで曲線を求め、前記曲線を近似する複数の線分を、前記候補領域を近似する前記複数の線分として求めることを特徴とする請求項１乃至６のいずれか１項に記載の画像処理装置。
【請求項８】
前記距離画像と前記手の位置とを用いて、手首、肘、又は肩の位置を求める上肢検出部をさらに備えることを特徴とする請求項１乃至７のいずれか１項に記載の画像処理装置。
【請求項９】
距離画像から、手が写っている候補領域を検出する検出部と、
前記候補領域を近似する複数の線分のうち隣接する２本の線分の間の角度に基づいて、前記複数の線分の中から手領域を近似する線分を抽出する抽出部と、
前記手領域を近似する線分を用いて、前記候補領域内における前記手の位置を特定する特定部と、
前記手の位置を示す位置情報を表示する表示部と、
を備えることを特徴とする画像処理システム。
【請求項１０】
距離画像から、手が写っている候補領域を検出し、
前記候補領域を近似する複数の線分のうち隣接する２本の線分の間の角度に基づいて、前記複数の線分の中から手領域を近似する線分を抽出し、
前記手領域を近似する線分を用いて、前記候補領域内における前記手の位置を特定する、
処理をコンピュータに実行させるための画像処理プログラム。
【請求項１１】
コンピュータが、
距離画像から、手が写っている候補領域を検出し、
前記候補領域を近似する複数の線分のうち隣接する２本の線分の間の角度に基づいて、前記複数の線分の中から手領域を近似する線分を抽出し、
前記手領域を近似する線分を用いて、前記候補領域内における前記手の位置を特定する、
ことを特徴とする画像処理方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、画像処理装置、画像処理システム、画像処理プログラム、及び画像処理方法に関する。
【背景技術】
【０００２】
近年、３次元距離センサの普及により、距離画像からユーザの骨格、関節位置等を検出し、検出結果をもとにジェスチャ等の動作を認識する技術が多く開発されている（例えば、特許文献１及び特許文献２を参照）。距離センサ及び距離画像は、それぞれ、深度センサ及び深度画像と呼ばれることもある。
【０００３】
２値化画像のラインを細線化する方法、連続する点を複数の近似線分へ変換する方法、３点からなる角度を求める方法、人体のサイズの規定値等も知られている（例えば、非特許文献１〜非特許文献４を参照）。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】米国特許出願公開第２０１１／００８５７０５号明細書
【特許文献２】特開２０１５−９４８２８号公報
【非特許文献】
【０００５】
【非特許文献１】“Javascriptで細線化”、［online］、Hundredsoft、［平成２９年１月５日検索］、インターネット＜ＵＲＬ：http://www.hundredsoft.jp/win7blog/log/eid119.html＞
【非特許文献２】“Ramer-Douglas-Peucker algorithm”、［online］、WIKIPEDIA、［平成２９年１月５日検索］、インターネット＜ＵＲＬ：https://en.wikipedia.org/wiki/Ramer%E2%80%93Douglas%E2%80%93Peucker_algorithm＞
【非特許文献３】“画像処理ソリューション”、［online］、ＦＣ２ブログ、［平成２９年１月５日検索］、インターネット＜ＵＲＬ：http://imagingsolution.blog107.fc2.com/blog-entry-50.html＞
【非特許文献４】“MAN-SYSTEMS INTEGRATION STANDARDS Volume I, Section 3, 3 ANTHROPOMETRY AND BIOMECHANICS”、［online］、NATIONAL AERONAUTICS AND SPACE ADMINISTRATION、［平成２９年１月５日検索］、インターネット＜ＵＲＬ：https://msis.jsc.nasa.gov/sections/section03.htm＞
【発明の概要】
【発明が解決しようとする課題】
【０００６】
環境設置型のカメラ又は３次元距離センサを用いて、作業現場における作業者の手の３次元位置の変化を検出することで、作業者の動作を認識できれば、作業ミスの自動検知、正しい作業動作の教育等を実現することができる。これにより、作業効率及び作業品質を向上させることが可能になる。
【０００７】
しかし、工場のベルトコンベアラインにおける組立作業のように、作業者の周囲に作業対象物、道具等の物体が存在し、作業者が物体を把持して作業を行う環境では、コンピュータが画像に写っている作業者と物体とを区別することは困難である。このため、手の３次元位置から作業者の動作を認識することが難しくなる。
【０００８】
なお、かかる問題は、工場において作業者が作業対象物又は道具を把持している場合に限らず、別の環境において人が物体を把持している場合においても生ずるものである。
【０００９】
１つの側面において、本発明は、物体を把持する手の距離画像から手の位置を精度良く特定することを目的とする。
【課題を解決するための手段】
【００１０】
１つの案では、画像処理装置は、検出部、抽出部、及び特定部を含む。検出部は、距離画像から、手が写っている候補領域を検出する。抽出部は、候補領域を近似する複数の線分のうち隣接する２本の線分の間の角度に基づいて、候補領域を近似する複数の線分の中から、手領域を近似する線分を抽出する。特定部は、手領域を近似する線分を用いて、候補領域内における手の位置を特定する。
【発明の効果】
【００１１】
実施形態によれば、物体を把持する手の距離画像から手の位置を精度良く特定することができる。
【図面の簡単な説明】
【００１２】
【図１】３次元距離センサを示す図である。
【図２】画像処理装置の機能的構成図である。
【図３】画像処理のフローチャートである。
【図４】画像処理装置の第１の具体例を示す機能的構成図である。
【図５】撮像装置の視野範囲を示す図である。
【図６】画像処理の具体例を示すフローチャートである。
【図７】候補領域検出処理のフローチャートである。
【図８】距離画像及び背景距離画像を示す図である。
【図９】二値化された差分画像を示す図である。
【図１０】手位置検出処理のフローチャートである。
【図１１】線分検出処理のフローチャートである。
【図１２】線分情報を示す図である。
【図１３】パラメタ計算処理のフローチャートである。
【図１４】折れ曲がり判定処理のフローチャートである。
【図１５】折れ曲がり判定処理の対象となる４本の線分を示す図である。
【図１６】長さ判定処理のフローチャートである。
【図１７】長さ判定処理の対象となる４本の線分を示す図である。
【図１８】長さ判定処理の対象となる３本の線分を示す図である。
【図１９】法線判定処理の対象となる線分を示す図である。
【図２０】位置特定処理のフローチャートである。
【図２１】最大内接円を示す図である。
【図２２】画像処理装置の第２の具体例を示す機能的構成図である。
【図２３】上肢の位置を求める場合の撮像装置の視野範囲を示す図である。
【図２４】上肢の位置を求める画像処理の具体例を示すフローチャートである。
【図２５】上肢の位置を求める場合の距離画像及び背景距離画像を示す図である。
【図２６】体領域検出処理のフローチャートである。
【図２７】３次元方向判定処理を含む手位置検出処理のフローチャートである。
【図２８】３次元方向判定処理のフローチャートである。
【図２９】周辺領域を示す図である。
【図３０】第１主成分のベクトルを示す図である。
【図３１】上肢位置検出処理のフローチャートである。
【図３２】手首の位置を示す図である。
【図３３】画像処理システムの機能的構成図である。
【図３４】情報処理装置の構成図である。
【発明を実施するための形態】
【００１３】
以下、図面を参照しながら、実施形態を詳細に説明する。
図１は、組立ラインに設置された３次元距離センサの例を示している。作業者１０１は、作業台１０２上で道具、部品等の物体１０３を把持しながら、製品の組立作業を行う。作業台１０２の上方に設置された３次元距離センサ１１１の視野範囲１１２には、作業者１０１の手が含まれており、３次元距離センサ１１１は、作業中の手が写った距離画像を取得することができる。
【００１４】
しかし、作業者１０１と作業台１０２又は物体１０３が近接していたり、作業者１０１が物体１０３を把持していたりすると、距離画像に写った手の距離値と物体１０３の距離値との差分が小さくなる。このため、距離値をもとに前景と背景とを分離する方法では、手と物体１０３とを分離することが困難である。また、撮影した距離画像と背景のみの背景距離画像との差分に基づいて手領域を検出する場合であっても、手と物体１０３の両方が背景差分として検出されるため、両者を分離することは困難である。
【００１５】
例えば、特許文献１に開示された技術では、機械学習を用いたトラッキングによって、ユーザの身体部位の骨格が認識され、パッシブ方式又はアクティブ方式のトラッキングによって、ユーザが把持している道具が認識される。パッシブ方式のトラッキングでは、赤外線回帰反射型マーカが道具に装着されており、カメラ等の外部デバイスによってマーカを検出することで、道具が認識される。一方、アクティブ方式のトラッキングでは、３次元位置センサ、加速度センサ等が道具に内蔵されており、それらのセンサが道具の位置をトラッキングシステムに通知する。
【００１６】
しかし、この技術では、マーカ又はセンサが装着されていない未知の物体を用いた作業において、その物体と手との距離が近い場合には、物体及び手の位置を正しく認識することが難しい。また、機械学習を用いて先に骨格を認識する場合、物体を把持した状態を事前に学習しておくことが望ましいが、未知の形状及び未知のサイズのすべての物体について、その物体を把持した状態を事前に学習しておくことは現実的ではない。
【００１７】
図２は、画像処理装置の機能的構成例を示している。図２の画像処理装置２０１は、検出部２１１、抽出部２１２、及び特定部２１３を含む。
【００１８】
図３は、図２の画像処理装置２０１が行う画像処理の例を示すフローチャートである。まず、検出部２１１は、距離画像から、手が写っている候補領域を検出する（ステップ３０１）。次に、抽出部２１２は、候補領域を近似する複数の線分のうち隣接する２本の線分の間の角度に基づいて、候補領域を近似する複数の線分の中から、手領域を近似する線分を抽出する（ステップ３０２）。そして、特定部２１３は、手領域を近似する線分を用いて、候補領域内における手の位置を特定する（ステップ３０３）。
【００１９】
このような画像処理装置２０１によれば、物体を把持する手の距離画像から手の位置を精度良く特定することができる。
【００２０】
図４は、図２の画像処理装置２０１の第１の具体例を示している。図４の画像処理装置２０１は、検出部２１１、抽出部２１２、特定部２１３、出力部４１１、及び記憶部４１２を含む。抽出部２１２は、線分検出部４２１及び判定部４２２を含む。撮像装置４０１は、３次元距離センサの一例であり、撮像装置４０１から被写体までの距離を表す画素値を含む距離画像４３２を撮影して、画像処理装置２０１へ出力する。撮像装置４０１としては、例えば、赤外線カメラを用いることができる。
【００２１】
図５は、撮像装置４０１の視野範囲の例を示している。図５の撮像装置４０１は、作業台１０２の上方に設置されており、その視野範囲５０１には、作業台１０２、作業者１０１の左手５０２及び右手５０３、及び右手５０３が把持している物体１０３が含まれている。したがって、撮像装置４０１が撮影する距離画像４３２には、作業台１０２、左手５０２、右手５０３、及び物体１０３が写っている。
【００２２】
記憶部４１２は、背景距離画像４３１及び距離画像４３２を記憶する。背景距離画像４３１は、視野範囲５０１内に左手５０２、右手５０３、及び物体１０３が含まれない状態で、事前に撮影された距離画像である。
【００２３】
検出部２１１は、背景距離画像４３１を用いて距離画像４３２から候補領域を検出し、検出した候補領域を示す領域情報４３３を記憶部４１２に格納する。候補領域は、作業者１０１の左手５０２又は右手５０３のうち、少なくとも一方の手が写っていると推定される領域である。例えば、距離画像４３２の端部に接する領域が、候補領域として検出される。
【００２４】
線分検出部４２１は、領域情報４３３が示す候補領域を細線化することで曲線を求め、その曲線を近似する、連結した複数の線分を、候補領域を近似する複数の線分として求める。そして、線分検出部４２１は、それらの線分を示す線分情報４３４を記憶部４１２に格納する。
【００２５】
判定部４２２は、線分情報４３４が示す複数の線分に含まれる、隣接する２本の線分の組み合わせ毎に線分間の角度を求めるとともに、各線分に対応する３次元空間内の線分の長さを求める。そして、判定部４２２は、求めた角度及び長さを用いて各線分が手領域に対応するか否かを判定し、線分情報４３４が示す複数の線分の中から、手領域を近似する線分を抽出する。
【００２６】
このとき、判定部４２２は、２本の線分の間の角度が閾値θminよりも小さい場合、距離画像４３２の端部までの距離がそれらの線分よりも遠い別の線分を、手領域を近似する線分の候補から除外する。θminは、手首又は肘の関節の折れ曲がり角度の下限値を表す閾値であってもよい。
【００２７】
また、判定部４２２は、２本の線分の間の角度が閾値θminよりも大きく、閾値θmaxよりも小さい場合、それらの線分のうち、距離画像４３２の端部までの距離が遠い方の線分を、手領域を近似する線分の候補から除外するか否かを判定する。この判定には、距離画像４３２の端部までの距離が近い方の線分に対応する、３次元空間内の線分の長さが用いられる。
【００２８】
次に、判定部４２２は、残された線分のうち、距離画像４３２の端部までの距離が最も遠い線分上の複数の点それぞれから候補領域の輪郭までの距離に基づいて、その線分から手領域を近似する部分を抽出する。そして、判定部４２２は、抽出した部分を示す手領域線分情報４３５を記憶部４１２に格納する。
【００２９】
特定部２１３は、領域情報４３３が示す候補領域の輪郭と、手領域線分情報４３５が示す線分の部分とを用いて、候補領域内における手の位置を特定し、特定した位置を示す位置情報４３６を記憶部４１２に格納する。出力部４１１は、位置情報４３６に基づく認識結果を出力する。
【００３０】
出力部４１１は、認識結果を画面上に表示する表示部であってもよく、認識結果を別の画像処理装置へ送信する送信部であってもよい。認識結果は、手の３次元位置の変化を示す軌跡であってもよく、手の軌跡から推定される作業者の動作を示す情報であってもよい。
【００３１】
図４の画像処理装置２０１によれば、距離画像４３２から検出した候補領域を近似する線分の中から、線分間の角度及び３次元空間内における線分の長さに基づいて、物体１０３に対応する線分を除外することができる。そして、残された線分のうち、距離画像４３２の端部までの距離が最も遠い線分を含む領域内で手の位置を特定することにより、物体１０３が未知の物体であっても、右手５０３の位置を精度良く特定することができる。したがって、未知の物体に近接している手の位置の認識精度が向上し、作業者の動作の認識精度も向上する。
【００３２】
図６は、図４の画像処理装置２０１が行う画像処理の具体例を示すフローチャートである。まず、検出部２１１は、候補領域検出処理を行い（ステップ６０１）、次に、抽出部２１２及び特定部２１３は、手位置検出処理を行う（ステップ６０２）。
【００３３】
図７は、図６のステップ６０１における候補領域検出処理の例を示すフローチャートである。まず、検出部２１１は、距離画像４３２の各画素の画素値（距離値）から背景距離画像４３１の各画素の画素値を減算して、差分画像を生成し、生成した差分画像を二値化する（ステップ７０１）。
【００３４】
図８は、距離画像４３２及び背景距離画像４３１の例を示している。図８（ａ）は、距離画像４３２の例を示しており、図８（ｂ）は、背景距離画像４３１の例を示している。距離画像４３２及び背景距離画像４３１の画素値は、撮像装置４０１から被写体までの距離を表すため、被写体が撮像装置４０１に近いほど小さくなり、被写体が撮像装置４０１から遠いほど大きくなる。この場合、距離画像４３２と背景距離画像４３１に共通する背景の画素値の差分は０に近くなるが、背景よりも撮像装置４０１に近い前景の画素値の差分は負値になる。
【００３５】
そこで、検出部２１１は、負の所定値を閾値Ｔ１として用いて、画素値の差分をＴ１と比較し、差分がＴ１未満である場合、差分画像の画素値を２５５（白）に設定し、差分がＴ１以上である場合、差分画像の画素値を０（黒）に設定する。これにより、差分画像が二値化される。
【００３６】
図９は、二値化された差分画像の例を示している。図９（ａ）は、ステップ７０１において生成される二値画像の例を示している。差分画像を二値化すると、作業者の両手の画素値だけでなく、手に近接している物体の画素値も白に設定される。
【００３７】
次に、検出部２１１は、二値画像の各画素に対してオープニング及びクロージングを行う（ステップ７０２）。まず、オープニングを行うことで白画素が減少し、白の小領域が除去される。その後、クロージングを行うことで、オープニングによって生成された黒の孤立点を白に変更することができる。これにより、図９（ａ）の二値画像から図９（ｂ）の二値画像が生成される。
【００３８】
次に、検出部２１１は、各白画素を注目画素として選択し、注目画素の距離画像４３２における画素値と、注目画素の上下左右に隣接する白画素の距離画像４３２における画素値との差分を求める。そして、検出部２１１は、差分の絶対値の最大値を所定の閾値Ｔ２と比較し、最大値がＴ２以上である場合、注目画素を白画素から黒画素に変更する（ステップ７０３）。これにより、図９（ｂ）の二値画像から図９（ｃ）の二値画像が生成される。
【００３９】
次に、検出部２１１は、輪郭検出処理を行って複数の白領域を検出し、検出した白領域の中から、次の条件を満たす白領域を候補領域として選択する（ステップ７０４）。
（１）白領域が二値画像の端部に接している。
（２）白領域の面積が所定値以上である。
（３）面積が大きい方から最大２個の白領域である。
【００４０】
例えば、図８（ａ）に示した距離画像４３２の場合、画像の下端（体側）から上端に向かって作業者の腕が伸びているため、二値画像の下端に接している白領域が候補領域として選択される。この場合、図９（ｃ）の二値画像から図９（ｄ）に示す１個の白領域が選択される。
【００４１】
次に、検出部２１１は、選択した白領域の輪郭を平滑化する（ステップ７０５）。ステップ７０３において、作業者が着ている服のしわ等の影響により、白領域の輪郭に凹凸が発生することがある。そこで、ステップ７０５の処理を行うことで、このような凹凸を平滑化することができる。例えば、平滑化処理として、クロージングを用いてもよい。平滑化処理によって、図９（ｄ）の二値画像から図９（ｅ）の二値画像が生成される。
【００４２】
次に、検出部２１１は、白領域が二値画像の下端に２箇所で接しており、下端と接している輪郭の画素数が所定値以上である場合、その白領域を、二値画像の下端に１箇所のみで接する２個の白領域に分割する（ステップ７０６）。そして、検出部２１１は、分割によって生成された白領域を示す領域情報４３３を生成する。
【００４３】
例えば、二値画像の上端から下端に向かってｙ軸を設定し、左端から右端に向かってｘ軸を設定した場合、二値画像の下端に近づくほどｙ座標の値が増加する。この場合、検出部２１１は、二値画像の輪郭のうち、白領域と接している２箇所の輪郭部分で挟まれた輪郭部分を求め、求めた輪郭部分の画素のうち、最上部に位置する画素（ｙ座標が最小の画素）のｘ座標ｘ１を求める。そして、検出部２１１は、白領域内でｘ座標がｘ１であるすべての白画素を黒画素に変更することで、その白領域を２個の白領域に分割することができる。
【００４４】
これにより、図９（ｅ）の二値画像から図９（ｆ）の二値画像が生成される。図９（ｆ）の二値画像において、分割により生成された２個の白領域は、左手を含む領域及び右手を含む領域にそれぞれ対応する。
【００４５】
そこで、検出部２１１は、２個の白領域に含まれる輪郭部分のｘ座標を比較し、ｘ座標が小さい方の白領域を左手の候補領域に決定し、ｘ座標が大きい方の白領域を右手の候補領域に決定する。この場合、検出部２１１は、検出された候補領域の個数を表す変数ｎＨａｎｄｓに２を設定する。
【００４６】
一方、ステップ７０４において、二値画像の下端に１箇所のみで接する２個の白領域を選択した場合、検出部２１１は、いずれの白領域も分割せず、ｎＨａｎｄｓに２を設定する。また、二値画像の下端に１箇所のみで接する１個の白領域を選択した場合、検出部２１１は、ｎＨａｎｄｓに１を設定する。
【００４７】
なお、距離画像４３２及び背景距離画像４３１の画素値として、被写体が撮像装置４０１に近いほど大きくなり、被写体が撮像装置４０１から遠いほど小さくなる値を用いることも可能である。この場合、ステップ７０１において、前景の画素値の差分は正値になる。そこで、検出部２１１は、正の所定値を閾値Ｔ１として用い、差分がＴ１よりも大きい場合、差分画像の画素値を２５５（白）に設定し、差分がＴ１以下である場合、差分画像の画素値を０（黒）に設定する。
【００４８】
作業台１０２上で複数の作業者が作業を行っており、撮像装置４０１の視野範囲にＮ個（Ｎは３以上の整数）の手が含まれる場合、ステップ７０４において、検出部２１１は、面積が大きい方から最大Ｎ個の白領域を選択してもよい。
【００４９】
図１０は、図６のステップ６０２における手位置検出処理の例を示すフローチャートである。まず、抽出部２１２は、領域情報４３３が示す候補領域のうち、ｉ番目の候補領域を示す制御変数ｉに０を設定し（ステップ１００１）、ｉとｎＨａｎｄｓとを比較する（ステップ１００２）。ｉがｎＨａｎｄｓ未満である場合（ステップ１００２，ＹＥＳ）、線分検出部４２１は、ｉ番目の候補領域に対する線分検出処理を行う（ステップ１００３）。
【００５０】
次に、判定部４２２は、パラメタ計算処理を行い（ステップ１００４）、折れ曲がり判定処理を行い（ステップ１００５）、長さ判定処理を行う（ステップ１００６）。そして、特定部２１３は、位置特定処理を行う（ステップ１００７）。
【００５１】
次に、抽出部２１２は、ｉを１だけインクリメントして（ステップ１００８）、ステップ１００２以降の処理を繰り返す。そして、ｉがｎＨａｎｄｓに達した場合（ステップ１００２，ＮＯ）、抽出部２１２は、処理を終了する。
【００５２】
図１１は、図１０のステップ１００３における線分検出処理の例を示すフローチャートである。まず、線分検出部４２１は、ｉ番目の候補領域を細線化する（ステップ１１０１）。例えば、線分検出部４２１は、非特許文献１に記載された田村の方式、Zhang-Suenの方式、ＮＷＧの方式等の細線化アルゴリズムを用いて、候補領域を細線化することができる。細線化の際に分岐が発生した場合、線分検出部４２１は、複数の枝のうち最も長い岐のみを残して、連続する点の配列から成る１本の曲線を生成する。
【００５３】
次に、線分検出部４２１は、連結した複数の線分で曲線を近似し、それらの線分を示す線分情報４３４を生成する（ステップ１１０２）。例えば、線分検出部４２１は、非特許文献２に記載されたRamer-Douglas-Peuckerアルゴリズムを用いて、曲線を複数の近似線分に変換し、曲線と近似線分とのずれを所定の許容誤差の範囲内に収めることができる。
【００５４】
このような線分検出処理によれば、候補領域が連結した線分の組み合わせに変換されるため、簡単な判定処理により、各線分と上肢、手、物体等との対応関係を決定することが可能になる。
【００５５】
図１２は、配列形式の線分情報４３４の例を示している。配列番号は、二値画像内における各線分の両端のうち一方の端点を示す識別情報であり、ｘ座標及びｙ座標は、二値画像と距離画像４３２に共通する、端点の座標（ｘ，ｙ）を表す。配列番号０に対応する点は、候補領域の下端に位置し、配列番号が増加するに従って、対応する点は下端から遠ざかっていく。距離値Ｚは、距離画像４３２の座標（ｘ，ｙ）に対応する画素値を表す。
【００５６】
図１２の線分情報４３４は、連結したｎ本の線分を表しており、ｊ番目（ｊ＝０〜ｎ−１）の線分の両端は、配列番号ｊに対応する点と配列番号ｊ＋１に対応する点の２点である。ｊ番目の線分とｊ＋１番目の線分は隣接しており、配列番号ｊ＋１に対応する点で連結している。この場合、線分検出部４２１は、端点の個数を表す変数ｎＰｔｓにｎ＋１を設定する。
【００５７】
図１３は、図１０のステップ１００４におけるパラメタ計算処理の例を示すフローチャートである。まず、判定部４２２は、線分情報４３４の配列番号を表す制御変数ｊに０を設定し（ステップ１３０１）、ｊとｎＰｔｓ−１とを比較する（ステップ１３０２）。ｊがｎＰｔｓ−１未満である場合（ステップ１３０２，ＹＥＳ）、判定部４２２は、配列番号ｊ及び配列番号ｊ＋１に対応する２点を両端とするｊ番目の線分の３次元空間における長さｌｅｎjを計算する（ステップ１３０３）。
【００５８】
例えば、判定部４２２は、配列番号ｊ及び配列番号ｊ＋１に対応する２点の座標（ｘ，ｙ）を用いて、ピンホールカメラモデルにより長さｌｅｎjを求めることができる。ピンホールカメラモデルを用いた場合、二値画像内における点（ｘ１，ｙ１）と点（ｘ２，ｙ２）との間の線分に対応する、３次元空間における線分の長さｌｅｎ１は、次式により計算される。
【００５９】
Ｘ１＝（Ｚ１×（ｘ１−ｃｘ））／ｆｘ      （１）
Ｙ１＝（Ｚ１×（ｙ１−ｃｙ））／ｆｙ      （２）
Ｘ２＝（Ｚ２×（ｘ２−ｃｘ））／ｆｘ      （３）
Ｙ２＝（Ｚ２×（ｙ２−ｃｙ））／ｆｙ      （４）
ｌｅｎ１＝（（Ｘ１−Ｘ２）2＋（Ｙ１−Ｙ２）2＋（Ｚ１−Ｚ２）2）1/2      （５）
【００６０】
Ｚ１及びＺ２は、それぞれ、点（ｘ１，ｙ１）及び点（ｘ２，ｙ２）の距離値Ｚを表し、（ｃｘ，ｃｙ）は、二値画像内における主点の座標を表す。例えば、二値画像の中心が主点として用いられる。ｆｘ及びｆｙは、それぞれ、ｘ軸方向及びｙ軸方向のピクセル単位で表される焦点距離である。３次元空間の座標（Ｘ，Ｙ，Ｚ）を表す座標系の原点は、撮像装置４０１の設置位置であってもよい。
【００６１】
次に、判定部４２２は、ｊとｎＰｔｓ−２とを比較する（ステップ１３０４）。ｊがｎＰｔｓ−２未満である場合（ステップ１３０４，ＹＥＳ）、判定部４２２は、ｊ番目の線分と、配列番号ｊ＋１及び配列番号ｊ＋２に対応する２点を両端とするｊ＋１番目の線分との間の角度θjを計算する（ステップ１３０５）。
【００６２】
例えば、判定部４２２は、配列番号ｊ、配列番号ｊ＋１、及び配列番号ｊ＋２に対応する３点の座標（ｘ，ｙ）を用いて、非特許文献３に記載された内積の計算により、角度θjを求めることができる。
【００６３】
次に、判定部４２２は、ｊを１だけインクリメントして（ステップ１３０６）、ステップ１３０２以降の処理を繰り返す。そして、ｊがｎＰｔｓ−２に達した場合（ステップ１３０４，ＮＯ）、判定部４２２は、ステップ１３０５の処理をスキップして、ステップ１３０６以降の処理を繰り返す。次に、ｊがｎＰｔｓ−１に達した場合（ステップ１３０２，ＮＯ）、判定部４２２は、処理を終了する。
【００６４】
図１４は、図１０のステップ１００５における折れ曲がり判定処理の例を示すフローチャートである。折れ曲がり判定処理では、線分間の角度θjに対する判定結果に基づいて、手よりも先に存在すると推定される線分が除外される。
【００６５】
人体における関節の配置から、上腕から手までの間に存在する折れ曲がり箇所は、肘及び手首の２箇所である。したがって、腕及び手が写っている候補領域の下端から手までの間における折れ曲がりの個数の最大値は２個であり、３番目以降の折れ曲がりは、指による折れ曲がりか、又は手以外の物体による折れ曲がりであると推定される。また、折れ曲がりの個数が２個以下の場合であっても、角度θjが肘又は手首の可動角度よりも小さい場合は、指又は物体による折れ曲がりであると推定される。
【００６６】
まず、判定部４２２は、制御変数ｊに０を設定し、折れ曲がりの個数を表す変数Ｎｂｅｎｄに０を設定して（ステップ１４０１）、ｊとｎＰｔｓ−２とを比較する（ステップ１４０２）。ｊがｎＰｔｓ−２未満である場合（ステップ１４０２，ＹＥＳ）、判定部４２２は、θjとθminとを比較する（ステップ１４０３）。例えば、θminは、非特許文献４に記載された人体の各関節の可動角度のうち、肘又は手首の可動角度に基づいて決定することができる。
【００６７】
θjがθmin以上である場合（ステップ１４０３，ＹＥＳ）、判定部４２２は、θjとθmaxとを比較する（ステップ１４０４）。θmaxは、折れ曲がりなしと判定するための閾値であり、θminよりも大きく、１８０°よりも小さな値に設定される。例えば、θmaxは、１５０°〜１７０°の範囲の角度であってもよい。
【００６８】
θjがθmax未満である場合（ステップ１４０４，ＮＯ）、判定部４２２は、Ｎｂｅｎｄを１だけインクリメントして（ステップ１４０５）、Ｎｂｅｎｄと２とを比較する（ステップ１４０６）。Ｎｂｅｎｄが２以下である場合（ステップ１４０６，ＮＯ）、判定部４２２は、ｊを１だけインクリメントして（ステップ１４０８）、ステップ１４０２以降の処理を繰り返す。
【００６９】
そして、Ｎｂｅｎｄが２を超えた場合（ステップ１４０６，ＹＥＳ）、判定部４２２は、線分情報４３４から配列番号ｊ＋２以降の点を削除して、ｎＰｔｓをｎ＋１からｊ＋２に変更する（ステップ１４０７）。これにより、指又は物体に対応する線分が線分情報４３４から削除される。
【００７０】
θjがθmin未満である場合（ステップ１４０３，ＮＯ）、判定部４２２は、ステップ１４０７の処理を行う。これにより、θjが肘又は手首の可動角度よりも小さい場合に、指又は物体に対応する線分が線分情報４３４から削除される。
【００７１】
θjがθmax以上である場合（ステップ１４０４，ＹＥＳ）、判定部４２２は、配列番号ｊ＋１の点が折れ曲がりに該当しないと判定し、ステップ１４０５及びステップ１４０６の処理をスキップして、ステップ１４０８以降の処理を繰り返す。そして、ｊがｎＰｔｓ−２に達した場合（ステップ１４０２，ＮＯ）、判定部４２２は、処理を終了する。
【００７２】
このような折れ曲がり判定処理によれば、線分情報４３４が示す線分の本数を削減して、手領域を近似する線分の候補を絞り込むことができる。
【００７３】
図１５は、折れ曲がり判定処理の対象となる４本の線分の例を示している。ｐｔｓ［ｊ］（ｊ＝０〜４）は、配列番号ｊの点を表し、θj（ｊ＝０〜２）は、ｐｔｓ［ｊ］、ｐｔｓ［ｊ＋１］、及びｐｔｓ［ｊ＋２］の３点から計算された線分間の角度を表す。
【００７４】
ｐｔｓ［０］及びｐｔｓ［１］を両端とする線分は上腕に対応し、ｐｔｓ［１］及びｐｔｓ［２］を両端とする線分は前腕に対応し、ｐｔｓ［１］は肘に対応する。また、ｐｔｓ［２］及びｐｔｓ［３］を両端とする線分は手に対応し、ｐｔｓ［２］は手首に対応する。一方、ｐｔｓ［３］及びｐｔｓ［４］を両端とする線分は、手が把持している物体に対応し、ｐｔｓ［３］は指の関節に対応する。
【００７５】
この場合、ｊ＝２のときにＮｂｅｎｄ＝３となり、Ｎｂｅｎｄが２を超えるため、線分情報４３４からｐｔｓ［４］が削除され、ｎＰｔｓが５から４に変更される。これにより、物体に対応する線分が削除される。
【００７６】
図１６は、図１０のステップ１００６における長さ判定処理の例を示すフローチャートである。長さ判定処理では、線分間の角度θj及び線分の長さｌｅｎjに対する判定結果に基づいて、手よりも先に存在すると推定される線分が除外される。
【００７７】
まず、判定部４２２は、制御変数ｊに０を設定し、３次元空間における長さを表す変数ｌｅｎに０を設定し、線分の本数を表す変数ｃｔｒに０を設定して（ステップ１６０１）、ｊとｎＰｔｓ−１とを比較する（ステップ１６０２）。ｊがｎＰｔｓ−１未満である場合（ステップ１６０２，ＹＥＳ）、判定部４２２は、ｌｅｎにｌｅｎjを加算して（ステップ１６０３）、θjとθmaxとを比較する（ステップ１６０４）。θjがθmax未満である場合（ステップ１６０４，ＮＯ）、判定部４２２は、ｌｅｎとｌｅｎmaxとを比較する（ステップ１６０５）。
【００７８】
ｌｅｎmaxは、前腕の長さの上限値であり、例えば、非特許文献４に記載された前腕の長さに基づいて決定することができる。また、作業者の身長が分かっている場合、レオナルド・ダ・ヴィンチのウィトルウィウス的人体図に基づいて、身長からｌｅｎmaxを決定してもよい。
【００７９】
ｌｅｎがｌｅｎmaxよりも大きい場合（ステップ１６０５，ＹＥＳ）、判定部４２２は、線分情報４３４から配列番号ｊ＋２以降の点を削除して、ｎＰｔｓをｊ＋２に変更する（ステップ１６０６）。これにより、指又は物体に対応する線分が線分情報４３４から削除される。そして、判定部４２２は、ステップ１６１３〜ステップ１６２０の法線判定処理を行う。
【００８０】
θjがθmax以上である場合（ステップ１６０４，ＹＥＳ）、判定部４２２は、配列番号ｊ＋１の点が折れ曲がりに該当しないと判定し、ｊを１だけインクリメントして（ステップ１６１１）、ステップ１６０２以降の処理を繰り返す。そして、ｊがｎＰｔｓ−１に達した場合（ステップ１６０２，ＮＯ）、判定部４２２は、ステップ１６１３〜ステップ１６２０の法線判定処理を行う。
【００８１】
ｌｅｎがｌｅｎmax以下である場合（ステップ１６０５，ＮＯ）、判定部４２２は、ｌｅｎとｌｅｎminとを比較する（ステップ１６０７）。ｌｅｎがｌｅｎmin以上である場合（ステップ１６０７，ＮＯ）、判定部４２２は、ｌｅｎに０を設定して（ステップ１６１２）、ステップ１６１１以降の処理を行う。
【００８２】
ｌｅｎがｌｅｎmin未満である場合（ステップ１６０７，ＹＥＳ）、判定部４２２は、ｃｔｒを１だけインクリメントして（ステップ１６０８）、ｃｔｒと２とを比較する（ステップ１６０９）。ｃｔｒが２以下である場合（ステップ１６０９，ＮＯ）、判定部４２２は、ステップ１６１２以降の処理を行う。
【００８３】
そして、ｃｔｒが２を超えた場合（ステップ１６０９，ＹＥＳ）、判定部４２２は、線分情報４３４から配列番号ｊ＋１以降の点を削除して、ｎＰｔｓをｊ＋１に変更する（ステップ１６１０）。これにより、指又は物体に対応する線分が線分情報４３４から削除される。そして、判定部４２２は、ステップ１６１３〜ステップ１６２０の法線判定処理を行う。
【００８４】
図１７は、長さ判定処理の対象となる４本の線分の例を示している。ｌｅｎj（ｊ＝０〜３）は、ｐｔｓ［ｊ］及びｐｔｓ［ｊ＋１］を両端とする線分の３次元空間における長さを表す。ｌｅｎ0は上腕の一部分の長さに対応し、ｌｅｎ1は前腕の長さに対応し、ｌｅｎ2は手の長さに対応し、ｌｅｎ3は手が把持している物体の長さに対応する。
【００８５】
まず、ｊ＝０のとき、ｌｅｎ＝ｌｅｎ0となる。しかし、θ0がθmax未満であり、ｌｅｎがｌｅｎmin以上かつｌｅｎmax以下であるため、ｌｅｎが０にリセットされる。次に、ｊ＝１のとき、ｌｅｎ＝ｌｅｎ1となる。このとき、θ1がθmax以上であるため、ｌｅｎはリセットされない。
【００８６】
そして、ｊ＝２のとき、ｌｅｎ＝ｌｅｎ1＋ｌｅｎ2となる。このとき、θ2がθmax未満であり、ｌｅｎがｌｅｎmaxを超えるため、線分情報４３４からｐｔｓ［４］が削除され、ｎＰｔｓが５から４に変更される。これにより、物体に対応する線分が削除される。
【００８７】
図１８は、長さ判定処理の対象となる３本の線分の例を示している。ｌｅｎ0は前腕の一部分の長さに対応し、ｌｅｎ1は手の長さに対応し、ｌｅｎ2は手が把持している物体の長さに対応する。
【００８８】
まず、ｊ＝０のとき、ｌｅｎ＝ｌｅｎ0となる。しかし、θ0がθmax未満であり、ｌｅｎがｌｅｎmin未満であるため、ｃｔｒが１に変更され、ｌｅｎが０にリセットされる。次に、ｊ＝１のとき、ｌｅｎ＝ｌｅｎ1となる。しかし、θ1がθmax未満であり、ｌｅｎがｌｅｎmin未満であるため、ｃｔｒが２に変更され、ｌｅｎが０にリセットされる。
【００８９】
そして、ｊ＝２のとき、ｌｅｎ＝ｌｅｎ2となる。しかし、θ2がθmax未満であり、ｌｅｎがｌｅｎmin未満であるため、ｃｔｒが３に変更される。このとき、ｃｔｒが２を超えるため、線分情報４３４からｐｔｓ［３］が削除され、ｎＰｔｓが４から３に変更される。これにより、物体に対応する線分が削除される。
【００９０】
ステップ１６１３〜ステップ１６２０の法線判定処理では、線分情報４３４に残された点の配列が示す線分のうち、候補領域の下端までの距離が最も遠い線分上の複数の点それぞれを通る直線と、候補領域の輪郭との２つの交点が求められる。そして、それらの交点の間の距離に対応する３次元空間内の距離に基づいて、その線分から手領域を近似する部分が抽出される。候補領域の下端までの距離が最も遠い線分は、ｐｔｓ［ｎＰｔｓ−２］及びｐｔｓ［ｎＰｔｓ−１］を両端とする線分であり、手に対応する線分であると推定される。
【００９１】
まず、判定部４２２は、ｐｔｓ［ｎＰｔｓ−２］及びｐｔｓ［ｎＰｔｓ−１］を両端とする線分Ｌを所定画素数の間隔で分割することで、線分Ｌ上のｍ個（ｍは２以上の整数）の点を求め、各点において線分Ｌと垂直に交わる法線を求める（ステップ１６１３）。そして、判定部４２２は、ｍ本の法線それぞれと候補領域の輪郭との交点を求める。線分Ｌは候補領域内に存在し、候補領域の輪郭は線分Ｌの両側に存在するため、各法線と輪郭との２つの交点が求められる。
【００９２】
次に、判定部４２２は、１本の法線を示す制御変数ｋに０を設定して（ステップ１６１４）、ｋとｍとを比較する（ステップ１６１５）。ｋ＝０に対応する法線は、線分Ｌの下端で線分Ｌと交わっており、ｋが増加するに従って、対応する法線は下端から遠ざかっていく。
【００９３】
ｋがｍ未満である場合（ステップ１６１５，ＹＥＳ）、判定部４２２は、ｋ番目の法線と輪郭との２つの交点の間の距離を求め、求めた距離に対応する３次元空間における長さｎ＿ｌｅｎkを計算する（ステップ１６１６）。そして、判定部４２２は、ｎ＿ｌｅｎkとｎ＿ｌｅｎmaxとを比較する（ステップ１６１７）。ｎ＿ｌｅｎmaxは、手の幅の上限値であり、例えば、非特許文献４に記載された手の幅に基づいて決定してもよく、ウィトルウィウス的人体図に基づいて決定してもよい。
【００９４】
ｎ＿ｌｅｎkがｎ＿ｌｅｎmax以下である場合（ステップ１６１７，ＮＯ）、判定部４２２は、ｎ＿ｌｅｎkとｎ＿ｌｅｎminとを比較する（ステップ１６１８）。ｎ＿ｌｅｎminは、手の幅の下限値であり、例えば、非特許文献４に記載された手の幅に基づいて決定してもよく、ウィトルウィウス的人体図に基づいて決定してもよい。
【００９５】
ｎ＿ｌｅｎkがｎ＿ｌｅｎmin以上である場合（ステップ１６１８，ＮＯ）、判定部４２２は、ｋを１だけインクリメントして（ステップ１６２０）、ステップ１６１５以降の処理を繰り返す。そして、ｋがｍに達した場合（ステップ１６１５，ＮＯ）、判定部４２２は、処理を終了する。
【００９６】
ｎ＿ｌｅｎkがｎ＿ｌｅｎmaxよりも大きい場合（ステップ１６１７，ＹＥＳ）、判定部４２２は、ｋ番目の法線と線分Ｌとの交点を求め、求めた交点をｐｔｓ［ｎＰｔｓ−１］´として記録する（ステップ１６１９）。これにより、線分Ｌ上の点ｐｔｓ［ｎＰｔｓ−２］から点ｐｔｓ［ｎＰｔｓ−１］´までの部分が、手領域を近似する部分として抽出される。そして、判定部４２２は、ｐｔｓ［ｎＰｔｓ−２］及びｐｔｓ［ｎＰｔｓ−１］´のｘ座標、ｙ座標、及び距離値Ｚを含む手領域線分情報４３５を生成する。
【００９７】
ｎ＿ｌｅｎkがｎ＿ｌｅｎmin未満である場合も（ステップ１６１８，ＹＥＳ）、判定部４２２は、ステップ１６１９の処理を行う。
【００９８】
図１９は、法線判定処理の対象となる線分の例を示している。この例では、ｐｔｓ［２］及びｐｔｓ［３］を両端とする線分が所定間隔で分割されて、５本の法線が生成されている。したがって、ｍ＝５である。
【００９９】
まず、ｋ＝０のとき、ｎ＿ｌｅｎ0がｎ＿ｌｅｎmin以上かつｎ＿ｌｅｎmax以下であるため、ｋがインクリメントされる。次に、ｋ＝１のとき、ｎ＿ｌｅｎ1がｎ＿ｌｅｎmin以上かつｎ＿ｌｅｎmax以下であるため、ｋがインクリメントされる。次に、ｋ＝２のとき、ｎ＿ｌｅｎ2がｎ＿ｌｅｎmin以上かつｎ＿ｌｅｎmax以下であるため、ｋがインクリメントされる。
【０１００】
そして、ｋ＝３のとき、ｎ＿ｌｅｎ3がｎ＿ｌｅｎmaxを超えるため、線分Ｌ上の交点ｐｔｓ［３］´が求められる。これにより、点ｐｔｓ［２］から点ｐｔｓ［３］´までの部分が、手領域を近似する部分として抽出される。
【０１０１】
図１６の長さ判定処理によれば、折れ曲がり判定処理によって削除されなかった、物体に対応する線分を削除することができ、手領域を近似する線分が特定される。そして、特定した線分上で、手領域を近似する部分を特定することができる。
【０１０２】
図２０は、図１０のステップ１００７における位置特定処理の例を示すフローチャートである。位置特定処理では、手領域線分情報４３５が示す線分に対応する手領域において、候補領域の輪郭に内接する最大内接円を求めることで、手のひらの中心位置が特定される。
【０１０３】
手のひらの幅は閉じた指の幅よりも広いため、手のひらの中心における内接円は、閉じた指の領域における内接円よりも大きくなると考えられる。また、手のひらの幅は手首の幅よりも広いため、手のひらの中心における内接円は、手首の領域における内接円よりも大きくなると考えられる。したがって、手領域における最大内接円の中心を、手のひらの中心とみなすことができる。
【０１０４】
まず、特定部２１３は、点ｐｔｓ［ｎＰｔｓ−２］と点ｐｔｓ［ｎＰｔｓ−１］´の間に走査範囲を設定し、走査範囲内の各走査点を中心として候補領域の輪郭に内接する内接円を求める（ステップ２００１）。そして、特定部２１３は、複数の走査点それぞれを中心とする内接円のうち、最大の内接円の中心の座標（ｘｐ，ｙｐ）を求める。走査範囲は、点ｐｔｓ［ｎＰｔｓ−２］及び点ｐｔｓ［ｎＰｔｓ−１］´を両端とする線分であってもよく、その線分をｘ方向及びｙ方向に所定画素数だけ広げた領域であってもよい。
【０１０５】
例えば、特定部２１３は、各走査点から候補領域の輪郭までの距離の最小値ｄを求め、最小値ｄが最大となる走査点の座標（ｘｍａｘ，ｙｍａｘ）を求める。そして、特定部２１３は、座標（ｘｍａｘ，ｙｍａｘ）を、最大内接円の中心の座標（ｘｐ，ｙｐ）として記録する。この場合、走査点（ｘｍａｘ，ｙｍａｘ）における距離の最小値ｄが、最大内接円の半径となる。
【０１０６】
図２１は、最大内接円の例を示している。この例では、点ｐｔｓ［ｎＰｔｓ−２］及び点ｐｔｓ［ｎＰｔｓ−１］´を両端とする線分２１０１が走査範囲に設定され、線分２１０１上の点２１０２を中心とする最大内接円２１０３が求められる。
【０１０７】
次に、特定部２１３は、最大内接円の中心に対応する３次元空間内の点を求め、求めた点の位置を示す位置情報４３６を生成する（ステップ２００２）。例えば、特定部２１３は、最大内接円の中心の座標（ｘｐ，ｙｐ）及び距離値Ｚｐを用いて、ピンホールカメラモデルにより３次元空間内の点の座標（Ｘｐ，Ｙｐ，Ｚｐ）を求めることができる。この場合、Ｘｐ及びＹｐは、次式により計算される。
【０１０８】
Ｘｐ＝（Ｚｐ×（ｘｐ−ｃｘ））／ｆｘ      （１１）
Ｙｐ＝（Ｚｐ×（ｙｐ−ｃｙ））／ｆｙ      （１２）
【０１０９】
図２２は、図２の画像処理装置２０１の第２の具体例を示している。図２２の画像処理装置２０１は、図４の画像処理装置２０１に検出部２２０１及び上肢検出部２２０２を追加した構成を有し、距離画像４３２から手の位置及び上肢の位置を求める。
【０１１０】
図２３は、図２２の撮像装置４０１の視野範囲の例を示している。図２３の撮像装置４０１は、作業台１０２の上方に設置されており、その視野範囲２３０１には、作業台１０２、作業者１０１の左手５０２及び右手５０３を含む上半身２３０２、及び右手５０３が把持している物体２３０３が含まれている。したがって、撮像装置４０１が撮影する距離画像４３２には、作業台１０２、上半身２３０２、及び物体２３０３が写っている。
【０１１１】
ＸＷ軸、ＹＷ軸、及びＺＷ軸は世界座標系を表し、その原点Ｏは作業場の床面に設けられている。ＸＷ軸は、作業台１０２の長辺と平行に設けられ、作業者１０１の左肩から右肩へ向かう方向を表す。ＹＷ軸は、作業台１０２の短辺と平行に設けられ、作業者１０１の正面から背面へ向かう方向を表す。ＺＷ軸は、床面に垂直に設けられ、床面から作業者１０１の頭頂へ向かう方向を表す。
【０１１２】
検出部２２０１は、背景距離画像４３１を用いて距離画像４３２から体領域を検出し、検出した体領域を示す領域情報２２１１を記憶部４１２に格納する。体領域は、作業者１０１の上半身２３０２が写っていると推定される領域である。
【０１１３】
上肢検出部２２０２は、距離画像４３２、領域情報２２１１、及び手のひらの中心位置を用いて、手首、肘、又は肩を含む上肢の位置を特定し、特定した位置を示す位置情報２２１２を記憶部４１２に格納する。出力部４１１は、位置情報４３６及び位置情報２２１２に基づく認識結果を出力する。認識結果は、手及び上肢の３次元位置の変化を示す軌跡であってもよく、手及び上肢の軌跡から推定される作業者の動作を示す情報であってもよい。
【０１１４】
図２２の画像処理装置２０１によれば、手の動きだけでなく上肢の動きも考慮して、作業者の動作を認識することができ、作業者の動作の認識精度がさらに向上する。
【０１１５】
図２４は、図２２の画像処理装置２０１が行う画像処理の具体例を示すフローチャートである。この画像処理では、距離画像４３２が手検出領域及び体検出領域の２つの領域に分割される。
【０１１６】
図２５は、図２３の視野範囲２３０１を撮影した距離画像４３２及び背景距離画像４３１の例を示している。図２５（ａ）は、距離画像４３２の例を示しており、図２５（ｂ）は、背景距離画像４３１の例を示している。距離画像４３２は、手検出領域２５０１及び体検出領域２５０２に分割されており、背景距離画像４３１も同様に２つの領域に分割されている。
【０１１７】
まず、検出部２２０１は、距離画像４３２の体検出領域を用いて体領域検出処理を行い（ステップ２４０１）、検出部２１１は、距離画像４３２の手検出領域を用いて候補領域検出処理を行う（ステップ２４０２）。次に、抽出部２１２及び特定部２１３は、手位置検出処理を行い（ステップ２４０３）、上肢検出部２２０２は、上肢位置検出処理を行う（ステップ２４０４）。
【０１１８】
図２６は、図２４のステップ２４０１における体領域検出処理の例を示すフローチャートである。まず、検出部２２０１は、距離画像４３２の体検出領域における各画素の画素値から、背景距離画像４３１の体検出領域における各画素の画素値を減算して、差分画像を生成し、生成した差分画像を二値化する（ステップ２６０１）。
【０１１９】
次に、検出部２２０１は、二値画像の各画素に対してオープニング及びクロージングを行う（ステップ２６０２）。そして、検出部２２０１は、二値画像に含まれる白領域のうち、最大の面積を有する白領域を体領域として抽出し（ステップ２６０３）、その体領域の重心を求める（ステップ２６０４）。例えば、検出部２２０１は、体領域に含まれる複数の画素それぞれのｘ座標及びｙ座標の平均値を計算することで、体領域の重心の座標を求めることができる。
【０１２０】
次に、検出部２２０１は、体領域に写っている頭の位置を求める（ステップ２５０５）。例えば、検出部２２０１は、体領域に含まれる複数の画素それぞれの距離値のヒストグラムを生成し、生成したヒストグラムから、閾値ＴＨＤ以下の距離値を有する画素の個数が所定数以上になるような閾値ＴＨＤを決定する。次に、検出部２２０１は、閾値ＴＨＤ以上の距離値を有する画素から成る領域のうち、最大の領域を頭領域として選択し、頭領域の重心の座標を頭の位置として求める。そして、検出部２２０１は、体領域及び頭領域の重心の座標を示す領域情報２２１１を生成する。
【０１２１】
図２４のステップ２４０２において、検出部２１１は、距離画像４３２及び背景距離画像４３１の手検出領域を用いて、図７と同様の候補領域検出処理を行う。
【０１２２】
図２７は、図２４のステップ２４０３における手位置検出処理の例を示すフローチャートである。図２７のステップ２７０１〜ステップ２７０６、ステップ２７０８、及びステップ２７０９の処理は、図１０のステップ１００１〜ステップ１００８の処理と同様である。判定部４２２は、長さ判定処理を行った後、３次元方向判定処理を行う（ステップ２７０７）。
【０１２３】
図２８は、図２７のステップ２７０７における３次元方向判定処理の例を示すフローチャートである。３次元方向判定処理では、各線分の３次元空間における方向と、その線分を含む領域に写っている被写体の３次元空間における方向とを比較した結果に基づいて、手よりも先に存在すると推定される線分が除外される。
【０１２４】
まず、判定部４２２は、制御変数ｊに０を設定して（ステップ２８０１）、ｊとｎＰｔｓ−１とを比較する（ステップ２８０２）。ｊがｎＰｔｓ−１未満である場合（ステップ２８０２，ＹＥＳ）、判定部４２２は、ｐｔｓ［ｊ］の３次元空間における座標（Ｘj，Ｙj，Ｚj）と、ｐｔｓ［ｊ＋１］の３次元空間における座標（Ｘj+1，Ｙj+1，Ｚj+1）とを求める（ステップ２８０３）。例えば、判定部４２２は、ピンホールカメラモデルにより（Ｘj，Ｙj，Ｚj）及び（Ｘj+1，Ｙj+1，Ｚj+1）を求めることができる。
【０１２５】
次に、判定部４２２は、（Ｘj，Ｙj，Ｚj）及び（Ｘj+1，Ｙj+1，Ｚj+1）を用いて、ｐｔｓ［ｊ］及びｐｔｓ［ｊ＋１］を両端とする線分Ｌjの３次元空間における方向を示す方向ベクトルＶjを求める（ステップ２８０４）。例えば、判定部４２２は、３次元空間において（Ｘj，Ｙj，Ｚj）から（Ｘj+1，Ｙj+1，Ｚj+1）へ向かうベクトルを、Ｖjとして求めることができる。判定部４２２は、線分Ｌj上の複数の点それぞれの３次元空間における座標を求め、それらの座標を結ぶ曲線を近似するベクトルを、Ｖjとして求めてもよい。
【０１２６】
次に、判定部４２２は、候補領域内で線分Ｌjの周辺領域を設定し、周辺領域内の複数の点それぞれの３次元空間における座標を求め、それらの座標に対する主成分分析を行う（ステップ２８０５）。そして、判定部４２２は、主成分分析の結果から第１主成分のベクトルＥＶjを求める（ステップ２８０６）。ＥＶjは、線分Ｌjを含む領域に写っている被写体の３次元空間における方向を示している。
【０１２７】
図２９は、ｊ＝３の場合の周辺領域の例を示している。この場合、線分Ｌ3は、ｐｔｓ［３］及びｐｔｓ［４］を両端とする線分である。判定部４２２は、例えば、ｐｔｓ［３］を通る法線とｐｔｓ［４］を通る法線を求め、それらの２本の法線と候補領域の輪郭によって囲まれた領域２９０１を、線分Ｌ3の周辺領域として設定することができる。
【０１２８】
次に、判定部４２２は、ＶjとＥＶjとの間の角度γjを求め（ステップ２８０７）、γjを閾値γthと比較する（ステップ２８０８）。γjがγth未満である場合（ステップ２８０８，ＮＯ）、判定部４２２は、ｊを１だけインクリメントして（ステップ２８１０）、ステップ２８０２以降の処理を繰り返す。そして、ｊがｎＰｔｓ−１に達した場合（ステップ２８０２，ＮＯ）、判定部４２２は、処理を終了する。
【０１２９】
γjがγthよりも大きい場合（ステップ２８０８，ＹＥＳ）、判定部４２２は、線分情報４３４から配列番号ｊ＋１以降の点を削除して、ｎＰｔｓをｊ＋１に変更する（ステップ２８０９）。これにより、指又は物体に対応する線分が線分情報４３４から削除される。
【０１３０】
このような３次元方向判定処理によれば、折れ曲がり判定処理及び長さ判定処理によっても削除されなかった、物体に対応する線分を削除することができる。
【０１３１】
図３０は、第１主成分のベクトルＥＶ0〜ＥＶ3の例を示している。ＥＶ0〜ＥＶ2は、線分Ｌ0〜Ｌ2それぞれの周辺領域に対する主成分分析により得られ、上腕、前腕、及び手の領域にそれぞれ対応している。この場合、ＥＶ0〜ＥＶ1それぞれの方向は、Ｌ0〜Ｌ2の方向ベクトルＶ0〜Ｖ2それぞれの方向に近くなる。
【０１３２】
一方、手が把持している物体３００１の領域に対応するＥＶ3の方向は、線分Ｌ3の方向ベクトルＶ3の方向と大きく異なるため、Ｖ3とＥＶ3との間の角度γ3がγthよりも大きくなる。したがって、線分情報４３４からｐｔｓ［４］が削除され、ｎＰｔｓが５から４に変更される。これにより、物体３００１に対応する線分が削除される。
【０１３３】
図３１は、図２４のステップ２４０４における上肢位置検出処理の例を示すフローチャートである。まず、上肢検出部２２０２は、領域情報２２１１が示す頭領域の重心の世界座標系における位置を求める（ステップ３１０１）。例えば、上肢検出部２２０２は、頭領域の重心の座標と距離値とを用いて、ピンホールカメラモデルにより３次元空間における座標を求めることができる。
【０１３４】
そして、上肢検出部２２０２は、求めた座標を、撮像装置４０１の外部パラメタに基づくＲＴ行列を用いて、図２３に示した世界座標系の座標（ＸＷＨ，ＹＷＨ，ＺＷＨ）に変換する。撮像装置４０１の外部パラメタは、床面から撮像装置４０１の設置位置までの高さと、撮像装置４０１の傾き角度とを含み、ＲＴ行列は、撮像装置４０１を原点とする３次元座標系と世界座標系との間の回転及び並進を表す。得られたＺＷＨは、床面から頭頂までの高さを表し、作業者のおおよその身長に対応する。
【０１３５】
次に、上肢検出部２２０２は、領域情報２２１１が示す体領域の重心の３次元空間における座標を求め、求めた座標をＲＴ行列を用いて世界座標系の座標（ＸＷＢ，ＹＷＢ，ＺＷＢ）に変換する（ステップ３１０２）。
【０１３６】
次に、上肢検出部２２０２は、ＺＷＨを身長として用いて、世界座標系における両肩のおおよその位置を求める（ステップ３１０３）。例えば、上肢検出部２２０２は、ウィトルウィウス的人体図に基づいて、身長に対する両肩の高さの比率と、身長に対する肩幅の比率とを決定し、ＺＷＨから左肩の高さ（ＺＷ座標）ＺＷＬＳ、右肩の高さＺＷＲＳ、及び肩幅ＳＷを求めることができる。そして、上肢検出部２２０２は、ＸＷＢ−ＳＷ／２を左肩の横位置（ＸＷ座標）ＸＷＬＳとして求め、ＸＷＢ＋ＳＷ／２を右肩の横位置ＸＷＲＳとして求め、ＹＷＢを左肩及び右肩のＹＷ座標に決定する。
【０１３７】
なお、上肢検出部２２０２は、ＸＷＢ及びＹＷＢの代わりに、ＸＷＨ及びＹＷＨを用いてもよい。
【０１３８】
次に、上肢検出部２２０２は、ｉ番目の候補領域を示す制御変数ｉに０を設定し（ステップ３１０４）、ｉとｎＨａｎｄｓとを比較する（ステップ３１０５）。ｉがｎＨａｎｄｓ未満である場合（ステップ３１０５，ＹＥＳ）、上肢検出部２２０２は、ｉ番目の候補領域において、特定部２１３が求めた手のひらの中心位置に基づいて、手首の位置を求める（ステップ３１０６）。そして、上肢検出部２２０２は、手首の位置の座標をＲＴ行列を用いて世界座標系の座標に変換する。
【０１３９】
例えば、上肢検出部２２０２は、線分情報４３４が示すｐｔｓ［０］〜ｐｔｓ［ｎＰｔｓ−１］のうち、手のひらの中心位置よりも候補領域の下端に近い側（体側）に存在し、手のひらの中心位置に最も近い点を、手首の位置に決定することができる。上肢検出部２２０２は、手のひらの中心位置から所定距離だけ離れた位置に存在する線分上の点を、手首の位置に決定してもよい。
【０１４０】
図３２は、手首の位置の例を示している。この例では、手のひらの中心位置３２０１よりも候補領域の下端に近い側に存在するｐｔｓ［０］〜ｐｔｓ［２］のうち、手のひらの中心位置３２０１に最も近いｐｔｓ［２］が、手首の位置に決定される。
【０１４１】
次に、上肢検出部２２０２は、ｉ番目の候補領域において、手首の位置に基づいて肘の位置を求め、肘の位置の座標をＲＴ行列を用いて世界座標系の座標に変換する（ステップ３１０７）。
【０１４２】
例えば、上肢検出部２２０２は、ウィトルウィウス的人体図に基づいて、身長に対する前腕の長さの比率を決定し、ＺＷＨから前腕の長さを求め、その長さを候補領域における画像上の前腕の長さに変換することができる。そして、上肢検出部２２０２は、手首の位置から候補領域の下端に近い側に向かって、画像上の前腕の長さだけ離れた点を求め、ｐｔｓ［０］〜ｐｔｓ［ｎＰｔｓ−１］のうち、求めた点から所定誤差の範囲内に存在する点を、肘の位置に決定する。例えば、図３２の例では、ｐｔｓ［１］が肘の位置に決定される。
【０１４３】
所定誤差の範囲内に線分情報４３４が示す点が存在しない場合、上肢検出部２２０２は、手首の位置を中心とし、画像上の前腕の長さを半径とする円と、線分情報４３４が示す線分との交点を求め、求めた交点を肘の位置に決定してもよい。距離画像４３２の手検出領域に肘が写っておらず、円と線分との交点が存在しない場合、上肢検出部２２０２は、手首の位置とｐｔｓ［０］とを結ぶ線分の延長線上で、手首の位置から画像上の前腕の長さだけ離れた点を、肘の位置に決定する。
【０１４４】
次に、上肢検出部２２０２は、世界座標系における肘の位置に基づいて、肩の位置を補正する（ステップ３１０８）。例えば、上肢検出部２２０２は、ウィトルウィウス的人体図に基づいて、身長に対する上腕の長さの比率を決定し、ＺＷＨから上腕の長さを求めることができる。そして、上肢検出部２２０２は、世界座標系における肘の座標と肩の座標との３次元距離ＵＡＬｅｎを求める。
【０１４５】
ＵＡＬｅｎが上腕の長さを超える場合、上肢検出部２２０２は、ＵＡＬｅｎが上腕の長さに一致するように、肘の座標と肩の座標とを結ぶ３次元直線上で、肩の位置を移動させる。一方、ＵＡＬｅｎが上腕の長さ以下である場合、上肢検出部２２０２は、肩の座標を補正しない。そして、上肢検出部２２０２は、世界座標系における手首、肘、及び肩の位置を示す位置情報２２１２を生成する。
【０１４６】
次に、上肢検出部２２０２は、ｉを１だけインクリメントして（ステップ３１０９）、ステップ３１０５以降の処理を繰り返す。そして、ｉがｎＨａｎｄｓに達した場合（ステップ３１０５，ＮＯ）、上肢検出部２２０２は、処理を終了する。
【０１４７】
ステップ３１０３、ステップ３１０７、及びステップ３１０８において、上肢検出部２２０２は、ＺＷＨの代わりに、事前に設定した所定値を身長として用いてもよい。
【０１４８】
図３３は、図４又は図２２の画像処理装置２０１を含む画像処理システムの機能的構成例を示している。図３３の画像処理システムは、画像処理装置２０１及び画像処理装置３３０１を含む。
【０１４９】
画像処理装置２０１内の送信部３３１１は、図４又は図２２の出力部４１１に対応し、位置情報４３６に基づく認識結果、又は位置情報４３６及び位置情報２２１２に基づく認識結果を、通信ネットワークを介して画像処理装置３３０１へ送信する。例えば、画像処理装置２０１は、複数の時間帯それぞれにおける複数の認識結果を生成し、それらの認識結果を時系列に画像処理装置３３０１へ送信する。
【０１５０】
画像処理装置３３０１は、受信部３３２１、表示部３３２２、及び記憶部３３２３を含む。受信部３３２１は、画像処理装置２０１から時系列に複数の認識結果を受信し、記憶部３３２３は、受信した複数の認識結果を複数の時間帯それぞれと対応付けて記憶する。そして、表示部３３２２は、記憶部３３２３が記憶する時系列の認識結果を画面上に表示する。
【０１５１】
画像処理装置２０１は、工場等の作業現場に設置されたサーバであってもよく、撮像装置４０１と通信ネットワークを介して通信する、クラウド上のサーバであってもよい。画像処理装置３３０１は、作業者の動作を監視する管理者のサーバ又は端末装置であってもよい。
【０１５２】
なお、図４又は図２２の画像処理装置２０１が有する機能は、通信ネットワークを介して接続された複数の装置に分散して実装することも可能である。例えば、検出部２１１、抽出部２１２、特定部２１３、検出部２２０１、及び上肢検出部２２０２を、それぞれ異なる装置に設けてもよい。
【０１５３】
図２、図４、及び図２２の画像処理装置２０１の構成は一例に過ぎず、画像処理装置２０１の用途又は条件に応じて一部の構成要素を省略又は変更してもよい。
【０１５４】
図３３の画像処理システムの構成は一例に過ぎず、画像処理システムの用途又は条件に応じて一部の構成要素を省略又は変更してもよい。
【０１５５】
図３、図６、図７、図１０、図１１、図１３、図１４、図１６、図２０、図２４、図２６〜図２８、及び図３１のフローチャートは一例に過ぎず、画像処理装置２０１の構成又は条件に応じて、一部の処理を省略又は変更してもよい。
【０１５６】
例えば、図７の候補領域検出処理において、処理を簡略化する場合は、ステップ７０２、ステップ７０３、及びステップ７０５の処理を省略することができる。ステップ７０４において、検出部２１１は、二値画像の上端、左端、又は右端に接している白領域を、候補領域として選択してもよい。図１０の手位置検出処理において、ステップ１００５の折れ曲がり判定処理又はステップ１００６の長さ判定処理のいずれか一方を省略してもよい。
【０１５７】
図１６の長さ判定処理において、処理を簡略化する場合は、ステップ１６１３〜ステップ１６２０の法線判定処理を省略することができる。図２０の位置特定処理において、特定部２１３は、最大内接円の中心の代わりに、手領域線分情報４３５が示す線分の中点等を、手のひらの中心位置に決定してもよい。
【０１５８】
図２６の体領域検出処理において、処理を簡略化する場合は、ステップ２６０２の処理を省略することができる。図２７の手位置検出処理において、ステップ２７０５の折れ曲がり判定処理又はステップ２７０６の長さ判定処理のいずれか一方を省略してもよい。図２８の３次元方向判定処理において、判定部４２２は、線分Ｌjを含む領域に写っている被写体の３次元空間における方向を示すベクトルを、主成分分析以外の方法で求めてもよい。
【０１５９】
図３１の上肢位置検出処理において、上肢検出部２２０２は、肩、手首、及び肘のすべての位置を求める必要はない。例えば、上肢検出部２２０２は、肩、手首、又は肘のいずれかの位置を示す位置情報２２１２を生成してもよい。
【０１６０】
図１の３次元距離センサの設置位置と図５及び図２３の撮像装置の設置位置は一例に過ぎず、３次元距離センサ又は撮像装置を、別の角度から作業者を撮影できる位置に設置してもよい。
【０１６１】
図８及び図２５の距離画像及び背景距離画像は一例に過ぎず、距離画像及び背景距離画像は、撮像装置の視野範囲に存在する被写体に応じて変化する。図２５の手検出領域及び体検出領域は一例に過ぎず、別の位置又は別の形状の手検出領域及び体検出領域を用いてもよい。
【０１６２】
図１２の線分情報と図１５、図１７〜図１９、及び図３２の線分は一例に過ぎず、線分情報及び線分は、撮影された距離画像に応じて変化する。図２１の最大内接円、図２９の周辺領域、及び図３０の第１主成分のベクトルは一例に過ぎず、最大内接円、周辺領域、及び第１主成分のベクトルは、撮影された距離画像に応じて変化する。別の形状の周辺領域を用いてもよい。
【０１６３】
図３４は、図２、図４、及び図２２の画像処理装置２０１として用いられる情報処理装置（コンピュータ）の構成例を示している。図３４の情報処理装置は、Central Processing Unit（ＣＰＵ）３４０１、メモリ３４０２、入力装置３４０３、出力装置３４０４、補助記憶装置３４０５、媒体駆動装置３４０６、及びネットワーク接続装置３４０７を備える。これらの構成要素はバス３４０８により互いに接続されている。撮像装置４０１は、バス３４０８に接続されていてもよい。
【０１６４】
メモリ３４０２は、例えば、Read Only Memory（ＲＯＭ）、Random Access Memory（ＲＡＭ）、フラッシュメモリ等の半導体メモリであり、処理に用いられるプログラム及びデータを格納する。メモリ３４０２は、記憶部４１２として用いることができる。
【０１６５】
ＣＰＵ３４０１（プロセッサ）は、例えば、メモリ３４０２を利用してプログラムを実行することにより、検出部２１１、抽出部２１２、特定部２１３、線分検出部４２１、判定部４２２、検出部２２０１、及び上肢検出部２２０２として動作する。
【０１６６】
入力装置３４０３は、例えば、キーボード、ポインティングデバイス等であり、オペレータ又はユーザからの指示又は情報の入力に用いられる。出力装置３４０４は、例えば、表示装置、プリンタ、スピーカ等であり、オペレータ又はユーザへの問い合わせ又は処理結果の出力に用いられる。処理結果は、位置情報４３６に基づく認識結果、又は位置情報４３６及び位置情報２２１２に基づく認識結果であってもよい。出力装置３４０４は、出力部４１１として用いることができる。
【０１６７】
補助記憶装置３４０５は、例えば、磁気ディスク装置、光ディスク装置、光磁気ディスク装置、テープ装置等である。補助記憶装置３４０５は、フラッシュメモリ又はハードディスクドライブであってもよい。情報処理装置は、補助記憶装置３４０５にプログラム及びデータを格納しておき、それらをメモリ３４０２にロードして使用することができる。補助記憶装置３４０５は、記憶部４１２として用いることができる。
【０１６８】
媒体駆動装置３４０６は、可搬型記録媒体３４０９を駆動し、その記録内容にアクセスする。可搬型記録媒体３４０９は、メモリデバイス、フレキシブルディスク、光ディスク、光磁気ディスク等である。可搬型記録媒体３４０９は、Compact Disk Read Only Memory（ＣＤ−ＲＯＭ）、Digital Versatile Disk（ＤＶＤ）、Universal Serial Bus（ＵＳＢ）メモリ等であってもよい。オペレータ又はユーザは、この可搬型記録媒体３４０９にプログラム及びデータを格納しておき、それらをメモリ３４０２にロードして使用することができる。
【０１６９】
このように、処理に用いられるプログラム及びデータを格納するコンピュータ読み取り可能な記録媒体は、メモリ３４０２、補助記憶装置３４０５、又は可搬型記録媒体３４０９のような、物理的な（非一時的な）記録媒体である。
【０１７０】
ネットワーク接続装置３４０７は、Local Area Network、Wide Area Network等の通信ネットワークに接続され、通信に伴うデータ変換を行う通信インタフェースである。情報処理装置は、プログラム及びデータを外部の装置からネットワーク接続装置３４０７を介して受信し、それらをメモリ３４０２にロードして使用することができる。ネットワーク接続装置３４０７は、出力部４１１又は送信部３３１１として用いることができる。
【０１７１】
なお、情報処理装置が図３４のすべての構成要素を含む必要はなく、用途又は条件に応じて一部の構成要素を省略することも可能である。例えば、オペレータ又はユーザからの指示又は情報を入力する必要がない場合は、入力装置３４０３を省略してもよい。可搬型記録媒体３４０９又は通信ネットワークを利用しない場合は、媒体駆動装置３４０６又はネットワーク接続装置３４０７を省略してもよい。
【０１７２】
図３４の情報処理装置は、図３３の画像処理装置３３０１としても用いることができる。この場合、ネットワーク接続装置３４０７は、受信部３３２１として用いられ、メモリ３４０２又は補助記憶装置３４０５は、記憶部３３２３として用いられ、出力装置３４０４は、表示部３３２２として用いられる。
【０１７３】
開示の実施形態とその利点について詳しく説明したが、当業者は、特許請求の範囲に明確に記載した本発明の範囲から逸脱することなく、様々な変更、追加、省略をすることができるであろう。
【０１７４】
図１乃至図３４を参照しながら説明した実施形態に関し、さらに以下の付記を開示する。
（付記１）
距離画像から、手が写っている候補領域を検出する検出部と、
前記候補領域を近似する複数の線分のうち隣接する２本の線分の間の角度に基づいて、前記複数の線分の中から手領域を近似する線分を抽出する抽出部と、
前記手領域を近似する線分を用いて、前記候補領域内における前記手の位置を特定する特定部と、
を備えることを特徴とする画像処理装置。
（付記２）
前記検出部は、前記距離画像の端部に接する領域を前記候補領域として検出し、前記抽出部は、前記角度が第１閾値よりも小さい場合、前記端部までの距離が前記２本の線分よりも遠い線分を、前記手領域を近似する線分の候補から除外し、残された線分のうち前記端部までの距離が最も遠い線分を、前記手領域を近似する線分として抽出することを特徴とする付記１記載の画像処理装置。
（付記３）
前記抽出部は、前記２本の線分のうち第１線分が前記端部に接しており、前記２本の線分のうち第２線分が第３線分に隣接しており、前記第３線分が第４線分に隣接しており、前記第１線分と前記第２線分の間の角度が、前記第１閾値と、前記第１閾値よりも大きな第２閾値との間の角度範囲に含まれ、前記第２線分と前記第３線分の間の角度が前記角度範囲に含まれ、前記第３線分と前記第４線分の間の角度が前記角度範囲に含まれる場合、前記手領域を近似する線分の候補から前記第４線分を除外することを特徴とする付記２記載の画像処理装置。
（付記４）
前記抽出部は、前記第１閾値よりも大きな第２閾値よりも前記角度が小さい場合、前記２本の線分のうち前記端部までの距離が近い方の線分に対応する、３次元空間内の線分の長さを用いて、前記２本の線分のうち前記端部までの距離が遠い方の線分を前記手領域を近似する線分の候補から除外するか否かを判定することを特徴とする付記２記載の画像処理装置。
（付記５）
前記抽出部は、前記端部までの距離が最も遠い線分上の複数の点それぞれを通る直線と前記候補領域の輪郭との２つの交点を求め、前記２つの交点の間の距離に対応する、前記３次元空間内の距離に基づいて、前記端部までの距離が最も遠い線分から前記手領域を近似する部分を抽出し、前記特定部は、前記手領域を近似する部分を用いて前記手の位置を特定することを特徴とする付記３又は４記載の画像処理装置。
（付記６）
前記抽出部は、前記端部までの距離が遠い方の線分の前記３次元空間における方向と、前記端部までの距離が遠い方の線分を含む領域に写っている被写体の前記３次元空間における方向とを求め、求めた２つの方向の間の角度が第３閾値よりも大きい場合、前記端部までの距離が遠い方の線分を前記手領域を近似する線分の候補から除外することを特徴とする付記３乃至５のいずれか１項に記載の画像処理装置。
（付記７）
前記抽出部は、前記候補領域を細線化することで曲線を求め、前記曲線を近似する複数の線分を、前記候補領域を近似する前記複数の線分として求めることを特徴とする付記１乃至６のいずれか１項に記載の画像処理装置。
（付記８）
前記距離画像と前記手の位置とを用いて、手首、肘、又は肩の位置を求める上肢検出部をさらに備えることを特徴とする付記１乃至７のいずれか１項に記載の画像処理装置。
（付記９）
前記第１閾値は、手首又は肘の関節の折れ曲がり角度の下限値を表すことを特徴とする付記２乃至８のいずれか１項に記載の画像処理装置。
（付記１０）
距離画像から、手が写っている候補領域を検出する検出部と、
前記候補領域を近似する複数の線分のうち隣接する２本の線分の間の角度に基づいて、前記複数の線分の中から手領域を近似する線分を抽出する抽出部と、
前記手領域を近似する線分を用いて、前記候補領域内における前記手の位置を特定する特定部と、
前記手の位置を示す位置情報を表示する表示部と、
を備えることを特徴とする画像処理システム。
（付記１１）
距離画像から、手が写っている候補領域を検出し、
前記候補領域を近似する複数の線分のうち隣接する２本の線分の間の角度に基づいて、前記複数の線分の中から手領域を近似する線分を抽出し、
前記手領域を近似する線分を用いて、前記候補領域内における前記手の位置を特定する、
処理をコンピュータに実行させるための画像処理プログラム。
（付記１２）
前記コンピュータは、前記距離画像の端部に接する領域を前記候補領域として検出し、前記角度が第１閾値よりも小さい場合、前記端部までの距離が前記２本の線分よりも遠い線分を、前記手領域を近似する線分の候補から除外し、残された線分のうち前記端部までの距離が最も遠い線分を、前記手領域を近似する線分として抽出することを特徴とする付記１１記載の画像処理プログラム。
（付記１３）
コンピュータが、
距離画像から、手が写っている候補領域を検出し、
前記候補領域を近似する複数の線分のうち隣接する２本の線分の間の角度に基づいて、前記複数の線分の中から手領域を近似する線分を抽出し、
前記手領域を近似する線分を用いて、前記候補領域内における前記手の位置を特定する、
ことを特徴とする画像処理方法。
（付記１４）
前記コンピュータは、前記距離画像の端部に接する領域を前記候補領域として検出し、前記角度が第１閾値よりも小さい場合、前記端部までの距離が前記２本の線分よりも遠い線分を、前記手領域を近似する線分の候補から除外し、残された線分のうち前記端部までの距離が最も遠い線分を、前記手領域を近似する線分として抽出することを特徴とする付記１３記載の画像処理方法。
【符号の説明】
【０１７５】
１０１  作業者
１０２  作業台
１０３、２３０３  物体
１１１  ３次元距離センサ
１１２、５０１、２３０１、３００１  視野範囲
２０１、３３０１  画像処理装置
２１１、２２０１  検出部
２１２  抽出部
２１３  特定部
４０１  撮像装置
４１１  出力部
４１２、３３２３  記憶部
４２１  線分検出部
４２２  判定部
４３１  背景距離画像
４３２  距離画像
４３３、２２１１  領域情報
４３４  線分情報
４３５  手領域線分情報
４３６、２２１２  位置情報
５０２  左手
５０３  右手
２１０１  線分
２１０２  点
２１０３  最大内接円
２２０２  上肢検出部
２３０２  上半身
２５０１  手検出領域
２５０２  体検出領域
２９０１  領域
３２０１  中心位置
３３１１  送信部
３３２１  受信部
３３２２  表示部
３４０１  ＣＰＵ
３４０２  メモリ
３４０３  入力装置
３４０４  出力装置
３４０５  補助記憶装置
３４０６  媒体駆動装置
３４０７  ネットワーク接続装置
３４０８  バス
３４０９  可搬型記録媒体
【図１】
2018116397.tif 000003
【図２】
2018116397.tif 000004
【図３】
2018116397.tif 000005
【図４】
2018116397.tif 000006
【図５】
2018116397.tif 000007
【図６】
2018116397.tif 000008
【図７】
2018116397.tif 000009
【図８】
2018116397.tif 000010
【図９】
2018116397.tif 000011
【図１０】
2018116397.tif 000012
【図１１】
2018116397.tif 000013
【図１２】
2018116397.tif 000014
【図１３】
2018116397.tif 000015
【図１４】
2018116397.tif 000016
【図１５】
2018116397.tif 000017
【図１６】
2018116397.tif 000018
【図１７】
2018116397.tif 000019
【図１８】
2018116397.tif 000020
【図１９】
2018116397.tif 000021
【図２０】
2018116397.tif 000022
【図２１】
2018116397.tif 000023
【図２２】
2018116397.tif 000024
【図２３】
2018116397.tif 000025
【図２４】
2018116397.tif 000026
【図２５】
2018116397.tif 000027
【図２６】
2018116397.tif 000028
【図２７】
2018116397.tif 000029
【図２８】
2018116397.tif 000030
【図２９】
2018116397.tif 000031
【図３０】
2018116397.tif 000032
【図３１】
2018116397.tif 000033
【図３２】
2018116397.tif 000034
【図３３】
2018116397.tif 000035
【図３４】
2018116397.tif 000036