<第1の実施形態>
以下、本発明の実施形態に係る情報処理装置、情報処理システム、情報処理プログラム、および、情報処理方法について説明する。第1の実施形態における情報処理装置は、カメラ(赤外線カメラ)によってユーザの手等の物体を撮像し、撮像画像に基づいてユーザの操作を判別するものである。
[1.携帯機器の構成]
まず、図1〜図5を参照して、情報処理装置の一例である携帯機器の構成の一例について説明する。図1は、第1の実施形態における携帯機器の一例の正面図である。図2は、携帯機器の一例の右側面図である。図3は、携帯機器の一例の背面図である。第1の実施形態において、携帯機器1は、ユーザが手で持って操作可能な携帯型(可搬型ということもできる)の情報処理装置である。携帯機器1は、例えば、携帯ゲーム機、携帯電話機、スマートフォン、タブレット端末、カメラ等の手持ち型の機器であってもよいし、腕時計型の端末等、ユーザが身に付けることが可能な端末であってもよい。
図1に示すように、携帯機器1は、ディスプレイ2と、タッチパネル3と、赤外線カメラ4と、測距センサ5と、入力ボタン6(6A〜6D)と、照射部7と、プロジェクタ8とを備え、これらはハウジング10に収納される。ハウジング10(携帯機器1)は、板状の形状であり、ユーザが片手又は両手で把持可能な大きさである。また、ハウジング10は、横長の形状である。
ディスプレイ2としては、例えば、液晶表示装置や有機EL表示装置等が用いられ、その他、任意の表示装置が用いられてもよい。ディスプレイ2の画面は、ハウジング10の正面(T5面)に露出するように設けられる。タッチパネル3は、ディスプレイ2の画面上に設けられ、ユーザによってタッチされた画面上の位置を検出する。タッチパネル3としては、1点検出が可能なものや多点検出が可能なものが用いられ、例えば、静電容量方式、抵抗膜方式等、任意のものが用いられてもよい。
入力ボタン6A〜6Dは、ユーザによる入力(押下)を受け付ける。入力ボタン6A〜6Dは、ユーザが携帯機器1の両端を把持したときにユーザの指が届く位置に設けられる。具体的には、入力ボタン6Aおよび6Cは、ユーザが右手で携帯機器1を把持したときに右手の指が届く位置にあり、入力ボタン6Aは右手の親指が届く位置に、入力ボタン6Cは右手の人差し指又は中指が届く位置に設けられる。また、入力ボタン6Bおよび6Dは、ユーザが左手で携帯機器1を把持したときに左手の指が届く位置にあり、入力ボタン6Bは左手の親指が届く位置に、入力ボタン6Dは左手の人差し指又は中指が届く位置に設けられる。図1に示すように、入力ボタン6Aおよび6Bは、ハウジング10の正面(T5面)に設けられ、入力ボタン6Cおよび6Dは、ハウジング10の上面(T4面)に設けられる。なお、ユーザによる入力を受け付ける入力部としては、入力ボタン6A〜6Dの他に、方向入力のための十字キー、アナログスティック等が設けられてもよい。
赤外線カメラ4は、レンズと光(赤外線。具体的には近赤外線)に感光するセンサとを備える。赤外線カメラ4のセンサは、赤外線に感光する素子を縦横に複数並べたイメージセンサであり、当該イメージセンサの各素子が赤外線を受光して電気信号に変換することで2次元の赤外線画像を出力する。
測距センサ5は、測距センサ5に設けられた光源から射出された光(例えば、赤外光)が物体に反射し、当該反射光を受光素子で受光することで物体との間の距離を測定する。測距センサ5としては、三角測距方式、TOF(Time Of Flight)方式等任意のものが用いられてもよい。測距センサ5の光源としては、特定方向に赤外光を射出するLEDやレーザダイオード等が用いられる。
照射部7は、赤外線を所定の時間間隔(例えば、1/60秒間隔)で照射する。赤外線カメラ4が画像を撮像するタイミングと同期して、照射部7が赤外線を照射する。照射部7は、携帯機器1の右側面方向の所定の範囲に赤外線を照射する。照射部7によって照射された赤外線が物体によって反射され、当該反射された赤外線が赤外線カメラ4によって受光されることで、赤外線の画像が取得される。なお、照射部7は、赤外線カメラ4による赤外線画像の撮像のため、および、測距センサ5による距離の測定のために用いられてもよい。すなわち、照射部7からの赤外光を利用して、赤外線カメラ4によって画像が撮像されるとともに、測距センサ5によって距離が測定されてもよい。
また、プロジェクタ8は、可視光を射出する光源を有し、当該光源からの光を用いて文字や画像等を投影面(スクリーンや後述するようにユーザの手等)に投影する。
赤外線カメラ4、測距センサ5、照射部7、およびプロジェクタ8は、ハウジング10の側面(例えば右側面:T1面)に設けられる。具体的には、赤外線カメラ4の撮像方向(光軸)は、右側面に垂直な方向を向く。測距センサ5の検出方向、プロジェクタ8が光を照射する方向もまた同様に右側面に垂直な方向である。すなわち、赤外線カメラ4は、ユーザが左手で携帯機器1を把持した際に、携帯機器1の右側面方向の空間を撮像し、測距センサ5は、携帯機器1の右側面方向の空間に存在する物体までの距離を測定する。また、プロジェクタ8は、赤外線カメラ4および測距センサ5と同じ方向に可視光を照射することで画像等を投影する。
携帯機器1の背面(T6面)には、外側カメラ9が設けられる(図3)。外側カメラ9は、典型的には、赤外線カメラ4の撮像方向とは垂直な方向を撮像可能であり、背面と垂直な方向を撮像可能である。外側カメラ9は、レンズと可視光に感光するイメージセンサとを備える。外側カメラ9は、背面方向の空間を撮像し、カラー画像(RGB画像)を取得する。なお、背面の外側カメラ9に加えて正面にもカメラが設けられてもよいし、背面の外側カメラ9は設けられず、正面(ディスプレイ2の画面が設けられた面)にカメラが設けられてもよい。
図4は、携帯機器1の内部構成の一例を示すブロック図である。図4に示すように、携帯機器1は、上述した各部の他、バイブレータ11、マイク12、スピーカ13、制御部14、通信部15、姿勢検出部16、GPSレシーバ17、および地磁気センサ18を備える。また、携帯機器1は、図示しないバッテリーを備え、当該バッテリーから電源が供給される。これら各部はハウジング10内に収納される。
制御部14は、ディスプレイ2、タッチパネル3、赤外線カメラ4、測距センサ5、入力ボタン6、照射部7、プロジェクタ8、バイブレータ11、マイク12、スピーカ13、通信部15、姿勢検出部16、GPSレシーバ17、地磁気センサ18等、各部に接続され、各部を制御する。
具体的には、制御部14は、CPUやメモリ等を含み、携帯機器1に備えられた図示しない記憶装置(例えば、不揮発性メモリやハードディスク等)に記憶された所定のプログラム(例えば、ゲーム処理や画像処理、各種演算を行うためのアプリケーションプログラム)に基づいて所定の処理を行う。例えば、制御部14は、赤外線カメラ4からの画像を取得して当該画像を解析したり、測距センサ5からの信号に基づいて物体までの距離を算出したり、タッチパネル3や入力ボタン6からの入力信号に応じた処理を行う。そして、制御部14は、所定の処理の結果に基づく画像を生成し、ディスプレイ2に当該画像を出力する。なお、所定の処理を行うためのプログラムは、通信部15を介して外部からダウンロードされてもよい。
バイブレータ11は、制御部14からの命令に基づいて動作し、携帯機器1全体を振動させる。バイブレータ11は、ユーザの手に振動が伝わりやすい所定の位置(例えば、ハウジング10内の中央部や左右の何れかに偏った位置)に設けられる。
マイク12およびスピーカ13は、音声を入力/出力するために用いられる。通信部15は、所定の通信方式(例えば、無線LAN等)で他の機器と通信を行うために用いられる。また、姿勢検出部16は、例えば、加速度センサや角速度センサであり、携帯機器1の姿勢を検出する。
GPSレシーバ17は、GPS(Global Positioning System)衛星からの信号を受信し、当該信号を受信することで携帯機器1は自機の位置を計算することができる。例えば、携帯機器1は、特定の位置で所定の操作(例えば、後述する赤外線カメラ4を用いたジェスチャ入力やボタン入力、携帯機器1を振るなどの動作)が行われた場合に、当該特定の位置に対応付けられたオブジェクトを表示してもよい。例えば、携帯機器1においてゲームが行われる場合において、携帯機器1が特定の位置にある場合、当該特定の位置に対応したオブジェクトを当該ゲームに登場させてもよい。
また、地磁気センサ18は、磁気の方向および大きさを検出可能なセンサである。例えば、携帯機器1は、地磁気センサ18の検出結果に基づいて、特定の方位を向いているか否かを判定し、特定の方位で所定の操作(上記ジェスチャ入力等)が行われた場合に、オブジェクトを表示してもよい。例えば、携帯機器1においてゲームが行われる場合、特定の方位に対応したオブジェクトが当該ゲームに登場してもよい。また、携帯機器1は、GPSレシーバ17を用いたGPS情報と地磁気センサを用いた方位情報とを組み合わせてもよい。例えば、携帯機器1が、特定の位置にあり、かつ、特定の方位を向いている場合、当該特定の位置及び特定の方位に対応するオブジェクトを表示したり、当該オブジェクトをゲームに登場させてもよい。
図5は、携帯機器1の使用状態の一例を示す図である。図5に示すように、ユーザは、携帯機器1を一方の手で把持した状態で、他方の手を用いてジェスチャ入力を行うことができる。なお、ジェスチャ入力は、ユーザが操作する(動かす)操作対象物によって行われる任意の入力であってよい。操作対象物は、ユーザの体(手や顔等のように体の一部であってもよいし、体全体であってもよい)であってもよいし、ユーザが把持する物体であってもよいし、その両方であってもよい。携帯機器1は、操作対象物の形状をジェスチャ入力として認識してもよいし、操作対象物の動きをジェスチャ入力として認識してもよいし、形状と動きの組み合わせをジェスチャ入力として認識してもよい。例えば、ユーザは、手の形状、手の動き、(携帯機器1を基準とした)手の位置、手の向き(姿勢)等によってジェスチャ入力を行うことができる。
第1の実施形態においては、携帯機器1は、赤外線カメラ4で画像(赤外線画像)を撮像し、撮像画像に基づいてジェスチャ入力を判別する。具体的には、撮像画像が赤外線カメラ4から取得されると、携帯機器1は、取得された撮像画像に基づいて、対象物の形状、位置、および/または、向き(姿勢)を算出する。なお、携帯機器1は、繰り返し取得される複数の撮像画像に基づいて、対象物の動き(形状の変化や、移動方向や、移動速度等)を算出してもよい。携帯機器1は、これらの算出結果に基づいてジェスチャ入力を判別する。
[2.携帯機器1における処理の概要]
次に、第1の実施形態において、携帯機器1によって実行される処理の概要を説明する。以下では、図6〜図10を参照して、携帯機器1が赤外線カメラによってユーザの手を検出し、手の位置および形状を算出する処理について説明する。
なお、第1の実施形態(および後述する第2〜第4の実施形態においても同様)においては、ユーザが手を用いてジェスチャ入力を行う場合を想定し、携帯機器1は、ユーザの手を検出し、その位置および形状を算出するものとする。ただし、携帯機器1が検出する対象となる物体は任意であってよい。例えば、他の実施形態においては、携帯機器1は、ユーザが把持する所定の操作用部材(例えばペン等)を検出するようにしてもよい。
図6は、撮像画像の一例を示す図である。第1の実施形態では、赤外線カメラ4によって撮像される撮像画像(赤外線画像)は、各画素について輝度の情報を含んでいる。ここで、赤外線カメラ4の撮像範囲に位置する物体(図6ではユーザの手)に対して照射部7による赤外線が照射され、その反射光が赤外線カメラ4によって検出されるので、撮像画像における当該物体の領域については輝度が高くなる。例えば、赤外線カメラ4の近く(例えば、40cm以内の範囲)にユーザが手を配置すると、図6に示すように、撮像画像には手の領域21が含まれることになる。また、手のひらの部分が赤外線カメラ4に近く、腕の部分が赤外線カメラ4から次第に離れている場合には、手の領域21における腕の部分の輝度は、手のひらの部分から離れるにつれて輝度が低くなる。
なお、第1の実施形態において、撮像画像における各画素の輝度は、多段階(例えば256段階)で表現されるものとする。ただし、図6では、図面を見やすくする目的で、輝度が相対的に低い部分を斜線領域で表し、相対的に高い部分を白色領域(手の領域21)で表している。
第1の実施形態において、携帯機器1は、撮像画像に基づいて手の位置を算出する。第1の実施形態においては、携帯機器1は、手の3次元位置、すなわち、赤外線カメラ4の撮像方向に垂直な2次元方向(図に示すx軸方向およびy軸方向)の位置と、赤外線カメラ4の撮像方向(図に示すz軸方向)に関する位置とを算出する。
(x軸方向およびy軸方向に関する位置の算出)
赤外線カメラ4の撮像方向に垂直な2次元方向の位置は、撮像画像の輝度に関する重心位置(図6に示す位置P1)を用いて算出される。ここで、撮像画像における重心位置とは、撮像画像の各画素の輝度を重みとした、撮像画像全体における重心位置である。重心位置は、画素の位置を表す2次元座標にその画素の輝度を乗算した2次元値を各画素について算出し、算出された各2次元値の総和を、各画素の輝度の総和で除算することによって得ることができる。なお、撮像画像において、手の領域21以外に、輝度が高くかつ面積の大きい領域がない場合(赤外線カメラ4に手以外の物体が写っていない場合)には、重心位置は、手の領域21の内側の領域となる。
図7は、図6に示す状態から、手の位置が移動した場合における撮像画像の一例を示す図である。図7に示すように、撮像画像内における手の領域21が移動すると、重心位置もそれに応じて移動する。したがって、上記重心位置は、手の位置を表すと言うことができ、手の位置として用いることができる。つまり、携帯機器1は、重心位置を算出することによって、上記2次元方向に関する手の位置を検出することができる。
なお、携帯機器1は、重心位置自体を手の位置として用いることに限らず、重心位置に基づいて決定される任意の位置を手の位置として用いてもよい。例えば、手の位置は、重心位置を所定の移動方向に所定の移動量だけ移動させた位置として算出されてもよい。また、上記移動方向および/または移動量は、固定であってもよいし、可変であってもよい。例えば、上記移動方向および/または移動量は、手の形状、撮像方向に関する手の位置、撮像画像全体の明るさの少なくとも1つに応じて可変に設定されてもよい。つまり、携帯機器1は、重心位置から手の位置を算出する方法を、手の形状、撮像方向に関する手の位置、撮像画像全体の明るさの少なくとも1つに応じて決定してもよい。これによって、手の位置をより正確に算出することができる。なお、手の形状、撮像方向に関する手の位置、および、撮像画像全体の明るさの算出方法については後述する。
以上のように、第1の実施形態においては、携帯機器1は、撮像画像における手の領域21を特定することなく、撮像画像の重心位置を用いて手の位置を算出する。これによれば、手の領域(手の輪郭)を特定するための画像認識処理の必要がなく、簡易な方法で手の位置を算出することができる。換言すれば、手の位置を算出する処理の処理負荷を軽減することができ、処理の高速化を図ることができる。
なお、重心位置を算出する対象となる領域は、撮像画像全体の領域である必要はなく、手の領域21とは独立して設定される任意の領域であってもよい。携帯機器1は、例えば、撮像画像の端部(周)から所定距離よりも内側の領域を対象として、上記重心位置を算出してもよい。このとき、当該内側領域に手の領域21が存在する場合に手の位置が算出されるので、この場合にのみジェスチャ入力が受け付けられることとなる。
(z軸方向に関する位置の算出)
第1の実施形態においては、携帯機器1は、撮像方向(z軸方向)に関する位置を撮像画像に基づいて算出する。撮像方向に関する位置(赤外線カメラ4からの距離)は、撮像画像(全体)の明るさに基づいて算出される。具体的には、携帯機器1は、撮像画像の各画素の輝度の平均値を算出し、当該平均値に基づいて上記距離を算出する。
図8は、図6に示す状態から、手の位置が移動した場合における撮像画像の他の一例を示す図である。図8に示す撮像画像は、図6に示す撮像画像に比べて、赤外線カメラ4に近い方向へ手が移動した場合を示している。この場合、撮像画像において手の領域21が占める割合は、図6に示す状態に比べて大きくなるので、撮像画像の明るさ(上記平均値)は、図6に示す状態に比べて大きくなる。このように、撮像画像全体の明るさは、赤外線カメラ4からの手の距離に応じて変化する。そのため、携帯機器1は、撮像画像の明るさに基づいて手の距離を算出することができる。
撮像画像の明るさに基づいて距離を算出する具体的な方法は任意である。例えば、第1の実施形態においては、携帯機器1は、明るさと距離との対応関係を表す情報(テーブルでもよいし、関数でもよい)を予め記憶しておき、当該対応関係に基づいて距離を算出する。なお、他の実施形態においては、携帯機器1は、ある基準時点(例えば撮像画像の取得を開始した時点)を基準とした撮像画像の明るさの変化量に基づいて、当該基準時点の位置を基準とした距離(基準時点の位置を基準とした相対位置)を算出してもよい。
なお、携帯機器1は、手の距離に関わらず、上述の重心位置から手の2次元位置を算出することが可能である。ただし、重心位置と手の領域21との位置関係は、上記距離に応じて変化するおそれがある。したがって、携帯機器1は、重心位置から手の位置を特定する処理(方法)を、上記距離に応じて変更するようにしてもよい。例えば、携帯機器1は、重心位置を所定の移動方向に所定の移動量だけ移動させた位置として手の位置を算出する場合、移動方向および/または移動量を、上記距離に応じて変化させるようにしてもよい。
以上のように、第1の実施形態においては、携帯機器1は、撮像画像における手の領域21を特定することなく、撮像画像の明るさを用いて赤外線カメラ4からの手の距離を算出する。これによれば、手の領域21を特定するための画像認識処理の必要がなく、簡易な方法で手の距離を算出することができる。換言すれば、手の距離を算出する処理の処理負荷を軽減することができ、処理の高速化を図ることができる。
なお、撮像画像の明るさ(上記平均値)を算出する対象となる領域は、撮像画像全体の領域である必要はなく、手の領域21とは独立して設定される任意の領域であってもよい。例えば、上記重心位置を算出する場合と同様、携帯機器1は、撮像画像の端部(周)から所定距離よりも内側の領域を対象として、上記平均値を算出してもよい。
(手の形状の特定)
また、第1の実施形態においては、携帯機器1は、手の形状を撮像画像に基づいて算出する。第1の実施形態においては、携帯機器1は、手の形状として、手が開いた形状(パーの形状)であるか、それとも、手が閉じた形状(グーの形状)であるかを特定する。
図9は、手が開いた形状である場合における撮像画像の一例を示す図である。なお、図9においては、図面を見やすくする目的で、(図6等とは異なり)輝度の低い領域を斜線では示していない。第1の実施形態においては、携帯機器1は、図9に示すように、手の形状を判別するための判別範囲22を撮像画像上に設定する。判別範囲22は、上述の重心位置P1に基づいて設定される。具体的には、第1の実施形態においては、携帯機器1は、重心位置P1を中心とする所定長さの半径を有する円形領域として判別範囲22を設定する。なお、重心位置に基づく判別範囲22の設定方法は任意である。例えば、他の実施形態において、重心位置とは異なる位置を手の位置として算出する場合、携帯機器1は、当該手の位置を中心とする円形領域として判別範囲22を設定してもよい。
また、判別範囲22の大きさおよび形状は任意である。第1の実施形態においては、判別範囲22の大きさ(円形領域の直径)は、閉じた状態における手の領域よりも大きく、開いた状態における手の領域よりも小さくなるように設定される。換言すれば、判別範囲は、手を閉じた状態では手の領域がその内部に含まれ、手を開いた状態では手の領域の一部(指先の部分)が外部に出る位置および大きさに設定される。したがって、判別範囲22の大きさは、赤外線カメラ4からの手の距離(換言すれば、撮像画像の明るさ)に応じて変化するように設定されてもよい。
図9に示すように、手が開いた形状である場合には、手の領域21のうちの指の領域および手首(腕)の領域(図9に示す斜線領域)が判別範囲22の外側に位置する。一方、図10は、手が閉じた形状である場合における撮像画像の一例を示す図である。図10に示すように、手が閉じた形状である場合には、手の領域21のうちの手首の領域のみが判別範囲22の外側に位置する。したがって、判別範囲22と手の領域との関係に基づいて、手の形状を判別することができる。
具体的には、携帯機器1は、手の領域21のうちで判別範囲22の外側に存在する領域(外部領域と呼ぶ)の数に応じて、手が開いた形状か、それとも、手が閉じた形状かを判別する。なお、外部領域は、判別範囲22の外側に存在し、かつ、輝度が相対的に高い領域(例えば輝度が所定値以上である領域)として検出することができる。第1の実施形態においては、携帯機器1は、上記外部領域の数が5個以上であれば、手が開いた形状であると判別し、外部領域の数が1個以下であれば、手が閉じた形状であると判別する。なお、上記において、「(6個ではなく)5個以上」および「(1個ではなく)1個以下」としているのは、外部領域のうちの1つ(例えば、手首の領域)が、輝度が低いために検出されない場合でも、手の形状を判別することができるようにするためである。
なお、他の実施形態においては、携帯機器1は、3種類の以上の形状のうちから、手の形状を判別してもよい。例えば、外部領域の数に基づいて、手の形状が、グーであるか、チョキであるか、あるいはパーであるかを判別することができる。具体的には、携帯機器1は、判別範囲22の外側に存在する領域の数が5個以上である場合、手が開いた形状(パーの形状)であると判別し、当該領域の数が2個または3個である場合、2本の指が伸びた形状(チョキの形状)であると判別し、当該領域の数が1個以下である場合、手が閉じた形状(グーの形状)であると判別することができる。
また、他の実施形態においては、携帯機器1は、複数個の判別範囲を設定するようにしてもよい。そして、携帯機器1は、各判別範囲と手の領域とのそれぞれの関係に基づいて、手の形状を判別してもよい。具体的には、携帯機器1は、手の位置を中心とした半径の異なる円形領域である2つの判別範囲を設定してもよい。これによれば、携帯機器1は、手の形状として、手が閉じている形状と、手が開きかけている形状と、手が開いた形状とを判別することができる。このように、複数の判別範囲を設定することによって、手の形状をより詳細に特定することができる。
以上のように、第1の実施形態においては、携帯機器1は、撮像画像における手の領域21を特定することなく、重心位置に基づく判別範囲22を用いて手の形状を特定する。これによれば、手の領域21を特定するための画像認識処理の必要がなく、簡易な方法で手の形状を特定することができる。換言すれば、手の形状を特定する処理の処理負荷を軽減することができ、処理の高速化を図ることができる。
[3.携帯機器1における処理の具体例]
次に、携帯機器1において実行される処理の具体例について説明する。図11は、携帯機器1によって実行される処理の流れの一例を示すフローチャートである。図11に示す一連の処理は、任意の条件およびタイミングで実行されてよい。第1の実施形態においては、上記一連の処理は、ジェスチャ入力を受け付ける所定のアプリケーションプログラム(例えばゲームプログラム)の実行中において実行される。
なお、本出願において、図面に示すフローチャートにおける各ステップの処理は、単なる一例に過ぎず、同様の結果が得られるのであれば、各ステップの処理順序を入れ替えてもよいし、各ステップの処理に加えて(または代えて)別の処理が実行されてもよい。また、本明細書では、上記フローチャートの各ステップの処理を携帯機器1のCPUが実行するものとして説明するが、上記フローチャートにおける一部のステップの処理を、CPU以外のプロセッサや専用回路が実行するようにしてもよい。また、携帯機器1において実行される処理の一部は、携帯機器1と通信可能な他の情報処理装置(例えば、携帯機器1とネットワークを介して通信可能なサーバ)によって実行されてもよい。すなわち、図11に示す各処理(図19、図27、および図33における各処理についても同様)は、携帯機器1を含む複数の情報処理装置が協働することによって実行されてもよい。
また、制御部14は、図11に示す各処理(図19、図27、および図33における各処理についても同様)を、メモリを用いて実行する。すなわち、制御部14は、各処理ステップによって得られる情報(データ)をメモリに記憶し、それ以降の処理ステップにおいて当該情報を用いる場合には、メモリから当該情報を読み出して利用する。
まずステップS1において、携帯機器1の制御部14は、赤外線カメラ4による撮像画像を赤外線カメラ4から取得する。すなわち、赤外線カメラ4は所定の時間間隔で画像を撮像するので、制御部14は、撮像画像を赤外線カメラ4から取得し、撮像画像のデータをメモリに記憶する。
ステップS2において、制御部14は、ステップS1で取得された撮像画像に基づいて、当該撮像画像に含まれる手の2次元位置(赤外線カメラ4の撮像方向に垂直な方向に関する位置)を算出する。この2次元位置は、上記“(x軸方向およびy軸方向に関する位置の算出)”で述べた方法で算出される。
ステップS3において、制御部14は、ステップS1で取得された撮像画像に基づいて、当該撮像画像に含まれる手の距離(赤外線カメラ4の撮像方向に関する位置)を算出する。この距離は、上記“(z軸方向に関する位置の算出)”で述べた方法で算出される。
ステップS4において、制御部14は、ステップS1で取得された撮像画像に基づいて、当該撮像画像に含まれる手の形状(手が開いた形状であるか閉じた形状であるか)を特定する。手の形状は、上記“(手の形状の算出)”で述べた方法で算出される。
ステップS5において、制御部14は、ステップS2〜S4の一連の処理によって算出された手の3次元位置および形状に基づいて所定の処理を実行する。この所定の処理は、手の3次元位置および形状を入力とする任意の情報処理であってよい。例えば、制御部14は、仮想空間におけるオブジェクト(例えば、ゲーム空間に登場するプレイヤキャラクタや、カーソル等)を、手の3次元位置および形状に応じて制御する処理を実行してもよい。また例えば、制御部14は、手の3次元位置および形状に基づいてジェスチャ入力を検出し、検出されたジェスチャ入力に応じた処理を実行してもよい。また、ステップS5の処理において、制御部14は、上記所定の処理の結果を表す画像をディスプレイ2に表示してもよい。
ステップS6において、制御部14は、手の位置および形状に応じた一連の処理を終了するか否かを判定する。ステップS6における判定の具体的な方法は任意である。第1の実施形態においては、ユーザが所定の終了指示(例えば、アプリケーションを終了する指示)を行った場合、上記一連の処理を終了すると判定される。ステップS6の判定結果が肯定である場合、制御部14は、図11に示す処理を終了する。一方、ステップS6の判定結果が否定である場合、制御部14は、ステップS1の処理を再度実行する。以降、ステップS6において処理を終了すると判定されるまで、ステップS1〜S6の一連の処理が繰り返し実行される。
[4.第1の実施形態の作用効果]
以上のように、第1の実施形態においては、携帯機器1は、撮像画像に基づいて、各画素の明るさに関する情報を取得し(ステップS1)、撮像画像について、各画素の明るさを重みとしたときの偏りを表す位置情報(重心位置の情報)を算出する(ステップS2)。そして、携帯機器1は、位置情報に基づいて、所定の情報処理を実行する(ステップS5)。なお、上記位置情報を算出する対象となる(撮像画像中における)領域は、上記実施形態においては撮像画像の全領域であったが、上記物体(手)の画像の領域とは独立して設定される任意の領域であってよい。つまり、「撮像画像について位置情報を算出する」とは、撮像画像の全領域を対象として位置情報を算出する態様と、撮像画像の一部領域を対象として位置情報を算出する態様との両方を含む意味である。また、所定の情報処理は、任意の処理でよく、例えば、物体(手)の位置、形状、および/または動きに応じた情報処理である。
上記によれば、携帯機器1は、物体の位置を簡易な処理で算出することができる。携帯機器1は、例えば画像認識処理等によって物体の領域を特定することなく、簡易な方法で物体の位置を算出することができる。
なお、携帯機器1は、上記位置情報に基づいて、物体の位置を表す情報を算出してもよいし、物体の位置の変化(速度)を表す情報を算出し、算出された情報に基づく情報処理を実行してもよい。これによれば、物体の位置および/または移動をユーザ入力として用いる情報処理を実行することができる。
携帯機器1は、上記位置情報に基づいて、撮像画像に含まれる物体の形状を表す情報を算出し(ステップS4)、当該情報に基づく情報処理を実行してもよい(ステップS5)。なお、情報処理は、物体の形状を入力とする処理であってもよいし、物体の形状の変化(動き)を入力とする処理であってもよい。上記によれば、物体の形状および/またはその変化をユーザ入力として用いる情報処理を実行することができる。
なお、上記実施形態においては、携帯機器1は、位置情報によって特定される撮像画像上における位置(重心位置)に基づいて当該撮像画像上において判別範囲を設定し、当該判別範囲と物体の画像の領域との関係に基づいて物体の形状(手が開いた形状であるか、それとも、手が閉じた形状であるか)を算出する(ステップS4)。これによれば、携帯機器1は、撮像画像における物体の領域を特定することなく、物体の形状を特定することができる。携帯機器1は、画像認識処理等によって物体の領域を特定しなくてもよいので、物体の形状を簡易な処理で特定することができる。
なお、携帯機器1は、撮像画像における明るさ(輝度の平均値)を算出し(ステップS3)、位置情報と明るさとに基づいて情報処理を実行する(ステップS5)。これによれば、位置情報と明るさとを入力として用いることでより多彩な操作を行うことが可能となる。なお、撮像画像における明るさを算出する対象となる領域は、位置情報を算出する対象となる領域と同じであってもよいし、異なっていてもよい。また、撮像画像における明るさを算出する対象となる領域は、撮像画像における物体の画像の領域とは独立して設定されてもよい。
また、携帯機器1は、算出された明るさに基づいて、赤外線カメラ4の撮像方向(z軸方向)に関する位置および/または動きを表す情報を算出し(ステップS3)、当該情報に応じて情報処理を実行する(ステップS5)。これによれば、撮像方向に関する位置を、簡易な処理で算出することができる。
さらに、携帯機器1は、上記位置情報に基づいて、撮像方向に略垂直な方向(x軸方向およびy軸方向)に関する2次元の位置を表す情報を算出し(ステップS2)、当該情報に応じて上記情報処理を実行してもよい(ステップS5)。なお、上記情報は、上記2次元の位置に加えて、または代えて、2次元の動きを表す情報であってもよい。これによれば、携帯機器1は、撮像画像に基づいて物体の3次元位置を算出することができる。
上記実施形態においては、携帯機器1は、上記位置情報として、撮像画像の全体または一部の所定領域における、各画素の明るさを重みとしたときの重心位置を算出する。これによれば、携帯機器1は、各画素の明るさを重みとしたときの上記所定領域における明るさの偏りを表す指標を容易に算出することができる。なお、他の実施形態においては、携帯機器1は、重心位置に限らず、領域の偏りを表す任意の指標を上記位置情報として算出してもよい。
[5.変形例]
第1の実施形態における情報処理を用いた変形例(応用例)として、例えば次に示す例が挙げられる。図12は、ユーザがあおぎ操作を行う様子の一例を示す図である。また、図13は、ユーザが回転操作を行う様子の一例を示す図である。また、図14は、ユーザがはじき操作を行う様子の一例を示す図である。携帯機器1は、第1の実施形態における情報処理を用いて、これらの操作をジェスチャ入力として検出して、これらの操作に応じた処理を実行するようにしてもよい。
図12に示すように、ユーザが、手を上下に動かす操作(あおぎ操作)を行う場合、携帯機器1は、第1の実施形態における方法を用いて、手の位置(x軸方向に関する位置)を算出する。すなわち、携帯機器1は、撮像画像上においてx軸方向に対応する方向(例えば、図6における上下方向)に関する重心位置を算出する。このように、他の実施形態において、携帯機器1は、手の3次元位置を算出しなくてもよく、少なくとも1方向に関する位置を算出してもよい。また、携帯機器1は、手の形状を算出しなくてもよい。
携帯機器1は、算出された手の位置に基づいてあおぎ操作を検出し、あおぎ操作に応じた情報処理を実行する。具体的には、携帯機器1は、算出された手の位置の変化によって、あおぎ操作が行われたか否かを判定する。すなわち、算出された手の位置が上下方向の移動を繰り返している場合には、あおぎ操作が行われたと判定される。そして、あおぎ操作が行われたと判定された場合、携帯機器1は、例えば、仮想空間内のオブジェクトを移動させる処理を実行する。また、携帯機器1は、算出された位置の変化速度を算出し、変化速度に応じてあおぎ操作の速さ(激しさ)を算出してもよい。このとき、携帯機器1は、あおぎ操作の速さに応じて処理内容を変化させてもよい。例えば、オブジェクトの移動速度があおぎ操作の速さに応じて制御されてもよい。
また、図13に示すように、ユーザが手を回転移動させる操作(回転操作)を行う場合、携帯機器1は、第1の実施形態における方法を用いて、手の2次元位置(x軸方向およびy軸方向に関する位置)を算出する。携帯機器1は、算出された2次元位置に基づいて回転操作を検出し、回転操作に応じた情報処理を実行する。具体的には、携帯機器1は、算出された2次元位置が2次元座標上を移動する軌跡に基づいて、回転操作が行われているか否かを判定する。例えば、上記軌跡が環状の形状である場合、回転操作が行われたと判定される。回転操作が行われたと判定された場合、携帯機器1は、仮想空間内のオブジェクトを移動(例えば回転移動)させる処理を実行する。上記処理は、例えば、プレイヤキャラクタが乗る一輪車の車輪を回転させる処理であってもよいし、釣りゲームにおいてリールを巻く動作を行う処理であってもよい。なお、携帯機器1は、回転操作における回転角度(例えば、回転の中心位置から、手の位置への方向を表す角度)を算出し、回転角度に応じた処理(例えば、回転角度に応じてオブジェクトを回転させる処理)を実行してもよい。また、携帯機器1は、2次元位置の回転速度を算出し、当該回転速度に応じて回転操作の速さを算出してもよい。このとき、携帯機器1は、回転操作の速さに応じて処理内容を変化させてもよい。例えば、オブジェクトの回転速度が回転操作の速さに応じて制御されてもよい。
なお、上記においては、上下方向(x軸方向)に関するあおぎ操作と、左右方向(z軸方向)を軸とした回転操作とを例として説明した。ここで、第1の実施形態における手の位置の算出方法によれば、手の3次元位置を算出することが可能であるので、他の方向に関するあおぎ操作および回転操作を検出することができる。したがって、他の実施形態においては、携帯機器1は、他の方向に関するあおぎ操作を検出してもよいし、他の方向を軸とした回転操作を検出してもよい。
また、他の実施形態においては、携帯機器1は、あおぎ操作と回転操作の両方を検出してもよい。具体的には、携帯機器1は、第1の実施形態における方法を用いて手の形状を特定し、いずれの操作を検出するかを手の形状に応じて切り替えるようにしてもよい。例えば、携帯機器1は、手の形状が開いた形状(パーの形状)であると特定された場合にあおぎ操作を検出し、手の形状が閉じた形状(グーの形状)であると特定された場合に回転操作を検出するようにしてもよい。
また、図14に示すように、ユーザが所定方向(図14ではz軸方向)に手を移動させる操作と、指をはじく操作(はじき操作)とを行う場合、携帯機器1は、第1の実施形態における方法を用いて、手の位置(z軸方向に関する位置)を算出するとともに、手の形状を特定する。図14に示す例においては、携帯機器1は、第1の実施形態における判定範囲を用いて、手が閉じた形状であるか、それとも、指をはじいた形状であるかを判別する。そして、手が閉じた形状から指をはじいた形状(1本の指が伸びた形状)へと変化した場合、携帯機器1は、はじき操作が行われたと判定する。
携帯機器1は、手の位置に応じて仮想空間内のオブジェクトを移動させる処理を実行すると共に、上記はじき操作に応じて当該オブジェクトに所定の動作を実行させてもよい。例えば、携帯機器1は、仮想空間において大砲のオブジェクトを手の位置に応じて移動させるとともに、はじき操作に応じて大砲から弾を発射するようにしてもよい。
<第2の実施形態>
次に、本発明の第2の実施形態について説明する。第2の実施形態においては、携帯機器1は、第1の実施形態とは異なる方法を用いて、撮像画像に基づいて手の3次元位置を算出する。また、携帯機器1は、算出された3次元位置を用いて、3次元の仮想空間においてカーソルの移動を制御する。なお、第2の実施形態における携帯機器1のハードウェア構成は第1の実施形態と同じであるので、ハードウェア構成の詳細な説明を省略する。
[1.携帯機器1における処理の概要]
(手の位置および形状の算出)
第2の実施形態においては、携帯機器1は、撮像画像に含まれるユーザの手の領域を検出する。図15は、撮像画像から検出された手の領域の一例を示す図である。ここで、手の領域(撮像画像における、手の画像の領域)31は、撮像画像に対する所定の画像認識処理によって検出される。画像認識処理は、従来における処理であってもよく、例えば、輪郭抽出処理や、パターンマッチングにより手の領域を検出する処理や、ノイズ領域(手以外の領域)を除去する処理等を含む。なお、後述するように、手の領域31を検出する画像認識処理によって、手の形状(例えば、手が閉じた形状であるか、それとも、開いた形状であるか)を特定することが可能である。また、手の領域31を検出することによって、当該手の領域31のうちの指の領域を特定することも可能である。
手の領域31を検出すると、携帯機器1は、手の領域31に基づいて手の3次元位置を算出する。手の3次元位置を算出する具体的な方法は任意である。第2の実施形態においては、携帯機器1は、撮像画像上における手の領域31の位置に基づいて、赤外線カメラ4の撮像方向に垂直な2次元方向(x軸方向およびy軸方向)の位置を算出する。手の2次元位置(x軸方向およびy軸方向に関する位置)は、例えば、手の領域31の中心位置(図15に示す位置P2)として算出される。なお、他の実施形態においては、携帯機器1は、手の2次元位置として、手の領域31内の各画素の輝度を重みとした重心位置を算出してもよい。なお、この重心位置は、手の領域31を算出対象とした重心位置であるので、第1の実施形態における重心位置とは異なるものである。
また、携帯機器1は、撮像画像上における手の領域31の大きさに基づいて、赤外線カメラ4の撮像方向(z軸方向)に関する位置(赤外線カメラ4からの距離)を算出する。手の領域31から手の距離(z軸方向に関する位置)を算出する方法は任意である。例えば、携帯機器1は、手の領域31の大きさと距離との対応関係を表す情報(テーブルでもよいし、関数でもよい)を予め記憶しておき、当該対応関係に基づいて距離を算出する。
また、第2の実施形態において、携帯機器1は、撮像画像に基づいて手の形状を特定する。上記図15は、手が開いた形状である場合において撮像画像から抽出される手の領域を示す図である。一方、図16は、手が閉じた形状である場合において撮像画像から抽出される手の領域を示す図である。第2の実施形態においては、携帯機器1は、手の形状として、手が開いた形状(パーの形状)であるか、それとも、手が閉じた形状(グーの形状)であるかを特定する。
手の形状を特定する方法は任意である。例えば、手の形状は、手の領域31を検出するための画像認識処理において特定することができる。第2の実施形態においては、携帯機器1は、手が開いた形状に対応する基準画像と、手が閉じた形状に対応する基準画像とを用意しておき、上記画像認識処理においてこれら2つの基準画像を用いてパターンマッチングを行うことによって、手がいずれの形状であるかを特定する。
以上のようにして、第2の実施形態においては、携帯機器1は、画像認識処理によって手の領域を検出することによって、手の3次元位置および手の形状を算出する。なお、携帯機器1は、第2の実施形態においても、第1の実施形態における方法を用いて手の位置および/または形状を算出してもよい。
(手の位置および形状に基づくカーソル制御)
第2の実施形態においては、携帯機器1は、上記のようにして算出された手の3次元位置に基づいて、3次元仮想空間においてカーソルを制御する。また、上記のようにして特定された手の形状に基づいて、カーソルの選択状態または非選択状態を切り替える。これによって、第2の実施形態においては、ユーザは、手を3次元的に動かすことによってカーソルを3次元的に移動制御することができるとともに、カーソルを用いていわゆるドラッグアンドドロップの操作を行うことができる。
図17は、第2の実施形態において行われる操作の一例を示す図である。図17に示すように、ユーザは、手を上下(x軸方向)、左右(z軸方向)、および前後(y軸方向)の3次元方向に移動させることによって、ディスプレイ2に表示される仮想空間においてカーソル33を3次元方向に移動させることができる。すなわち、携帯機器1は、撮像画像に基づいて算出された手の3次元位置に基づいて、カーソル33の仮想空間における3次元位置を算出する。カーソル33の位置の具体的な算出方法は任意である。携帯機器1は、仮想空間におけるカーソル33の3次元位置が現実空間における手の3次元位置に対応するように、カーソル33の位置を算出してもよい。また例えば、携帯機器1は、現実空間における基準位置に対する手の3次元位置の方向に応じた(仮想空間における)方向へカーソル33を移動させるように、カーソル33の位置を算出してもよい。
ここで、本実施形態においては、手の移動方向と、ディスプレイ2上におけるカーソル33の移動方向とが概ね一致するように、カーソル33の移動が制御される(図17の矢印参照)。すなわち、携帯機器1は、上記のように、(a)側面方向(z軸方向)に関する第1位置と、(b)側面方向に垂直で、かつ、ディスプレイ2の画面に垂直な方向(y軸方向)に関する第2位置と、(c)側面方向に垂直で、かつ、画面に平行な方向(x軸方向)に関する第3位置とを含む3次元位置を算出する。そして、携帯機器1は、(a)画面における左右方向に対応する仮想空間内の方向に関するカーソル移動処理を第1位置に基づいて実行し、(b)画面における奥行き方向に対応する仮想空間内の方向に関するカーソル移動処理を第2位置に基づいて実行し、(c)画面における上下方向に対応する仮想空間内の方向に関するカーソル移動処理を第3位置に基づいて実行する。これによれば、現実空間におけるユーザの手の移動方向と、ディスプレイ2に表示される仮想空間におけるカーソル33の移動方向とが概ね一致するので、直感的な操作が可能となり、カーソル33の操作性を向上することができる。
また、携帯機器1は、撮像画像に基づいて特定された手の形状に応じて、カーソル33の選択状態と非選択状態とを切り替える。ここで、選択状態とは、カーソル33が仮想空間内のオブジェクトを選択可能な状態であり、非選択状態とは、カーソル33がオブジェクトを選択不可能な状態である。また、カーソル33がオブジェクトを選択している場合、カーソル33の移動に伴ってオブジェクトも移動される。第2の実施形態においては、閉じた形状の手が検出された場合、カーソル33が選択状態に設定され、開いた形状の手が検出された場合、カーソル33が非選択状態に設定される。
図18は、カーソル33を用いて仮想空間内のオブジェクトを移動させる一例を示す図である。図18は、非選択状態でカーソル33が移動した後、カーソル33がオブジェクト34を指定した状態において選択状態に切り替わり、選択状態となったカーソル33がオブジェクト34とともに移動する様子を表している。図18においては、ユーザはまず、手を開いた状態で手を移動する。これに応じて、携帯機器1は、非選択状態でカーソル33を移動する。ユーザは、カーソル33がオブジェクト34を指定する位置となるまで、開いた状態で手を移動する。カーソル33がオブジェクト34を指定する位置となると、ユーザは、手を閉じた状態とする。これに応じて、携帯機器1は、カーソル33を非選択状態から選択状態へと切り替える。このとき、カーソル33によって指定されるオブジェクト34は被選択状態となる。次に、ユーザは、閉じた状態にしたまま手を移動する。これに応じて、携帯機器1は、カーソル33とともにオブジェクト34を移動する。これによって、ユーザは、オブジェクト34に対してドラッグ操作を行うことができる。この後、ユーザが手を閉じた状態から手を開いた状態へと変化させることに応じて、カーソル33が非選択状態となり、オブジェクト34の移動は停止される。これによって、ユーザは、オブジェクト34に対してドロップ操作を行うことができる。
以上のように、第2の実施形態によれば、ユーザは、手を3次元的に動かす動作と、手を閉じた状態と開いた状態とで変化させる動作とによって、仮想空間においてドラッグアンドドロップの操作を行うことができる。また、ユーザは、携帯機器1の側面方向の空間において手を動作させるので、手がディスプレイの邪魔になりにくく、ユーザはディスプレイが見やすい状態でカーソル操作を行うことができる。
なお、他の実施形態においては、カーソルは、2次元方向にのみ移動するものであってもよい。すなわち、携帯機器1は、所定の2次元方向について手の位置を算出し、算出される2次元位置に基づいて、仮想空間におけるカーソルの2次元位置を算出してもよい。
[2.携帯機器1における処理の具体例]
次に、第2の実施形態における携帯機器1において実行される処理の具体例について説明する。図19は、第2の実施形態における携帯機器1によって実行される処理の流れの一例を示すフローチャートである。図19に示す一連の処理は、任意の条件およびタイミングで実行されてよい。例えば、上記一連の処理は、ジェスチャ入力を受け付ける所定のアプリケーションプログラム(例えばゲームプログラム)の実行中において実行される。
ステップS10において、制御部14は、第1の実施形態におけるステップS1の処理と同様、赤外線カメラ4による撮像画像を赤外線カメラ4から取得する。続くステップS11において、制御部14は、ステップS11で取得された撮像画像における手の領域を検出する。さらに、ステップS12において、制御部14は、ステップS11で検出された手の領域に基づいて手の3次元位置を算出する。続くステップS13において、制御部14は、ステップS1で取得された撮像画像に基づいて手の形状を特定する。上記ステップS11〜S13の一連の処理は、上記“(手の位置および形状の算出)”で述べた方法によって実行される。
ステップS14において、制御部14は、カーソル33が選択状態であるか否かを判定する。この判定は、ステップS13で特定された手の形状が、手が開いた形状であるか否かによって行われる。ステップS14の判定結果が肯定である場合、ステップS15の処理が実行される。一方、ステップS14の判定結果が否定である場合、後述するステップS16の処理が実行される。
ステップS15において、制御部14は、カーソル33がオブジェクトを選択中であるか否かを判定する。この判定は、カーソル33がオブジェクトを指定する位置であるか否かによって行われる。ステップS15の判定結果が否定である場合、ステップS16の処理が実行される。一方、ステップS15の判定結果が肯定である場合、後述するステップS17の処理が実行される。
ステップS16において、制御部14は、ステップS12で算出された手の3次元位置に基づいて、仮想空間におけるカーソル33の移動を制御する。カーソル33の移動制御は、上記“(手の位置および形状に基づくカーソル制御)”で述べた方法によって実行される。ステップS16の次に、後述するステップS18の処理が実行される。
一方、ステップS17において、制御部14は、ステップS12で算出された手の3次元位置に基づいて、仮想空間においてカーソル33と、カーソル33によって指定されるオブジェクトとの移動を制御する。カーソル33およびオブジェクトの移動制御方法は、カーソル33とともにオブジェクトが移動される点を除いて、上記ステップS16における移動制御方法と同じである。ステップS17の次に、後述するステップS18の処理が実行される。
ステップS18において、制御部14は、ステップS16またはS17の処理の結果を表す仮想空間の画像を生成し、生成した画像をディスプレイ2に表示する。続くステップS19において、制御部14は、手の位置および形状に応じたカーソル移動制御を終了するか否かを判定する。ステップS19における判定の具体的な方法は任意である。第2の実施形態においては、ユーザが所定の終了指示(例えば、アプリケーションを終了する指示)を行った場合、上記カーソル移動制御処理を終了すると判定される。ステップS19の判定結果が肯定である場合、制御部14は、図19に示す処理を終了する。一方、ステップS19の判定結果が否定である場合、制御部14は、ステップS10の処理を再度実行する。以降、ステップS19において処理を終了すると判定されるまで、ステップS10〜S19の一連の処理が繰り返し実行される。
[3.第2の実施形態の作用効果]
以上のように、第2の実施形態においては、携帯機器1は、ハウジングの側面方向(の空間)を撮像する赤外線カメラ4を備え、赤外線カメラ4による撮像画像に基づいて、当該撮像画像に含まれる物体(ユーザの手)の3次元位置を算出する(ステップS12)。そして、携帯機器1は、3次元位置に応じた情報処理を実行する(ステップS16,S17)。上記によれば、携帯機器1は、ユーザが手等を動かす操作を入力として情報処理を実行する。ユーザは、手等を動かすことで入力操作を行うことができるので、多様な入力を行うことができる。また、赤外線カメラ4は、携帯機器1の側面方向の空間を撮像するので、ユーザは、携帯機器1の側面方向において手等を動かせばよいので、例えば、携帯機器1を片手で持った状態で、もう一方の手で入力操作を行うことができる(図5参照)。したがって、ユーザにとって操作しやすい状態で入力操作を行うことができる。
なお、第1の実施形態でも第2の実施形態と同様、物体の3次元位置を算出し、算出された3次元位置に応じた情報処理が実行される。したがって、第1の実施形態でも第2の実施形態と同様、上記の効果を奏することができる。
また、第2の実施形態においては(第1の実施形態についても同様である)、携帯機器1は、撮像画像に基づいて、物体(手)の形状を特定し(ステップS13)、物体の3次元位置および形状に応じた情報処理を実行する(ステップS14)。上記によれば、ユーザは、手の形状によって入力操作を行うことができるので、より多様な入力を行うことができる。
また、第2の実施形態においては(第1の実施形態についても同様である)、携帯機器1は、3次元位置に基づいて3次元仮想空間における位置(カーソルの位置)を特定する。これによれば、ユーザは、手を3次元的に動かす操作によって仮想空間における3次元位置を指定することができる。さらに、携帯機器1は、特定された位置に関して、物体(手)の形状に応じて異なる情報処理を実行する(例えば、カーソルを選択状態にするか、非選択状態にするかを切り替えて処理を実行する(ステップS14,S16,S17))。上記によれば、ユーザは、手を動かすことによって仮想空間における位置を指定することができるとともに、手の形状によって情報処理の内容を指定することができ、操作性の良い位置指定操作をユーザに提供することができる。
なお、第2の実施形態においては、携帯機器1は、撮像画像に含まれる物体(手)の画像領域を特定し(ステップS11)、当該画像領域に基づいて当該物体の形状を特定する(ステップS13)。そして、携帯機器1は、特定された物体の画像領域に基づいて当該物体の位置を算出する(ステップS12)。これによれば、携帯機器1は、物体の領域を特定することによって物体の位置および形状を算出することができる。
なお、第1の実施形態のように、携帯機器1は、撮像画像上における物体の2次元位置を算出し、当該2次元位置に基づいて3次元位置を算出してもよい(例えば、当該2次元位置を含む3次元位置を算出してもよい)。また、携帯機器1は、算出された2次元位置に基づいて物体の形状を特定してもよい(例えば、2次元位置に基づいて設定される判別範囲を用いて形状を特定してもよい)。これによれば、携帯機器1は、簡易な処理で物体の位置および形状を特定することができる。
また、第2の実施形態においては(第1の実施形態についても同様である)、携帯機器1は、ハウジングの正面に設けられるディスプレイ2を備え、3次元位置に応じた画像をディスプレイ2に表示する情報処理を実行する(ステップS18)。これによれば、ユーザが手を動かす操作による処理結果がディスプレイに表示される。ここで、ユーザは携帯機器1の側面方向において手を動かすので、手がディスプレイに表示される画像の邪魔になりにくく、画像の視認性を向上することができる。
[4.変形例]
(手の向きを算出する変形例)
第2の実施形態のように撮像画像における手の領域を検出する場合、携帯機器1は、手の向きを算出するようにしてもよい。ここで、撮像方向(z軸方向)を軸とした回転に関する手の向きについては、撮像画像における手の領域の向きに基づいて算出することができる。また、撮像方向に垂直な方向(x軸方向またはy軸方向等)を軸とした回転に関する手の向きについては、撮像画像における手の領域の輝度に基づいて算出することができる。以下、第2の実施形態の変形例として、撮像方向に垂直な方向を軸とした回転に関する手の向きを算出する例について説明する。
図20は、第2の実施形態の変形例においてユーザが向き変更操作を行う様子の一例を示す図である。図20に示すように、本変形例では、ユーザは、人差し指を伸ばした形状で、上下方向(x軸方向)を軸とした回転方向に手の向きを変更する操作(向き変更操作)を行う。携帯機器1は、撮像画像に基づいて手の向きを算出し、手の向きに応じた情報処理を実行する。
図21は、手の向きが異なる2つの場合において撮像画像から検出された手の領域の一例を示す図である。図21では、撮像画像から検出された手の領域31について、濃淡によって輝度を表している。
上述したように、赤外線カメラ4により撮像される物体の輝度は、赤外線カメラ4からの位置が近いほど高くなる。そのため、図20に示す(a)の状態のように、人差し指がユーザから見て正面方向(y軸負方向)より左を向く場合、すなわち、赤外線カメラ4から見て手の指先が手首よりも手前にある向きとなる場合、撮像画像における手の領域31は、図21に示す(a)のような輝度の分布となる。すなわち、手の領域31のうちの左側領域(指先)が右側領域(手首)よりも輝度が高くなる。一方、図20に示す(b)の状態のように、ユーザから見て人差し指が正面方向より右を向く場合、すなわち、赤外線カメラ4から見て手の指先が手首よりも奥にある向きとなる場合、撮像画像における手の領域31は、図21に示す(b)のような輝度の分布となる。すなわち、手の領域31のうちの左側領域(指先)が右側領域(手首)よりも輝度が低くなる。また、図示しないが、人差し指が正面方向を向く場合、すなわち、赤外線カメラ4から見て手の指先と手首とがほぼ同じ距離にある向きとなる場合、手の領域31のうちの左側領域(指先)の輝度と右側領域(手首)の輝度はほぼ同じになる。
以上より、x軸回りの回転に関する手の向きについては、撮像画像における左側領域と右側領域との輝度の差に基づいて算出することができる。本変形例において、携帯機器1は、撮像画像から検出された手の領域31のうちから、左側領域の位置と、右側領域の位置とを特定し、特定した2つの位置の輝度を比較する。なお、特定される2つの位置は、手の領域31から決められる任意の位置であってよい。例えば、携帯機器1は、手の領域の左端から所定距離にある位置と、手の領域の右端から所定距離にある位置とを特定してもよい。
携帯機器1は、左側領域の輝度と、右側領域の輝度とに基づいて、上下方向(x軸方向)を軸とした回転に関する手の向きを算出する。すなわち、左側領域の輝度と右側領域の輝度とが略同じである場合(差が所定値よりも小さい場合)、携帯機器1は、ユーザから見て手が正面方向を向いていると特定する。また、左側領域の輝度が右側領域の輝度より所定値以上高い場合、携帯機器1は、(ユーザから見て)手が正面方向より左を向いていると特定する。また、左側領域の輝度が右側領域の輝度より所定値以上低い場合、携帯機器1は、(ユーザから見て)手が正面方向より右を向いていると特定する。このようにして、本変形例では、携帯機器1は、手が正面を向いているか、正面より左を向いているか、それとも、正面より右を向いているかを特定することができる。なお、他の実施形態においては、携帯機器1は、手の向きを表す角度を算出してもよい。
なお、上記においては、上下方向(x軸方向)を軸とした回転に関する手の向きを算出する場合について説明したが、上記と同様の方法で、前後方向(y軸方向)を軸とした回転に関する手の向きを算出することも可能である。すなわち、携帯機器1は、手の領域31のうちの上側領域の輝度と下側領域の輝度とに基づいて、前後方向を軸とした回転に関する手の向きを算出してもよい。
携帯機器1は、以上のようにして算出された手の向きに応じた情報処理を実行する。この情報処理の内容は任意である。例えば、携帯機器1は、仮想空間においてオブジェクトの向き(姿勢)を手の向きに応じて制御する情報処理を実行する。ここで、携帯機器1は、手の向きに加えて、手の位置を算出するようにしてもよい。このとき、携帯機器1は、仮想空間においてオブジェクトの向き(姿勢)を手の向きに応じて制御するとともに、当該オブジェクトの位置を手の位置に応じて制御するようにしてもよい。
<第3の実施形態>
次に、本発明の第3の実施形態について説明する。携帯機器1の周囲でユーザが手等を動かして操作を行う場合、ユーザにとっては、例えば、所望の入力を行うための手の位置や、赤外線カメラ4(携帯機器1)と手との位置関係がわかりにくいおそれがある。そこで、第3の実施形態においては、携帯機器1は、手の位置を表すためのガイド画像を表示する。なお、第3の実施形態における携帯機器1のハードウェア構成は第1の実施形態と同じであるので、ハードウェア構成の詳細な説明を省略する。
[1.携帯機器1における処理の概要]
図22は、第3の実施形態において行われる操作の一例を示す図である。図22に示すように、第3の実施形態においては、ユーザは、手を撮像方向(z軸方向)に動かすことで、仮想空間内のオブジェクト(プレイヤキャラクタ)41を操作する。すなわち、携帯機器1は、撮像方向に関する手の位置を算出し、オブジェクト41の移動を制御する。
なお、図22においては、レースゲームにおいてユーザがプレイヤキャラクタを操作する場合を例として説明するが、手による操作を入力として実行される情報処理は任意であってよい。第3の実施形態においては、携帯機器1は、撮像方向に関する手の位置(距離)に応じて、オブジェクト41の曲がり具合(左右に関する移動)を制御するものとする(図22に示す矢印参照)。また、携帯機器1は、手の操作によって(例えば、y軸方向に関する手の位置や、手の形状に応じて)オブジェクトの速度等をさらに制御するようにしてもよい。
また、図22に示すように、ディスプレイ2には、ユーザによる操作に基づく処理結果を表す画像(ゲーム空間の画像)に加えて、ガイド画像42が表示される。ガイド画像42の詳細については後述する。
(手の位置に基づく処理の概要)
図23は、手の位置と情報処理との関係の一例を示す図である。携帯機器1は、撮像画像に基づいて手の位置を算出するので、赤外線カメラ4から手が離れすぎると(例えば、赤外線カメラ4からの距離が40cmを超えると)、手を検出することができず、手の位置を算出することができなくなる。ここでは、手の位置を算出することが可能な範囲を算出可能範囲と呼び、手の位置を算出することが不可能な範囲を算出不可能範囲と呼ぶ。図23に示すように、第3の実施形態においては、赤外線カメラ4から所定距離以内の範囲が算出可能範囲となり、赤外線カメラ4から当該所定距離よりも離れた範囲が算出不可能範囲となる。
第3の実施形態において、携帯機器1は、算出可能範囲内の所定範囲を、処理範囲として用いる。処理範囲とは、算出された手の位置に応じて処理内容が変化する範囲である。すなわち、携帯機器1は、処理範囲内において、手の位置の変化に応じて処理内容(ここでは、オブジェクトの曲がり具合)を変化させる。具体的には、第3の実施形態においては、携帯機器1は、算出された手の位置が処理範囲内の所定の基準位置となる場合、オブジェクト41を直進させ、算出された手の位置と当該基準位置との差に応じてオブジェクト41の曲がり具合を制御する。図23に示すように、算出された手の位置が、ユーザから見て基準位置よりも左側(赤外線カメラ4に近い側)となる場合、オブジェクト41は、左に曲がるように制御され、算出された手の位置が、ユーザから見て基準位置よりも右側(赤外線カメラ4から遠い側)となる場合、オブジェクト41は、右に曲がるように制御される。なお、基準位置は、処理範囲内の任意の位置でよいが、第3の実施形態では、処理範囲における中央の位置であるとする。
また、携帯機器1は、算出された手の位置が処理範囲外となる場合には、携帯機器1は、オブジェクト41の曲がり具合を、処理範囲の境界のうちで当該算出された手の位置に近い方の境界に手の位置がある場合における曲がり具合に設定する。つまり、手の位置が処理範囲内から処理範囲外へ出ても、オブジェクト41の曲がり具合は大きくならない。
なお、図23に示すように、第3の実施形態においては、算出可能範囲内において事前警告範囲が設定される。事前警告範囲は、手の位置が算出不可能となることを事前に警告するために設定される。事前警告範囲は、算出可能範囲内における所定位置(例えば上記基準位置)から、算出不可能範囲への方向に所定距離だけ離れた範囲として設定される。なお、事前警告範囲は、赤外線カメラ4の位置から所定距離よりも離れる範囲に設定されると言うこともできる。また、図23においては、事前警告範囲は、処理範囲とは重複しないが、他の実施形態においては、処理範囲と重複するように設定されてもよい。
また、他の実施形態においては、携帯機器1は、撮像方向に関する手の位置(距離)に限らず、他の方向に関する手の位置を算出してもよい。
(ガイド画像の具体例)
図24は、ガイド画像の一例を示す図である。図24に示すように、ガイド画像42は、範囲画像45と、指示画像46とを含む。範囲画像45は、現実空間における上記処理範囲の領域を表す。範囲画像45の形状はどのようなものであってもよい。第3の実施形態においては、範囲画像は、撮像方向(ユーザから見て左右方向)における位置に関する処理範囲を表すべく、横方向に延びる棒状の形状である。
また、指示画像46は、手の位置を表すための画像である。指示画像46は、算出された手の位置に応じて、範囲画像45が表す範囲内において移動する。なお、上述のように、第3の実施形態においては、算出された手の位置に応じて携帯機器1における出力(オブジェクト41の曲がり具合)が変化する。したがって、指示画像46の位置は出力に応じて変化するということができる。
ここで、第3の実施形態のような、携帯機器1の周囲で手を動かす操作方法においては、手を自由に動かすことができる一方、基準となる位置がユーザにとってわかりにくいおそれがある。これに対して、第3の実施形態においては、ガイド画像42によってユーザは手の位置を把握しやすくなる。すなわち、ユーザは、ガイド画像42を見ることによって手の位置と出力との関係を把握することができ、操作を行いやすくなる。
なお、第3の実施形態においては、指示画像46は、操作を行うための物体として想定される(ユーザの)手を表す画像である。これによって、指示画像46が、操作を行うための物体を表すことをユーザにわかりやすく認識させることができる。また、操作方法(手を使って操作を行うこと)をユーザにわかりやすく認識させることができる。
なお、他の実施形態においては、携帯機器1は、特定された手の形状に応じて指示画像46の表示態様を変更するようにしてもよい。例えば、携帯機器1は、特定した手の形状を表す指示画像を表示するようにしてもよい。具体的には、手が閉じた形状であるか開いた形状であるかを携帯機器1が特定する場合、携帯機器1は、手が閉じた形状が特定された場合にはグーの形状を表す指示画像を表示し、手が開いた形状が特定された場合にはパーの形状を表す指示画像を表示してもよい。
図24に示すように、ガイド画像42は、処理基準画像47を含む。処理基準画像47は、手が上記基準位置に位置する場合に、指示画像46が配置される位置を表す。つまり、算出される手の位置が上記基準位置となる場合、処理基準画像47が表す位置に指示画像46が配置される。したがって、ユーザは、指示画像46が処理基準画像47の位置となるように手を配置することによって、オブジェクト41を直進させることができる。なお、基準位置が変更される場合(例えば、ユーザの設定変更操作に応じて基準位置が変更されてもよい)、処理基準画像47の位置も変更される。
以上のように、携帯機器1は、算出された手の位置と所定の基準位置との関係に応じた出力となるように出力を制御し、処理基準画像を含むガイド画像をディスプレイ2に表示させる。これによれば、ユーザは、ガイド画像を見ることで、基準位置に配置されるように手を調整することができるので、操作をより行いやすくなる。
また、図24に示すように、ガイド画像42は、カメラ基準画像48を含む。カメラ基準画像48は、範囲画像45が表す処理範囲の領域と、赤外線カメラ4(携帯機器1)との位置関係を表すために表示される。すなわち、カメラ基準画像48は、範囲画像45とカメラ基準画像48との位置関係が、処理範囲の領域と赤外線カメラ4(携帯機器1)との位置関係に対応する位置関係となる位置に配置される。なお、カメラ基準画像48は、ユーザの手と、赤外線カメラ4(携帯機器1)との位置関係を表すために表示されるとも言うことができる。すなわち、カメラ基準画像48は、指示画像45とカメラ基準画像48との位置関係が、ユーザの手と赤外線カメラ4(携帯機器1)との位置関係に対応する位置関係となる位置に配置されると言うことができる。
第3の実施形態においては、赤外線カメラ4は処理範囲の左側(z軸不方向側)に存在するので、図24に示すように、カメラ基準画像48は、範囲画像45の左側に表示される。カメラ基準画像48によって、赤外線カメラ4(携帯機器1)に対してどの辺りに手を配置すればよいかを、ユーザに対してわかりやすく認識させることができる。
なお、ガイド画像42は、図22においてはディスプレイ2の画面の左上の位置に表示されたが、ガイド画像42が表示される位置は任意である。例えば、ガイド画像42は、画面において、赤外線カメラ4が設けられる側(換言すれば、赤外線カメラ4の撮像方向にある側)の領域に表示されてもよい。すなわち、本実施形態においては、ガイド画像42は、画面の中央よりも右側の領域に表示されてもよい。これによれば、ユーザは、手を操作する際にガイド画像42が見やすくなり、ガイド画像42の表示(範囲画像45に対する指示画像46の位置)と手との関係を確認しやすくなる。
図25は、手の位置が事前警告範囲となった場合に表示されるガイド画像の一例を示す図である。第3の実施形態においては、手の位置が事前警告範囲となった場合、携帯機器1は、指示画像46の表示態様を(手の位置が事前警告範囲でない算出可能範囲にある場合と比べて)変化させる。図25においては、指示画像46の色が変化するものとするが、他の実施形態においては、指示画像46の大きさおよび/または形状が変化してもよい。
上記より、ユーザの手の位置が処理範囲から算出不可能範囲へ近づくと、手の位置が事前警告範囲に含まれる結果、指示画像46の表示形態が変化する。したがって、上記によれば、ユーザが手の位置を算出不可能範囲へと移動させようとした場合には、携帯機器1は、手の位置が算出不可能となることを、指示画像46の変化によってユーザに事前に通知することができる。これによれば、ユーザが手の位置を算出不可能範囲へと移動させてしまう可能性を低減することができ、手を用いた操作の操作性を向上することができる。
なお、第3の実施形態においては、処理範囲の右側に事前警告範囲が設定されるので、手の位置が事前警告範囲となる場合、手の位置は処理範囲の右端を越えて移動したことになる。したがって、第3の実施形態においては、手の位置が事前警告範囲となる場合には指示画像46は範囲画像45の右端に表示される。このように、手の位置が事前警告範囲となる場合、指示画像46は、範囲画像45のうちで、処理範囲に対する事前警告範囲の方向に対応する側の端部に表示される。これによって、手の位置が処理範囲からどちらの方向に外れているかをユーザにわかりやすく通知することができる。
なお、他の実施形態においては、処理範囲の両側に事前警告範囲が設定されてもよい。例えば、赤外線カメラ4に近すぎると手の位置が算出不可能となる場合には、処理範囲に対して、赤外線カメラ4に近い側にも事前警告範囲が設定されてもよい。
図26は、手の位置が算出不可能となった場合に表示されるガイド画像の一例を示す図である。第3の実施形態においては、手の位置が算出不可能範囲となった場合(手の位置が算出不可能となった場合)、携帯機器1は、手の位置が算出される場合と比べて指示画像46の表示態様を変化させる。具体的には、図26に示すように、携帯機器1は、手の位置が算出不可能範囲となった場合、指示画像46を、手が検出不可能であることを表す形状(図26では「?」を表す形状)に変化させる。これによって、手の位置が検出(算出)することができない状態であることを、ユーザにわかりやすく通知することができる。なお、図26においては、指示画像46の形状が変化するものとするが、他の実施形態においては、指示画像46の大きさおよび/または色が変化してもよい。また、手の位置が算出不可能範囲にある場合の指示画像46の表示態様は、手の位置が事前警告範囲にある場合の表示態様とは異なっている。
また、手の位置が算出不可能範囲にある場合、指示画像46は、範囲画像45のうちで、処理範囲に対する算出不可能範囲の方向に対応する側の端部に表示される。したがって、第3の実施形態においては、上記の場合も事前警告範囲にある場合と同様、指示画像46は範囲画像45の端部に配置される。ただし、他の実施形態においては、手の位置が算出不可能範囲にある場合、指示画像46は他の位置(例えば、処理基準画像47が示す位置)に配置されてもよい。
なお、本実施形態においては、手の位置が事前警告範囲または算出不可能範囲となった場合、携帯機器1は指示画像46の表示形態を変化させた。ここで、他の実施形態においては、上記の場合、携帯機器1は、指示画像46に限らず、ガイド画像42の一部または全部の表示形態を変化させてもよい。例えば、上記の場合、携帯機器1は、範囲画像45および/または処理基準画像47の表示態様を変化させてもよい。
(ガイド画像の表示タイミング)
本実施形態においては、携帯機器1は、ゲーム処理中においてゲーム画像と共にガイド画像42を表示する(図22参照)。したがって、ユーザは、ゲームのプレイ中においてガイド画像42を見ることによって、手の位置と出力との関係を確認することができるので、操作が行いやすくなる。
なお、他の実施形態においては、ガイド画像42が表示されるタイミングは任意である。例えば、ガイド画像42は、ゲームのプレイ前において表示されてもよい。すなわち、携帯機器1は、手の操作に応じたゲームを開始する前にガイド画像42を表示し、上記実施形態と同様に、手の動きに応じて指示画像を移動させる。そして、所定の開始条件が充足されたこと(例えば、ユーザがゲームを開始する指示を行ったこと、あるいは、ガイド画像42が表示されてから所定時間が経過したこと等)に応じて、携帯機器1は、手の操作に応じたゲーム処理を開始する。このように、ゲーム開始前からガイド画像42を表示することによって、ユーザは、手によるゲーム操作の感覚をゲーム開始前にある程度把握することができるので、ユーザにとってゲーム操作をより行いやすくすることができる。なお、ゲームのプレイ前にゲーム画像42が表示される場合、ゲーム中においては、ゲーム画像42が表示されなくてもよいし、ゲーム中の一部または全部の期間にゲーム画像42が表示されてもよい。
[2.携帯機器1における処理の具体例]
次に、第3の実施形態における携帯機器1において実行される処理の具体例について説明する。図27は、第3の実施形態における携帯機器1によって実行される処理の流れの一例を示すフローチャートである。図27に示す一連の処理は、任意の条件およびタイミングで実行されてよい。例えば、上記一連の処理は、ジェスチャ入力を受け付ける所定のアプリケーションプログラム(例えばゲームプログラム)の実行中において実行される。
まずステップS21において、制御部14は、第1の実施形態におけるステップS1の処理と同様、赤外線カメラ4による撮像画像を赤外線カメラ4から取得する。続くステップS22において、制御部14は、ステップS21で取得された撮像画像に基づいて手の距離(z軸方向に関する位置)を算出する。手の距離の算出方法は任意であり、例えば、上記第1の実施形態における算出方法によって手の距離が算出される。なお、上述のように、手の位置が算出不可能範囲となる場合や、撮像画像に手の位置が含まれない場合には、手の距離の算出に失敗することがある。
ステップS23において、制御部14は、ステップS22において算出された手の距離に基づく情報処理を実行する。この情報処理の内容は任意である。第3の実施形態においては、制御部14は、手の距離を入力とするゲーム処理を実行する。具体的には、制御部14は、仮想ゲーム空間内において、手の距離に応じてオブジェクト41の曲がり具合を制御する処理を実行する。なお、ステップS22において手の距離が算出されない場合には、入力が行われていないものとして上記情報処理が実行される。
ステップS24において、制御部14は、ステップS22の処理において手の距離の算出が成功したか否かを判定する。ステップS24の判定結果が肯定である場合、ステップS25の処理が実行される。一方、ステップS24の判定結果が否定である場合、後述するステップS28の処理が実行される。
ステップS25において、制御部14は、ステップS22で算出された手の位置(距離)が上記事前警告範囲に含まれるか否かを判定する。ステップS25の判定結果が否定である場合、ステップS26の処理が実行される。一方、ステップS24の判定結果が肯定である場合、後述するステップS27の処理が実行される。
ステップS26において、制御部14は、ステップS23における情報処理の処理結果を表す画像をディスプレイ2に表示させるとともに、通常の表示態様でガイド画像42をディスプレイ2に表示させる(図22参照)。なお、通常の表示態様とは、手の位置が算出可能範囲にあり、かつ、事前警告範囲にない場合における表示態様(図24参照)である。また、ステップS26の処理においては、範囲画像45上において、ステップS22において算出された手の距離に応じた位置に指示画像46が配置される。ステップS26の処理の次にステップS29の処理が実行される。
ステップS27において、制御部14は、ステップS23における情報処理の処理結果を表す画像をディスプレイ2に表示させるとともに、事前警告態様でガイド画像42をディスプレイ2に表示させる。なお、事前警告態様とは、手の位置が事前警告範囲にある場合における表示態様(図25参照)である。また、ステップS27の処理においては、範囲画像45上における右端の位置に指示画像46が配置される。ステップS27の処理の次にステップS29の処理が実行される。
ステップS28において、制御部14は、ステップS23における情報処理の処理結果を表す画像をディスプレイ2に表示させるとともに、操作不可能であることを通知する表示態様でガイド画像42をディスプレイ2に表示させる。なお、「操作不可能であることを通知する表示態様」とは、手の位置が算出不可能範囲にある場合における表示態様である(図26参照)。また、ステップS28の処理においては、範囲画像45上において、範囲画像45上における右端の位置に指示画像46が配置される。ステップS28の処理の次にステップS29の処理が実行される。
ステップS29において、制御部14は、手の距離を入力とする一連の情報処理を終了するか否かを判定する。ステップS29における判定の具体的な方法は任意である。第3の実施形態においては、ユーザが所定の終了指示(例えば、アプリケーションを終了する指示)を行った場合、上記一連の情報処理を終了すると判定される。ステップS29の判定結果が肯定である場合、制御部14は、図27に示す処理を終了する。一方、ステップS29の判定結果が否定である場合、制御部14は、ステップS21の処理を再度実行する。以降、ステップS29において処理を終了すると判定されるまで、ステップS21〜S29の一連の処理が繰り返し実行される。
[3.第3の実施形態における作用効果]
以上のように、第3の実施形態においては、手持ち型の情報処理装置(携帯機器1)は、赤外線カメラ4による撮像画像に基づいて、当該撮像画像に含まれる物体(ユーザの手)の位置を算出する(ステップS22)。また、情報処理装置は、物体の位置に応じた出力を出力装置(ディスプレイ2)に出力させる(ステップS23)。情報処理装置は、範囲を表す範囲画像45と、当該範囲内において出力の変化に応じて位置が変化する指示画像46とを含むガイド画像42を所定の表示装置(ディスプレイ2)に表示させる(ステップS26,S27)。
上記「物体の位置に応じた出力」とは、第3の実施形態のような画像表示の出力であってもよいし、スピーカからの音出力であってもよい。すなわち、携帯機器1は、手の位置に応じて音の出力を変化させる場合に、ガイド画像をディスプレイ2に表示するようにしてもよい。また、上記「所定の表示装置」とは、情報処理装置が備える表示装置(ディスプレイ2)であってもよいし、情報処理装置とは別体の表示装置(例えば、テレビ)であってもよい。
上記によれば、携帯機器1は、ユーザが手等を動かす操作を入力として情報処理を実行する。すなわち、ユーザは、手等を動かすことで入力操作を行うことができるので、多様な入力を行うことができる。また、上記によれば、携帯機器1はガイド画像を表示するので、手等の位置をユーザに認識させることができる。これによって、手等を用いた操作の操作性を向上することができる。
なお、第3の実施形態において、赤外線カメラ4は、携帯機器1のハウジングの側面方向を撮像する。したがって、ユーザは、携帯機器1の側面方向において手等を動かせばよいので、ユーザにとって操作しやすい状態で入力操作を行うことができる。
また、携帯機器1は、指示画像46と所定の装置基準画像(カメラ基準画像48)との位置関係が、手と赤外線カメラ4との位置関係に対応する位置関係となるように、所定の装置基準画像を含むガイド画像42をディスプレイ2に表示させる(図24)。これによれば、携帯機器1は、手が赤外線カメラ4(携帯機器1)に対してどの辺りにあるかを、ユーザに対して提示することができる。これによって、手等を用いた操作の操作性を向上することができる。
なお、携帯機器1は、範囲画像45と所定の装置基準画像(カメラ基準画像48)との位置関係が、上記領域と赤外線カメラ4との位置関係に対応する位置関係となるように、所定の装置基準画像を含むガイド画像をディスプレイ2に表示させると言うこともできる。このとき、携帯機器1は、少なくとも所定の領域内(図23に示す処理範囲内)における物体の位置を算出する。これによれば、携帯機器1は、手等を用いた操作を行うことが可能な領域が赤外線カメラ4(携帯機器1)に対してどの辺りにあるかを、ユーザに対して提示することができる。これによって、手等を用いた操作の操作性を向上することができる。
また、携帯機器1は、物体の位置を算出することができない場合、当該物体の位置が算出される場合と比べてガイド画像の表示態様を変化させる(図26、図27に示すステップS28)。これによれば、手の位置が検出(算出)することができない状態であることを、ユーザに通知することができ、手等を用いた操作の操作性を向上することができる。
また、携帯機器1は、算出された物体の位置が、所定の基準位置から当該位置が算出不可能な領域への方向に所定距離よりも離れた場合(算出された位置が事前警告範囲内となる場合)、当該算出された位置が所定距離以内となる場合と比べてガイド画像の表示態様を変化させる(図25、図27に示すステップS27)。上記によれば、ユーザが物体(手等)の位置を算出不可能範囲へと移動させようとした場合には、携帯機器1は、物体の位置が算出不可能となることを、ユーザに事前に通知することができる。これによれば、ユーザが物体の位置を算出不可能な領域へと移動させてしまう可能性を低減することができ、手等を用いた操作の操作性を向上することができる。
また、携帯機器1は、赤外線カメラ4の撮像方向に関する物体の位置を撮像画像に基づいて算出する。このとき、物体の位置の算出方法としては、撮像画像における明るさに基づく方法(第1の実施形態)、あるいは、撮像画像における当該物体の大きさに基づく方法(第2の実施形態)が考えられる。ここで、上記物体の色や大きさが既知ではない場合(例えば、物体が、ユーザの手のように個人差があるものである場合)、これらの方法では、赤外線カメラ4からの絶対的な位置(距離)を正確に算出することは難しい。そのため、これらの方法では、所望の出力を得るために手をどのくらいの位置に配置すればよいかがユーザにとってわかりにくいおそれがある。これに関して、上記によれば、ガイド画像によって、手をどのくらいの位置に配置すればよいかをユーザにわかりやすく提示することができ、手を用いた操作の操作性を向上することができる。
また、携帯機器1は、算出された物体の位置と所定の基準位置との関係に応じた出力となるように出力を制御する(図23)。このとき、携帯機器1は、範囲画像45が表す範囲内における、基準位置に対応する位置に配置される処理基準画像47を含むガイド画像42をディスプレイ2に表示させる(図24)。これによれば、ユーザは、ガイド画像42を見ることによって、基準位置に配置されるように手を調整することができるので、操作をより行いやすくなる。
[4.変形例]
上記第3の実施形態においては、携帯機器1は、所定の一方向に関する手の移動操作を検出し、当該一方向に関する位置を表すガイド画像を表示するものであった。ここで、携帯機器1が検出する操作は任意であり、また、ガイド画像の表示態様は任意である。以下、ガイド画像の変形例について説明する。
図28は、ガイド画像の変形例の一例を示す図である。例えば、携帯機器1は、第1の実施形態において説明した回転操作を検出してもよく、このとき、図28に示すガイド画像をディスプレイ2に表示してもよい。図28に示すガイド画像は、範囲画像51と、指示画像52とを含む。範囲画像51は円形領域であり、指示画像52は、範囲画像51上に配置される線状の画像である。
なお、上記ガイド画像は、上記第3の実施形態と同様、回転操作による出力結果を表す画像(ゲーム画像等)とは異なる画像として表示されてもよい。また、上記ガイド画像は、回転操作による出力結果を表す画像の一部として表示されてもよい。例えば、プレイヤキャラクタが乗る一輪車が回転操作に応じて進むゲーム処理が実行される場合において、上記ガイド画像は、当該一輪車の車輪として表示されてもよい。
本変形例においては、携帯機器1は、上記回転操作に応じて範囲画像51および指示画像52が回転するように表示制御を行う。例えば、携帯機器1は、回転操作に応じた回転角度を算出し、算出された回転角度を指示画像52が表すように、範囲画像51および指示画像52を回転させて表示する。これによって、指示画像52の向きは、算出される回転角度を表すことになる。したがって、ユーザは、指示画像52の向きによって回転角度を知ることができる。なお、他の実施形態においては、範囲画像51は固定され(すなわち、回転操作に応じて回転せず)、指示画像52のみが回転操作に応じて回転するように表示されてもよい。
上記のように、携帯機器1は、撮像画像に基づいて物体の向き(回転角度)を算出してもよく、当該向きに応じた出力(範囲画像51の回転表示)を行うものであってもよい。このとき、ガイド画像は、範囲画像の範囲内において(出力の変化に応じて)向きが変化する指示画像を含んでいてもよい。これによれば、ガイド画像によって手等の向きをユーザに認識させることができ、手等を用いた操作の操作性を向上することができる。
また、他の実施形態においては、携帯機器1は、物体(例えば手)に関する2次元の位置を算出してもよく、このとき、ガイド画像は、2次元の範囲を表すものであってもよい。すなわち、ガイド画像は、2次元の範囲を表す範囲画像と、当該2次元の範囲において、算出された2次元の位置を表す指示画像とを含むものであってもよい。
また、他の実施形態においては、ガイド画像に含まれる範囲画像は、仮想空間(例えばゲーム空間)に配置されるオブジェクトを兼ねていてもよい。図29は、ガイド画像の変形例の他の一例を示す図である。図29は、携帯機器1によってディスプレイ2に表示されるゲーム画像を示している。図29に示す例では、携帯機器1は、撮像画像に基づいてユーザの手の位置を算出し、算出された手の位置に応じて、仮想空間において大砲55をレール56上で移動する制御を行うものとする。
具体的には、携帯機器1は、手の位置に基づいてレール56上の目標位置を算出し、当該目標位置まで大砲55を移動させる。なお、大砲55の移動速度には上限があり、手の位置に応じた目標位置の移動が上限速度よりも速い場合、大砲55は、目標位置の移動から遅れて移動するように制御される。
ここで、携帯機器1は、レール56上の目標位置を表す指示画像57をディスプレイ2に表示する(図29参照)。このとき、上記レール56は範囲画像であるということができる。このように、ガイド画像は、その一部(範囲画像等)が仮想空間に登場するオブジェクトの画像であってもよい。なお、図29に示す例においても上記第3の実施形態と同様、指示画像57は、ユーザによる操作対象(大砲55)とは異なる画像である。
また、上記実施形態においては、携帯機器1は、撮像手段(赤外線カメラ4)による撮像画像に基づいて手の位置を算出する場合にガイド画像を表示するものとした。ここで、携帯機器1と離れた位置に存在する物体を検出し、検出結果に基づいて物体の位置(または向き)を算出する方法は、任意である。例えば、他の実施形態においては、携帯機器1は、測距センサ5の検出結果に基づいて手の位置(距離)を算出する場合においてガイド画像を表示するようにしてもよい。すなわち、携帯機器1は、測距センサ5の出力に基づいて物体(手)の位置を算出し、当該物体の位置に応じた出力を所定の出力装置に出力させてもよい。そして、携帯機器1は、上記出力の変化に応じて位置が変化する指示画像を含むガイド画像を表示するようにしてもよい。測距センサ5が用いられる場合においても上記実施形態と同様、ガイド画像によって、手等を用いた操作の操作性を向上することができる。
<第4の実施形態>
次に、本発明の第4の実施形態について説明する。第4の実施形態においては、携帯機器1は、携帯機器1の側面にタッチする操作(タッチ操作)を撮像画像に基づいて検出する。また、携帯機器1は、タッチ操作に応じて各種の情報処理(例えば、ゲームを開始する処理等)を実行する。このようなタッチ操作を可能とすることによって、操作性を向上することができる。なお、第4の実施形態における携帯機器1のハードウェア構成は第1の実施形態と同じであるので、ハードウェア構成の詳細な説明を省略する。
図30は、携帯機器1に対してユーザがタッチ操作を行う様子の一例を示す図である。図30に示すように、タッチ操作は、ユーザが手を赤外線カメラ4に接触させる操作である。タッチ操作は、赤外線カメラ4(のレンズ部分)を手で覆う操作であると言うこともできる。なお、詳細は後述するが、第4の実施形態において、携帯機器1は、撮像画像の明るさ(例えば、撮像画像全体の明るさの平均値)を用いてタッチ操作を検出する。したがって、手が赤外線カメラ4に接触しなくても、手が赤外線カメラ4の近傍に位置した場合には、タッチ操作が検出されることもある。つまり、第4の実施形態において、タッチ操作は、厳密な意味で手が赤外線カメラ4に接触することを要求するものではなく、手が赤外線カメラ4の近傍に配置されればよい。例えば、ユーザの手が赤外線カメラ4に触れないように、赤外線カメラ4が周囲のハウジング21よりも凹んだ位置に配置されてもよい。このとき、タッチ操作は、厳密には、赤外線カメラ4の周囲のハウジング21に接触する操作となる。本実施形態では、このような操作も、手を赤外線カメラ4に接触させる操作とみなし、タッチ操作と呼ぶ。
[1.携帯機器1における処理の概要]
(タッチ操作の検出方法)
次に、タッチ操作の検出方法について説明する。図31は、タッチ操作が行われる際に取得される撮像画像の変化の一例を示す図である。タッチ操作が行われる前からタッチ操作が行われた時点までに取得される撮像画像は、例えば、図31に示すように変化する。
図31の(a)に示す撮像画像は、タッチ操作が行われる前の時点で取得されるものである。この時点では、ユーザの手は赤外線カメラ4からある程度離れた位置にあり、撮像画像にはユーザの手の全体が含まれている。この場合、撮像画像は、通常の明るさ(図31(a)〜(c)のうちでは、相対的に低い明るさ)である。
図31の(b)に示す撮像画像は、タッチ操作が行われる直前の時点で取得されるものである。この時点では、ユーザの手は赤外線カメラ4にかなり近づいており、ユーザの手は撮像画像からはみ出している。この撮像画像では、ユーザの手の領域が図31の(a)に示す撮像画像よりも広くなっているので、撮像画像はより明るくなっている。すなわち、撮像画像は、通常よりも明るくなっている(図31(a)〜(c)のうちでは、相対的に中程度の明るさである)。
図31の(c)に示す撮像画像は、タッチ操作が行われた時点で取得されるものである。この時点では、ユーザの手が赤外線カメラ4に接触しているので、手が赤外線カメラ4をほぼ覆っている状態となる。したがって、撮像画像の(ほぼ)全領域が手の領域となっているので、撮像画像は(図31の(b)の場合と比べて)さらに明るくなっている。すなわち、撮像画像は、通常よりもさらに明るくなっている(図31(a)〜(c)のうちでは、相対的に高い明るさである)。
以上より、携帯機器1は、取得した撮像画像の明るさに基づいて、タッチ操作が行われたか否かを判定することができる。具体的には、携帯機器1は、撮像画像の明るさとして、撮像画像の各画素の輝度の平均値を算出する。そして、携帯機器1は、撮像画像の明るさが所定値以上となる場合、タッチ操作が行われたと判定する。
なお、他の実施形態においては、携帯機器1は、例えば測距センサ5を用いて手の距離を算出してもよい。このとき、携帯機器1は、測距センサ5の検出結果に基づいて赤外線カメラ4に手が接触したか否かを判定し、この判定結果に応じてタッチ操作を検出してもよい。
(タッチ操作に基づく情報処理)
次に、タッチ操作を入力として用いる情報処理の例について説明する。第4の実施形態においては、携帯機器1がゲーム処理を実行する場合において、タッチ操作は、ゲームの開始のための操作として用いられる。
図32は、タッチ操作を用いた行われるゲームの流れの一例を示す図である。なお、第4の実施形態においては、レースゲームが実行される場合を例とするが、ゲームの内容は任意である。
第4の実施形態において、ゲームは、タッチ操作に応じて開始される(図32の(a))。すなわち、携帯機器1は、ゲームが開始される前の状態において、タッチ操作を検出したことに応じてゲーム(レース)を開始する。なお、携帯機器1は、タッチ操作の検出と同時にゲームを開始してもよいし、タッチ操作の検出に応じてカウントダウンを開始し、カウントが0になった時点でゲームを開始してもよい。
ゲーム中(ゲームプレイ中)においては、ユーザの手の操作を入力としてゲームが実行される(図32の(b))。すなわち、携帯機器1は、撮像画像に基づいてユーザの手の位置(向きでもよい)を算出し、手の動きに応じた情報処理(ゲーム処理)を実行する。第4の実施形態においては、携帯機器1は、算出された手の位置に基づいてオブジェクト(プレイヤキャラクタ)を移動させたり動作させたりする制御を実行する。
ゲームにおいて所定のゲーム条件が満たされた場合、ゲームオーバーとなる(図32の(c))。すなわち、携帯機器1は、ゲーム中において上記ゲーム条件が満たされた場合、ゲームの進行を停止し、ゲームオーバーであることを通知するゲーム画像をディスプレイ2に表示する。
ゲームオーバーであることを通知するゲーム画像が表示される状態において、ユーザがタッチ操作を行うと、ゲームが開始(再開)される(図32の(d))。すなわち、携帯機器1は、上記状態においてタッチ操作を検出した場合、ゲームを再開する。なお、ゲームの再開とは、任意の状態でゲームを開始することを含む意味である。例えば、携帯機器1は、ゲームオーバーとなった状態からゲームを再開してもよいし、最初からゲームを再開してもよい。
以上のように、第4の実施形態によれば、ユーザは、携帯機器1の側面に対するタッチ操作によって、ゲームを開始することができる。ここで、タッチ操作を行った後、ユーザは赤外線カメラ4から手を離すので、ユーザの手は赤外線カメラ4の視野範囲に自然と配置されることになる。つまり、ユーザは、タッチ操作を行った後、手によるゲーム操作を行う位置へと手を自然に持って行くことになるので、タッチ操作に続けてゲーム操作をスムーズに行うことができる。したがって、第4の実施形態によれば、ゲームの開始時の操作の操作性を向上することができる。
なお、他の実施形態においては、タッチ操作に応じて実行される情報処理の内容は任意である。例えば、携帯機器1は、タッチ操作に応じて、ゲームを一時停止させたり、終了させたりする処理を実行してもよい。また例えば、携帯機器1は、タッチ操作に応じて、オブジェクト(プレイヤキャラクタ)に所定の動作を行わせる処理を実行してもよい。例えば、携帯機器1は、撮像画像に基づいて算出される手の位置に応じて、仮想空間におけるオブジェクトを移動させるとともに、タッチ操作に応じてオブジェクトの所定の動作を行わせるようにしてもよい。
[2.携帯機器1における処理の具体例]
次に、第4の実施形態における携帯機器1において実行される処理の具体例について説明する。図33は、第4の実施形態における携帯機器1によって実行される処理の流れの一例を示すフローチャートである。図33に示す一連の処理は、任意の条件およびタイミングで実行されてよい。例えば、上記一連の処理は、タッチ操作を受け付ける所定のアプリケーションプログラム(例えばゲームプログラム)の実行中において実行される。
まずステップS31において、制御部14は、第1の実施形態におけるステップS1の処理と同様、赤外線カメラ4による撮像画像を赤外線カメラ4から取得する。続くステップS22において、制御部14は、ステップS1で取得された撮像画像に基づいて手の位置を算出する。ここで、手の位置の算出方法は任意であり、例えば、上記第1の実施形態における算出方法によって手の位置が算出される。また、算出される手の位置は、所定の一方向に関する位置であってもよいし、2次元または3次元の位置であってもよい。
ステップS33において、制御部14は、ステップS1で取得された撮像画像の明るさを算出する。なお、上記ステップS32において、手の距離(z軸方向に関する位置)を算出するために撮像画像の明るさを算出している場合、制御部14は、ステップS33において再度明るさを算出しなくてもよい。
また、第4の実施形態において、ステップS32において手の距離を算出し、手の距離をゲーム処理(ステップS37)において用いる場合でも、携帯機器1は、タッチ操作を検出することが可能である。つまり、携帯機器1は、ゲーム入力として手の距離を算出しつつ、タッチ操作を検出することが可能である。例えば、携帯機器1は、撮像画像の明るさが所定の閾値以下である場合には、手の距離をゲーム入力に用いるとともに、撮像画像の明るさが所定の閾値よりも大きい場合には、タッチ操作が行われたと判定するようにしてもよい。
ステップS34において、制御部14は、ゲーム中(ゲームプレイ中)であるか否かを判定する。ステップS34の判定結果が否定である場合、ステップS35の処理が実行される。一方、ステップS34の判定結果が肯定である場合、後述するステップS37の処理が実行される。
ステップS35において、制御部14は、タッチ操作が行われたか否かを判定する。この判定は、上記“(タッチ操作の検出方法)”で述べた方法で行われる。ステップS35の判定結果が肯定である場合、ステップS36の処理が実行される。一方、ステップS35の判定結果が否定である場合、ステップS31の処理が再度実行される。この場合、タッチ操作が検出されるまで、ゲームの開始が待機されることとなる。
ステップS36において、制御部14は、ゲームを開始する。上記ステップS36の後、ステップS31の処理を再度実行する。すなわち、ステップS36の処理以降、上記ステップS34における判定結果が肯定となり、ユーザの手の操作に応じたゲーム処理(ステップS37)が実行されることになる。
一方、ステップS37において、制御部14は、ユーザの手の動きに応じた情報処理(ゲーム処理)を実行する。また、制御部14は、情報処理の結果を示すゲーム画像を生成してディスプレイ2に表示する。上記情報処理の内容は任意であるが、第4の実施形態においては、制御部14は、レースゲームにおけるプレイヤキャラクタを手の位置に応じて移動制御する情報処理を実行する。
ステップS38において、制御部14は、ゲームオーバーとなったか否かを判定する。
ステップS38の具体的な判定方法は任意である。例えば、制御部14は、所定のゲーム条件(プレイヤキャラクタが障害物にぶつかったり、谷に落ちたりしたこと)が満たされたか否かを判定する。ステップS38の判定結果が肯定である場合、ステップS39の処理が実行される。一方、ステップS38の判定結果が否定である場合、ステップS31の処理が再度実行される。したがって、ゲームオーバーとなるまで、ステップS31〜S34,S37,S38の一連の処理が繰り返し実行され、ゲームが進行する。
ステップS39において、制御部14は、ゲームを終了するか否かを判定する。ステップS29における判定の具体的な方法は任意である。第4の実施形態においては、ユーザが所定の終了指示(例えば、ゲームアプリケーションを終了する指示)を行った場合、上記ゲームを終了すると判定される。ステップS39の判定結果が肯定である場合、制御部14は、図33に示す処理を終了する。一方、ステップS39の判定結果が否定である場合、制御部14は、ステップS31の処理を再度実行する。以降、ステップS39において処理を終了すると判定されるまで、ステップS31〜S39の一連の処理が繰り返し実行される。
なお、第4の実施形態において、ゲームを終了するか否かの判定処理(ステップS39)は、ゲームオーバーとなった場合にのみ行われた。ここで、他の実施形態においては、ゲームを終了するか否かの判定処理は、図33に示す一連の処理における任意のタイミングで実行されてもよい。例えば、上記判定処理は、ゲームが一時停止された場合に実行されてもよい。
図33に示す処理によれば、ユーザのタッチ操作に応じてゲームが開始され(ステップS36)、以降、ゲームオーバーとなるまで、ユーザの手の動きをゲーム入力とするゲーム処理が実行される(ステップS31〜S34、S37)。そして、ゲームオーバーとなった場合には、再度タッチ操作が行われたことに応じて、ゲームが再開される(ステップS36)。
[3.第4の実施形態における作用効果]
以上のように、第4の実施形態においては、携帯機器1は撮像画像に基づいて、赤外線カメラ4に物体(ユーザの手)を接触させる操作(タッチ操作)を検出し(ステップS35)、操作の検出結果に基づいて所定の情報処理を実行する(ステップS36)。これによれば、ユーザは、赤外線カメラ4にタッチする操作によって携帯機器1に対する指示を行うことができる。すなわち、第4の実施形態によれば、従来にはない操作が可能となり、携帯機器1の操作性を向上することができる。
また、第4の実施形態において、赤外線カメラ4は、携帯機器1のハウジング10において、当該ハウジング10の側面方向(の空間)を撮像するように設けられる。したがって、ユーザは、ハウジング10の側面方向から撮像装置をタッチする操作を行うことができる。これによれば、例えば、ユーザは、片方の手で携帯機器1を把持しながら、もう一方の手でタッチ操作を行うことができるので、操作性の良い携帯機器を提供することができる。
また、第4の実施形態においては、携帯機器1は、上記タッチ操作が検出されたことに応じて上記所定の情報処理の実行を開始する。ここで、「所定の情報処理の実行の開始」とは、停止(一時停止を含む)されていた情報処理の実行を再開することを含む意味である。なお、他の実施形態においては、タッチ操作が検出されたことに応じて上記所定の情報処理の実行が停止(一時停止を含む)されてもよい。上記によれば、ユーザは、情報処理の実行の開始および/または停止をタッチ操作によって指示することができる。
上記において、携帯機器1は、撮像画像に基づいて物体の位置を表す物体情報を算出し(ステップS32)、上記所定の情報処理として、物体情報に基づく情報処理を実行する(ステップS37)。なお、他の実施形態においては、物体情報は、物体の位置に限らず、物体の形状、および/または、物体の動きを表す情報であってもよい。上記によれば、ユーザは、タッチ操作と、手等の物体を動かす操作とを行うことができ、さらに、これら2つの操作をスムーズに切り替えることができる。したがって、上記によれば、上記2つの操作の操作性を向上することができる。
また、第4の実施形態において、携帯機器1は、撮像画像に基づいて物体(手)が赤外線カメラ4またはその近傍に接触していない状態における当該物体について物体情報を算出する(ステップS32)。これによれば、携帯機器1は、操作を検出する処理と、物体情報と算出する処理とを容易に切り替えることができる。
第4の実施形態において、携帯機器1は、撮像画像における所定領域内の画素における明るさに関する情報(輝度の平均値)に基づいて、タッチ操作を検出する(図31)。なお、上記「所定領域」は、第4の実施形態においては撮像画像の全領域としたが、他の実施形態においては、上記物体の画像の領域とは独立して設定される任意の領域であってよい。上記によれば、携帯機器1は、明るさに関する情報を用いることによって上記操作を容易に検出することができる。
[4.変形例]
なお、他の実施形態においては、携帯機器1は、タッチ操作に加えて、タッチ操作の速度、および/または、タッチ操作の位置を算出し、入力として用いるようにしてもよい。以下、上記第4の実施形態の変形例として、タッチ操作の速度、または、タッチ操作の位置を算出する例について説明する。
携帯機器1は、タッチ操作の速度(手が赤外線カメラ4に接触する際の速度)を算出してもよい。すなわち、携帯機器1は、撮像画像の明るさが相対的に低い状態から、相対的に高い状態(タッチ操作が行われた状態)へと変化するまでの時間を算出し、当該時間に基づいてタッチ操作の速度を算出してもよい。具体的には、携帯機器1は、撮像画像の明るさが第1の閾値以下である状態から、明るさが第2の閾値よりも大きくなる状態までの時間を算出する。なお、第2の閾値は、第1の閾値よりも大きい値であり、タッチ操作が行われたか否かを判定するための閾値である。
上記のように、携帯機器1は、タッチ操作が検出されるまでに取得された撮像画像に基づいて、タッチ操作の速度を算出してもよい。このとき、携帯機器1は、算出された速度に応じて所定の情報処理の処理内容を変化させてもよい。この所定の情報処理は、任意である。例えば、携帯機器1は、速度が所定値よりも大きい場合には上記所定の情報処理として第1の処理(例えば、上述したゲーム処理を開始する処理)を実行し、速度が当該所定値以下である場合には、第1の処理とは異なる第2の処理(例えば、プレイヤキャラクタに所定の動作を行わせる処理)を上記所定の情報処理として実行してもよい。
また、携帯機器1は、タッチ操作の位置(赤外線カメラ4に対する手の接触位置)を算出してもよい。例えば、携帯機器1は、ユーザの手が赤外線カメラ4に接触した際、手が赤外線カメラ4の上側をタッチしたか、下側をタッチしたか、それとも、中央部分をタッチしたかを判別してもよい。
具体的には、携帯機器1は、タッチ操作が行われる前に取得された撮像画像における手の位置、および/または、タッチ操作が行われた時に取得された撮像画像における手の位置、タッチ操作の位置を判別してもよい。携帯機器1は、タッチ操作が行われる直前に取得された撮像画像(例えば、図31の(b)に示す撮像画像)において、当該撮像画像における手の位置を算出する。この手の位置は、例えば、上記第1の実施形態において算出される重心位置であってもよい。携帯機器1は、算出された手の位置(重心位置)に基づいて、タッチ操作の位置を判別する。例えば、携帯機器1は、重心位置が撮像画像の中央から所定距離よりも上方の位置であれば、ユーザは上側をタッチしたと判別し、重心位置が撮像画像の中央から所定距離よりも下方の位置であれば、ユーザは下側をタッチしたと判別し、重心位置が撮像画像の中央から所定距離以内であれば、ユーザは中央をタッチしたと判別する。なお、他の実施形態においては、携帯機器1は、タッチ操作の位置を座標として算出してもよい。
なお、他の実施形態においては、タッチ操作が行われた時までに取得された複数の撮像画像に基づいて、タッチ操作の位置が判別されてもよい。例えば、携帯機器1は、複数の撮像画像について上記重心位置を算出し、重心位置の変化に基づいてタッチ操作の位置を判別してもよい。
上記のように、携帯機器1は、タッチ操作が検出されたときに取得された、および/または、検出されるまでに取得された撮像画像に基づいて、赤外線カメラ4に対するタッチ操作が行われた位置(タッチ操作の位置)を判別してもよい。このとき、携帯機器1は、判別された位置に応じて所定の情報処理の処理内容を変化させてもよい。この所定の情報処理は、任意である。例えば、携帯機器1は、タッチ操作の位置が、赤外線カメラ4の中央より下側の位置である場合には、上記所定の情報処理として第1の処理(例えば、上述したゲーム処理を開始する処理)を実行し、タッチ操作の位置が、赤外線カメラ4の中央より上側の位置である場合には、第1の処理とは異なる第2の処理(例えば、プレイヤキャラクタに所定の動作を行わせる処理)を上記所定の情報処理として実行してもよい。
<変形例>
(携帯機器に関する変形例)
上記第1〜第4の実施形態においては、撮像装置(赤外線カメラ4)を備える情報処理装置が携帯機器である場合について説明したが、撮像画像を備える情報処理装置はどのような種類のものであってもよい。例えば、他の実施形態においては、ユーザが手に持って操作を行うための操作装置が撮像装置を備えていてもよい。このとき、撮像画像を取得し、撮像画像に基づく情報処理を実行する装置は、操作装置であってもよいし、操作装置と通信可能な他の情報処理装置であってもよい。例えば、据置型のゲーム装置に対する入力を行うためのコントローラが撮像装置を備えており、当該ゲーム装置が、コントローラから取得された撮像画像に基づく情報処理を実行してもよい。このとき、上記コントローラが撮像画像に基づいて手の位置等(位置、向き、形状、および/または、これらの変化等)に関する情報を算出してゲーム装置へ送信し、ゲーム装置は、コントローラから受信した情報に基づいて情報処理(ゲーム処理)を実行するようにしてもよい。
(撮像装置に関する変形例)
上記第1〜第4の実施形態においては、撮像装置の一例として赤外線カメラ4が用いられ、携帯機器1は、赤外線画像における輝度を表す情報(当該情報を含む撮像画像)を取得した。ここで、他の実施形態においては、赤外線カメラ4に限らず、任意の撮像装置が用いられてもよい。例えば、他の実施形態においては、画素毎にRGB値を有する撮像画像を出力するカメラが撮像装置として用いられてもよい。
(撮像画像に基づいて算出される情報に関する変形例)
上記第1〜第4の実施形態においては、携帯機器1は、物体(手)の位置および/または形状を撮像画像に基づいて算出した。ここで、上述したように、他の実施形態においては、携帯機器1は、物体の動きを算出してもよい。
例えば、他の実施形態においても上記実施形態と同様、携帯機器1は、手持ち型の情報処理装置であって、ハウジングと、ハウジングの側面方向を撮像する想像装置(赤外線カメラ4)とを備えていてもよい。このとき、携帯機器1は、撮像画像に基づいて、当該撮像画像に含まれる物体の回転および/または速度を検出してもよい。また、携帯機器1は、検出された結果に応じた情報処理を実行してもよい。例えば、携帯機器1は、物体の回転として、上記回転操作(図13参照)を検出してもよいし、物体の速度として、上記あおぎ操作(図12参照)の速度や、タッチ操作(図30参照)の速度を検出してもよい。このとき、携帯機器1は、検出された回転に応じてオブジェクトを回転させる処理を実行してもよい。また、携帯機器1は、検出された速度に応じた速度でオブジェクトを移動させる処理を実行してもよい。
また、他の実施形態においては、携帯機器1は、物体の位置と形状との組み合わせに基づいて操作を検出してもよい。図34は、手を用いた操作の一例を示す図である。図34においては、ユーザは、手を閉じた状態から、手を開きながら赤外線カメラ4に近づける操作を行う。携帯機器1は、このような操作を検出し、操作に応じて所定の情報処理を実行するようにしてもよい。例えば、図34において、携帯機器1は、ディスプレイの右端から所定のオブジェクトが次第に現れるような画像(動画)を生成して表示するようにしてもよい。これによれば、手の動きに合わせてディスプレイ2にオブジェクトが登場したかのような感覚をユーザに与えることができ、直感的でわかりやすい操作を提供することができる。
上記操作を検出する場合、携帯機器1はまず、撮像画像に基づいて、撮像画像に含まれる物体の形状と位置(具体的には、撮像方向に関する物体の位置)とを算出する。そして、携帯機器1は、算出された物体の形状および位置の組み合わせに基づいて、上記操作を検出する。具体的には、携帯機器1は、手の位置が赤外線カメラ4に近づいており、かつ、手の形状が第1の形状(閉じた形状)から第2の形状(開いた形状)に変化しているか否かによって、上記操作が行われたか否かを判定する。なお、手の位置を算出する方法、および、手の形状を特定する方法は、上述の第1または第2の実施形態における方法を用いることができる。また、手の位置が赤外線カメラ4に近づいているか否かは、例えば、手の位置が所定距離以上(および/または、所定速度以上で)z軸負方向に移動しているか否かによって判定することができる。
上記操作が検出されたことに応じて、携帯機器1は、所定の情報処理を実行する。具体的には、携帯機器1は、ディスプレイ2の右端(赤外線カメラ4が設けられる側の端部)から登場するオブジェクトが画面中央に向かって移動する画像(動画)を生成してディスプレイ2に表示する。上記操作は、携帯機器1に対して何かを入れることをユーザにイメージさせる操作であると言える。そのため、上記操作に応じてオブジェクトが画面に表示される処理を行うことで、直感的でわかりやすい操作をユーザに提供することができる。なお、上記操作に応じて実行される情報処理は、任意であり、例えば、携帯機器1にアプリケーションをインストールする処理、フォルダにデータファイルを入れる処理、あるいは、データを携帯機器1に保存する処理であってもよい。これらの処理を実行する場合も、直感的でわかりやすい操作をユーザに提供することができる。
また、携帯機器1は、上記操作とは逆の操作、すなわち、手を開いた状態から、手を閉じながら赤外線カメラ4から遠ざける操作を検出するようにしてもよい。具体的には、携帯機器1は、手の位置が赤外線カメラ4から遠ざかっており、かつ、手の形状が上記第2の形状(開いた形状)から上記第1の形状(閉じた形状)に変化しているか否かによって、上記操作が行われたか否かを判定する。この操作を検出したことに応じて、携帯機器1は、上記所定の情報処理とは異なる情報処理を実行する。例えば、携帯機器1は、ディスプレイ2に表示されているオブジェクトを、ディスプレイ2の右端(赤外線カメラ4が設けられる側の端部)へ移動させて右端から画面外へ消える画像(動画)を生成してディスプレイ2に表示してもよい。上記操作は、携帯機器1から何かを出す(引き出す)ことをユーザにイメージさせる操作であると言える。そのため、上記操作に応じてオブジェクトが画面から消える処理を行うことで、直感的でわかりやすい操作をユーザに提供することができる。なお、上記操作に応じて実行される情報処理は、任意であり、例えば、ファイルを削除する処理、オブジェクトを掴む(ドラッグ操作が可能な状態にする)処理等であってもよい。これらの処理を実行する場合も、直感的でわかりやすい操作をユーザに提供することができる。
(手の位置の算出に関する変形例)
上記第1または第2の実施形態における方法で撮像画像から手の位置を算出する場合、実際の手の位置はほとんど移動していないにもかかわらず、ユーザの手の形状または向きが変化したことに応じて、算出される手の位置が変化してしまうおそれがある。したがって、携帯機器1は、撮像画像から手の位置を算出する処理を、手の形状および/または手の向きに応じて決定するようにしてもよい。例えば、第1の実施形態のように重心位置から手の位置を決定する場合、携帯機器1は、手の形状が閉じた形状であるか開いた形状であるかによって、重心位置から手の位置を決定する処理(計算方法)を異なるようにしてもよい。
(入力に関する変形例)
上記第1〜第4の実施形態においては、携帯機器1は、赤外線カメラ4による撮像画像に基づいて検出される入力(ユーザの手の位置等)に応じて所定の情報処理(ステップS5,S16,S17,S23,S37等)を実行した。ここで、他の実施形態においては、携帯機器1は、上記入力と、他の入力部に対する入力とのいずれかに基づいて情報処理を実行するようにしてもよい。他の入力部は、例えば、上記入力ボタン6、および/または、上記タッチパネル3である。これによって、多様な操作方法をユーザに提供することができる。例えば、上記第4の実施形態においては、ユーザは、携帯機器1の側面(赤外線カメラ4の位置)にタッチするとともに、ディスプレイ2にもタッチすることができ、新規な操作を提供することができる。