(57)【要約】      （修正有）【課題】操作体の一部が撮像手段の死角に入った影響で入力中の操作を構成する複数の指示位置の少なくとも１つの検出が困難となった場合でも、タッチ状態が継続されていることを認識する情報処理装置を提供する。【解決手段】操作体の端部による操作面１０１への操作の入力を認識する情報処理装置１００であって、操作面上の空間のうち、操作面１０１からの距離が所定の基準より小さい範囲内に操作体の端部が存在する場合、操作面上の空間を撮像した画像から、操作体の、画像を撮像した距離画像センサ１０２に対する状態を表す情報を取得する状態取得部と、取得された情報に関連して操作体の端部が距離画像センサ１０２の死角に入っているとみなされる場合は、部分が死角に入っているとみなされない場合とは異なる基準を用いて、操作体の端部が操作面に対する操作の入力中であることを認識する認識部を備える。【選択図】図１
2017084307.tif 000002
【特許請求の範囲】
【請求項１】
操作体の端部による操作面への操作の入力を認識する情報処理装置であって、
前記操作面上の空間のうち、前記操作面からの距離が所定の基準より小さい範囲内に前記操作体の端部が存在する場合、前記操作面上の空間を撮像した画像から、前記操作体の、前記画像を撮像した撮像手段に対する状態を表す情報を取得する取得手段と、
前記取得手段によって取得された情報に関連して前記操作体の端部が前記撮像手段の死角に入っているとみなされる場合は、前記操作体の端部が前記撮像手段の死角に入っているとみなされない場合とは異なる基準を用いて、前記操作体の端部が前記操作面に対する操作の入力中であることを認識する認識手段と、
を備えることを特徴とする情報処理装置。
【請求項２】
前記取得手段は、前記空間における前記操作体の方向を表す情報と、前記操作体と前記撮像手段の位置関係に関する情報を取得する取得手段であることを特徴とする請求項１に記載の情報処理装置。
【請求項３】
前記操作体と前記撮像手段の位置関係に関する情報とは、前記撮像手段の撮像位置から前記操作体の端部を見る方向を表す情報であることを特徴とする請求項２に記載の情報処理装置。
【請求項４】
更に、前記空間における前記操作体の方向を表す情報と、前記撮像手段の撮像位置から前記操作体の端部を見る方向を表す情報とに基づいて特定される、該２つの方向の角度差に関連して、前記操作体の端部が前記撮像手段の死角に入っているとみなされるかを判定する判定手段を備え、
前記認識手段は、前記判定手段による判定の結果に応じて、前記操作体の端部が前記操作面に対する操作の入力中であることを認識する基準を決定することを特徴とする請求項３に記載の情報処理装置。
【請求項５】
前記画像を構成する各画素には、前記空間における位置情報が反映されており、
更に、前記画像に反映された位置情報に基づいて、前記操作体の端部の位置情報を、前記操作体によって指し示される指示位置として検出する位置検出手段を備え、
前記判定手段は、前記位置検出手段によって検出された指示位置の前記操作面からの距離が所定の基準より小さい場合に、前記２つの方向の角度差を用いて、前記操作体の端部が前記撮像手段の死角に入っているとみなされるかを判定することを認識する基準を決定することを特徴とする請求項４に記載の情報処理装置。
【請求項６】
前記認識手段は、前記位置検出手段によって検出された指示位置の前記操作面からの距離に関する基準を用いて、前記操作体の端部が前記操作面にタッチ操作の入力中であることを認識する認識手段であって、
前記取得手段によって取得された情報に関連して前記操作体の端部が前記撮像手段の死角に入っているとみなされる場合は、前記操作体の端部が前記撮像手段の死角に入っているとみなされない場合よりも大きい距離を前記基準として決定することを特徴とする請求項５に記載の情報処理装置。
【請求項７】
前記認識手段は、前記位置検出手段によって検出された指示位置の前記操作面からの距離が、前記基準となる距離よりも小さい場合に、前記操作体の端部が前記操作面にタッチしていると認識することを特徴とする請求項６に記載の情報処理装置。
【請求項８】
前記判定手段は、前記位置検出手段によって検出された指示位置の前記操作面からの距離が、所定の距離の閾値より大きい場合、前記２つの方向が基準となる角度よりも平行に近ければ、前記操作体の端部が前記撮像手段の死角に入っているとみなされると判定することを特徴とする請求項５又は６に記載の情報処理装置。
【請求項９】
前記判定手段は、前記位置検出手段によって検出された指示位置の前記操作面からの距離が、所定の距離の閾値より大きい場合、前記２つの方向の角度差が、前記２つの方向の角度の差が所定の角度の閾値よりも小さければ、前記操作体の端部が前記撮像手段の死角に入っていると判定し、前記２つの方向の角度差が、前記２つの方向の角度の差が前記所定の角度の閾値よりも大きければ、前記操作体の端部が前記撮像手段の死角に入っていないとみなされると判定することを特徴とする請求項５又は６に記載の情報処理装置。
【請求項１０】
前記空間における前記操作体の方向を表す情報とは、前記画像を用いて特定される前記空間の端部と前記操作体とが交差する位置から、前記位置検出手段によって検出される前記指示位置に基づいて特定される直線の方向を表す情報であって、
前記撮像手段の撮像位置から前記操作体の端部を見る方向を表す情報とは、前記撮像手段の撮像位置と、前記位置検出手段によって検出される前記指示位置とに基づいて特定される直線の方向を表す情報であることを特徴とする請求項５又は６に記載の情報処理装置。
【請求項１１】
前記認識手段は、
前記取得手段によって取得された情報に関連して、前記操作体の端部が、前記操作体のうち端部以外の部分によって生じる死角に入っているとみなされる場合は、前記操作体の端部が前記死角に入っているとみなされない場合とは異なる基準を用いて、前記操作体の端部が前記操作面に対するタッチ操作の入力中であることを認識することを特徴とする請求項６乃至１０のいずれか１項に記載の情報処理装置。
【請求項１２】
前記操作体として操作者の手が用いられる場合、前記操作体の端部とは、前記操作者の手のうち指先に相当する部分であることを特徴とする請求項１乃至１１のいずれか１項に記載の情報処理装置。
【請求項１３】
前記情報処理装置は、テーブルトップインタフェースシステムを構成し、
前記撮像手段は、前記テーブルトップインタフェースシステムを構成する距離画像センサによって撮像され、各画素に前記操作面からの高さ方向に対応する位置情報が反映された距離画像であって、
前記認識手段は、前記距離画像に基づいて特定される前記操作体の一部の高さと、前記操作面からの前記操作体の一部の高さに関する基準とに基づいて、前記操作体の端部が前記操作面にタッチしていることを認識することを特徴とする請求項１乃至１２のいずれか１項に記載の情報処理装置。
【請求項１４】
前記認識手段は、前記操作面に対する操作の入力中であると認識された操作体が複数である場合、前記位置検出手段によって前記複数の操作体に関して検出された複数の指示位置の軌跡に基づいてマルチタッチ操作を認識することを特徴とする請求項６乃至１０のいずれか１項に記載の情報処理装置。
【請求項１５】
前記操作体として操作者の手が用いられる場合、前記操作体の端部とは、前記操作者の手のうち指先に相当する部分に相当し、
更に、前記画像から、前記操作者の手のうち指先とみなされる位置情報を検出する位置検出手段を備え、
前記認識手段は、前記取得手段によって取得された情報と、前記位置検出手段によって検出された位置の前記画像から前記操作者の手のうち手の甲とみなされる部分からの距離の大きさに基づいて、前記操作者の手のうち指先が前記撮像手段の死角に入っているとみなされるかを判定することを特徴とする請求項１に記載の情報処理装置。
【請求項１６】
前記操作体として操作者の手が用いられる場合、前記操作体の端部とは、前記操作者の手のうち指先に相当する部分に相当し、  
前記認識手段は、前記取得手段によって取得された情報と、前記画像から抽出される前記操作体が写る領域の形状と所定の手のモデルの形状とを比較した結果に基づいて、前記操作者の手のうち指先が前記撮像手段の死角に入っているとみなされるかを判定することを特徴とする請求項１に記載の情報処理装置。
【請求項１７】
前記操作体として操作者の手が用いられる場合、前記操作体の端部とは、前記操作者の手のうち指先に相当する部分に相当し、
前記認識手段は、前記操作者の手のうち指先が前記撮像手段の死角に入っているとみなされる場合、前記操作者の手のうち指先が前記撮像手段の死角に入っていないとみなされた時点で撮像された前記画像における前記操作者の手のうち指先とみなされる位置情報と、前記操作体の手の甲の中心の位置情報とに基づいて推定された指先の位置情報を用いてタッチ操作を認識することを特徴とする請求項１に記載の情報処理装置。
【請求項１８】
前記操作体として操作者の手が用いられる場合、前記操作体の端部とは、前記操作者の手のうち指先に相当する部分に相当し、
前記空間における前記操作体の方向を表す情報とは、前記画像を用いて特定される前記操作者の手のうち手首の位置から、前記操作者の手の甲の中心の位置に基づいて特定される直線の方向を表す情報であって、
前記撮像手段の撮像位置から前記操作体の端部を見る方向を表す情報とは、前記撮像手段の撮像位置と、前記操作者の手のうち手首の位置から、前記操作者の手の甲の中心の位置とに基づいて特定される直線の方向を表す情報であることを特徴とする請求項３乃至６のいずれか１項に記載の情報処理装置。
【請求項１９】
操作体の端部による操作面への操作の入力を認識する情報処理装置の制御方法であって、
前記操作面上の空間のうち、前記操作面からの距離が所定の基準より小さい範囲内に前記操作体の端部が存在する場合、取得手段により、前記操作面上の空間を撮像した画像から、前記操作体の、前記画像を撮像した撮像手段に対する状態を表す情報を取得する取得工程と、
認識手段により、前記取得工程において取得された情報に関連して前記操作体の端部が前記撮像手段の死角に入っているとみなされる場合は、前記操作体の端部が前記撮像手段の死角に入っているとみなされない場合とは異なる基準を用いて、前記操作体の端部が前記操作面に対する操作の入力中であることを認識する認識工程と、
を備えることを特徴とする情報処理装置の制御方法。
【請求項２０】
コンピュータに読み込ませ実行させることによって、前記コンピュータを、請求項１に記載された情報処理装置として機能させるプログラム。
【請求項２１】
請求項２０に記載されたプログラムを格納したことを特徴とするコンピュータが読み取り可能な記憶媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、撮像された画像に基づいて操作者の操作を認識する技術に関する。
【背景技術】
【０００２】
近年では、ＡＲ（Ａｕｇｍｅｎｔｅｄ  Ｒｅａｌｉｔｙ）やＭＲ（Ｍｉｘｅｄ  Ｒｅａｌｉｔｙ）といった環境において、物理的には存在しない操作面（仮想面）に対するタッチ操作が行われる場面がある。また、プロジェクションによって操作者インタフェース（以下、ＵＩ）を壁や机など任意の操作面に投影し、投影したＵＩに対してタッチ操作が行われる場面がある。このような場面においては、ステレオカメラや距離画像センサ等の撮像手段を用い、操作面と、所定の操作体の一部（例えば操作者の指先）との間の距離に基づく判断により、両者が接触しているか否かを判断することが多い。具体的には、操作面と、操作者の指先との間の距離に所定の閾値を設け、間の距離が閾値を下回った場合を両者が接触している状態であるとみなす。
【０００３】
画像を用いる体の一部の動きに基づく操作の認識においては、撮像手段と操作者の位置関係によっては、検出すべき操作者の体の一部が、撮像手段の死角に入り、その動きを正しく認識できないことが問題となる。
【０００４】
上記の問題に対して、特許文献１が開示する技術は、操作者の手先の３次元モデルを用いてその位置と姿勢を連続的にトラッキングすることで、死角に入った場合でも手先位置を大まかに推定し、その動きに基づく空間ジェスチャ操作を継続して認識できる。また、特許文献２では、障害物により遮られて、一時的に画像センサに映らなくなった手の動きを、予め登録された移動軌跡により補完する。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２０１３−２０５９８３号公報
【特許文献２】特開２０１４−２１９４４号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
特許文献１および特許文献２は、操作体が描く軌跡の形状に対応づけられた指示を解釈する操作認識方法において、軌跡の一部が欠損した場合に、欠損部分を補完して操作の認識を継続することを可能とするものである。しかしながら、いずれの補完方法を用いても、撮像手段の死角に入った操作体が操作面に接触しているか否かの判定を正確に行うことは困難である。
【０００７】
そこで本発明は、操作体の一部が撮像手段の死角に入った影響で入力中の操作を構成する複数の指示位置の少なくとも１つの検出が困難となった場合でも、タッチ状態が継続されていることを認識可能とすることを目的とする。
【課題を解決するための手段】
【０００８】
本発明は、操作体の端部による操作面への操作の入力を認識する情報処理装置であって、前記操作面上の空間のうち、前記操作面からの距離が所定の基準より小さい範囲内に前記操作体の端部が存在する場合、前記操作面上の空間を撮像した画像から、前記操作体の、前記画像を撮像した撮像手段に対する状態を表す情報を取得する取得手段と、前記取得手段によって取得された情報に関連して前記操作体の端部が前記撮像手段の死角に入っているとみなされる場合は、前記操作体の端部が前記撮像手段の死角に入っているとみなされない場合とは異なる基準を用いて、前記操作体の端部が前記操作面に対する操作の入力中であることを認識する認識手段と、を備える。
【発明の効果】
【０００９】
本発明によれば、操作体の一部が撮像手段の死角に入った影響で入力中の操作を構成する複数の指示位置の少なくとも１つの検出が困難となった場合でも、タッチ状態が継続されていることを認識可能となる。
【図面の簡単な説明】
【００１０】
【図１】情報処理装置を利用するシステムの外観と位置情報の定義の一例を表す図。
【図２】タッチ操作中の手の状況と手領域の対応関係の一例を表す図。
【図３】情報処理装置のハードウェア構成、及び機能構成の一例を表すブロック図。
【図４】本発明の実施例における機能部を表す図。
【図５】タッチ操作を認識する処理の流れの一例を示すフローチャート。
【図６】タッチ判定処理の流れの一例を示すフローチャート。
【図７】タッチ判定の閾値制御処理の流れの一例を示すフローチャート。
【図８】シングルタッチ操作の操作例を示す図。
【図９】シングルタッチ操作の操作例を示す図。
【図１０】マルチタッチ操作の操作例を示す図。
【図１１】マルチタッチ操作の操作例を示す図。
【図１２】操作体の先端が隠れている状態を検出する検出精度向上の方法を示す図。
【図１３】操作体であるユーザの手指の状態とシステムの関係を説明する図。
【発明を実施するための形態】
【００１１】
以下、本発明に係る実施例の情報処理を、図面を参照して詳細に説明する。なお、実施例に記載する構成は例示であり、本発明の範囲をそれらの構成に限定する趣旨のものではない。
【００１２】
＜第１の実施形態＞
まず、第１の実施形態として、テーブルトップインタフェースシステムのテーブル面に投影されたアイテムに対し操作者が行うタッチ操作を認識する処理の例を説明する。
【００１３】
［システムの構成］
図１（ａ）は、本実施形態に係る情報処理装置１００を設置したテーブルトップインタフェースシステムの外観の一例である。操作面１０１は、テーブルトップインタフェースのテーブル部分であり、操作者は、操作面１０１をタッチすることでタッチ操作を入力することが可能である。ただし、本実施形態においてタッチ操作とは、操作者が用いる操作体の一部が所定の操作面に対して所定の基準を満たす程度に近接した状態で入力する操作のことを意味する。タッチ操作の入力中に、実際に操作面と操作体とが接触しているか否かは問わない。本実施形態では、操作面１０１の上方に、操作面を見下ろすようにして距離画像センサ１０２が設置される。距離画像とは、各画素の値に、当該距離画像を撮像する撮像手段の基準位置（例えばレンズ中心など）から、当該画素に撮像された被写体表面までの距離に対応する情報が反映された画像である。本実施形態において、距離画像センサ１０２が撮像する距離画像の画素値には、距離画像センサ１０２から、操作面１０１あるいはその上方に存在する物体表面までの距離が反映される。本実施形態で利用する距離画像センサ１０２はＴＯＦセンサ(Time-Of-Flightセンサ)である。ＴＯＦセンサでは、被写体表面で反射された光を受光し、その位相遅れを計測することで、光が反射するまでにかかった時間の違いを被写体表面までの距離（深度方向の距離）の違いに対応するものとして検出する。距離画像は、画素毎に上記のようにして得られた距離情報が、画素値として反映されている。また距離画像センサ１０２は、深度方向の距離の距離情報を得ることから、デプスセンサと呼ばれることもある。なお、本実施形態の距離画像センサ１０２はＴＯＦセンサに限らず、例えば赤外パターン照射方式のセンサや、ステレオカメラシステムを設置することで距離画像を得ることも可能である。距離画像センサ１０２によって撮像された距離画像は、情報処理装置１００に入力画像として入力される。情報処理装置１００は、入力画像を解析することで操作者の手１０６の三次元位置を取得し、入力される操作を認識する。従って操作者は、操作面上の空間（操作面１００と距離画像センサ１０２の間の空間）のうち、距離画像センサ１０２によって撮像可能な範囲において、手などの所定の物体を動かすことにより空間ジェスチャ操作を入力することが可能である。
【００１４】
また本実施形態では、可視光カメラ１０３が上方から操作面１０１を見下ろすようにして設置される。情報処理装置１００は、可視光カメラ１０３を制御して、操作面１０１に載置された物体を撮像してその読み取り画像を得る書画カメラとして機能することができる。情報処理装置１００は、可視光カメラ１０３によって得られる可視光画像や、距離画像センサ１０２によって得られる距離画像に基づいて、操作面１０１上の空間に存在する物体を検出し、さらに識別する。物体には、例えば、操作者の手、紙媒体や本などのドキュメントやその他の立体物を含む。ただし、図１（ａ）に例示するシステムの場合は、距離画像センサ１０２と可視光カメラ１０３の画角には、テーブル周囲に存在する操作者の頭部は含まれない。そのため得られた入力画像では、画像端部がユーザの腕（肩から先の部分）の何処か一部と交差する。
【００１５】
プロジェクタ１０４は、操作面１０１の上面に画像の投影を行う。本システムでは、操作者は投影された画像に含まれるアイテム１０５に対して、タッチや空間ジェスチャによる操作を行う。上述したように、本実施形態では、手１０６の検出および操作の認識には、距離画像センサ１０２で取得した距離画像を用いる。距離画像を用いることで、プロジェクタ１０４の投影光の影響で操作者の手の色が変化しても影響を受けにくいという利点がある。本システムの表示装置は、プロジェクタ１０４に替えて、操作面１０１を液晶ディスプレイとするなどで構成することもできる。その場合、可視光画像からの肌色領域を検出するなどして画像から人の手を検出する方式を用いても、投影光の影響は受けずに手の検出が可能である。
【００１６】
なお、操作面１０１を上方から見た画像が得られる構成であれば、必ずしも距離画像センサ１０２及び可視光カメラ１０３自体が上方に設置されている必要はなく、例えば操作面に対向するようにミラー設置し、ミラーを撮像するように構成しても構わない。プロジェクタ１０４も同様に、図１（ａ）の例では、斜め上方から見下ろすように操作面１０１上への投影を行うが、異なる方向に向けて投影された投影光を、ミラーなどを利用して操作面１０１に反射させてもよい。操作面１０１が鉛直方向に沿って設置されたような場合も同様である。
【００１７】
本実施形態では、操作面１０１上の三次元空間に図１に示すｘ、ｙ、ｚ軸を定義し、位置情報を扱う。図１（ａ）の例では、点１０７を座標軸の原点とする。ここでは一例として、テーブルの上面に平行な二次元がｘｙ平面、テーブル上面に直交し上方に伸びる方向をｚ軸の正方向としている。本実施形態では、ｚ軸方向は、世界座標系での高さ方向に相当する。しかしながら本実施形態は、ホワイトボードや壁面など、水平ではない面を操作面１０１とするシステムや、操作面が凹凸を有する場合や、ＭＲを利用して生成された仮想面である場合にも適用可能である。
【００１８】
図１（ｂ）は、距離画像センサ１０２によって撮像される距離画像とシステムの関係を表す図である。画像１０８は、距離画像センサ１０２によって撮像される距離画像の内容の一例を表す。距離画像の各画素には、距離画像センサ１０２から被写体までの距離に対応する値が、画素値として保持される。本実施形態では、距離画像センサ１０２は操作面１０１を見下ろすように距離画像を撮像する。従って、距離画像の各画素値は、操作面１０１からの高さ方向の位置情報（ｚ座標）を得るための情報を含む。ただし、本実施形態では、距離画像センサ１０２は、ｚ軸に対して斜めに角度をもつように設置されている。従って、本実施形態では距離画像の画素値をそのままｚ座標として利用するのではなく、センサや設置環境に応じたパラメータを使った座標変換を施すことで、画像内に定義された位置情報を世界座標のｘｙｚ座標に変換して利用する。図１（ｂ）に示す距離画像の例では、各画素値に反映された距離情報は省略し、被写体のエッジのみを明示する。テーブル１０１及び原点１０７は図１（ａ）に対応している。範囲１１１は、距離画像センサ１０２の画角に相当する。以下では、画像端１１１と称する。
【００１９】
斜線で示す領域１０９は、距離画像１０８に写っている操作者の手１０６の像である（以下では単に手領域１０９という）。本実施形態では、検出される手のそれぞれに対して１箇所の指示位置を検出する。指示位置とは、操作者が手指を使って指し示していると推定される位置の座標である。本実施形態では、前提として、操作者がタッチ操作のために点を指定する場合には、１本だけ指を伸ばした「指さしポーズ」を取ることが規定される。１本指を延ばすポーズが、多くの人にとっては１点を指し示すのに自然な体勢だからである。従って、指示位置としては、手領域１０９のうち指先だと推定される位置を特定する。具体的には、距離画像から、手領域１０９を抽出し、手領域１０９のうち画像端１１１から最も遠い位置に存在する画素を示す座標を、指示位置とする。これにより、１本だけ伸ばした指の指先位置が、指示位置として特定される。図１（ｂ）に示される手領域１０９の場合、画像端１１１から最も遠い点が指示位置１１０として特定される。ただし、指示位置の特定方法はこれに限らず、例えば、手領域から手の五指を検出して、所定の指の先端を指示位置としてもよい。
【００２０】
距離画像には、図１（ｂ）に示すようにｕ軸及びｖ軸による２次元座標系が設定される。なお図１（ｂ）の例では、距離画像の解像度は６４０［ｄｏｔ］×４８０［ｄｏｔ］とする。指示位置１１０の距離画像内の位置座標が（ｕ，ｖ）であり、距離画像センサ１０２から指示位置までの距離に相当する画素値がｄであるとする。本実施形態では、このように距離画像内で定義される位置情報に対して、距離画像センサ１０２のレンズ特性および操作面１０１との相対位置関係等に基づく座標変換を施す。これにより、各画素の座標をテーブルに定義された実世界上の座標系にマッピングし、指示位置１１０について、実空間の３次元位置（ｘ，ｙ，ｚ）を取得することができる。座標変換に利用する変換行列は、距離画像センサ１０２が設置された時に、予め調整作業を行い取得する。なお、３次元座標の算出に用いる距離ｄは、単一の画素値だけでなく、手領域内で指示位置１１０の近傍の数ピクセル分の画素を対象に、ノイズ除去処理や平均化処理を実施した上で特定してもよい。
【００２１】
また本実施形態では、各フレームで、手領域１０９が画像端１１１と交差する部分の中央を、手の侵入位置として定義する。図１（ｂ）の手領域１０９の場合、侵入位置１１２が特定される。侵入位置１１２もまた、距離画像内に定義された位置情報を変換することで、実空間内での三次元位置情報として取得される。本実施形態では、距離画像から複数の手領域が検出された場合、そのそれぞれについて、指示位置及び侵入位置が特定される。そして、複数の手領域のそれぞれについてタッチ操作を認識する。本明細書では操作者がタッチ操作の入力に用いる操作体及びその端部の一例として、操作者の手１０６及びその指が利用されること想定する。ただし、本実施形態では操作体として、手指だけでなくスタイラスやロボットアームなどの器具を利用する場合にも適用可能である。なお操作体の端部とは、タッチ操作のために指示位置を指し示すのに用いられる部位を示す。端部は、操作体の一部に属し、タッチ操作の入力が可能な部位であれば、必ずしも突起部分の先端に限定せずともよい。
【００２２】
ここで図２を参照して、本実施形態が解決する課題を改めて説明する。図２は、タッチ操作中の手の状況と手領域の対応関係の一例を表す。図２（ａ）は、図１（ａ）に示したテーブルトップインタフェースシステムについて、操作者の手１０６付近をｘ軸正方向に沿って見た図である。このとき、操作者の手１０６は人差指を伸ばして、操作面１０１をタッチしている。情報処理装置１００は、上方から撮像した距離画像に基づいて、人差指の指先の位置を指示位置２００として特定し、指示位置２００のｚ座標に対する閾値処理により、操作者が操作面１０１をタッチしている状態にあると判定する。具体的には、ｚ座標が閾値として設定された操作面１０１からの高さを表す値よりも小さい場合に、操作面１０１が指先によってタッチされていると判定する。ここで、操作者の指が操作面１０１と物理的に接触していなかったとしても、ｚ座標が閾値より低い場合は全てタッチ状態であるとみなされる。なお、この判定処理を、以下ではタッチ判定と言う。また、操作面１０１が指先によってタッチされている、つまり情報処理装置１００が処理対象となっている指示位置に基づくタッチ操作の受け付け中であることを、当該指示位置あるいはその操作体がタッチ状態であると言う。
【００２３】
図１（ａ）のシステムの構成では、距離画像センサ１０２は操作面１０１に対して斜め上方に設置されるため、図２（ａ）に示すように、手１０６の角度によっては、手の甲によって指が隠され、指先が距離画像センサ１０２の死角２０１に入ってしまう。なお、装置の小型化を実現するためには、距離画像センサ１０２を設置する高さを制限する必要があり、設置する高さをむやみに高くすることはできない。図２（ｂ）は、図２（ａ）の状態を距離画像センサ１０２が撮像した距離画像における、手領域１０９を表す。指先が死角に入っているため、手領域１０９のうち画像端１１１から最も遠い点として特定される指示位置２０２は、中指の付け根付近となる。図２（ａ）に示すように、指示位置２０２は、高さ２０３の分、実際の指先位置２００よりも高い位置に存在する。従って、操作者による操作面１０１へのタッチの有無を判定するに用いる高さ（ｚ座標）の閾値が、高さ２０３より小さければ、操作者はタッチしているつもりでいるにも関わらず、情報処理装置１００は、タッチされたことを検出できないという課題が生じ得る。なお、手領域から手の五指を検出して、所定の指の先端を指示位置として特定する場合にも、指先が死角２０１に入ってしまうことにより、所定の指が検出できなかったり、指の長さが実際よりも短く検出されたりするなどの課題が生じ得る。
【００２４】
そこで本実施形態では、操作体の距離画像センサ１０２に対する状態に基づいて、指先が距離画像センサ１０２の死角２０１に入っているとみなされるかを判定する。言い換えれば、指示位置として指先を検出できているとみなされるかを判定する。そして、その結果に応じて、タッチ判定の基準を使い分けることで、指先位置２００が距離画像センサ１０２の死角２０１に入っている場合にも、タッチ判定の誤判定を低減する。
【００２５】
［判定処理の概要］
ここで、情報処理装置１００が実行する、指示位置の高さと、距離画像中の操作者の腕の方向と、撮像位置から指示位置までの方向とに基づいて、操作体の距離画像センサに対する状態を取得し、指先を含む死角の有無を判定する処理の概要を説明する。
【００２６】
本実施形態での判定処理は、具体的には、図１３（ａ）に示す条件に従って実行される。図１３（ａ）は、検出した指示位置の高さ、距離画像センサ１０２が指示位置を撮像する撮像方向と操作体であるユーザの操作体自体の方向の関係、及びそれらに基づく判定結果を表したテーブルである。本実施形態では、まず、検出された指示位置の高さがタッチ閾値よりも低い（タッチ状態にあるとみなされる程度に低い）場合は、指先を含むような死角は存在しないとみなす。なぜなら、本実施形態の課題の発生要因である「指先が手の甲など同じ手の他の部位によって生じた死角に入ってしまった場合」では、図２（ｂ）のように、タッチ中であってもタッチ閾値よりも高い位置で指示位置が検出されることが多い。言いかえれば、検出された指示位置の高さが十分に低い場合は、指先を含むような死角は存在しない可能性が高いと言える。
【００２７】
本実施形態では、検出された指示位置の高さがタッチ閾値よりも高い（タッチ状態であるとみなされない）場合は、距離画像センサ１０２の撮像位置と操作体の方向の関係に応じて、指先を含むような死角の有無を区別する。距離画像センサ１０２の撮像位置と操作体の方向の関係は、具体的には次の２つの方向の角度の差に基づいて区別される。１つは、操作面１０１上の空間における操作体自体の方向を表す第１の方向である。もう１つは、撮像位置から指示位置の方を見た方向（撮像方向）を表す第２の方向であって、距離画像センサ１０２の撮像位置と、検出された指示位置とに基づいて特定される。ただし、２つの方向はｘｙ平面上での方向を比較するとする。
【００２８】
図１３（ｂ）は、検出された指示位置の高さが、タッチ閾値より高く、かつ、第１の方向と第２の方向とに、十分な角度差が生じている場合における、操作体の状態とシステムの関係を説明する図である。ユーザの手１３００に関し、指示位置１３０１が検出されているとする。一例として、撮像方向１３０４の基準となる撮像位置としては、撮像素子１３０２の中心位置が定義される。図１３（ｂ）に示すように、本システムでは、ユーザの手１３００の方向１３０３（第１の方向）と撮像方向１３０４（第２の方向）に十分に角度の差がある場合、撮像位置からユーザの指先までの間に、手１３００の指以外の部位による障害物は生じにくい。従って、死角に指先が入っている可能性は無いとみなすことができる。
【００２９】
図１３（ｃ）は、検出された指示位置の高さがタッチ閾値より高く、かつ、撮像方向と操作体自体の方向とが平行に近い場合における、操作体の状態とシステムの関係を説明する図である。ただし、撮像素子１３０２と指示位置１３０１の位置関係は図１３（ｂ）と一致しており、撮像方向１３０４（第２の方向）も、図１３（ｂ）の場合と同一であるとする。図１３（ｂ）と図１３（ｃ）の違いは、操作体であるユーザの手１３０５の方向１３０６（第１の方向）にある。図１３（ｃ）においても、ユーザの手１３０５は指さしポーズを取っているが、指先が低く、それより手の甲の方が高い位置に存在し、撮像素子１３０２はさらに上方に存在し、それらが略直線状に並ぶ。従って、撮像位置から操作者の手の指先を見た場合に手の甲などが障害物となる。このように本システムでは、操作体自体の方向１３０６（第１の方向）と撮像方向１３０４（第２の方向）に十分な角度差が無い場合、撮像位置からユーザの指先までの間で、手１３００の指以外の部位が障害物となってしまいやすい。従って、本実施形態では、このような場合は指先を含むような死角が存在しているとみなす。
【００３０】
［装置の構成］
本実施形態では、図１３（ａ）のテーブルに表される規則に基づく判定結果に応じて、タッチ判定の基準を使い分ける。以下では、本実施形態に係る情報処理装置１００の構成を説明する。図３（ａ）は、本実施形態に係る情報処理装置１００を含むテーブルトップインタフェースのハードウェア構成図である。中央処理ユニット（ＣＰＵ）３００は、ＲＡＭ３０２をワークメモリとして、ＲＯＭ３０１や記憶装置３０３に格納されたＯＳやプログラムを実行して、各種処理の演算や論理判断などを行い、システムバス３０４に接続された各構成を制御する。記憶装置３０３は、ハードディスクドライブや各種インタフェースによって接続された外部記憶装置などであり、実施形態の操作認識処理にかかるプログラムや各種データを記憶する。距離画像センサ１０２は、ＣＰＵ３００の制御に従い、アイテムが表示されるテーブルとアイテムを操作する操作者の手を含む、操作面１０１上の空間の距離画像を撮像し、撮影した距離画像をシステムバス３０４に出力する。本実施形態では、距離画像の取得方法として、環境光やテーブル面の表示の影響が小さいＴＯＦ方式を基に説明するが、用途に応じて視差方式や赤外パターン投影方式などを利用することも可能である。プロジェクタ１０４は、ＣＰＵ３００の制御に従い、テーブルに操作対象となる画像アイテムを投影表示する。
【００３１】
なお上述したシステムでは、可視光カメラ１０３、距離画像センサ１０２、プロジェクタ１０４はそれぞれ情報処理装置１００に入出力用のインタフェースを介して接続された外部装置であり、情報処理装置１００と協同して情報処理システムを構成する。ただし、これらのデバイスは、情報処理装置１００に一体化されていても構わない。
【００３２】
図３（ｂ）は、情報処理装置１００のソフトウェアの構成を示すブロック図の一例である。これらの各機能部は、ＣＰＵ３００が、ＲＯＭ３０１に格納されたプログラムをＲＡＭ３０２に展開し、後述する各フローチャートに従った処理を実行することで実現されている。そして、各処理の実行結果をＲＡＭ３０２に保持する。また例えば、ＣＰＵ３００を用いたソフトウェア処理の代替としてハードウェアを構成する場合には、ここで説明する各機能部の処理に対応させた演算部や回路を構成すればよい。
【００３３】
画像取得部３１０は、距離画像センサ１０２によって撮像された距離画像を、入力画像として一定時間毎に取得し、ＲＡＭ３０２に随時保持する。なお画像取得部３１０が取得し、各機能部とやりとりする対象は、実際には画像データに対応する信号であるが、本明細書では単に「距離画像を取得する」あるいは「入力画像を取得する」として説明する。
【００３４】
手領域抽出部３１１は、画像取得部３１０によって取得された入力画像の各画素について、閾値判定やノイズ低減処理を施し、距離画像中の手領域を抽出する。手領域とは、入力された距離画像のうち、操作者が操作体として利用する手が写っている領域である。位置検出部３１２は、手領域抽出部３１１によって抽出された手領域の輪郭情報に基づき、操作者の手の指先位置を検出し、指示位置として座標値を特定する。本実施形態では手領域の輪郭のうち画像端１１１から最も遠くに存在する画素を示す座標を、指示位置として検出する。この際、本実施形態の位置検出部３１２は、手領域と画像端１１１が交差する部分の中心を、手領域の侵入位置として検出する。
【００３５】
状態取得部３１３は、距離画像センサ１０２が、操作面１０１上の空間に存在する操作体を撮像した距離画像から、操作体の距離画像センサ１０２に対する状態を表す情報を取得する。本実施形態では、操作面１０１上の空間における操作体自体の方向（第１の方向）を表す情報と、撮像方向（第２の方向）を表す情報を取得する。操作面１０１上の空間における操作体自体の方向は、位置検出部３１２が検出した侵入位置と指示位置に基づいて特定される直線の方向とし、具体的には、侵入位置を始点とし指示位置を終点とするベクトル情報（第１ベクトル）を取得する。また本実施形態では、撮像方向を表す情報として、距離画像センサ１０２の撮像位置と検出された指示位置とに基づいて特定される直線の方向を表す情報を取得する。具体的には、撮像位置を始点とし指示位置を終点とするベクトル情報（第２ベクトル）を取得する。第２ベクトルは、距離画像センサ１０２の撮像位置として定義された位置から、位置検出部３１２が検出した指示位置を見る方向を示す。なお、距離画像センサ１０２が、被写体表面で反射された光を１つ以上のミラーなどを介した撮像系を持つ場合、図１３（ａ）に示した規則が適用可能なように、ミラーの位置や数に応じた適切な撮像位置が設定される必要がある。少なくとも、１つ以上のミラーのうち最も被写体に近い位置に設置されたミラーから指示位置を見た方向と、操作体自体の方向が平行に近い場合、図２（ｂ）及び図１３（ｃ）と同様の課題が発生し得る。本実施形態に係るタッチ判定の基準の制御を加えることで、課題を解決するためには、少なくとも最も被写体に近い位置に設置されたミラーに基づいて撮像位置が決定される必要がある。
【００３６】
なお、本実施形態では、撮像範囲における操作体の状態を表す情報として、上述した２つの方向を表すベクトルの情報を扱うが、図１３（ａ）及び（ｂ）で示した状態を区別するために利用可能な情報であれば、これに限らない。例えば、方向を表す情報として、ベクトルではなく直線を定義する２点の座標や式、所定の座標軸に対する具体的な回転角度の情報を扱っても良い。また例えば、手領域の慣性主軸に基づいて、操作体自体の方向を表す情報を得てもよい。その他、操作体と距離画像センサ１０２の位置関係を予め定義された位置関係のパターンに分類した結果を表す情報や、各々の位置を表す座標情報そのものを扱っても良い。
【００３７】
判定部３１４は、状態取得部３１３が取得した操作体の距離画像センサ１０２に対する状態を表す情報に関連して、操作体のうちタッチ操作の入力に用いられる部分が距離画像センサ１０２の死角に入っているとみなされるかを判定する。本実施形態では、操作体のうちタッチ操作の入力に用いられる部分とは、操作体の端部である。判定部３１４は、操作体の端部が、同一の操作体の端部以外の他の部分によって生じる距離画像センサ１０２の死角に入っているとみなされるかを判定する。操作体が操作者の手の場合、判定部３１４は、指先が図２（ａ）に示したように、手の甲など指先以外の部分によって生じる距離画像差センサ１０２の死角に入っているとみなされるかを判定する。判定部３１４の具体的な処理は、図５のフローチャートを参照して後述する。
【００３８】
基準決定部３１５は、認識部３１６によって実行される、操作体の端部が、操作面１０１にタッチ操作を入力中であるか（タッチ状態であるか）を判定するタッチ判定処理に用いられる基準を決定する。本実施形態では、判定部３１４によって指先が距離画像センサ１０２の死角に入っているとみなされると判定された場合は、指先が距離画像センサ１０２の死角に入っているとみなされないと判定された場合とは異なる基準を用いて、タッチ判定を行う。タッチ判定に用いられる基準とは、指示位置の高さ（ｚ座標）と比較する閾値である。本実施形態では、操作体の端部が操作面１０１にタッチしたかを判定する場合に用いる閾値はタッチ閾値、操作面１０１にタッチしていた操作体の端部が操作面１０１から離れたかを判定する場合に用いる閾値はリリース閾値と呼ぶ。基準決定部３１５は、操作体の端部が距離画像センサ１０２の死角に入っているとみなされると判定された場合に利用される基準として、操作体の端部が死角に入っているとみなされない場合に利用される基準よりも大きい値による閾値を決定する。
【００３９】
認識部３１６は、タッチ判定処理によってタッチ状態であることが特定された操作体により操作面１０１に入力されるタッチ操作を認識し、タッチ操作を示すタッチイベント情報が表示制御部３１７など入力に応答する機能部やアプリケーションに通知する。本実施形態ではタッチ状態の指示位置の軌跡が満たす条件に応じて、少なくとも、「ＴＯＵＣＨ」、「ＭＯＶＥ」、「ＲＥＬＥＡＳＥ」の３つのイベントが認識部３１６によって発行され、表示制御部３１７に通知される。「ＴＯＵＣＨ」は、タッチ状態ではなかった操作体によるタッチが開始されたことを示し、「ＭＯＶＥ」は、操作体がタッチ状態を維持したまま移動したことを示し、「ＲＥＬＥＡＳＥ」は、タッチ状態にあった操作体が非タッチ状態になった事を示す。なお、本実施形態で説明するタッチイベントは一例であり、情報処理装置１００の用途や利用されるセンサなどに応じて通知するタッチイベントは追加あるいは削減することができる。
【００４０】
表示制御部３１７は、ＲＯＭ３０１や記憶装置３０３に記憶された情報を用いて、本実施形態の表示部であるプロジェクタ１０４によって操作面１０１上に投影させる画像を生成する。例えば、認識部３１６の認識結果に基づいて、表示部に表示させている画像の少なくとも一部に対して、移動や拡大／縮小、回転などの変形を施し、表示部に出力させる。出力された画像は、プロジェクタ１０４によって、操作面１０１上に投影表示される。投影される画像は、複数のアイテムを含み、アイテム毎に移動や拡大／縮小、回転が可能であってもよく、画像全体が移動や拡大／縮小、回転の対象であってもよい。
【００４１】
［タッチ操作認識処理の流れ］
図４のフローチャートは、本実施形態に係る情報処理装置１００が実行するタッチ操作認識処理の流れを表す。本実施形態では、情報処理装置１００が起動されたことに応じて図４のフローチャートの処理が開始されるとする。
【００４２】
ステップＳ４００において、表示制御部３１７は、ＲＯＭ３０１などから操作面１０１上に表示する画像の情報を取得し、プロジェクタ１０４に出力する。プロジェクタ１０４は、出力された情報に基づいて、操作面１０１上に画像を投影する。ここで投影される画像は例えば、操作メニューが一覧された初期画面や、情報処理装置１００が前回操作された時の最終状態を表す画面などである。ステップＳ４０１において、画像取得部３１０は、ＲＡＭ３０２のワーク領域を初期化し、距離画像センサ１０２によって撮像された距離画像を、入力画像として取得し、ＲＡＭ３０２に保持する。
【００４３】
ステップＳ４０２において、手領域抽出部３１１は、入力画像から、１以上の手領域を抽出し、その情報をＲＡＭ３０２に保持する。本実施形態では、入力画像の各画素が示すｚ方向の座標値に対して閾値処理を行うことで、操作面１０１よりも高さが高い座標値を持つ領域を、手領域として抽出する。ただし、抽出方法はこれに限られず、例えば別途撮像された可視光画像のＲＧＢ値を解析し、肌色領域に対応する部分を抽出する等してもよい。
【００４４】
ステップＳ４０３において、位置検出部３１２は、ＲＡＭ３０２に保持された手領域の情報を参照することで、ステップＳ４０２において抽出された各手領域について、画像端１１１から最も遠い点を指示位置として特定する。さらに、画像端１１１と手領域１０９との交差部分の中央に相当する１点を、侵入位置として特定する。そして、それぞれの入力画像内での位置情報（ｕ，ｖ）をＲＡＭ３０２に保持する。ステップＳ４０４において、位置検出部３１２は、ステップＳ４０３で特定した指示位置及び侵入位置の位置情報（ｕ，ｖ）を、実世界での位置情報（ｘ，ｙ，ｚ）に変換する。
【００４５】
ステップＳ４０５では、判定部３１４及び基準決定部３１５により、タッチ判定に用いる基準を決定する処理が実行される。本実施形態の場合は、予めＲＯＭ３０１に保持されている複数パターンのタッチ閾値およびリリース閾値のうち、いずれを用いるかの選択が行われる。ステップＳ４０５の処理の詳細は図５のフローチャートを参照して後述する。
【００４６】
ステップＳ４０６において、認識部３１６は、決定された基準に従ってタッチ判定を行う。すなわち、指示位置の高さ（ｚ座標）が、決定されたタッチ閾値より小さいかを判定する。指示位置の高さがタッチ閾値より小さいと判定された場合（ステップＳ４０６でＹｅｓ）には、ステップＳ４０７に進む。指示位置の高さがタッチ閾値以上と判定された場合（ステップＳ４０６でＮｏ）には、ステップＳ４１４に進む。ただし、指示位置の高さがタッチ閾値に一致する場合をいずれの判定結果に含むかは、システムの設置状況などに合わせて適宜選択されればよい。
【００４７】
ステップＳ４０７では、認識部３１６が、ＲＡＭ３０２に保持された情報を参照し、直前までの処理において、既に処理中の指示位置がタッチ状態に遷移していたかを判定する。既にタッチ状態に遷移してはいなかったと判定された場合（ステップＳ４０７でＮｏ）、ステップＳ４０８に進む。既にタッチ状態に遷移していたと判定された場合（ステップＳ４０７でＹｅｓ）、ステップＳ４１１に進む。
【００４８】
ステップＳ４０８では、認識部３１６が、処理対象となっている指示位置の状態をタッチ状態に遷移させ、それを示す情報をＲＡＭ３０２に保持させる。ステップ４０９では、指示位置の位置情報（ｘ，ｙ，ｚ）を、タッチ状態での指示位置の移動の有無を判定するための基準位置としてＲＡＭ３０２に保持する。なおこのとき、ステップＳ４０７で利用されたタッチ判定の基準毎に、移動の有無を判定する基準位置を保持する。本実施形態では、後述するようにタッチ判定の基準がデフォルト値である第１のタッチ閾値である場合と、第１の閾値より大きい第２の閾値である場合がある。従って、移動の有無を判定する基準位置は、最大で第１の閾値に関連付けられた位置情報と、第２の閾値に関連付けられた位置情報の２つが保持される。ステップＳ４１０では、ＣＰＵ３００が、タッチイベント「ＴＯＵＣＨ」を生成し、操作の応答に関連する各機能部に通知する。本実施形態では、少なくとも表示制御部３１７に対して通知を行う。
【００４９】
一方、ステップＳ４０７において、既にタッチ状態に遷移していると判定された場合、ステップＳ４１１では、認識部３１６によって、指示位置の基準位置からの移動距離が所定の距離の閾値より大きいかが判定される。本実施形態では、所定の検出周期で繰り返し検出される指示位置について、直近の２回の検出の間に指示位置が移動した距離の大きさによって移動の有無を判定する。所定の距離の閾値は、指示位置の移動が、操作者が意図して指示位置を動かしたことによる移動の場合と、システムの検出誤差によるブレの場合を区別するために適切な大きさの値が設定される。ステップＳ４１１では、基準位置としてＲＯＭ３０１に保持されている位置情報と、ステップＳ４０３で特定された最新の指示位置の位置情報との間の距離を求めることで、指示位置の移動距離を取得し、閾値と比較する。ただし、ステップＳ４０７の判定は、直前のステップＳ４０７の処理で利用されたタッチ判定の基準に関連付けられた基準位置を使って行われる。例えば、第１の閾値をタッチ判定の基準としてタッチ状態が検出されたフレームでは、第１の閾値に関連付けられた基準位置から最新の指示位置までの移動距離が所定の距離の閾値と比較される。指示位置の移動距離が所定の距離の閾値より大きいと判定された場合（ステップＳ４１１でＹｅｓ）、ステップＳ４１２に進む。指示位置の移動距離が所定の距離の閾値以下であると判定された場合（ステップＳ４１１でＮｏ）、ステップＳ４１７に進む。
【００５０】
ステップＳ４１２では、認識部３１６が、移動の基準位置として保持されている位置情報を、ステップＳ４０３で特定された最新の指示位置の位置情報で更新する。つまり本実施形態では、所定の検出周期で繰り返し検出される指示位置について、直近の２回の検出の間に指示位置が移動した距離の大きさによって移動の有無を判定する。ステップＳ４１３では、認識部３１６が、タッチイベント「ＭＯＶＥ」を生成し、操作の応答に関連する各機能部に通知する。本実施形態では、少なくとも表示制御部３１７に対して通知を行う。
【００５１】
ステップＳ４１４では、認識部３１６によって、指示位置の高さがリリース閾値より大きいかが判定される。リリース閾値は、指示位置が操作面から十分に離れたことを判定するための高さ（ｚ座標の値）の閾値であって、指示位置の高さがリリース閾値より大きい場合、タッチ操作が終了されたと判定される。つまり情報処理装置１００、検出した指示位置の高さがリリース閾値より大きくなったことをもって、操作者が明確に操作面から指を離したとみなす。本実施形態では、タッチ閾値とリリース閾値の値の大きさは異なり、リリース閾値はタッチ閾値よりも大きく設定されるとする。このような設定により、処理対象となっている指示位置がタッチ状態に遷移した後で、検出誤差などによる高さのブレがタッチ閾値を超えたり下回ったりすることがあっても、操作者が明確に操作面から指を離さない限り、継続してタッチ操作を認識可能となる。ただし、タッチ閾値とリリース閾値は同一の値を設定することも可能である。指示位置の高さがリリース閾値より大きいと判定された場合（ステップＳ４１４でＹｅｓ）、ステップＳ４１５に進む。指示位置の高さがリリース閾値より以下であると判定された場合（ステップＳ４１４でＮｏ）、ステップＳ４１７に進む。なお、指示位置の高さがリリース閾値に一致する場合をいずれの判定結果に含むかは、システムの設置状況などに合わせて適宜選択されればよい。
【００５２】
ステップＳ４１５では、認識部３１６が、処理対象となっている指示位置の状態をリリース状態に遷移させ、それを示す情報をＲＡＭ３０２に保持させる。ステップＳ４１６では、認識部３１６が、タッチイベント「ＲＥＬＥＡＳＥ」を生成し、操作の応答に関連する各機能部に通知する。本実施形態では、少なくとも表示制御部３１７に対して通知を行う。ステップＳ４１７では、表示制御部３１７によって、操作面に投影される画像が更新される。具体的には、通知されたタッチイベントに応じた表示画像が生成され、プロジェクタ１０４に出力される。ステップＳ４１８では、ＣＰＵ３００が、情報処理装置１００の電源を切る等所定の終了操作が入力されたかを判定する。終了操作が入力されたと判定された場合（ステップＳ４１８でＹｅｓ）は、情報処理装置１００は全ての処理を終了する。終了操作が入力されてはいないと判定された場合（ステップＳ４１８でＮｏ）は、ステップＳ４０１の処理へ戻り、新たに取得された距離画像を対象に処理が繰り返される。
【００５３】
次に図５のフローチャートを参照して、ステップＳ４０５において実行されるタッチ判定基準の決定処理の流れを説明する。ステップＳ５００において、判定部３１４は、検出された指示位置の高さが、閾値Ｈより大きいかを判定する。閾値Ｈとは、指示位置として特定された座標が、タッチ操作中の操作者の指先部分の位置を表しているか、あるいは、指先ではない他の部分（例えば、指の付け根）の位置を表している可能性が高いかを判定するために設けられた閾値である。指示位置として特定された座標がタッチ操作中の操作者の指先部分の位置を表す場合、指示位置の高さは操作面に極力近づいた状態にあることが想定される。それに対し、図２（ａ）及び（ｂ）で課題として示したように、指先が死角に入ったことで指先ではない部分が手領域の中で侵入位置から最も遠い点として特定された場合、その高さは、その時点で指先が存在する高さよりも傾けられた指の長さ程度高くなる。閾値Ｈとは、このような２つの状況を識別するために設けられる高さの閾値であって、情報処理装置１００の設置環境に合わせて予め適切な値が設定される。検出された指示位置の高さが、閾値Ｈより大きいと判定された場合（ステップＳ５００でＹｅｓ）、ステップＳ５０１に進む。ステップＳ５０１に進むのは、図２（ａ）及び（ｂ）で示したような、指先が死角に入ってしまった状況であるか、あるいは、指先が正しく検出できているがその指先が閾値Ｈより高い位置に存在する場合である。検出された指示位置の高さが、閾値Ｈ以下であると判定された場合（ステップＳ５００でＮｏ）、ステップＳ５０７に進む。ステップＳ５０７に進むのは、図２（ａ）及び（ｂ）で説明したような課題が発生していない可能性が高い場合である。ただし、指示位置の高さが閾値Ｈと一致する場合をいずれの判定結果に含むかは、システムの設置状況などに合わせて適宜選択されればよい。
【００５４】
ステップＳ５０１では、判定部３１４が、操作面１０１上の空間での、タッチ操作に用いられる操作体自体の方向を表す情報として、ステップＳ４０３で特定された侵入位置から指示位置への方向を表す第１ベクトルを生成する。
【００５５】
そしてステップＳ５０２では、判定部３１４が、距離画像センサ１０２から、操作体のタッチ操作に用いられる端部を見る方向を表す情報として、撮像位置からステップＳ４０３で特定された指示位置への方向を表す第２ベクトルを生成する。なお撮像位置とは、入力された距離画像を撮像した時点での、距離画像センサ１０２の視野となる範囲の基準を表す位置情報であり、実空間における２次元座標（ｘ，ｙ）として取得される。より詳細には、距離画像センサ１０２の撮像素子の中心に対応する位置をｘｙ平面上で特定した値であることが好ましい。なお、第２のベクトルに関しては、撮像位置から操作体のうちタッチ操作に用いられる部分を見る方向を大凡表すことが可能であれば、指示位置の位置情報を使う以外の方法で特定されても構わない。例えば、手領域から手首や手の甲を抽出し、それらの位置を撮像位置から見る方向を第２ベクトルとして特定してもよい。人の手の構造上、手首や手の甲と指の位置関係は固定的であり、位置も近いため、手首や手の甲の位置を使った場合も、撮像位置から操作体を見る方向として、指示位置を使った場合に近い方向の情報が得られる。
【００５６】
ステップＳ５０３では、判定部３１４が、ステップＳ５０１で生成された第１ベクトルと、ステップＳ５０２で生成された第２ベクトルとの角度差を取得する。本実施形態では、ｘｙ平面内に生じる角度（ｚ軸周りの回転角度）の差を取得する。ステップＳ５０４では、判定部３１４が、ステップＳ５０３で取得された角度差が、閾値Ｄより小さいかを判定する。閾値Ｄとは、所定の角度の閾値であって、距離画像センサ１０２の視野の中で、操作者の腕自体が、距離画像センサ１０２の死角を作る要因となり得るかを判定するための基準である。
【００５７】
本実施形態では、第１ベクトルと第２ベクトルの角度差が閾値Ｄより小さきとき、すなわち第１ベクトルと第２ベクトルが基準となる角度より平行状態に近い場合は、操作者の指先が距離画像センサ１０２の死角に入っている可能性が高いと判定する。図１３（ｃ）に示した通り、第１ベクトルと第２ベクトルが平行に近い状態とは、撮像位置から操作者の手の指先を見た場合に、操作者の腕が、撮像位置と指先の間に存在する可能性が高い状態である。さらに人の腕及び腕は関節を有しており、操作者が操作面に接触させる目的で指先の高さを下げる場合、腕の中で指先以外の部分（例えば、手の甲や手首）は相対的に高くなる。従って、上方に設置された距離画像センサ１０２から見れば、操作者が指先で操作面をタッチしようとする姿勢は、指先との間に障害物が生じやすい姿勢である。従って本実施形態では、上述した２つのベクトルと、角度の閾値を利用して、操作者の指先が距離画像センサ１０２の死角に入っている可能性が高い状態を検出する。取得された角度差が、閾値Ｄより小さいと判定された場合（ステップＳ５０４でＹｅｓ）、ステップＳ５０５に進む。取得された角度差が、閾値Ｄ以上である場合（ステップＳ５０４でＮｏ）、ステップＳ５０７に進む。ただし、取得した角度差が閾値Ｄと一致する場合をいずれの判定結果に含むかは、システムの設置状況などに合わせて適宜選択されればよい。
【００５８】
ステップＳ５０５では、表示制御部３１７が、操作体の端部が死角に入っていることを操作者に向けて通知する。具体的には、操作体が操作者の手１０６である場合は指先がセンサの死角内に存在すること、あるいはその可能性が高いことを、例えば投影されている画像中のアラート等によって表示する。
【００５９】
ここで通知を行うのは、操作者に姿勢の変更を促すためである。図２（ｂ）で示すように、指先が死角２０１に入ってしまっている場合、手領域のエッジを構成する画素のうち侵入位置１１２からの距離が同程度の画素が複数存在してしまう。そのため、フレーム毎に侵入位置１１２が変わることが有り得る。また、タッチ状態が継続された状態でも、手の姿勢に変化があれば高さに変動が起こるなど、指示位置２０２を用いる場合は指先位置２００を用いる場合に比べてタッチ判定処理の精度が不安定となってしまう。そこで、操作者に姿勢の変更を促し、次フレーム以降の距離画像から指先の検出を可能とすれば、タッチ判定を安定的に行えるようになる。
【００６０】
ステップＳ５０６では、基準決定部３１５が、タッチ判定の基準を変更する。本実施形態では、予めＲＯＭ３０１あるいは記憶装置３０３に、タッチ判定の基準の選択肢となる情報が保持され、ＲＡＭ３０２に読み出されている。具体的には、タッチ閾値とリリース閾値を組み合わせた情報が、デフォルト値として設定される組み合わせを含めて少なくとも複数保持される。本実施形態の場合、デフォルト値では、指示位置が操作者の手のうち指先の位置に対応している場合に用いられるべきタッチ判定の閾値が設定される。すなわち、指先の高さが、指先が操作面に接触しているとみなさる程度かを判定するための第１のタッチ閾値と、指の高さが、指先が操作面から十分に離れたとみなされ程度かを判定する第１のリリース閾値が、タッチ判定の基準のデフォルト値となる。ステップＳ５０６では、複数のタッチ閾値とリリース閾値の組み合わせのうち、検出された指示位置が操作者の指の付け根付近に対応している場合に用いられるべき閾値の組み合わせが、タッチ判定の基準として設定される。すなわち、指先の高さが第１のタッチ閾値及び第１のリリース閾値の高さに存在するときに、その指の付け根付近が存在する可能性が高い高さに、それぞれ第２のタッチ閾値及び第２のリリース閾値が設定され、タッチ判定の基準とされる。第２のタッチ閾値及び第２のリリース閾値の値は、予め実験値や統計的解析の結果等に基づいて適切な値が設定されればよい。なお、第２のタッチ閾値及び第２のリリース閾値を設定するのは、指の付け根付近の高さでなくてもよい。例えば、手の甲の中心であったり、手首の中央付近であったりしてもよい。
【００６１】
一方、ステップＳ５００において、指示位置の高さが閾値Ｈ以下であった場合、本実施形態では、ステップＳ５０７において、基準決定部３１５が、タッチ判定の基準としてデフォルト値を設定する。本実施形態では、複数のタッチ閾値とリリース閾値の組み合わせのうち、上述した第１のタッチ閾値と第１のリリース閾値の組み合わせが採用される。
【００６２】
ステップＳ５０６あるいはステップＳ５０７において、タッチ判定の基準が設定されたら、図４のフローチャートの処理に戻り、ステップＳ４０６以降の処理が実行される。以上が、本実施形態におけるタッチ操作認識処理の一連の流れである。本実施形態では、検出された指示位置の高さに関する判定処理（ステップＳ５００）と、距離画像センサ１０２の視野内での２つのベクトルの方向に関する判定処理（ステップＳ５０４）に基づき、タッチ判定の基準を切り替える。上記２つの判定は、操作体の端部が、操作体自体によって生じる距離画像センサ１０２の死角に入っているとみなされるかを判定する処理に相当する。
【００６３】
＜操作例１＞
次に、図１（ａ）のテーブルトップシステムが操作されている状況の例を挙げて、情報処理装置１００による具体的な処理とその作用を説明する。なお、以下の操作例において、閾値Ｈはデフォルト値のタッチ閾値（第１のタッチ閾値）と一致するとする。第１のタッチ閾値はＴ１、第２のタッチ閾値はＴ２と表記する。なお、各変数は例えば、Ｔ１＝２０ｍｍ、Ｔ２＝１００ｍｍのように設定される。リリース閾値は各タッチ閾値よりも１０ｍｍ大きい値が設定される。また、ステップＳ５０４の判定処理に用いる角度の閾値Ｄは３０度であるとする。
【００６４】
まず、操作例１として、図６及び図７を参照して、操作者が操作面をタッチしたまま指をスライド移動させる状況を説明する。図６（ａ）及び（ｂ）は、操作者が右手の人差指で操作面１０１上をタッチ中であって、操作者の指先が距離画像センサ１０２によって撮像可能である状況を表す。図７（ａ）及び（ｂ）は、図６（ａ）及び（ｂ）の状況の後、操作者が右手の人差指で操作面１０１上をタッチしたままｘ軸の負方向に指をスライド移動させたことで、操作者の指先が距離画像センサ１０２の死角に入った状況を表す。なお、図６（ａ）及び図７（ａ）は、ｚ軸の負方向に沿ってｘｙ平面を見た状態を模式的に表す。破線６００は、ｘｙ平面において、距離画像中の画像端１１１に対応する位置を示す。図６（ｂ）及び図７（ｂ）にｘ軸の正方向に沿ってｚｙ平面を見た状態を模式的に表す。また図７（ａ）及び（ｂ）において、領域７００は、距離画像センサ１０２の死角となった部分を表す。
【００６５】
図６（ａ）の場合、距離画像から抽出された手領域に関し、ステップＳ４０３及びステップＳ４０４の処理により、手１０６の侵入位置として、手１０６と破線１０６が交差する部分の中央にあたるｐ１（ｘ１１，ｙ１１）が特定される。また指示位置としては、手領域のうち侵入位置ｐ１から最も遠い点であるｐ２（ｘ２１，ｙ２１，ｚ２１）が特定される。また、ｐ３（ｘ３１，ｙ３１）は、距離画像センサ１０２の撮像位置として予め保持されている位置情報であるとする。
【００６６】
図６（ｂ）に示すように、指示位置ｐ２の高さｚ２は、閾値Ｈ＝Ｔ１である高さ６０１より小さい（ステップＳ５００でＮｏ）。そこで、タッチ判定の基準は、デフォルト値である第１のタッチ閾値と第１のリリース閾値となる。指示位置の高さｚ２がタッチ閾値Ｔ１よりも小さい（ステップＳ４０６でＹｅｓ）ため、図６（ａ）及び（ｂ）の状態は、指示位置ｐ２はタッチ状態であると判定される。この時点までにタッチ状態に遷移していない場合は（ステップＳ４０７でＮｏ）、指示位置ｐ２をタッチ状態に遷移させ（ステップＳ４０８）。ｐ２（ｘ２１，ｙ２１，ｚ２１）が、移動操作の基準位置として保持され（ステップＳ４０９）、タッチイベント「ＴＯＵＣＨ」が表示制御部３１７に通知され（ステップＳ４１０）、投影画像の制御等が実行される（ステップＳ４１７）。
【００６７】
その後距離画像が取得された時、図７（ａ）のように状況に変化があったとする。操作者の手１０６が動かされた後の図７（ａ）の場合、ステップＳ４０３及びステップＳ４０４の処理により、手１０６の侵入位置として、手１０６と破線１０６が交差する部分の中央にあたるｐ４（ｘ１２，ｙ１２）が特定される。図７（ｂ）の状態では、手自体（操作体自体）の一部によって、距離画像センサ１０２の視野が遮られたことで死角７００が生じている。このとき、距離画像からは図２（ｂ）で示したように、伸ばされた指が検出できないため、手領域のうち侵入位置ｐ４から最も遠い点であるｐ５（ｘ２２，ｙ２２，ｚ２２）が指示位置として特定される。ｐ３（ｘ３１，ｙ３１）は、固定されているため変化しない。
【００６８】
図７（ｂ）に示すように、このとき、指示位置ｐ５の高さｚ２２は、閾値Ｈ＝Ｔ１である高さ６０１よりも大きい（ステップＳ５００でＹｅｓ）。従って本実施形態では、侵入位置ｐ４が始点で指示位置ｐ５が終点の第１のベクトルＶ１と、撮像位置ｐ３が始点で指示位置ｐ５が終点のベクトルＶ２を生成する（ステップＳ５０１、ステップＳ５０２）。生成された２つのベクトルの角度差は１８°であるとする（ステップＳ５０３）。取得された角度差１８°が閾値Ｄ＝３０°より小さい（ステップＳ５０４でＹｅｓ）。従って、本実施形態では、指の端部が距離画像センサ１０２の死角に入っていることが、操作者に通知される（ステップＳ５０５）。例えば、“指先がセンサから見えません”等の文字を投影画像に加えたり、手に赤色のオブジェクトを重ねたりして投影する。そして、タッチ判定の基準を変更する（ステップＳ５０６）。本実施形態では、第２のタッチ閾値（閾値Ｔ２）と第２のリリース閾値が設定される（ステップＳ５０６）。
【００６９】
指示位置ｐ５の高さｚ２２はタッチ判定の閾値Ｔ２である高さ７０１より小さい（ステップＳ４０６でＹｅｓ）。既にタッチ状態であるので（ステップＳ４０７でＹｅｓ）、ステップＳ４１１では基準位置から今回の指示位置ｐ５までの距離とムーブ判定の閾値Ｍとの比較が行われる。ただし、この時点で保持されている基準位置は、タッチ判定の基準として閾値Ｔ１が用いられた時に保持されたｐ２の情報だけであり、直前に用いられた閾値Ｔ２に関連付けられた基準位置は保持されていない。ｐ２からｐ５までの距離は、ユーザの指先が移動した距離とみなすことはできない。本実施形態では、このような場合には移動距離を算出しない。従って、図７の状況では、閾値Ｍより大きい移動は生じていないということからステップＳ４１１の判定結果はＮｏとなる。この結果、「ＭＯＶＥ」イベントは通知されず、処理は終了する。情報処理装置１００に操作終了指示が入力されるまで、上記のような処理が繰り返し実行される。
【００７０】
本実施形態では、図６及び図７の例で示したように、指先が検出できている状態で開始されたタッチ操作中に指先が死角に入ってしまった場合には、タッチ状態であることの認識は継続するが、操作としてムーブが行われたか否かの判定は回避する。これは、操作体の端部が死角に入った場合にはステップＳ５０５でユーザに対してそれを通知するので、それを受けたユーザが姿勢を変えるなどの対策行うことを前提としているからである。このような前提において、本実施形態では、図７で示したように指先ではない位置に指示位置が検出される状態が、数フレーム分発生したとしても、その後には修正され、再び指先が検出されるようになる可能性が高いと考える。そのため、指先が死角に入ってしまった場合でも、タッチ状態であることの認識は継続することで、ユーザに操作のやり直し強いることなく、次フレーム以降で再び指先の検出が可能となった場合に、操作の続きを認識可能とする。
【００７１】
操作例１で示したように本実施形態では、操作体の端部が、操作体自体によって生じる距離画像センサ１０２の死角に入った場合、検出される指示位置の高さが、端部の実際の高さより高くなることを利用し、端部が死角に入ったとみなされるか判定する。また、操作体の端部が、操作体自体によって生じる距離画像センサ１０２の死角に入ったかを判定するために、操作体自体の方向に対応する第１ベクトルと、撮像位置から操作体を見る方向に対応する第２ベクトルを用いる。本実施形態では、検出された指示位置の高さが所定の高さよりも高く、第１ベクトルと第２ベクトルの角度差が所定の角度の閾値より小さい場合は、操作体の端部が、操作体自体によって生じる距離画像センサ１０２の死角に入ったと判定している。
【００７２】
なお、図６（ａ）に示す手１０６が、ｘｙ平面における位置情報はそのまま、指先に対応する指示位置ｐ２の高さｚ２１が、閾値Ｈ＝Ｔ１である高さ６０１よりも大きくなる位置に存在した場合、実行される処理は以下のようになる。なお図６（ａ）に示す手１０６の高さが高い場合とは、指先は正確に検出されているが、ステップＳ５００の判定結果がＹｅｓとなる場合の例である。ステップＳ５００の判定結果がＹｅｓとなるため、ｐ１からｐ２に向かう方向の第１ベクトルＶ１が生成され（ステップＳ５０１）、ｐ３からｐ２に向かう方向の第２ベクトルＶ２が生成される（ステップＳ５０２）。Ｖ１とＶ２の角度差は３５度と取得されるとする（ステップＳ５０３）。角度差が閾値Ｄよりも大きいため（ステップＳ５０４でＮｏ）、タッチ判定の基準としてはデフォルトの値が設定される（ステップＳ５０７）。このように本実施形態では、検出された指示位置の高さが閾値Ｈより高い場合でも、操作体の方向に対応するＶ１と、撮像位置から操作体を見る方向に対応するＶ２の角度差が十分に大きい場合は、距離画像センサ１０２は操作体の端部を検出可能とみなされる。従って、調整しない初期状態の指先の高さに関する閾値を使ったタッチ判定が実行される。本実施形態では特に、第２ベクトルＶ２は、撮像位置を始点とし指示位置を終点とするベクトルを生成する。
【００７３】
上述したように、本実施形態によれば、タッチ操作に用いられている操作体の端部が、距離画像センサ１０２の死角に入った場合でも、タッチ状態の認識を継続可能となる。また、タッチ状態の認識を途切れさせることなく操作体の端部が距離画像センサ１０２の死角に入ったことを操作者に通知することで、操作者がより安定的なタッチ判定が可能な姿勢を取るように促すことができる。この際ユーザは、入力を改めてやり直すことなく、姿勢を変えれば入力中の操作を継続することができるようになる。このように本実施形態によれば、タッチセンサを用いないシステムでのタッチ操作の認識において操作性が向上する。
【００７４】
［変形例１］
ここまで第１の実施形態では、情報処理装置１００が認識可能なタッチ操作は、いわゆるシングルタッチ操作と呼ばれる、１つの指示位置の動きに基づいて認識される操作であると説明していた。しかしながら本実施形態では、複数の操作体の端部によって複数の指示位置が入力され、いわゆるマルチタッチ操作が入力されるシステムにも適用可能である。以下では変形例１として、図１（ａ）と同じテーブルトップシステムにおいて、マルチタッチ操作を認識する場合の情報処理装置１００について説明する。
【００７５】
変形例１に係る情報処理装置１００のハードウェア構成、及び機能構成は、図３（ａ）及び（ｂ）で説明した第１の実施形態に準じる。ただし、変形例１の認識部３１６は、複数の指示位置がタッチ状態と判定された場合には、複数の指示位置の間の距離や相対移動の軌跡に基づいて、マルチタッチ操作のコマンドを認識し、認識結果に応じたタッチイベントを生成する。例えば、タッチ状態の複数の指示位置の間の距離が拡大／縮小した場合は、投影されているアイテムを拡大／縮小させるマルチタッチ操作として認識する。また例えば、タッチ状態にある複数の指示位置が相対的に回転した場合、その回転量に応じて投影されているアイテムを回転させるマルチタッチとして認識する。以上は一例であり、情報処理装置１００が認識するマルチタッチ操作はこれに限らない。
【００７６】
変形例１の場合も、情報処理装置１００は、図４のフローチャートに沿って、タッチ操作の認識処理を実行する。ステップＳ４０２において、手領域抽出部３１１により複数の手領域が検出された場合、ステップＳ４０３では各手領域について指示位置及び侵入位置を特定し、ステップＳ４０５では、基準決定部３１５が、各手領域についてタッチ判定の基準を定める。そして変形例１の場合は、認識部３１６が、ステップＳ４０６でＹｅｓと判定される指示位置の数をカウントし、複数の指示位置が同時にタッチ状態に遷移したかの判定を行う。複数の指示位置が同時にタッチ状態に遷移してはいない場合、図４のフローチャートのステップＳ４０８の処理が実行される。複数の指示位置が同時にタッチ状態に遷移した場合、マルチタッチ状態であるとして、マルチタッチ操作の認識処理を実行する。なお、タッチ状態である指示位置の数をカウントし、タッチ状態の指示位置が複数ある場合、マルチタッチ状態であるとして、マルチタッチ操作の認識処理を実行してもよい。マルチタッチ操作の認識処理では、上述した拡大／縮小操作や回転操作が認識される。ここでの認識処理は公知の技術であり、本願発明の主題ではないため、説明は省略する。
【００７７】
＜操作例２＞
操作例２として、図１（ａ）のテーブルトップシステムが、複数の操作者の手（複数の操作体）によって同時に操作されている状況の例を挙げて、情報処理装置１００による具体的な処理とその作用を説明する。ただし、図６及び図７で説明した操作例１と共通する部分は同じ符番を振り、説明は適宜省略する。図８（ａ）及び（ｂ）は、向かい合う２人の操作者がそれぞれの右手（手８００及び手８０１）でタッチ入力を行っている状態を表す。このとき、いずれの指先も操作面１００に接触しており、２人で１つのマルチタッチ操作を入力している状況であるが、手８００の指先は、死角７００に入ってしまっている。なお、マルチタッチ操作は１人の操作者の両手で入力されても構わない。
【００７８】
操作例２の場合、情報処理装置１００は、取得した距離画像から２つの手領域を抽出し、ステップＳ４０３及びステップＳ４０４において、各手領域について侵入位置と指示位置を特定し、位置情報を得る。手８００については、侵入位置ｐ１（ｘ１，ｙ１）と指示位置ｐ２（ｘ２，ｙ２，ｚ２）が特定される。手８０１については、侵入位置ｐ４（ｘ４，ｙ４）と指示位置ｐ５（ｘ５，ｙ５，ｚ５）が特定される。なお、操作例２においても、撮像位置ｐ３（ｘ３，ｙ３）は固定されている。
【００７９】
ステップＳ４０５の処理では、まず、手８００に対応する手領域に関してタッチ判定の基準を決定する処理が実行される。指示位置ｐ２の高さｚ２は、閾値Ｔ１の高さ６０１よりも高い（ステップＳ５００でＹｅｓ）。図８（ａ）の場合、侵入位置ｐ１から指示位置ｐ２までの方向を表す第１ベクトルＶ１と、撮像位置ｐ３から指示位置ｐ２に向かう方向を表す第２ベクトルＶ２の角度差は、１９度であり、閾値Ｄよりも小さい（ステップＳ５０４でＹｅｓ）。従って、指先が死角にあることがユーザに通知され（ステップＳ５０５）、タッチ判定の基準が第２のタッチ閾値と第２のリリース閾値に変更される（ステップＳ５０６）。一方、手８０１に対応する手領域に関して、指示位置ｐ５の高さｚ５は、閾値Ｔ１の高さ６０１よりも小さい（ステップＳ５００でＮｏ）。従って、タッチ判定の基準はデフォルトの値である第１のタッチ閾値と第１のリリース閾値が設定される（ステップＳ５０７）。
【００８０】
以上のようにステップＳ４０５の処理が各手領域について実行され、タッチ判定の基準が設定された結果、指示位置ｐ２及び指示位置ｐ５は、いずれもタッチ状態にあると判定される（ステップＳ４０６でＹｅｓ）。変形例１では、タッチ状態の指示位置が複数であることからマルチタッチ操作の認識処理が実行される。
【００８１】
上述したように、変形例１によれば、マルチタッチ操作に用いられている複数の操作体のうち少なくとも１つについて、端部が距離画像センサ１０２の死角に入って検出されない場合でも、マルチタッチ操作の認識が継続可能となる。更に、特定の操作体の端部が距離画像センサ１０２の死角に入ったことを操作者に通知することで、操作者がより安定的なタッチ判定が可能な姿勢を取るように促すことができる。
【００８２】
［変形例２］
さらに、操作体の端部が距離画像センサ１０２の死角に入ったか否かを判定する処理の精度を上げるために、判定処理を加える変形例を説明する。まず、変形例２では、操作体が手であることを想定し、手の甲の中心位置を特定し、さらに手の甲の中心位置の検出された指示位置との距離の大きさに基づいて、指先が距離画像センサ１０２の死角に入ったか否かの判定を行う。変形例２では、手領域を抽出した際、慣性主軸に直交する方向を幅として幅の大きさが最も大きい部分を特定し、その幅の中点を手の甲の中心位置とする。そして、手の甲の中心位置を中心とする、所定の半径Ｒの円内の範囲に、検出された指示位置が含まれる場合は、指先が距離画像センサ１０２の死角に入っているとみなす。これは、指先が死角に入っている場合には、図２（ｂ）に示したように、検出される指示位置は指の付け根付近に相当し、指先が検出される場合に比較すれば、手の甲の中心に近い範囲で検出されることが多いことを利用する判定方法である。
【００８３】
図９（ａ）は、操作面上の空間に差し出された手を、ｚ軸の負方向に沿ってｘｙ平面を見た状態を模式的に表す。図９（ａ）において、手９００は、死角が生じておらず、全体が距離画像センサ１０２によって撮像可能な状態にある。手９００については、距離画像から抽出され手領域のうち、侵入位置９０１から最も遠い点を特定する処理に基づき、指示位置９０２の３次元位置情報が取得される。そして、中心位置として位置９０３が特定される。このとき、手の甲の中心位置を中心として、所定の半径Ｒの円の範囲内に、指示位置９０２は含まれない。一方、手９０４は、死角７００が生じ、指示位置９０５が、指先ではなく人差指の付け根付近で検出されてしまった状態を表す。この場合は、手の甲の中心位置９０６を中心とした半径Ｒの園内に、指示位置９０５が含まれる。
【００８４】
以上により変形例２では、手９００では、指先は距離画像センサ１０２の死角に入っておらず、手９０４では、指先は距離画像センサ１０２の死角に入っていると判定する。変形例２では、手の甲の中心位置を中心とする、所定の半径Ｒの円内の範囲に、検出された指示位置が含まれるかを判定する判定部３１４による処理が、図５のフローチャートのステップＳ５０４の直後に追加される。手の甲の中心位置を中心とする、所定の半径Ｒの円内の範囲に、検出された指示位置が含まれると判定される場合は、ステップＳ５０５に進む。そして、手の甲の中心位置を中心とする、所定の半径Ｒの円内の範囲に、検出された指示位置が含まれないと判定される場合は、ステップＳ５０７に進む。これにより、指示位置の高さが閾値Ｈより高く（ステップＳ５００でＹｅｓ）、２つのベクトルの角度差が閾値Ｄより小さい場合（ステップＳ５０４でＹｅｓ）であっても、タッチ判定の基準がデフォルトの値になる場合が発生する。
【００８５】
例えば、図９（ｂ）のように、操作者の指が上を向いている場合、距離画像センサ１０２から指先は検出可能な状態にある。しかし第１の実施形態では、指示位置が高さ６０１より高く、腕の方向と撮像位置から指先に向かう方向が平行に近ければ、タッチ閾値が通常の高さ６０１より大きく設定されるため、誤判定となる可能性がある。しかしながら、第１の実施形態に、上述したような変形例２の処理を加えることによって、図９（ｂ）のように、操作者の指が上を向いているために、指先が閾値Ｈより高くなってしまう場合のタッチ状態の誤認識を低減できる。なお、変形例２は、変形例１と併用されてもよい。
【００８６】
［変形例３］
変形例３では、タッチ操作に用いられる操作体が、１本の指だけを伸ばす「指さしポーズ」をとった手であることを想定し、手領域の形状と予め用意された形状モデルとの類似度に基づいて、指先が距離画像センサ１０２の死角に入ったか否かの判定を行う。変形例３では、手領域を抽出した際、慣性主軸に直交する方向を幅として幅の大きさが最も大きい部分の中点を手の甲の中心とし、幅が最も小さい部分を手首の位置とする。指先が距離画像センサ１０２の死角に入っている場合は、手領域のうち手首から先の部分の形状が、「指さしポーズ」をとっている手とは大きく異なる。具体的な形状の比較は、例えば、手領域のうち手首の位置から先の部分の形状と、予め記憶された所定の形状モデルとで、外周上の複数点抽出し、抽出された点毎に距離計算を行い、距離を積算した合計値で形状の一致度を判定することで行う。
【００８７】
図１０は、指先が検出できていない手領域１０９について、手の甲の中心１００１を基準位置として人差指が伸ばされた状態の形状モデル１０００と比較し、手首１００２から先の部分の形状を比較する処理を模式的に表すものである。特に人差指部分について、形状が大きくことなることから、指先が検出されていないことが判定できる。
【００８８】
変形例３では、上記のように、手領域とモデルとの形状を比較するする判定部３１４による処理が、図５のフローチャートのステップＳ５０４の直後に追加される。比較の結果、手領域の形状が「指さしポーズ」であるとみなされない場合、ステップＳ５０５に進む。手領域の形状が「指さしポーズ」であるとみなされた場合、ステップＳ５０７に進む。なお、変形例２で説明した手の甲の中心位置から指示位置までの距離の大きさを判定する処理の後に、変形例３の手領域とモデルとの形状を比較する判定処理を加えることで、さらに判定精度を向上させることができる。変形例３によれば、変形例２と同様に、図９（ｂ）のように、操作者の指が上を向いているために、指先が閾値Ｈより高くなってしまう場合のタッチ状態の誤認識を低減できる。なお、変形例３は、変形例１または２と併用されてもよい。
【００８９】
［変形例４］
上述した第１の実施形態及びその変形例では、指先が距離画像センサ１０２から検出できない場合に検出される指示位置が、指先の位置に対応してはいないことを考慮し、タッチ判定の基準とする高さを変更した。それにより、指先の正確な位置が検出されない状況であっても、操作者の手の高さの実際の変化に基づいて、タッチ状態が継続されているか否かを判定可能とした。
【００９０】
一方でタッチ操作では、タッチ状態である間の指示位置の位置情報の軌跡が、入力されるコマンドの解釈において重要な意味を持つことが多い。上述した第１の実施形態とその変形例では、タッチ操作を入力している操作体の端部が死角に入った場合、検出される指示位置の高さ情報を使ってタッチ状態が継続されているか否かが正確に判定されたとしても、指示位置のｘｙ座標が操作者の意図とは異なる。従って、その場合には指示位置のｘｙ座標を操作の解釈に利用しなかった。そこで、変形例４では、タッチ判定の基準を変更した場合、タッチ操作を解釈する根拠とする位置情報を、その時点で検出された指示位置ではなく、推定される指先位置の情報とする。具体的には、タッチ操作中の操作体が、「指さしポーズ」をとった手であることと、指先が検出できていた状態での手の甲の中心と指示位置との位置関係とに基づいて、指先が検出できていない状態での指先位置を推定し、３次元座標情報を特定する。そして、推定された指先情報に基づいて、タッチ判定およびタッチ操作の判定を行う。
【００９１】
図１１は、変形例４に係る情報処理装置１００における指示位置の推定処理の概要を模式的に表す図である。変形例４においても、手領域を抽出した際、慣性主軸に直交する方向を幅として幅の大きさが最も大きい部分の中点を手の甲の中心とする。手１１００に関しては、指先が距離画像センサ１０２で検出可能な位置に存在し、指示位置Ｐ１（Ｘ１，Ｙ１，Ｚ１）が適正に検出されている。このとき、手の甲の中心位置Ｐ２（Ｘ２，Ｙ２，Ｚ２）と指示位置Ｐ１の位置関係を示す情報として、Ｐ２からＰ１に向かうベクトル１１０１を生成し保持する。その後、手１１０２のように、指先が死角７０１に入ってしまった場合は、手の中心位置Ｐ３（Ｘ３，Ｙ３，Ｚ３）を特定する。さらに、ベクトル１１０１に基づいて、指先の位置であることが推定される位置Ｐ４（Ｘ３＋（Ｘ１−Ｘ２），Ｙ３＋（Ｙ１−Ｙ２），Ｚ３＋（Ｚ１−Ｚ２））を特定する。変形例４では、指先が死角７０１に入っている場合、指示位置として特定される位置情報を、指先位置Ｐ４の位置情報で補正することで、手の高さに連動したタッチ判定を可能とし、かつ、操作者が意図した軌跡に近い情報を得ることができる。
【００９２】
変形例４では、ステップＳ５０６において、基準決定部３１５がタッチ判定の基準を変更する場合、保持されているタッチ閾値とリリース閾値の基準のうち、推定された指先位置の高さを対象としてタッチ判定を実行するための基準が選択される。ここでは、第３のタッチ閾値と第３のリリース閾値とする。第３のタッチ閾値及び第３のリリース閾値は、第１のタッチ閾値と第１のリリース閾値に一致してもよいが、変形例４では、指先位置の推定処理に生じる誤差を考慮するため、第１のタッチ閾値と第１のリリース閾値よりは、少し大きく設定されるとする。さらに変形例４では、ステップＳ５０６の直後に、推定された指先位置の情報によって、保持されている指示位置の位置情報を補正する処理が追加される。従って、ステップＳ４０９及びステップＳ４１２で、移動の基準位置として保持される位置情報は、推定された指先位置となる。なお変形例４では、ステップＳ５０７において、タッチ判定の基準がデフォルト値とされた直後に、指示位置の値として保持する情報をステップＳ４０３で特定した情報に再設定する。
【００９３】
なお変形例４では、ステップＳ４０６のタッチ判定には、第１の実施形態と同様侵入位置から距離の遠さに基づいて特定された指示位置の高さを利用し、タッチ操作を解釈するためのステップＳ４０９以降の処理では、推定された指先位置を用いるとしてもよい。推定された指先位置は、あくまでも最後に指先が検出された時点での、手の甲の中心の位置との位置関係に基づいているため、その後、指の角度や関節の曲がり方が変化した場合には対応できない。従って、タッチ操作中か否かという根本的な判定には、リアルタイムに得ている距離画像から取得される手の高さの情報を利用し、タッチ操作中であると判定された場合にのみ、推定された指先位置の情報を利用することで、誤認識を低減することが可能である。なお、変形例４は、変形例１から３と併用されてもよい。
【００９４】
［変形例５］
変形例５では、操作体が手である場合について、指先が距離画像センサ１０２の死角に入ったか否かを判定するために比較するベクトルの定義を変更する。具体的には、抽出された手領域から手首の位置を特定し、ステップＳ５０２では、操作体の方向を表す第１ベクトルとして、手首の位置が始点で手の中心位置が終点となるベクトルを生成する。手首の位置は、変形例３と同様、手領域を抽出した際、慣性主軸に直交する方向を幅として幅の大きさが最も小さい部分として特定する。変形例５ではさらに、ステップＳ５０３では、撮像位置から操作体を見る方向を表す第２ベクトルとして、撮像位置が始点で手の中心位置もしくは手首の位置が終点となるベクトルを生成する。
【００９５】
変形例５では、侵入位置に替えて、手首の位置を利用して操作体の方向を表すベクトルを生成することで、ユーザが手首を曲げて操作した場合でも、操作体の方向として妥当なベクトルを得ることができる。また、撮像位置から操作体を見る方向として、指示位置に替えて手首の位置あるいは手の中心位置を利用することで、指示位置の検出のブレによる影響を抑えて精度のよい方向ベクトルを生成することができる。従って、変形例５によれば、操作体である操作者の手の手首が曲がった状態であっても、指先が隠れているかを精度よく判定することができる。
【００９６】
図１２（ａ）は、操作空間に差し出された手を、ｚ軸の負方向に沿ってｘｙ平面を見た状態を模式的に表す。図１２（ａ）において、手１２００は、死角が生じておらず、全体が距離画像センサ１０２によって撮像可能な状態にある。また手１２００は、手首部分が曲げられている。このように手首を曲げて操作をする状況は例えば、投影された画像に手１２００の影を重ねないようにしたいなどの理由により生じることがある。手１２００については、距離画像から抽出され手領域のうち、侵入位置１２０１から最も遠い点を特定する処理に基づき、指示位置１２０２が特定される。このとき、侵入位置１２０１から指示位置１２０２に向かう方向を表す第１ベクトルＶ１と、撮像位置１２０３から指示位置１２０２に向かう向きを表す第２ベクトルＶ２の角度の差は、１８度と、閾値Ｄ＝３０度を下回る。そのため、第１の実施形態によれば、指示位置の高さが大きいような場合には、実際には撮像位置から指先が検出可能であるにも関わらず、指先が死角に入ったと判定される可能性がある。
【００９７】
図１２（ｂ）は、図１２（ａ）と同じ状態の手１２００を対象に、変形例５に係る処理を行う場合に扱われる位置情報を表す。変形例では、第１ベクトルとして、手首の中心位置１２０４が始点で手の中心位置１２０５が終点となるベクトルＶ３と、第２ベクトルとして、撮像位置が始点で手首の位置が終点となるベクトルＶ４が生成される。図１２（ｂ）は図１２（ａ）と同一の状況であるが、Ｖ３とＶ４の角度差は４５度となり、閾値Ｄ＝３０度より大きい。従って、指先を対象にデフォルトの基準を使ったタッチ判定が行われる。このように変形例４によれば、操作体として利用される人の手の柔軟な形状に対応しつつ、精度のよい判定結果を得ることが可能となる。なお、変形例５は、変形例１から４と併用されてもよい。
【００９８】
＜その他の実施形態＞
本発明は、上述の実施形態の１以上の機能を実現するプログラムを、ネットワーク又は記憶媒体を介してシステム又は装置に供給し、そのシステム又は装置のコンピュータにおける１つ以上のプロセッサーがプログラムを読出し実行する処理でも実現可能である。また、１以上の機能を実現する回路（例えば、ＡＳＩＣ）によっても実現可能である。
【符号の説明】
【００９９】
３１０  画像取得部
３１１  手領域抽出部
３１２  位置検出部
３１３  状態取得部
３１４  判定部
３１５  基準決定部
３１６  認識部
３１７  表示制御部
【図１】
2017084307.tif 000003
【図２】
2017084307.tif 000004
【図３】
2017084307.tif 000005
【図４】
2017084307.tif 000006
【図５】
2017084307.tif 000007
【図６】
2017084307.tif 000008
【図７】
2017084307.tif 000009
【図８】
2017084307.tif 000010
【図９】
2017084307.tif 000011
【図１０】
2017084307.tif 000012
【図１１】
2017084307.tif 000013
【図１２】
2017084307.tif 000014
【図１３】
2017084307.tif 000015