以下、本発明の実施の形態を図面に従って説明する。
実施の形態1.
(表示システムの構成)
図1は、実施の形態1における入力装置12を備えた表示システム10の構成の一例を示すブロック図である。この表示システム10は、ユーザからの入力情報を入力装置12によって取得し、取得された入力情報に応じて画面を表示するシステムである。
図1において、表示システム10は、画像取得装置11、入力装置12、表示制御装置13、および表示装置14を有する。画像取得装置11と入力装置12、入力装置12と表示制御装置13、表示制御装置13と表示装置14は、それぞれ、有線または無線により接続され通信が可能となっている。また、画像取得装置11、入力装置12、表示制御装置13、および表示装置14は、物理的に一体であってもよいし、互いに分離されていてもよい。例えば、画像取得装置11、入力装置12、表示制御装置13、および表示装置14は、1つの筐体に収納されている。別の例として、画像取得装置11および入力装置12が一体となりリモートコントローラを構成し、表示制御装置13および表示装置14が一体になり情報表示装置を構成し、リモートコントローラと情報表示装置とが無線通信を行う構成も考えられる。
以下、画像取得装置11、入力装置12、表示制御装置13、および表示装置14についてそれぞれ説明する。
画像取得装置11は、ユーザ(または人物)が撮像された画像を取得する。例えば、画像取得装置11は、表示装置14の前方の所定範囲の画像を取得する。具体的には、画像取得装置11は、レンズ等の光学部、撮像素子、この撮像素子からの信号を処理して画像データを生成する画像処理部、生成した画像データを記憶するフレームバッファ部等により構成される。取得された画像データは、入力装置12により参照される。画像の取得は、例えば1/30秒ごとといった一定期間ごとに行われる。
本実施の形態では、画像取得装置11は、レンズ等の光学部および撮像素子の組を2対備え、2つの撮像素子からの信号を処理して2つの画像データを生成する、いわゆるステレオカメラである。ステレオカメラでは、2つの画像データに撮像されている物体の位置の差(視差)を利用して三角測量の原理に基づき物体の3次元位置を測定することができる。
入力装置12は、画像取得装置11が取得した画像データを基に、ユーザ(または人物)の手の位置または動き(またはジェスチャ)を検出し、検出した手の位置または動きに基づいて入力情報を取得し、取得した入力情報を表示制御装置13に出力する。入力装置12は、ジェスチャ入力装置とも呼ばれる。本例では、入力装置12は、入力情報として、ユーザの手の位置に基づき、所定の2次元座標系における2次元座標を取得する。なお、入力装置12の詳細な構成や処理については後述する。
表示制御装置13は、入力装置12からの入力情報に基づき、表示画面の生成や、表示画面に表示される画像の拡大や縮小等のスケーリング、画面遷移の制御など、表示画面の制御を行い、表示画面を示す表示信号を表示装置14に出力する。
表示装置14は、例えば液晶パネルを備え、表示制御装置13からの表示信号に基づいて表示画面の表示を行う装置である。
図2に、表示制御装置13により生成されて表示装置14に表示される表示画面Sの一例を示す。図2を参照して、表示制御装置13による画面表示の制御の例を説明する。
図2において、表示画面Sには、テレビジョン放送等の放送チャンネルの番組表S1〜S5が表示されている。ユーザはジェスチャ操作により番組表S1〜S5の中から所望の番組表を自由に選択することができる。例えば、ユーザが片手を表示装置14に向けて動かすと、その手の位置に応じた番組表(例えば番組表S2)が選択されてハイライト表示される。このとき、入力装置12は、ユーザの片手の位置に応じた2次元座標を出力し、表示制御装置13は、入力装置12からの2次元座標に対応する番組表を選択してハイライト表示する。
また、ユーザは、選択中の番組表を両手操作によって表示画面上で拡大または縮小することができる。例えば、ユーザが表示装置14に向けた両手を左右に離す方向に動かすと番組表が拡大表示され、近づける方向に動かすと番組表が縮小表示される。このとき、入力装置12は、ユーザの両手のそれぞれの位置に応じた2つの2次元座標を出力し、表示制御装置13は、入力装置12からの2つの2次元座標が左右に離れた場合に番組表を拡大し、左右に近づいた場合に番組表を縮小する。
本実施の形態における表示システム10は、具体的には、デジタルテレビや、デジタルサイネージ(または電子看板)といった表示機器として利用できるほか、パーソナルコンピュータなどの情報処理機器の一部として利用できる。また、表示システム10は、操作端末を備える工場用機器など、表示画面を備え、ユーザに操作される機器に広く適用可能である。
(入力装置の構成)
図3は、入力装置12の構成の一例を示すブロック図である。以下、図3を参照して、入力装置12の構成を説明する。
図3において、入力装置12は、人物位置取得部21、手位置取得部22、操作領域設定部23、基準領域設定部24、および入力情報取得部25を有する。
人物位置取得部21は、人物の位置を取得する。本例では、人物位置取得部21は、画像取得装置11が取得した2つの画像データから、人物(具体的には人物の像)を検出し、その3次元位置を取得する。具体的には、人物位置取得部21は、人物の位置として、人物の顔の位置を検出する。より具体的には、人物位置取得部21は、2つの画像データにおいて人物の顔の位置を検出し、三角測量の原理を利用して当該人物の顔の3次元位置を取得する。
画像中から人物の顔の位置を検出する手法として、ビオラ−ジョーンズ法と呼ばれる方式が知られている。ビオラ−ジョーンズ法は、要約すると、画像内における小領域の位置や大きさを変えながら画像内に小領域を設定し、当該小領域から特徴量を抽出し、識別器を利用して、当該小領域が顔であるか否かを判別するものである。人物位置取得部21は、例えば、画像データにビオラ−ジョーンズ法を適用した後、顔であると判別された小領域の位置や大きさから、画像データ(撮像された画像)の座標軸で表される顔の中心位置や顔の大きさを求めることができる。
人物位置取得部21は、画像データから複数の人物を検出した場合には、検出された複数の人物のそれぞれについて位置を取得する。
また、人物位置取得部21は、例えば一定時間ごとに取得される各画像データから人物の位置を検出することにより、人物の位置を継続的に取得する。この場合、人物位置取得部21は、画像データに複数の人物が含まれる場合、各人物を識別し、識別された各人物の位置を継続的に取得して記録してもよい。
手位置取得部22は、手の位置を取得する。本例では、手位置取得部22は、画像取得装置11が取得した2つの画像データから、人物の手(具体的には手の像)を検出し、その3次元位置を取得する。具体的には、手位置取得部22は、人物位置取得部21と同様に、2つの画像データにおける人物の手の位置を検出し、三角測量の原理を利用して手の3次元位置を取得する。
画像中からの人物の手の位置の検出は、例えば、画像データから肌色の領域を抜き出すか輝度勾配が極大となる点を抜き出すことにより物体の輪郭を抜き出した後、テンプレートマッチング法等により物体の輪郭が手に類似するか否かを判断することにより行うことができる。あるいは、手の位置の取得の簡易化や高精度化を図る観点より、手位置取得部22は、画像データから、ユーザ(または人物)が手に持つか装着している物体または装置の位置を手の位置として検出してもよい。ユーザが手に持つ物体としては、リモコン(例えばテレビリモコン)のような形状の指示器が考えられる。また、ユーザが装着する物体としては、手袋や、指輪、腕輪のような形状のものが考えられる。例えば、表面が特定の色や特定のパターンを有している物体または装置をユーザが手に装着する場合は、手位置取得部22は、画像データから当該特定の色やパターンの領域を抽出し、その位置を手の位置として検出することができる。
手位置取得部22は、画像データから複数の手を検出した場合には、検出された複数の手のそれぞれについて位置を取得する。
また、手位置取得部22は、例えば一定時間ごとに取得される各画像データから手の位置を検出することにより、手の位置を継続的に取得する。この場合、手位置取得部22は、画像データに複数の手が含まれる場合、各手を識別し、識別された各手の位置を継続的に取得して記録してもよい。
操作領域設定部23は、人物位置取得部21の取得結果に基づき、人物の前方に仮想的な操作領域(または操作空間)を設定する。具体的には、操作領域設定部23は、人物位置取得部21が取得した人物の位置の前方に、当該人物に対応する操作領域を設定する。操作領域は、実空間内に割り当てられる領域である。概略的には、操作領域内に手が入れられると入力情報の取得が開始され、操作領域内での手の位置または動きを基に入力情報が取得される。
操作領域設定部23は、人物位置取得部21により複数の人物の位置が検出された場合は、当該複数の人物のそれぞれについて操作領域を設定する。
図4には、操作領域設定部23により設定される操作領域R1の一例が示されている。図4において、操作領域R1は、人物Aの前方の直方体状の領域である。操作領域は、人物が自然に手を前に伸ばしたときに、手が操作領域内に含まれるように設定されることが望ましい。操作領域の詳細な設定方法、および操作領域の形状の別様態については後述する。
基準領域設定部24は、人物位置取得部21の取得結果に基づき、人物に対して所定の位置に仮想的な基準領域(または基準空間)を設定する。基準領域は、操作領域と同様に、実空間内に割り当てられる領域である。本例では、基準領域は、人物位置取得部21が検出した人物の位置の近傍に設定され、手が操作領域に接触するまでの当該手の位置変化が、手を前に出す動きに対応したものであるかを判別するために利用される。なお、2人の人物が近接して存在する場合、基準領域設定部24は、2人の人物の基準領域を互いに重ならないように設定してもよい。この場合、具体的には、2人の顔の中心位置の中間地点で基準領域を分離したり、2人の顔の大きさの比に応じた地点で基準領域を分離したりするとよい。
基準領域設定部24は、人物位置取得部21により複数の人物の位置が検出された場合は、当該複数の人物のそれぞれについて基準領域を設定する。
図5には、基準領域設定部24により設定される基準領域R2の一例が示されている。図5において、基準領域R2は、人物Aの両肩の位置を含むように、また人物Aの前方を向くように設定されている。より具体的には、基準領域R2は、人物Aの前後方向に対して垂直な、人物Aの中心と両肩の位置を通過し、人物Aの肩幅よりやや広い幅を持つ長方形状の平面領域である。基準領域は、人物が自然に手を前に伸ばした際の手の動きの方向を直線で示したとき、当該直線が基準領域を通過するように設定される。例えば、基準領域は、人物が自然に手を前に伸ばしたとき、基準領域側から操作領域に向けて手が移動するように設定される。
入力情報取得部25は、手位置取得部22の取得結果に基づき、第1および第2の手が同時または時間差をもって操作領域に接触した場合に、操作領域に接触する際の第1および第2の手の動きの方向を示す第1および第2の方向線をそれぞれ求め、第1および第2の方向線がいずれも操作領域に対応する人物に対して設定された基準領域を通過し、かつ第1および第2の方向線が操作領域に対応する人物(または人物の位置)に対して対称性を有すると判定したとき、第1および第2の手の位置または動きに基づく入力情報の取得を開始する。本例では、入力情報取得部25は、以下のように構成される。
入力情報取得部25は、入力情報の取得が行われていない場合に、ある1つの手(第1の手)が操作領域に接触したと判定した場合、操作領域に接触する際の当該1つの手の動きの方向を示す方向線(第1の方向線)を求め、当該方向線が操作領域に対応する人物に対して設定された基準領域を通過するか否かを判定する。そして、通過すると判定したとき、当該1つの手の位置または動きに基づく入力情報の取得を開始する。その後、1つの手(第1の手)の位置または動きに基づく入力情報の取得が行われている場合に、別の手(第2の手)が操作領域に接触したと判定した場合、操作領域に接触する際の当該別の手の動きの方向を示す方向線(第2の方向線)を求め、当該方向線が操作領域に対応する人物に対して設定された基準領域を通過するか否か、および上記2つの手の方向線(第1および第2の方向線)が操作領域に対応する人物に対して対称性を有するか否かを判定する。そして、別の手の方向線が基準領域を通過し、かつ2つの方向線が対称性を有すると判定したとき、上記2つの手(第1および第2の手)の位置または動きに基づく入力情報の取得を開始する。一方、基準領域を通過しないか、または対称性を有しないと判定したときには、2つの手による入力情報の取得を開始せずに、1つの手(第1の手)による入力情報の取得を維持する。
また、入力情報取得部25は、入力情報の取得が行われていない場合に、2つの手(第1および第2の手)が同時に操作領域に接触したと判定した場合、操作領域に接触する際の2つの手の動きの方向を示す2つの方向線(第1および第2の方向線)をそれぞれ求め、2つの方向線が操作領域に対応する人物に対して設定された基準領域を通過するか否か、および2つの方向線が操作領域に対応する人物に対して対称性を有するか否かを判定する。そして、2つの方向線がいずれも基準領域を通過し、かつ2つの方向線が対称性を有すると判定したとき、2つの手の位置または動きに基づく入力情報の取得を開始する。一方、基準領域を通過しないか、または対称性を有しないと判定したときには、2つの手による入力情報の取得を開始しない。
入力情報の取得が行われていない場合に3つ以上の手が同時に操作領域に接触した場合や、1つの手による入力情報の取得が行われている場合にさらに2つ以上の手が同時に操作領域に接触した場合には、例えば、入力情報取得部25は、操作領域に接触した3つ以上の手の中から2つの手を第1および第2の手として選んだ組み合わせの中に、「第1および第2の方向線がいずれも基準領域を通過し、かつ第1および第2の方向線が操作領域に対応する人物に対して対称性を有する」という上記条件を満たす組み合わせがあるときには、当該組み合わせに係る2つの手による入力情報の取得を開始し、そのような組み合わせがないときには、2つの手による入力情報の取得を開始しない。
入力情報取得部25は、2つの手(第1および第2の手)の位置または動きに基づく入力情報の取得を行っている場合に、2つの手が同時に操作領域から離れたと判定したときには、2つの手の位置または動きに基づく入力情報の取得を終了し、2つの手のうちの一方の手が操作領域から離れたと判定したときには、2つの手の位置または動きに基づく入力情報の取得を終了し、2つの手のうちの他方の手の位置または動きに基づく入力情報の取得を開始する。
手が操作領域に接触したか否かを判定する際、入力情報取得部25は、手の位置が操作領域外から操作領域内に移動したときに、手が操作領域に接触したと判定する。あるいは、入力情報取得部25は、手の位置が操作領域外から操作領域内に移動した後、一定期間操作領域内に存在したときに、手が操作領域に接触したと判定してもよい。
また、手が操作領域から離れたか否かを判定する際、入力情報取得部25は、手の位置が操作領域内から操作領域外に移動したときに、手が操作領域から離れたと判定する。あるいは、入力情報取得部25は、手の位置が操作領域内から操作領域外に移動した後、一定期間操作領域外に存在したときに、手が操作領域から離れたと判定してもよい。
基準領域は、手が人物側から操作領域に向かう方向に移動して操作領域に接触した場合に、当該手の方向線が基準領域を通過するように設定される。
方向線は、手が操作領域に接触する際の一定期間における当該手の位置の変化を示す有向線分の終点を終点とし、当該有向線分の始点方向に延びる直線であり、半直線または線分である。
対称性の判定において、入力情報取得部25は、第1および第2の方向線の終点の中間点(または中心点)と、操作領域に対応する人物の所定の位置とを結ぶ直線、または当該直線を含む平面に対して、第1および第2の方向線が対称性を有するか否かを判定する。人物の所定の位置は、例えば、人物位置取得部21により取得された人物の位置、人物の中心点、または人物の顔の中心座標である。
複数の人物のそれぞれに対して操作領域および基準領域が設定されている場合には、入力情報取得部25は、各操作領域について上記の処理を行う。
図3の例では、入力情報取得部25は、接触判定部31、方向線算出部32、通過判定部33、算出タイミング決定部34、座標算出部35、中心線算出部36、および対称性判定部37を含む。
接触判定部31は、人物の手が操作領域に接触しているか否かを判定する。例えば、接触判定部31は、手位置取得部22が取得した手の位置が、操作領域設定部23が設定した操作領域内に含まれているか否かを判断し、含まれている場合に接触していると判定し、含まれていない場合には接触していないと判定する。あるいは、接触判定部31は、手の位置が操作領域内に含まれている状態が一定時間(例えば1秒)継続したとき、手が操作領域に接触していると判定し、手の位置が操作領域内に含まれていない状態が一定時間継続したとき、手が操作領域に接触していないと判定し、手の位置が操作領域内に含まれている状態や含まれていない状態の継続時間が一定時間に満たない場合は、それ以前の判定結果を維持するようにしてもよい。これにより、意図しない瞬間的な手の接触などによる誤操作を抑制することができる。
また、複数の手の位置が取得されている場合や、複数の操作領域が設定されている場合は、接触判定部31は、手の位置と操作領域との全ての組み合わせに対して、手の位置が操作領域内に含まれているか否か、または手が操作領域に接触しているか否かの判定を行う。
接触判定部31は、その判定結果が非接触から接触に変化した場合に、人物の手が操作領域に接触したと判定してもよく、また、その判定結果が接触から非接触に変化した場合に、人物の手が操作領域から離れたと判定してもよい。
方向線算出部32は、手が操作領域に接触する際の(または接触するまでの)手の動きの方向を示す方向線を算出する。例えば、方向線算出部32は、接触判定部31により手が操作領域に接触したと判定された場合に、その接触時点までの一定期間における当該手の位置に基づいて当該手の方向線を算出する。方向線は、例えば、手が操作領域に接触した位置を終点とし、手が操作領域に接触した時点よりも一定時間(例えば0.5秒)前の手の位置を通過する半直線である。あるいは、方向線算出部32は、手が操作領域に接触した位置を終点とする半直線であり、手が操作領域に接触するまでの一定期間における各時点(例えば接触時点の0.1秒前から1秒前までの0.1秒ごとの時点)での手の位置との距離の二乗の合計が最小となる半直線を方向線として算出してもよい。
方向線算出部32は、接触判定部31により複数の手が操作領域に接触したと判定された場合は、当該複数の手のそれぞれに対して方向線の算出を行う。
なお、方向線算出部32は、接触判定部31の判定結果によらず、手位置取得部22により取得された全ての手について方向線を算出してもよい。
通過判定部33は、方向線算出部32により算出された方向線が基準領域設定部24により設定された基準領域を通過するか(または基準領域に交差するか)を判定する。このとき、複数の方向線が算出されている場合や、複数の基準領域が設定されている場合は、通過判定部33は、方向線と基準領域との全ての組み合わせに対して、方向線が基準領域を通過するか否かの判定を行う。
算出タイミング決定部34は、後述する座標算出部35による2次元座標の算出の開始および終了を決定する。座標算出部35による2次元座標の算出の開始および終了は、ユーザによる情報入力またはジェスチャ入力の開始および終了を意味する。
算出タイミング決定部34は、接触判定部31により手が操作領域に接触したと判定され、かつ通過判定部33により当該手の方向線が基準領域を通過していると判定された場合であって、さらに当該操作領域と当該基準領域とが同一の人物に対して設定されたものである場合に、座標算出部35による当該手の3次元位置に基づく2次元座標の算出の開始を決定する。
また、算出タイミング決定部34は、1つの手の3次元位置に基づく1つの2次元座標の算出が行われている場合に、接触判定部31により別の手が操作領域に接触したと判定され、かつ通過判定部33により当該別の手の方向線が基準領域を通過していると判定された場合であって、さらに当該操作領域と当該基準領域とが同一の人物に対して設定されたものである場合に、後述する中心線算出部36に上記2つの手(1つの手および別の手)に係る中心線を算出させる。そして、中心線算出部36により算出された中心線に基づき、後述する対称性判定部37により上記2つの手の方向線が対称性を有すると判定されたときに、座標算出部35による上記別の手の3次元位置に基づく2次元座標の算出の開始を決定する。
また、算出タイミング決定部34は、接触判定部31により同時に2つの手が操作領域に接触したと判定され、かつ通過判定部33により当該2つの手の方向線が同一の基準領域を通過していると判定された場合であって、さらに当該操作領域と当該基準領域とが同一の人物に対して設定されたものである場合に、後述する中心線算出部36に上記2つの手に係る中心線を算出させる。そして、中心線算出部36により算出された中心線に基づき、後述する対称性判定部37により上記2つの手の方向線が対称性を有すると判定されたときに、座標算出部35による上記2つの手の3次元位置に基づく2つの2次元座標の算出の開始を決定する。
また、算出タイミング決定部34は、2つの手の3次元位置に基づく2つの2次元座標の算出が行われている場合に、接触判定部31により上記2つの手の両方が操作領域から離れたと判定されたときには、座標算出部35による2次元座標の算出の終了を決定する。一方、接触判定部31により上記2つの手のうちの1つの手が操作領域から離れたと判定されたときには、座標算出部35による当該1つの手の3次元位置に基づく2次元座標の算出の終了を決定し、残りの1つの手の3次元位置に基づく2次元座標の算出を維持する。
また、算出タイミング決定部34は、1つの手の3次元位置に基づく1つの2次元座標の算出が行われている場合に、接触判定部31により上記1つの手が操作領域から離れたと判定されたときには、座標算出部35による2次元座標の算出の終了を決定する。
中心線算出部36は、算出タイミング決定部34からの指示に応じて、操作領域に接触した2つの手の方向線の終点の中間点と、操作領域に対応する人物の中心点とを結ぶ中心線を算出する。具体的には、図6に示すように、中心線算出部36は、2つの手の方向線L1,L2の終点H1E,H2Eの中間点Cを終点とし、人物位置取得部21で得られた人物Aの顔の中心位置Pを通過する半直線を中心線LCとして算出する。
対称性判定部37は、中心線算出部36で中心線が算出された場合に、方向線算出部32で得られた上記2つの手の方向線の当該中心線に対する対称性を判定する。例えば、対称性判定部37は、図7に示すように、中心線算出部36で算出された中心線LCを含み上下方向に延びる平面SCを設定し、方向線L1をその終点H1Eから基準領域R2との交差位置までの間でN等分(Nは2以上の整数)するN個の点H1n(n=1,2,…,N)と、方向線L2をその終点H2Eから基準領域R2との交差位置までの間でN等分するN個の点H2n(n=1,2,…,N)とを求め、点H1nと点H2nとを結ぶ直線と平面SCとの交点In(n=1,2,…,N)を求め、交点Inと点H1nとの距離D1nと、交点Inと点H2nとの距離D2nとを求め、距離D1nと距離D2nとを比較することで2つの方向線L1,L2が平面SCに対して概略対称となっているか否かを判定する。例えば、距離D1nと距離D2nとの差の二乗の合計Sが所定閾値以下である場合に対称性があると判定し、所定閾値より大きい場合には対称性がないと判定する。合計Sは、下記式により表される。
S=(D11−D21)2+(D12−D22)2+…+(D1N−D2N)2
なお、対称性判定部37は、上記以外の方法で対称性を判定してもよい。例えば、対称性判定部37は、第1および第2の方向線のそれぞれと中心線とのなす角の角度を利用して対称性を判定してもよい。具体的には、第1の方向線と中心線とのなす角の角度と、第2の方向線と中心線とのなす角の角度との差を求め、差が所定閾値以下である場合に対称であると判定してもよい。また、距離と角度とを組み合わせて利用して、対称性を判定してもよい。
座標算出部35は、操作領域内の手の3次元位置を基に2次元座標の算出を行う。座標算出部35による座標の算出は、操作領域内の手の3次元座標を所定の2次元座標系に射影することにより行うことができる。所定の2次元座標系は、例えば、当該手が接触した操作領域を基準とする2次元座標系、または当該手が接触した操作領域に対応する人物の位置を基準とする2次元座標系である。
例えば、図8に示すように、座標算出部35は、操作領域R1内に定義された2本のベクトルu、vにより張られる平面に対して、手の3次元座標を投影した際の座標を、当該2本のベクトルu、vを基底とする座標系における座標値として算出する。
座標算出部35は、算出タイミング決定部34により2つの手の3次元位置に基づく2つの2次元座標の算出の開始が決定された場合には、操作領域内の2つの手の3次元位置を基に2つの2次元座標を算出し、算出タイミング決定部34により1つの手の3次元位置に基づく1つの2次元座標の算出の開始が決定された場合には、操作領域内の1つの手の3次元位置を基に1つの2次元座標を算出する。
座標算出部35によって算出された1つまたは2つの2次元座標は、表示制御装置13に対して出力される。表示制御装置13は、例えば、1つの2次元座標を受けた場合には、当該1つの2次元座標を用いて表示装置14でのポインティング位置(またはカーソル位置)や番組表等の選択位置を移動させ、2つの2次元座標を受けた場合には、当該2つの2次元座標を用いて表示装置14に表示される番組表等の画像を拡大または縮小する。
(処理の流れ)
図9〜図12は、本実施の形態における入力装置12の処理の一例を示すフローチャートである。以下、図9〜図12を参照して、本実施の形態における入力装置12の処理を説明する。
以下に説明する一連の処理は、一定のタイミングごとに実行される。例えば、画像取得装置11が画像データを取得するタイミング(例えば1/30秒に1回)にあわせて、1/30秒に1回実行される。
また、ここでは、入力装置12は、人物に関するデータを保持する人物テーブルと、手に関するデータを保持する手テーブルとを有する。
図13は、人物テーブルを示す。人物テーブルには、人物を識別するための識別情報である人物ID、当該人物の位置、当該人物の操作領域、当該人物の基準領域、当該人物によるジェスチャ入力の開始を示す開始フラグ、ジェスチャ入力を行う手の手ID、およびジェスチャ入力を行う手の方向線が互いに対応付けて記録される。開始フラグは、「0」または「1」のいずれかの値をとり、「0」は開始されていないことを示し、「1」は開始されたことを示す。開始フラグの初期値は「0」である。図13において、例えばM1(T)は、人物ID「M1」の人物の現在の3次元座標値である。
図14は、手テーブルを示す。手テーブルには、手を識別するための識別情報である手IDと、当該手の位置と、当該手の方向線とが互いに対応付けて記録される。手の位置は、現在までの位置が時系列的に記録される。図14において、例えばH1(T)は手ID「H1」の手の現在の3次元座標値であり、H1(T−N)は手ID「H1」の手のN回前の3次元座標値である。
図9を参照すると、まず、入力装置12は、画像取得装置11から画像データを取得し(S1)、取得した画像データから人物を検出し、検出された人物の位置を取得する(S2)。
具体的には、入力装置12は、検出された人物それぞれについて、当該人物のデータが既に人物テーブルに登録されているか否かを判断し、登録されていない場合は、当該人物に人物IDを割り当て、当該人物の人物IDと位置とを人物テーブルに新規に登録する。一方、既に登録されている場合には、人物テーブルにおいて当該人物の位置を更新する。上記の判断は、例えば、今回取得された人物の位置と、人物テーブルに登録されている各人物の位置との位置関係に基づいてなされる。具体的には、入力装置12は、人物テーブルにおいて、今回検出された人物の位置からの距離が所定閾値以下である人物の位置が登録されているかを判断し、登録されていない場合には今回検出された人物のデータを新規登録し、登録されている場合には、人物テーブルに登録されている人物の位置のうち今回検出された人物の位置から最も近い人物の位置を、今回検出された位置によって更新する。ただし、入力装置12は、上記以外の方法で判断してもよく、例えば、画像データから各人物の特徴を抽出し、各人物の特徴を人物テーブルに記録しておき、今回検出された人物の特徴と人物テーブルに記録されている各人物の特徴との類似度に基づいて判断してもよい。
また、入力装置12は、人物テーブルに登録されている人物のデータのうち、今回検出されなかった人物のデータ、すなわち位置が更新されなかった人物のデータを、人物テーブルから削除する。
次に、入力装置12は、ステップS2で人物の位置が取得されたか否かを判断し(S3)、人物の位置が取得されなかった場合は(S3:N)、処理を終了する。
一方、1人以上の人物の位置が取得された場合は(S3:Y)、入力装置12は、取得した人物の位置それぞれに対して、操作領域を設定するとともに(S4)、基準領域を設定する(S5)。具体的には、入力装置12は、人物テーブルに登録されている人物の人物IDのそれぞれに対応付けて、当該人物に対して設定された操作領域および基準領域を記録する。
次に、入力装置12は、ステップS1で取得した画像データから人物の手を検出し、検出された手の位置を取得する(S6)。
具体的には、入力装置12は、検出された手それぞれについて、当該手のデータが既に手テーブルに登録されているか否かを判断し、登録されていない場合は、当該手に手IDを割り当て、当該手の手IDと位置とを手テーブルに新規登録する。一方、既に登録されている場合には、手テーブルにおいて、当該手の位置の時系列データに今回取得された手の位置を追加する。上記の判断は、例えば、今回取得された手の位置と、手テーブルに登録されている各手の位置との位置関係に基づいてなされる。具体的には、入力装置12は、手テーブルにおいて、今回検出された手の位置からの距離が所定閾値以下である手の位置が登録されているかを判断し、登録されていない場合には今回検出された手のデータを新規登録し、登録されている場合には、手テーブルに登録されている手の位置のうち今回検出された手の位置から最も近い手の位置を、今回検出された位置によって更新する。ただし、入力装置12は、上記以外の方法で判断してもよく、例えば、画像データから各手の特徴を抽出し、各手の特徴を手テーブルに記録しておき、今回検出された手の特徴と手テーブルに記録されている各手の特徴との類似度に基づいて判断してもよい。
また、手テーブルに登録されている手のデータうち、今回検出されなかった手のデータ、すなわち位置が追加されなかった手のデータを、手テーブルから削除する。
次に、入力装置12は、一定時間以上位置を取得した手が存在するか否かを判断し(S7)、そのような手が存在する場合(S7:Y)、そのような手のすべてに対して方向線を求める(S8)。具体的には、入力装置12は、手テーブルにおいて位置データが所定数以上登録されている手が存在する場合に、そのような手のそれぞれについて、方向線を求めて手テーブルに登録する。例えば、今回取得した手の位置(方向線の終点)と0.5秒前の手の位置(方向線が通過する点)とを、方向線を示すデータとして手テーブルに登録する。一方、一定時間以上位置を取得した手が1つも存在しない場合は(S7:N)、処理を終了する。
上記ステップS8の後、処理はステップS9に進む。ステップS9以降の処理は、ステップS2で位置が取得された人物、すなわち人物テーブルに登録されている人物のそれぞれについて行われる。
ステップS9では、入力装置12は、処理対象の人物(以下、「対象人物」と称する)がすでにジェスチャ入力を開始しているかを判断する。具体的には、人物テーブルにおいて、対象人物の開始フラグが「0」であれば開始していないと判断し、「1」であれば開始していると判断する。
ジェスチャ入力を開始していない場合は(S9:N)、入力装置12は、処理を図10のステップS11に進め、次のようにジェスチャ入力を開始するか否かの判断を行う。
まず、入力装置12は、対象人物に対して設定された操作領域に手が触れているかを判断する(S11)。具体的には、人物テーブルに記録されている対象人物の操作領域と、手テーブルに記録されている各手の現在の位置とに基づいて、操作領域に触れている手が存在するかを判断する。
操作領域に触れている手が存在しない場合は(S11:N)、処理を終了する。一方、操作領域に触れている手が存在する場合は(S11:Y)、入力装置12は、操作領域に触れている1以上の手のそれぞれについて、当該手に対して算出された方向線が、対象人物に対して設定された基準領域に交差しているかを判定し、基準領域に交差している方向線が存在するかを判断する(S12)。
基準領域に交差している方向線が存在しない場合は(S12:N)、処理を終了する。一方、基準領域に交差している方向線が存在する場合(S12:Y)、入力装置12は、基準領域に交差している方向線が1つか否かを判断する(S13)。
基準領域に交差している方向線が1つである場合(S13:Y)、入力装置12は、対象人物の片手によるジェスチャ入力を開始し(S14)、当該1つの方向線に対応する1つの手の3次元座標から1つの2次元座標を算出し(S15)、処理を終了する。ステップS14では、入力装置12は、人物テーブルにおける対象人物のデータにおいて、開始フラグを「1」に設定し、当該1つの方向線に対応する1つの手の手IDをジェスチャ入力を行う手の手IDとして登録し、当該1つの方向線をジェスチャ入力を行う手の方向線として登録する。
基準領域に交差している方向線が2つ以上である場合(S13:N)、入力装置12は、基準領域に交差している方向線が2つか否かを判断する(S16)。
基準領域に交差している方向線が2つである場合(S16:Y)、入力装置12は、当該2つの方向線の終点の中間点と対象人物の位置とを結ぶ中心線を算出し(S17)、当該2つの方向線が中心線に対して対称であるか否かを判断する(S18)。
2つの方向線が対称である場合(S18:Y)、入力装置12は、当該2つの方向線に対応する2つの手が対象人物の両手であると判断し、対象人物の両手によるジェスチャ入力を開始し(S19)、当該2つの方向線に対応する2つの手の3次元座標から2つの2次元座標を算出し(S20)、処理を終了する。ステップS19では、入力装置12は、人物テーブルにおける対象人物のデータにおいて、開始フラグを「1」に設定し、当該2つの方向線に対応する2つの手の手IDをジェスチャ入力を行う手の手IDとして登録し、当該2つの方向線をジェスチャ入力を行う手の方向線として登録する。
一方、2つの方向線が対称でない場合(S18:N)、入力装置12は、当該2つの方向線に対応する2つの手の中から1つの手を選択し(S21)、対象人物の片手によるジェスチャ入力を開始し(S14)、選択された1つの手の3次元座標から1つの2次元座標を算出し(S15)、処理を終了する。ステップS21では、例えば、手テーブルに記録されている過去の手の位置を参照して、2つの手のうち対象人物の手である可能性が高い方の1つの手を選択する。また、ステップS14では、人物テーブルにおける対象人物のデータにおいて、開始フラグを「1」に設定し、ステップS21で選択された1つの手の手IDをジェスチャ入力を行う手の手IDとして登録し、当該1つの手の方向線をジェスチャ入力を行う手の方向線として登録する。
基準領域に交差している方向線が3つ以上である場合(S16:N)、入力装置12は、処理を終了する。
図9のステップS9において、対象人物がすでにジェスチャ入力を開始していると判断された場合は(S9:Y)、入力装置12は、対象人物の両手によるジェスチャ入力が行われているか否かを判断する(S10)。具体的には、人物テーブルにおける対象人物のデータにおいて、2つの手IDが登録されていれば両手によるジェスチャ入力が行われていると判断し、1つの手IDが登録されていれば片手によるジェスチャ入力が行われていると判断する。
両手によるジェスチャ入力が行われている場合(S10:Y)、入力装置12は、図11のステップS31に進み、対象人物に対して設定された操作領域に、ジェスチャ入力を行う2つの手がいずれも触れているかを判断する。
操作領域に2つの手が触れている場合(S31:Y)、入力装置12は、当該2つの手の3次元座標から2つの2次元座標を算出し(S32)、処理を終了する。一方、操作領域に2つの手が触れていない場合(S31:N)、入力装置12は、ジェスチャ入力を行う2つの手のうちの1つの手が操作領域に触れているかを判断する(S33)。
操作領域に1つの手が触れている場合(S33:Y)、入力装置12は、対象人物の両手によるジェスチャ入力を終了して片手によるジェスチャ入力を開始し(S34)、操作領域に触れている1つの手の3次元座標から1つの2次元座標を算出し(S35)、処理を終了する。ステップS34では、人物テーブルにおける対象人物のデータにおいて、操作領域から離れた手の手IDおよび方向線を消去する。
操作領域に1つの手が触れていない場合(S33:N)、入力装置12は、対象人物によるジェスチャ入力を終了し(S36)、処理を終了する。この場合、人物テーブルにおける対象人物のデータにおいて、開始フラグを「0」に戻し、登録されている手IDおよび方向線をすべて消去する。
図9のステップS10において、片手によるジェスチャ入力が行われていると判断された場合(S10:N)、入力装置12は、図12のステップS41に進み、対象人物に対して設定された操作領域に、ジェスチャ入力を行う1つの手が触れているかを判断する。
操作領域に1つの手が触れていない場合(S41:N)、入力装置12は、対象人物によるジェスチャ入力を終了し(S42)、処理を終了する。この場合、人物テーブルにおける対象人物のデータにおいて、開始フラグを「0」に戻し、登録されている手IDおよび方向線をすべて消去する。一方、操作領域に1つの手が触れている場合(S41:Y)、入力装置12は、操作領域に別の手が触れているかを判断する(S43)。
操作領域に触れている別の手が存在しない場合は(S43:N)、入力装置12は、ジェスチャ入力を行う1つの手の3次元座標から1つの2次元座標を算出し(S44)、処理を終了する。
操作領域に触れている別の手が存在する場合は(S43:Y)、入力装置12は、操作領域に触れている1以上の別の手のそれぞれについて、当該手に対して算出された方向線が、対象人物に対して設定された基準領域に交差しているかを判定し、基準領域に交差している方向線が1つだけ存在するかを判断する(S45)。
基準領域に交差している方向線が存在しないか、または2つ以上存在する場合は(S45:N)、入力装置12は、ジェスチャ入力を行う1つの手の3次元座標から1つの2次元座標を算出し(S44)、処理を終了する。
基準領域に交差している方向線が1つだけ存在する場合(S45:Y)、入力装置12は、当該1つの方向線および既にジェスチャ入力を行っている手の方向線の終点の中間点と対象人物の位置とを結ぶ中心線を算出し(S46)、当該2つの方向線が中心線に対して対称であるか否かを判断する(S47)。
2つの方向線が対称でない場合(S47:N)、入力装置12は、ジェスチャ入力を行う1つの手の3次元座標から1つの2次元座標を算出し(S44)、処理を終了する。
2つの方向線が対称である場合(S47:Y)、入力装置12は、当該2つの方向線に対応する2つの手が対象人物の両手であると判断し、対象人物の両手によるジェスチャ入力を開始し(S48)、当該2つの方向線に対応する2つの手(すなわち既にジェスチャ入力を行っている手および新たに操作領域に触れた手)の3次元座標から2つの2次元座標を算出し(S49)、処理を終了する。ステップS48では、入力装置12は、人物テーブルにおける対象人物のデータにおいて、新たに操作領域に触れた手の手IDをジェスチャ入力を行う手の手IDとして追加登録し、当該手の方向線をジェスチャ入力を行う手の方向線として追加登録する。
なお、上記の処理は、以下のように変更されてもよい。
図10のステップS16において、基準領域に交差している方向線が3つ以上であると判断された場合(S16:N)、当該3つ以上の方向線の中から2つの方向線を選んだ組み合わせの全てについて、中心線を算出し(S17)、2つの方向線が中心線に対して対称であるか否かを判断する(S18)。そして、対称であると判断された組み合わせが存在する場合、対象人物の両手によるジェスチャ入力を開始し(S19)、当該組み合わせに係る2つの方向線に対応する2つの手の3次元座標から2つの2次元座標を算出し(S20)、処理を終了する。一方、対称であると判断された組み合わせが存在しない場合、上記3つ以上の方向線に対応する3つ以上の手の中から1つの手を選択し(S21)、対象人物の片手によるジェスチャ入力を開始し(S14)、選択された1つの手の3次元座標から1つの2次元座標を算出し(S15)、処理を終了する。
図12のステップS45において、基準領域に交差している方向線が2つ以上存在すると判断された場合(S45:N)、当該2つ以上の方向線から選択される1つの方向線と既にジェスチャ入力を行っている1つの手の方向線との組み合わせの全てについて、中心線を算出し(S46)、2つの方向線が中心線に対して対称であるか否かを判断する(S47)。そして、対称であると判断された組み合わせが存在する場合、対象人物の両手によるジェスチャ入力を開始し(S48)、当該組み合わせに係る2つの方向線に対応する2つの手の3次元座標から2つの2次元座標を算出し(S49)、処理を終了する。一方、対称であると判断された組み合わせが存在しない場合、既にジェスチャ入力を行っている1つの手の3次元座標から1つの2次元座標を算出し(S44)、処理を終了する。
(操作領域の設定)
実施の形態1における操作領域設定部23が人物の位置を基に設定する操作領域について説明する。
操作領域は、例えば、図4に示すように、人物の前方に位置する直方体の領域である。この操作領域の位置および大きさの一例を図15および図16に示す。図15および図16は、それぞれ人物と操作領域との位置関係を示す上面図および側面図である。
なお、以下の説明では、人物Aの左右方向、上下方向、前後方向に平行な方向における寸法を、それぞれ、幅、高さ、奥行きと称する。
図15および図16において、操作領域R1は、幅W、高さHの長方形を、人物Aの位置Pから距離L1離れた位置から距離L2離れた位置まで、人物Aの前後方向に平行移動させてできる直方体である。この直方体は、幅W、高さH、および奥行き(L2−L1)を有する。
幅Wおよび高さHの値は、人物Aの位置Pから距離L1離れた位置に存在する幅W、高さHの長方形の全体に手が届くように設定されることが望ましい。例えば、幅Wは人物Aの肩幅よりもやや広い長さ、高さHは人物Aの頭頂から腰の位置までの長さである。また、例えば、操作領域R1は、人物Aの左右方向において操作領域R1の中心が人物Aの位置(例えば顔の中心位置)Pと一致するように、かつ人物Aの上下方向において操作領域R1の上端および下端がそれぞれ人物Aの頭頂および腰の位置と一致するように配置される。
また、距離L1は人物Aの手の長さより小さい値、距離L2は人物Aの手の長さより大きい値であることが望ましい。これにより、人物Aが自然に手を前に伸ばした場合に手が操作領域R1に触れることができる。
ここで、人物の肩幅や人物の頭頂から腰の位置までの長さ、さらに人物の手の長さは、あらかじめ人体の寸法に関する統計値などを参照して設定されていても良いし、あるいは、実際に操作を行う人物の寸法を取得しても良い。実際に操作を行う人物の寸法を取得する場合、例えば、画像データから人物の顔の大きさを取得し、統計値などから設定された顔の大きさと人物の寸法との相関を基に、人物の寸法を推定する。
また、入力装置12における操作領域や基準領域の設定等の処理において、人物の左右方向、上下方向、および前後方向は、例えば、画像データから取得される人物の姿勢や顔の向きなどから決定してもよいし、あらかじめ入力装置12や表示装置14の配置を基に設定してもよい。例えば、表示装置14の画面の左右方向を人物の左右方向、表示装置14の画面の上下方向を人物の上下方向、表示装置14の画面の法線方向を人物の前後方向と設定してもよい。
なお、操作領域の形状は、図4に示すような直方体に限られず、別の形状であっても良い。例えば、図17に示すように、操作領域R1として、直方体RCの両側に円筒状の立体の一部(すなわち部分円筒状の立体)RL,RRを組み合わせ、人物Aの体を囲むような形状の立体が設定されても良い。人物の手が届く範囲は、肩を中心とした円状の範囲であるため、円筒状の立体を操作領域に組み入れることで、全体に手が届きやすい操作領域を設定することができる。
(効果)
以上説明した本実施の形態1によれば、下記(1)〜(9)の効果が得られ得る。
(1)本実施の形態では、入力装置は、人物の前方に操作領域を設定するとともに、人物に対して所定の位置に仮想的な基準領域を設定し、第1および第2の手が同時または時間差をもって操作領域に接触した場合に、操作領域に接触する際の第1および第2の手の動きの方向を示す第1および第2の方向線をそれぞれ求め、第1および第2の方向線がいずれも操作領域に対応する人物に対して設定された基準領域を通過し、かつ第1および第2の方向線が操作領域に対応する人物に対して対称性を有すると判定したとき、第1および第2の手による入力情報の取得を開始する。これにより、ユーザの意図しない両手による情報入力の開始を抑制することができる。具体的には、第1および第2の手が特定の方向(手の方向線が基準領域を通過するような方向)に移動して操作領域に接触し、かつ第1および第2の手の方向線が人物に対して対称性を有する場合にのみ、両手による入力情報の取得を開始するので、ユーザが両手による入力を開始する意図が無いにも関わらず2つの手が操作領域に触れたために両手による情報入力や操作が開始されてしまうことを防ぐことができる。例えば、ユーザに対して設定された操作領域にユーザ以外の人物の両手または片手が触れたことによる両手入力の開始を防ぐことができる。また、ユーザの両手が当該ユーザの操作領域に偶然触れたことによる両手入力の開始を防ぐことができる。したがって、ユーザ以外の人物の手の動きの影響や、ユーザ自身の意図しない手の動きの影響を避けながら、ユーザの手の動きに基づいてユーザの両手による情報入力を適切に開始することができ、誤入力や誤操作を抑制することができる。
(2)入力装置は、第1の手が操作領域に接触したと判定した場合に、第1の方向線を求め、当該第1の方向線が操作領域に対応する人物に対して設定された基準領域を通過すると判定したとき、第1の手による入力情報の取得を開始し、その後、第2の手が操作領域に接触したと判定した場合に、第2の方向線を求め、当該第2の方向線が操作領域に対応する人物に対して設定された基準領域を通過し、かつ第1および第2の方向線が操作領域に対応する人物に対して対称性を有すると判定したとき、第1および第2の手による入力情報の取得を開始する。本態様によれば、片手による入力の開始と、片手による入力から両手による入力への切り替えを適切に行うことができる。
(3)入力装置は、第1および第2の手による入力情報の取得を行っている際に、第1および第2の手が同時に操作領域から離れたと判定した場合、第1および第2の手による入力情報の取得を終了し、第1および第2の手のうちの一方の手が操作領域から離れたと判定した場合には、第1および第2の手による入力情報の取得を終了し、第1および第2の手のうちの他方の手による入力情報の取得を開始する。本態様によれば、両手による入力の終了と、両手による入力から片手による入力への切り替えを適切に行うことができる。
(4)基準領域は、手が人物側から操作領域に向かう方向に移動して操作領域に接触した場合に、方向線が基準領域を通過するように設定される。本態様によれば、人物が手を前に出して操作領域に触れた場合に、情報入力を開始することができる。
(5)基準領域は、操作領域よりも人物の近傍に人物の前方を向くように設定される。この場合、手が操作領域に接触し、かつ方向線が基準領域を通過する場合、人物の動きは、手を前に出して操作領域に触れる動きである可能性が高い。このため、本態様によれば、人物が手を前に出して操作領域に触れる動作を検出し、当該動作により手が操作領域に接触した場合に、情報入力を開始することができる。
(6)方向線は、手が操作領域に接触する際の一定期間における当該手の位置の変化を示す有向線分の終点を終点とし、有向線分の始点方向に延びる直線である。本態様によれば、方向線が延びる方向を一方に制限することにより、方向線が双方向に無限に延びる直線である場合と比較して、ユーザの意図しない情報入力の開始をより確実に抑制することができる。
(7)入力装置は、対称性の判定において、第1および第2の方向線の終点の中間点と、操作領域に対応する人物の所定の位置とを結ぶ直線、または当該直線を含む平面に対して、第1および第2の方向線が対称性を有するか否かを判定する。本態様によれば、第1および第2の方向線の対称性を適切に判定することができる。これにより、同一人物の両手を適切に判定することができ、ユーザ以外の人物の手の動きによる影響を避けながら、ユーザの両手による入力を開始することができる。また、両手による自然な動作を検出して両手によるジェスチャ入力を開始することができる。
(8)入力装置は、人物の位置として、人物の顔の中心座標を取得する。この場合、人物の位置を容易に特定することができる。
(9)入力装置は、複数の基準領域を設定する場合、基準領域が互いに重ならないように複数の基準領域を設定する。これにより、例えば、2人の人物が近接して存在する場合に、一方の人物の基準領域に他方の人物の手の方向線が交差する可能性を抑えることができ、一方の人物の片手と他方の人物の片手との組み合わせにより一方の人物の両手による入力が誤って開始される可能性を抑えることができる。
以下、実施の形態2および3における入力装置について説明する。実施の形態2および3の入力装置は、実施の形態1の入力装置と一部を除いて同様であり、以下の説明では、実施の形態1と同様の部分については説明を省略または簡略化し、実施の形態1と同一または対応する要素については同一の符号を付す。
実施の形態2.
実施の形態2における入力装置12は、対称性の判定において実施の形態1と異なる方向線を用いる。
本実施の形態では、入力情報取得部25は、第1の手および第2の手がこの順に操作領域に接触した場合に、第2の手が操作領域に接触した時点(または現時点)における第1の手の位置と、第1の手が操作領域に接触した時点における第1の手の位置とが一定以上離れているとき、第2の手が操作領域に接触した時点(または現時点)における第1の手の位置を終点とし、第1の手が操作領域に接触した時点における第1の方向線と基準領域との交差位置の方向に延びる直線を第3の方向線として求め、対称性の判定において第1の方向線の代わりに第3の方向線を用いる。すなわち、入力情報取得部25は、対称性の判定に用いられる方向線を再計算する。
第3の方向線を求める際、人物の移動に応じて上記交差位置を補正してもよい。具体的には、入力情報取得部25は、上記交差位置の代わりに、第1の手が操作領域に接触した時点から第2の手が操作領域に接触した時点までの人物の所定の位置の移動方向および移動量に応じて交差位置を移動させた位置を用いてもよい。
なお、第1および第2の手が同時に操作領域に接触した場合には、入力情報取得部25は、実施の形態1と同様に、第1および第2の方向線を用いて対称性の判定を行う。
図18(A)、(B)は、人物A、操作領域R1、および基準領域R2の位置関係を示す上面図である。以下、図18(A)、(B)を参照して、実施の形態2における入力装置12の処理について説明する。図18(A)、(B)において、人物Aの前方には操作領域R1が設定されており、人物Aの背後に基準領域R2が設定されている。点PおよびP’は、人物Aの位置を示す。
図18(A)において、人物Aが右手を操作領域R1に向けて伸ばし、その右手が操作領域R1内の位置41に達した時点で、接触判定部31が、手が操作領域R1に接触したと判定したものとする。この場合、方向線算出部32は、位置41を終点とし、0.5秒前の人物Aの右手の位置である位置40を通る半直線を第1の方向線L1として算出する。第1の方向線L1は基準領域R2と位置42で交差している。算出タイミング決定部34は、1つの手(人物Aの右手)が操作領域R1に接触し、かつ第1の方向線L1が基準領域R2に交差し、さらに操作領域R1と基準領域R2とが同一の人物に対して設定されたものであるので、座標算出部35による当該1つの手の3次元位置に基づく1つの2次元座標の算出の開始を決定する。これにより、人物Aの右手によるジェスチャ入力が開始される。
次に、図18(B)において、人物Aは左手を操作領域R1に向けて伸ばし、その左手が操作領域R1内の位置44に達した時点で、接触判定部31が、手が操作領域R1に接触したと判定したものとする。この場合、方向線算出部32は、位置44を終点とし、0.5秒前の人物Aの左手の位置である位置43を通る半直線を第2の方向線L2として算出する。第2の方向線L2は基準領域R2と位置45で交差している。算出タイミング決定部34は、2つの手(人物Aの両手)が操作領域R1に接触し、かつ第1の方向線L1および第2の方向線L2が基準領域R2に交差し、さらに操作領域R1と基準領域R2とが同一の人物に対して設定されたものであるので、中心線算出部36に中心線の算出を行わせる。また、このとき、算出タイミング決定部34は、方向線算出部32に対して方向線の再計算を指示する。
人物Aの左手が位置44に達した時点において、人物Aの右手は操作領域R1内の位置48に移動しており、人物Aの位置は位置Pから位置P’に移動しているものとする。方向線算出部32は、算出タイミング決定部34から再計算の指示を受けると、位置48が位置41から一定以上(例えば手の幅の2倍以上)離れているかを判定し、一定以上離れている場合には、第3の方向線L3を算出する。第3の方向線L3は、位置48を終点とし、人物Aの右手が操作領域R1に接触した時点における第1の方向線L1と基準領域R2との交差位置42を通る半直線である。
中心線算出部36は、算出タイミング決定部34からの指示に応じて、方向線算出部32の算出結果に基づき、第3の方向線L3の終点(現在の右手の位置)48と第2の方向線L2の終点(現在の左手の位置)44との中間位置46を求め、この中間位置46を終点とし、現在の人物Aの位置P’を通る半直線を中心線LCとして算出する。
対称性判定部37は、方向線L2およびL3と中心線LCとの距離を一定の間隔ごとに計算して、方向線L2とL3とが中心線LCに対して対称か否かを判定する。算出タイミング決定部34は、対称性判定部37により方向線L2とL3とが対称と判定された場合、座標算出部35による2つの手の3次元位置に基づく2つの2次元座標の算出の開始を決定する。これにより、人物Aの両手によるジェスチャ入力が開始される。
上記の処理において、方向線算出部32は、上記第3の方向線L3の代わりに、次のように第3の方向線L3’を算出してもよい。方向線算出部32は、第1の方向線L1と基準領域R2との交差位置42を、人物Aの移動方向(位置Pから位置P’への方向)および移動量(位置Pと位置P’との距離)で補正して位置47を求め、位置48を終点とし、位置47を通る半直線を第3の方向線L3’として算出する。位置47は、具体的には、位置Pから位置P’への人物Aの移動ベクトルだけ位置42を移動させた位置である。
以上説明した本実施の形態によれば、第1の手の位置に応じた適切な方向線を算出することができ、対称性の判定を適切に行うことができる。
また、人物の動きに応じて交差位置を補正することにより、より適切な方向線を算出することができる。
実施の形態3.
本実施の形態では、入力装置12は、操作領域に接触した第1および第2の手の位置または動きに基づく入力情報の取得が行われている場合に、第1および第2の手の位置または動きが所定の条件を満たしたと判定したとき、第1および第2の手の位置または動きに応じた新たな操作領域を、現在設定されている上記操作領域に代えて設定する。あるいは、入力装置12は、第1および第2の手の位置または動きに基づいて、操作領域を異なる形状または異なる位置に再設定する。
ここでは、操作領域設定部23は、第1および第2の手が操作領域内で一定時間静止していると判定したとき、第1および第2の手の位置に応じた新たな操作領域を、上記操作領域に代えて設定する。例えば、操作領域設定部23は、人物の第1および第2の手の左右方向、上下方向、または前後方向の位置に基づいて、新たな操作領域の左右方向、上下方向、または前後方向の長さまたは位置をそれぞれ決定する。
図19および図20は、それぞれ人物の両手と操作領域との位置関係を示す上面図および側面図である。以下、図19および図20を参照して、実施の形態3における操作領域設定部23の処理について説明する。
図19および図20において、人物Aは、その前方の操作領域R1に向かって上下対角の位置に両手を出している。具体的には、人物Aは、左手HLを斜め上に、右手HRを斜め下に出している。
操作領域設定部23は、例えば座標算出部35の出力に基づき、人物Aの両手HL,HRが一定時間(例えば2秒)静止していたと判定すると、既に設定されている操作領域R1に代えて、人物Aに対して新しく操作領域R1nを設定する。このとき、操作領域設定部23は、図19のように、左手HLおよび右手HRの左右方向(または横方向)の位置から操作領域R1nの横幅Wnを設定する。より具体的には、左手HLおよび右手HRの左右方向の位置を操作領域R1nの左右方向の両端の位置に設定する。また、図20のように、左手HLおよび右手HRの上下方向の位置から操作領域R1nの高さHnを設定する。より具体的には、左手HLおよび右手HRの上下方向の位置を操作領域R1nの上下方向の両端の位置に設定する。
なお、上記の例では、人物Aと操作領域R1の端部との距離L1,L2を変更していないが、操作領域設定部23は、左手HLおよび右手HRの前後方向(または奥行き方向)の位置から操作領域R1nの奥行き(L2−L1)を設定してもよい。より具体的には、左手HLおよび右手HRの前後方向の位置を操作領域R1nの前後方向の両端の位置に設定してもよい。
また、操作領域の再設定を行うための検出時間は、上記の2秒に限定されず、任意に決めることができる。
さらに、上記の例では、2つの手が一定期間静止していることを条件として操作領域の再設定を行う構成を示したが、操作領域設定部23は、第1および第2の手の所定の動きを検出したときに、第1および第2の手の動きまたは位置に応じた新たな操作領域を、上記操作領域に代えて設定してもよい。例えば、操作領域設定部23は、2つの手が所定の形状(例えば四角形や円など)を描く動作を検出した場合に、検出した手の動きの軌跡に従って、2つの手が描いた形状に応じた形状(例えば四角柱や円柱などの形状)に、操作領域を再設定してもよい。
また、上記新たな操作領域(再設定された操作領域)は、いずれの手も操作領域に触れていない状態となったときに破棄されてもよいし、操作領域に手が触れているか否かに関わらず、一定の期間保持されてもよい。また、操作領域設定部23は、人物が移動した場合、人物の位置の移動量または移動方向にあわせて、新たな操作領域の位置を移動させてもよい。
以上説明した本実施の形態によれば、ユーザの手の位置または動きに基づいて操作領域を設定することができ、ユーザの利便性を向上させることができる。具体的には、ユーザは仮想的な操作領域を視認することはできず、表示装置14の表示を通して間接的にジェスチャ入力の結果を確認することになるが、本実施の形態によれば、ユーザが所望の範囲を操作領域として指定することができ、操作領域を視認できないことによる問題を軽減または回避することができる。また、ユーザは、指定した範囲内でジェスチャ入力を行うことができるので、空間上の絶対位置を目指してポインティングを行うことも可能となる。
なお、実施の形態3の構成は、実施の形態2における入力装置に適用されてもよい。
また、実施の形態1〜3において、入力装置12および表示制御装置13の機能は、それぞれ、電子回路などのハードウェア資源のみにより実現されてもよいし、ハードウェア資源とソフトウェアとの協働により実現されてもよい。ハードウェア資源とソフトウェアとの協働により実現される場合、入力装置12および表示制御装置13の機能は、例えば、情報処理プログラムがコンピュータにより実行されることによって実現される。より具体的には、入力装置12および表示制御装置13のそれぞれの機能は、ROM(Read Only Memory)等の記録媒体に記録された情報処理プログラムが主記憶装置に読み出されて中央処理装置(CPU:Central Processing Unit)により実行されることによって実現される。情報処理プログラムは、光ディスク等のコンピュータ読み取り可能な記録媒体に記録されて提供されてもよいし、インターネット等の通信回線を介して提供されてもよい。
また、本発明は、上記実施の形態に限定されるものではなく、本発明の要旨を逸脱しない範囲内において種々の態様で実施することができる。
例えば、上記の説明では、人物および手の3次元位置を取得する場合を例示したが、入力装置12は、人物の2次元位置や手の2次元位置を取得してもよい。2次元位置としては、例えば、水平面に平行な2次元座標系における座標がある。この場合でも、手の方向線が基準領域を通過するかや、手の方向線の対称性を判定することができる。
また、基準領域の位置や形状は、上記に限られず、どのような手の動きを情報入力開始のトリガとするかなどによって適宜決められればよい。例えば、操作領域と人物との間に基準領域を設定してもよいし、人物の後方のある程度離れた位置に基準領域を設定してもよい。また例えば、右手を左斜め前方に出す動きを開始のトリガとする場合には、人物の右斜め後方に基準領域を設定してもよい。
また、上記の説明では、方向線として主に半直線を例示したが、方向線は、他の種類の線であってもよく、基準領域の位置や形状などに応じて適宜決められればよい。例えば、方向線は、手が操作領域に接触するまでの手の位置の変化を示す有向線分の始点および終点を通って双方向に延びる直線であってもよいし、当該有向線分の終点から始点方向に延びる所定長さの線分であってもよい。
また、上記の説明では、複数の人物の位置が取得された場合に、当該複数の人物のそれぞれに対して操作領域および基準領域を設定する構成を例示したが、入力装置は、各人物の位置や特徴などに基づいて、複数の人物のうちの特定の人物(例えば1人の人物)に対して操作領域および基準領域を設定してもよい。
また、上記の説明では、入力情報として、手の3次元位置を基に2次元座標を算出する場合を例示したが、入力情報取得部25は、手の位置変化または動きに基づいてユーザのジェスチャまたは指示を認識し、認識されたジェスチャまたは指示を出力してもよい。
また、上記の説明では、1つの手が操作領域に触れ、かつ当該1つの手の方向線が基準領域を通過する場合に、当該1つの手による入力情報の取得を開始する構成を例示したが、入力装置は、1つの手による入力情報の取得を行わないように構成されてもよい。すなわち、入力装置は、少なくとも両手入力を受け付けるように構成されればよく、片手入力は省略されてもよい。
また、上記の説明では、入力装置を表示システムに利用する場合を例示したが、入力装置は、入力情報を他の種類の対象機器に出力してもよいし、入力情報に基づいて他の種類の対象機器の制御を行ってもよい。