説明

コマンド発行装置、コマンド発行方法およびプログラム

【課題】送り動作と、送り動作とは異なる動作(例えば復帰動作や予備動作等)とを区別可能なコマンド発行装置、コマンド発行方法およびプログラムを提供する。
【解決手段】実施形態のコマンド発行装置は、取得部と検出部と第1設定部と第2設定部と第1算出部と第2算出部と発行部とを備える。取得部は、被写体を撮像した画像を取得する。検出部は、画像から、被写体の特定部分を検出する。第1設定部は、検出部で検出された特定部分の位置を示す特定位置を設定する。第2設定部は、画像のうち基準となる位置を示す基準位置を設定する。第1算出部は、基準位置から特定位置へ向かう位置ベクトルを算出する。第2算出部は、コマンドベクトルごとに、当該コマンドベクトルと位置ベクトルとの一致度を示す第1パラメータを算出する。発行部は、第1パラメータの値に基づいてコマンドを発行する。

【発明の詳細な説明】
【技術分野】
【0001】
本発明の実施形態は、コマンド発行装置、コマンド発行方法およびプログラムに関する。
【背景技術】
【0002】
従来、ユーザーの特定部分(例えば手など)の動きに応じてコマンドを発行するコマンド発行装置が知られている。このようなコマンド発行装置において、例えば特定部分の現在の移動速度が基準速度を上回る場合は、特定部分の現在の運動は高速運動であると検出され、直前に検出された高速運動との関係から、特定部分の現在の状態が、所定のコマンドを発行させるための送り動作であるか否かを判定する技術が知られている。
【先行技術文献】
【特許文献】
【0003】
【特許文献1】特開2010−182014号公報
【発明の概要】
【発明が解決しようとする課題】
【0004】
しかしながら、上述の技術では、例えばユーザーの手が予め定められた方向に動く送り動作とは反対の方向に特定部分を移動させて元の位置に戻すための動作(復帰動作)が高速運動であると検出された場合、その復帰動作により、新たなコマンドが発行されてしまう。
【0005】
本発明が解決しようとする課題は、送り動作と、送り動作とは異なる動作(例えば復帰動作や予備動作等)とを区別可能なコマンド発行装置、コマンド発行方法およびプログラムを提供することである。
【課題を解決するための手段】
【0006】
実施形態のコマンド発行装置は、取得部と検出部と第1設定部と第2設定部と第1算出部と第2算出部と発行部とを備える。取得部は、被写体を撮像した画像を取得する。検出部は、画像から、被写体の特定部分を検出する。第1設定部は、検出部で検出された特定部分の位置を示す特定位置を設定する。第2設定部は、画像のうち基準となる位置を示す基準位置を設定する。第1算出部は、基準位置から特定位置へ向かう位置ベクトルを算出する。第2算出部は、コマンドベクトルごとに、当該コマンドベクトルと位置ベクトルとの一致度を示す第1パラメータを算出する。発行部は、第1パラメータの値に基づいてコマンドを発行する。
【0007】
実施形態のコマンド発行方法は、取得ステップと検出ステップと第1設定ステップと第2設定ステップと第1算出ステップと第2算出ステップと発行ステップとを備える。取得ステップは、被写体を撮像した画像を取得する。検出ステップは、画像から、被写体の特定部分を検出する。第1設定ステップは、検出ステップで検出された特定部分の位置を示す特定位置を設定する。第2設定ステップは、画像のうち基準となる位置を示す基準位置を設定する。第1算出ステップは、基準位置から特定位置へ向かう位置ベクトルを算出する。第2算出部は、コマンドベクトルごとに、当該コマンドベクトルと位置ベクトルとの一致度を示す第1パラメータを算出する。発行ステップは、第1パラメータの値に基づいてコマンドを発行する。
【0008】
実施形態のプログラムは、取得ステップと検出ステップと第1設定ステップと第2設定ステップと第1算出ステップと第2算出ステップと発行ステップとをコンピュータに実行させるためのプログラムである。取得ステップは、被写体を撮像した画像を取得する。検出ステップは、画像から、被写体の特定部分を検出する。第1設定ステップは、検出ステップで検出された特定部分の位置を示す特定位置を設定する。第2設定ステップは、画像のうち基準となる位置を示す基準位置を設定する。第1算出ステップは、基準位置から特定位置へ向かう位置ベクトルを算出する。第2算出部は、コマンドベクトルごとに、当該コマンドベクトルと位置ベクトルとの一致度を示す第1パラメータを算出する。発行ステップは、第1パラメータの値に基づいてコマンドを発行する。
【図面の簡単な説明】
【0009】
【図1】第1実施形態のコマンド発行装置のブロック図。
【図2】フレームの一例を示す図。
【図3】フレームの一例を示す図。
【図4】コマンド発行装置による処理動作例を示すフローチャート。
【図5】第2実施形態のコマンド発行装置のブロック図。
【図6】コマンド発行装置による処理動作例を示すフローチャート。
【図7】第3実施形態のコマンド発行装置のブロック図。
【図8】コマンド発行装置による処理動作例を示すフローチャート。
【図9】第4実施形態のコマンド発行装置のブロック図。
【図10】コマンドの入力状態の表示例を示す図。
【図11】コマンドの入力状態の表示例を示す図。
【図12】コマンドの入力状態の表示例を示す図。
【図13】コマンドの入力状態の表示例を示す図。
【図14】コマンド発行装置による処理動作例を示すフローチャート。
【図15】変形例のコマンド発行装置のブロック図。
【図16】変形例のコマンド発行装置のブロック図。
【発明を実施するための形態】
【0010】
以下、添付図面を参照しながら、本発明に係るコマンド発行装置、コマンド発行方法およびプログラムの実施の形態を詳細に説明する。
【0011】
(第1実施形態)
図1は、第1実施形態のコマンド発行装置100の構成例を示すブロック図である。図1に示すように、コマンド発行装置100は、取得部10と、検出部11と、第1設定部12と、第2設定部13と、第1算出部14と、第2算出部15と、第1記憶部16と、第3算出部17と、第4算出部18と、第5算出部19と、発行部20とを含んで構成される。
【0012】
取得部10は、不図示の撮像装置が所定の周期(フレーム周期)で撮像する画像(各画像を「フレーム」と呼ぶ)を順次に取得する。撮像装置は、例えばCMOSイメージセンサ、赤外線イメージセンサ、距離画像センサ、動画再生機器などで構成され得る。
【0013】
検出部11は、取得部10で取得されたフレームから、被写体(例えばユーザー)の特定部分を検出する検出処理を実行する。特定部分の検出はフレームが取得されるたびに行われることが好ましいが、装置の処理能力に応じて所定間隔で検出してもよい。また、本実施形態では、特定部分としてユーザーの手が採用されるが、これに限らず、特定部分は任意に設定可能である。例えばユーザーの手や足などの身体の少なくとも一部を特定部分として採用することもできる。また、空中操作可能なコントローラーや色の付いた球など、予めパターン画像が登録された物体を特定部分として採用することもできる。なお、特定部分の検出方法は任意であり、公知の様々な技術を用いることができる。例えばパターン認識方法や、背景差分法や、肌色抽出法や、フレーム間差分法や、これらを組み合わせた方法を用いることができる。
【0014】
第1設定部12は、検出部11により特定部分が検出されるたびに、その検出された特定部分の位置を示す特定位置を設定する。一例として、本実施形態の第1設定部12は、フレームのうち、検出部11で検出された特定部分が示す領域の中心の座標を、特定位置として設定する。
【0015】
第2設定部13は、検出部11により特定部分が検出されるたびに、そのときのフレームのうち基準となる位置を示す基準位置を設定する。本実施形態では、基準位置としてユーザーの肩の位置が採用される。第2設定部13は、取得部10で取得されたフレームからユーザーの顔の位置を検出し、その検出した顔の位置に基づいて肩の位置を特定する。そして、その特定した肩の位置を基準位置として設定する。なお、ユーザーの顔の位置の検出方法およびユーザーの肩の位置の検出方法は任意であり、公知の様々な技術を用いることができる。
【0016】
また、本実施形態では、基準位置としてユーザーの肩の位置を採用しているが、これに限らず、基準位置は任意に設定可能である。例えば予め定められたカメラ座標や世界座標を基準位置として採用することもできる。また、ユーザーの手や足などの身体の少なくとも一部の位置を基準位置として採用することもできる。また、空中操作可能なコントローラーや色の付いた球など、予め画像が登録された物体の位置を基準位置として採用することもできる。さらに、フレームのうち最初に特定部分(例えばユーザーの手)が検出された領域の位置を、基準位置として採用することもできる。
【0017】
第1算出部14は、基準位置から特定位置へ向かう位置ベクトルを算出する。より具体的には、第1算出部14は、検出部11で特定部分が検出されるたびに、そのときのフレームにおける基準位置および特定位置を用いて位置ベクトルを算出する。例えば図2に示すフレームが取得された場合、第1算出部14により算出される位置ベクトルは、図2のVlで表される。
【0018】
第2算出部15は、所定のコマンドに対応する複数のコマンドベクトルごとに、当該コマンドベクトルと、第1算出部14で算出された位置ベクトルとの一致度を示す第1パラメータを算出する。一例として、本実施形態では、コマンドベクトルと位置ベクトルとの内積が第1パラメータとして採用されるので、コマンドベクトルと位置ベクトルとの一致度が高いほど第1パラメータは大きい値を示す。ただし、これに限らず、第1パラメータは、コマンドベクトルと位置ベクトルとの一致度を示すものであればよい。本実施形態の第2算出部15は、検出部11により特定部分が検出されるたびに、各コマンドベクトルの第1パラメータを算出する。図2の例では、所定のコマンドに対応するコマンドベクトルVd1と位置ベクトルVlとの内積は、別のコマンドに対応するコマンドベクトルVd2と位置ベクトルVlとの内積よりも大きい値を示す。
【0019】
なお、第1パラメータの算出方法は任意である。例えば以下に示す式(1)のように、特定位置と基準位置との距離xが所定値c以内であれば十分に低い値bに設定される一方、所定値cを超えれば十分に高い値aに設定されるような非線形の関数を用いて第1パラメータを算出することもできる。この場合、ユーザーは、基準位置から見て、どの位置に特定部分が存在すれば、発行させたいコマンドに対応するコマンドベクトルの第1パラメータの値が十分に大きい値になるのかを容易に把握できる。
Ppos=a if x>c
Ppos=b otherwise (1)
上述の式(1)において、Pposは第1パラメータを示す。
【0020】
各コマンドベクトルの第1パラメータを算出するための式は、線形の関数であってもよい。例えば、特定位置と基準位置との距離xと、第1パラメータとの関係を一次関数で表してもよい。この場合、第1パラメータの値は距離xに比例する。また例えば、第1パラメータと距離xとの関係を、二次関数、シグモイド関数、指数関数、対数関数、カーネル関数(例えばガウシアンカーネル)などといった線形の関数で表してもよい。この場合、距離xが大きくなるほど第1パラメータの値が大きくなるのに加え、増加率が滑らかになるので、上記式(1)のように非線形の関数を用いて第1パラメータの値を求める場合に比べて、第1パラメータの値をユーザーの意図に応じた値に設定できる。例えば第1パラメータと距離xとの関係は、以下の式(2)で表すこともできる。式(2)は上記の関数を組み合わせたものである。
Ppos=axd if x>c
Ppos=bxe otherwise (2)
【0021】
また、例えば第1パラメータと距離xとの関係は、以下の式(3)で表すこともできる。式(3)は、距離xに比例して値が大きくなり、距離xが所定値以上になると第1パラメータの値の増加率が変化する非線形の関数で表される。
Ppos=alog(dx) if x>c
Ppos=blog(ex) otherwise (3)
【0022】
図1に示す第1記憶部16は、第1設定部12で設定された特定位置を記憶する。より具体的には、検出部11により特定部分が検出されるたびに、その検出された特定部分の位置を示す特定位置が第1記憶部16に順次に(時系列で)記憶される。第3算出部17は、第1記憶部16に記憶された特定位置の履歴に基づいて、特定部分が移動する方向および移動量を示す移動ベクトルを算出する。一例として、本実施形態では、検出部11により特定部分が検出されるたびに、第1設定部12で設定された特定位置と、第1記憶部16に記憶された直前の特定位置とから、そのときのフレームにおける移動ベクトルを算出する。例えば図2の例では、第3算出部17により算出される移動ベクトルはVmで表される。なお、これに限らず、移動ベクトルの算出方法は任意であり、特定部分が移動する方向および大きさを特定できればよい。
【0023】
第4算出部18は、コマンドベクトルごとに、当該コマンドベクトルと、第3算出部17で算出された移動ベクトルとの一致度を示す第2パラメータを算出する。一例として、本実施形態では、コマンドベクトルと移動ベクトルとの内積が第2パラメータとして採用されるので、コマンドベクトルと移動ベクトルとの一致度が高いほど第2パラメータは大きい値を示す。ただし、これに限らず、第2パラメータは、コマンドベクトルと移動ベクトルとの一致度を示すものであればよい。本実施形態の第4算出部18は、検出部11により特定部分が検出されるたびに、そのときのフレームにおける各コマンドベクトルの第2パラメータを算出する。図2の例では、コマンドベクトルVd1と移動ベクトルVmとの内積は、コマンドベクトルVd2と移動ベクトルVmとの内積よりも大きい値を示す。
【0024】
図1に示す第5算出部19は、コマンドベクトルごとに、当該コマンドベクトルの第1パラメータおよび第2パラメータに基づいて、第3パラメータを算出する。第3パラメータは、第1パラメータおよび第2パラメータの各々の値が大きいほど高い値を示し、各コマンドベクトルの第1パラメータおよび第2パラメータが算出されるたびに、当該コマンドベクトルの第3パラメータが算出される。一例として、本実施形態では、第3パラメータは、第1パラメータと第2パラメータとの和で表される。これにより、例えば特定位置が基準位置付近であるために位置ベクトルが小さくなり、第1パラメータの値が小さい場合でも、特定部分を速く動かす、あるいは、発行させたいコマンドに対応するコマンドベクトルの方向へ大きく動かすことで、当該コマンドベクトルの第3パラメータの値を増加させることができる。また、特定位置が基準位置から十分に離れていて位置ベクトルが大きい場合は、特定部分の移動速度が低く、発行させたいコマンドに対応するコマンドベクトルの方向へ移動する量が小さくても、当該コマンドベクトルの第3パラメータの値を増加させることができる。
【0025】
なお、これに限らず、例えば第1パラメータと第2パラメータとを乗算した値を第3パラメータとして算出することもできる。この場合、コマンドベクトルと位置ベクトルとの一致度が高く、かつ、コマンドベクトルと移動ベクトルとの一致度が高い場合に限り、当該コマンドベクトルの第3パラメータの値は大きい値を示す。さらに、第1パラメータおよび第2パラメータのうち何れか低い方の値を第3パラメータとして算出することもできる。また、第1パラメータと第2パラメータとを足し合わせたものと乗算したものとを組み合わせた値を第3パラメータとして算出することもできる。この場合、例えば特定位置が基準位置付近であっても、あるいは特定位置が基準位置から離れていても、所定のコマンドを発行させるための動作が行われたことにより、当該所定のコマンドに対応するコマンドベクトルと移動ベクトルとの一致度を示す第2パラメータの値が大きい値を示せば、当該コマンドベクトルの第3パラメータの値を増加させることができる。
【0026】
発行部20は、第5算出部19で算出された第3パラメータに基づいてコマンドを発行する。より具体的には、発行部20は、各コマンドベクトルについて、当該コマンドベクトルの第3パラメータの値が閾値以上である場合は、当該コマンドベクトルに対応するコマンドを発行する。なお、閾値は任意に設定可能である。図2の例では、発行部20は、コマンドベクトルVd1の第3パラメータの値(つまりは、コマンドベクトルVd1と位置ベクトルVlとの内積を示す第1パラメータと、コマンドベクトルVd1と移動ベクトルVmとの内積を示す第2パラメータとの和)が閾値以上の場合は、コマンドベクトルVd1に対応するコマンドを発行する。また、誤検出を防止するために、あるコマンドベクトルの第3パラメータの値が所定数のフレームにわたって閾値以上の場合に、当該コマンドベクトルに対応するコマンドが発行される構成であってもよい。
【0027】
ここで、図2の状態から、ユーザーが復帰動作(コマンドベクトルVd1の方向と反対の方向に手を動かして手の位置を元に戻すための動作)を行った場合を想定する。この場合、図2のフレームの次のフレームとして図3に示すフレームが取得されたとする。図3のフレームにおける移動ベクトルVm2は、コマンドベクトルVd1とは反対の方向になるので、コマンドベクトルVd1と移動ベクトルVm2との内積を示す第2パラメータはマイナスの値となる。また、ユーザーの手の位置(特定位置)が肩の位置(基準位置)に近づくので、図3のフレームにおける位置ベクトルVl2は図2の位置ベクトルVl1に比べて小さい値になる。したがって、コマンドベクトルVd1の第3パラメータの値は、図2の場合に比べて小さくなる。
【0028】
また、図3のフレームにおける移動ベクトルVm2の方向は、コマンドベクトルVd2の方向と一致するので、コマンドベクトルVd2と移動ベクトルとの内積を示す第2パラメータは図2の場合に比べて増加する。しかしながら、コマンドベクトルVd2と、図3のフレームにおける位置ベクトルV12との内積を示す第1パラメータはマイナスの値を示すので、コマンドベクトルVd2の第3パラメータの値が閾値以上になることを抑制できる。すなわち、復帰動作によって、ユーザーが発行させることを意図していないコマンド(この例ではコマンドベクトルVd2に対応するコマンド)が発行されず、送り動作と、送り動作とは異なる動作(例えば復帰動作)とが区別可能になる。
【0029】
次に、本実施形態のコマンド発行装置100による処理動作の一例を説明する。図4は、コマンド発行装置100による処理動作の一例を示すフローチャートである。図4に示すように、まず取得部10でフレームが取得されると(ステップS1)、検出部11は、その取得されたフレームから、被写体の特定部分(例えばユーザーの手など)を検出する検出処理を実行する。検出部11により特定部分が検出された場合(ステップS2の結果:YES)、第1設定部12は、その検出された特定部分の位置を示す特定位置を設定する(ステップS3)。また、第2設定部13は、ステップS1で取得されたフレームのうち基準となる位置を示す基準位置を設定する(ステップS4)。本実施形態では、ユーザーの肩の位置が基準位置として採用される。第2設定部13は、フレームからユーザーの顔の位置を検出し、その検出した顔の位置に基づいてユーザーの肩の位置を特定する。そして、その特定したユーザーの肩の位置を基準位置として設定する。
【0030】
ステップS4の後、第1算出部14は、ステップS1で取得されたフレームにおける位置ベクトルを算出する(ステップS5)。次に、第2算出部15は、コマンドベクトルごとに、当該コマンドベクトルと、ステップS5で算出された位置ベクトルとの一致度を示す第1パラメータを算出する(ステップS6)。
【0031】
また、ステップS4の後、第3算出部17は、ステップS3で特定された特定位置と、第1記憶部16に記憶された過去の特定位置とから、ステップS1で取得されたフレームにおける移動ベクトルを算出する(ステップS7)。なお、ステップS3で特定された特定位置は第1記憶部16に記憶される。次に、第4算出部18は、コマンドベクトルごとに、当該コマンドベクトルと、ステップS7で算出された移動ベクトルとの一致度を示す第2パラメータを算出する(ステップS8)。
【0032】
次に、第5算出部19は、コマンドベクトルごとに、当該コマンドベクトルの第1パラメータおよび第2パラメータに基づいて第3パラメータを算出する(ステップS9)。前述したように、本実施形態では、コマンドベクトルごとに、当該コマンドベクトルの第1パラメータおよび第2パラメータを足し合わせて第3パラメータを算出する。次に、発行部20は、ステップS9で算出された第3パラメータが閾値以上であるか否かを判定する(ステップS10)。より具体的には、発行部20は、コマンドベクトルごとに、当該コマンドベクトルの第3パラメータ(ステップS9で算出された第3パラメータ)の値が閾値以上であるか否かを判定する。そして、ステップS9で算出された第3パラメータの値が閾値以上の場合(ステップS10の結果:YES)、発行部20は、そのコマンドベクトルに対応するコマンドを発行する(ステップS11)。
【0033】
以上に説明したように、本実施形態では、コマンドベクトルごとに、当該コマンドベクトルと位置ベクトルとの一致度を示す第1パラメータと、当該コマンドベクトルと移動ベクトルとの一致度を示す第2パラメータとの和で表される第3パラメータを求め、その求めた第3パラメータに基づいてコマンドを発行する。そのため、コマンドベクトルと移動ベクトルとの一致度が高くても、当該コマンドベクトルと位置ベクトルとの一致度が低ければ、当該コマンドベクトルに対応するコマンドは発行されにくくなる。例えばユーザーが、所定のコマンドを発行させるために、当該所定のコマンドに対応するコマンドベクトルの方向に手を動かした後、手を元の位置に戻すための復帰動作を行った場合は、当該コマンドベクトルの方向と反対の方向に手が移動する。これにより、当該コマンドベクトルとは反対方向のコマンドベクトルと、移動ベクトルとの一致度が高まるものの、その反対方向のコマンドベクトルと位置ベクトルとの一致度が低ければ、その反対方向のコマンドベクトルに対応するコマンドは発行されにくい。したがって、本実施形態によれば、復帰動作や予備動作などの送り動作以外の動作と、送り動作とを区別可能になり、ユーザーの意図を反映したコマンドの発行が可能になる。
【0034】
(第2実施形態)
次に、第2実施形態について説明する。第2実施形態では、第5算出部19で算出された第3パラメータを、過去の第3パラメータに基づいて補正する点で上述の第1実施形態と相違する。第1実施形態と共通する部分については、同一の符号を付して適宜に説明を省略する。
【0035】
図5は、第2実施形態のコマンド発行装置200の構成例を示すブロック図である。図5に示すように、コマンド発行装置200は、第2記憶部21と、第1補正部22とをさらに備える。第2記憶部21は、第5算出部19で算出された第3パラメータ(補正前の第3パラメータ)を記憶する。
【0036】
第1補正部22は、第5算出部19で第3パラメータが算出されるたびに、当該算出された第3パラメータを、第2記憶部21に記憶された過去の第3パラメータ(第3パラメーの履歴)を用いて補正する。例えば第5算出部19で第3パラメータが算出された場合、第1補正部22は、その算出された第3パラメータと、過去の所定期間における少なくとも1つの第3パラメータ(第2記憶部21に記憶された過去の第3パラメータ)との平均を求め、あるいは乗算を行うことにより、その算出された第3パラメータを補正することもできる。これにより、特定部分や基準位置の検出誤差などによって、第3パラメータの値が意図しない値に変化することを抑制できる。
【0037】
また、例えば第5算出部19で第3パラメータが算出された場合、第1補正部22は、その算出された第3パラメータに対して、第2記憶部21に記憶された過去の第3パラメータに応じたバイアス値を加える。バイアス値を加えることで、算出された第3パラメータを補正することもできる。例えば過去の所定期間において、特定のコマンドベクトルの第3パラメータの値が最も高い値を示していた場合は、当該特定のコマンドベクトルの第3パラメータの値が高くなるようなバイアス値を、第5算出部19で算出された第3パラメータに加えることもできる。これにより、特定のコマンドベクトルに対応するコマンドが発行され易くなる。すなわち、小さい手振り動作や、基準位置付近の手振り動作でも、特定のコマンドベクトルに対応するコマンドが発行され易くなり、連続したスクロール移動などをより簡単に行うことができる。
【0038】
また、例えばユーザーが、基準位置付近で手を動かして復帰動作を行ったことにより、特定のコマンドベクトルとは反対方向のコマンドベクトルと位置ベクトルとの内積がプラスの値に変化する。反対方向のコマンドベクトルの第1パラメータの値がプラスの値に変化した場合であっても、反対方向のコマンドベクトルの第3パラメータの算出値に対して、特定のコマンドベクトルの第3パラメータの値が高くなるようなバイアス値が加えられる。つまり、特定のコマンドベクトル以外のコマンドベクトルの各々の第3パラメータの値を補正する(低く抑える)ことで、閾値以上になることを抑制し、復帰動作が反対方向のコマンドとして誤認識されることを抑制できる。
【0039】
図6は、第2実施形態のコマンド発行装置200による処理動作例を示すフローチャートである。図6の例では、第1補正部22は、ステップS9で算出された第3パラメータに対して、上述の補正処理を行う(図6のステップS10)点で第1実施形態と相違するが、その他は第1実施形態と同様である。
【0040】
(第3実施形態)
次に、第3実施形態について説明する。第3実施形態では、第5算出部19で算出された第3パラメータを、過去に発行されたコマンドの履歴に基づいて補正する点で上述の第1実施形態と相違する。第1実施形態と共通する部分については、同一の符号を付して適宜に説明を省略する。
【0041】
図7は、第3実施形態のコマンド発行装置300の構成例を示すブロック図である。図7に示すように、コマンド発行装置300は、第3記憶部23と、第2補正部24とをさらに備える。第3記憶部23は、発行部20で発行されたコマンドを記憶する。
【0042】
第2補正部24は、第5算出部19で第3パラメータが算出されるたびに、当該算出された第3パラメータを、第3記憶部23に記憶された過去のコマンド(コマンドの履歴)を用いて補正する。より具体的には、第5算出部19で第3パラメータが算出された場合、第2補正部24は、過去に発行されたコマンドに対応するコマンドベクトルの第3パラメータの値が大きくなるように、その算出された第3パラメータを補正する。例えば第2補正部24は、第5算出部19により算出された第3パラメータに対して、直前に発行されたコマンドに対応するコマンドベクトルの第3パラメータの値が大きくなるようなバイアス値を加えることで、その算出された第3パラメータを補正することもできる。また、例えば第2補正部24は、第5算出部19により算出された第3パラメータに対して、直前に発行されたコマンドに対応するコマンドベクトル以外のコマンドベクトルの各々の第3パラメータの値が小さくなるようなバイアス値を加えることで、その算出された第3パラメータを補正することもできる。
【0043】
以上より、例えば特定のコマンドを繰り返し発行させる場合において、最初に特定のコマンドが発行されれば、それ以降は特定のコマンドは発行され易くなる。すなわち、小さい手振り動作や、基準位置付近の手振り動作でも、特定のコマンドが発行され易くなり、連続したスクロール移動などをより簡単に行うことができる。
【0044】
また、例えばユーザーが、基準位置付近で手を動かして復帰動作を行ったことにより、反対方向のコマンドベクトルと位置ベクトルとの内積がプラスの値に変化した場合であっても、反対方向のコマンドベクトルの第3パラメータの算出値に対して、特定のコマンド(直前に発行されたコマンドに相当)に対応するコマンドベクトルの第3パラメータの値が大きくなるようなバイアス値が加えられる。つまり、特定のコマンドに対応するコマンドベクトル以外のコマンドベクトルの各々の第3パラメータの値を補正する(低く抑える)ことで、閾値以上になることを抑制し、復帰動作が反対方向のコマンドとして誤認識されることを抑制できる。
【0045】
また、第2補正部24は、第5算出部19で算出された第3パラメータに対して、過去の所定期間における各コマンドの発行回数に応じたバイアス値を加えることで、その算出された第3パラメータを補正することもできる。例えば第2補正部24は、第5算出部19で算出された第3パラメータに対して、過去の所定期間において発行回数が最も多いコマンドに対応するコマンドベクトルの第3パラメータの値が大きくなるようなバイアス値を加えることで、その算出された第3パラメータを補正することもできる。また、例えば第2補正部24は、第5算出部19により算出された第3パラメータに対して、過去の所定期間において発行回数が最も多いコマンドに対応するコマンドベクトル以外のコマンドベクトルの各々の第3パラメータの値が小さくなるようなバイアス値を加えることで、その算出された第3パラメータを補正することもできる。これにより、発行回数が多いコマンドは発行され易くなる一方、それ以外のコマンドは発行されにくくなる。したがって、例えば特定のコマンドを繰り返し発行させる場合においては、その特定のコマンドが発行されやすくなる一方(発行回数が多いため)、ユーザーの復帰動作によって、特定のコマンドのコマンドベクトルとは反対方向のコマンドベクトルに対応する別のコマンドは発行されにくい。
【0046】
第3実施形態のコマンド発行装置300による処理動作例を示すフローチャートは、図6と同様である。図6のステップS10において、第2補正部24は、ステップS9で算出された第3パラメータに対して上述の補正処理を行う。
【0047】
(第4実施形態)
次に、第4実施形態について説明する。第4実施形態では、第5算出部19で算出された第3パラメータに応じたコマンドの入力状態を表示する点で上述の第1実施形態と相違する。第1実施形態と共通する部分については、同一の符号を付して適宜に説明を省略する。
【0048】
図8は、第4実施形態のコマンド発行装置400の構成例を示すブロック図である。図8に示すように、コマンド発行装置400は、表示制御部25をさらに備える。表示制御部25は、第5算出部19で第3パラメータが算出されるたびに、当該算出された第3パラメータに対応するコマンドの入力状態を表示するように液晶ディスプレイなどの表示装置(不図示)を制御する。コマンドの入力状態として、第3パラメータの値を表示してもよい。第3パラメータとコマンドの入力状態とのスケールの違いを考慮し、第3パラメータとコマンドの入力状態との関係を示す一次関数を用いて、コマンドの入力状態を示す値を求めることもできる。また、第3パラメータとコマンドの入力状態との関係を示す二次関数を用いて、第3パラメータの値が低いときにコマンドの入力状態を示す値が増加することを抑制することで、第3パラメータの値が意図しない値に変化することを抑制できる。さらに、表示装置に表示されるアニメーション動作を滑らかにするために、第3パラメータとコマンドの入力状態との関係を、指数関数やシグモイド関数やカーネル関数(例えばガウネシアンカーネル等)などで表すことで、コマンド入力状態を示す値を求めてもよい。また、上記関数を組み合わせてコマンドの入力状態を示す値を求めることもできる。
【0049】
コマンドの入力状態の表示方法は任意であり、例えば図9に示すように、第3パラメータの値に応じてゲージが増減するものであってもよい。図9の例では2種類のゲージが表示され、一例として、一方のゲージG1は、図2のコマンドベクトルVd1のコマンドに対応し、他方のゲージG2は、図2のコマンドベクトルVd2に対応する。図9の例では、コマンドベクトルVd1の第3パラメータの値が閾値に近いほど、着色表示されるゲージG1の数は増加し、閾値よりも低いほど、着色表示されるゲージG1の数は減少する。例えばコマンドベクトルVd1の第3パラメータの値が閾値以上の場合は、全てのゲージG1が着色表示されてもよい。同様に、コマンドベクトルVd2の第3パラメータの値が閾値に近いほど、着色表示されるゲージG2の数は増加し、閾値よりも低いほど、着色表示されるゲージG2の数は減少する。これにより、ユーザーは、各コマンドの入力状態を容易に把握できる。
【0050】
また、例えば図10に示すように、所定のコマンド(コマンドベクトル)に対応する第3パラメータの値が閾値以上の場合は、当該所定のコマンドに対応するアイコンHが表示され、閾値を下回る場合はアイコンHが表示されないといった表示方法であってもよい。また、例えば図11に示すように、コマンドの入力状態に応じて、アイコンが特定の方向に移動するといった表示方法であってもよい。一例として、図2のコマンドベクトルVd2のコマンドが、図11に示すX1の方向にアイコンを移動させる送りコマンドである場合、コマンドベクトルVd2の第3パラメータの値が閾値以上であれば、アイコンはX1の方向に移動し、コマンドベクトルVd2の第3パラメータの値が閾値未満であれば、アイコンはX1の方向に移動できずに元の位置に戻るように表示されてもよい。また、例えば図12に示すように、コマンドの入力状態に応じて、リング状のアイコンが特定の方向に回転するといった表示方法であってもよい。
【0051】
さらに、例えば図13に示すように、コマンドの入力状態に応じて、画面上に表示されるカーソルKが特定の方向に移動するといった表示方法であってもよい。図13の例では、表示装置の画面上には、図2のコマンドベクトルVd1に対応するコマンドのアイコンM1、および、図2のコマンドベクトルVd2に対応するコマンドのアイコンM2が表示され、これらのアイコンにカーソルKが接触する(あるいは重なる)と、カーソルと接触したアイコンのコマンドが発行される。図13の例では、例えばコマンドベクトルVd2の第3パラメータの値が、コマンドベクトルVd1の第3パラメータの値よりも大きい場合は、カーソルKはアイコンM2の方向に移動する。そして、コマンドベクトルVd2の第3パラメータの値が閾値以上の場合は、カーソルKはアイコンM2に接触してコマンドベクトルVd2に対応するコマンドが発行される。同様に、コマンドベクトルVd1の第3パラメータの値が、コマンドベクトルVd2の第3パラメータの値よりも大きい場合は、カーソルKはアイコンM1の方向に移動する。
【0052】
図14は、第4実施形態のコマンド発行装置400による処理動作例を示すフローチャートである。図14の例では、表示制御部25は、ステップS9で算出された第3パラメータに対して、上述の表示制御を行う(図6のステップS10)点で第1実施形態と相違するが、その他は第1実施形態と同様である。
【0053】
なお、以上に説明した第5実施形態は、第2実施形態と組み合わせることもできるし、第3実施形態と組み合わせることもできる。すなわち、第2実施形態および第3実施形態の各々のコマンド発行装置が、前述の表示制御部25を備えることもできる。
【0054】
(変形例)
以上、本発明の実施形態を説明したが、上述の各実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。以下に変形例を記載する。なお、以下に記載する変形例のうちの2以上を任意に組み合わせることもできる。
【0055】
(1)変形例1
上述のコマンドの種類は任意である。例えばカーソルを特定の方向に移動させる送りコマンド、あるいは、画面を特定の方向にスクロールさせる送りコマンドであってもよい。また、特定の選択項目を決定するコマンドであってもよいし、特定の選択項目をキャンセルするコマンドであってもよい。また、例えば音楽再生や映像再生など特定の機能を実行させるコマンドであってもよい。さらに、例えばマルチメディアを管理するアプリケーションやテレビやテレビ番組表などを起動させるコマンドであってもよい。
【0056】
(2)変形例2
上述の第3実施形態では、第2補正部24は、第5算出部19で算出された第3パラメータに対して、過去に発行されたコマンド(直前に発行されたコマンドや発行回数の最も多いコマンド等)に対応するコマンドベクトルの第3パラメータの値が大きくなるようなバイアス値を加えることで、その算出された第3パラメータの値を補正しているが、例えば第2補正部24は、過去に発行されたコマンドに対応するコマンドベクトルの第3パラメータの値が大きくなるように、基準位置を変更することもできる。例えば図2のコマンドベクトルVd1の第3パラメータの値が大きくなるような補正を行う場合、第2補正部24は、コマンドベクトルVd1の方向とは反対の方向に基準位置をずらすこともできる。これにより、基準位置に対する特定位置の位置ベクトルが補正前に比べて増加するので、コマンドベクトルVd1と位置ベクトルとの一致度を示す第1パラメータの値が増加し、コマンドベクトルVd1の第3パラメータの値も増加する。一方、コマンドベクトルVd1とは反対方向のコマンドベクトルVd2に関しては、当該コマンドベクトルVd2と位置ベクトルとの一致度を示す第1パラメータの値は補正前に比べて減少するので、当該コマンドベクトルVd2の第3パラメータの値は小さくなる。
【0057】
(3)変形例3
図15に示すように、第1実施形態のコマンド発行装置100は、第5算出部19により算出された第3パラメータが、撮像距離に応じて異なる値を示さないように、その算出された第3パラメータの値を補正する第3補正部26をさらに備えることができる。一例として、第3補正部26は、第5算出部19で第3パラメータが算出されるたびに、その算出された第3パラメータの値を、そのときのフレームに表示された被写体のうちの少なくとも一部の領域の面積値に応じた値に設定される補正値で除算する。これにより、第5算出部19により算出された第3パラメータの値が、撮像距離に応じて異なる値を示さないように補正される。
【0058】
上述の補正値は任意に設定可能である。例えば検出部11により検出された特定部分の面積値を補正値とすることもできる。また、例えば第2設定部13で設定された基準位置を含む所定の領域の面積値を補正値とすることもできる。フレームにおけるユーザーの肩の位置が基準位置として設定される場合は、肩幅を含む領域の面積値を補正値とすることもできる。また、フレームにおけるユーザーの顔の位置(例えば顔の領域の中心座標)が基準位置として設定される場合は、ユーザーの顔の領域の面積値を補正値とすることもできる。
【0059】
また、例えば補正値は、検出部11により検出された特定部分の面積値と、当該特定部分の形状とに応じて可変に設定されてもよい。より具体的には、検出部11により検出された特定部分の形状に応じて、その特定部分の面積値を補正し、その補正された面積値を補正値とすることもできる。一例として、特定部分がユーザーの手であり、検出された手の形状が、手を開いた状態(掌を広げた状態)の場合は、特定部分の面積値が実際の値よりも大きくなるように補正(補正値が大きくなるように設定)され、検出された手の形状が、拳の状態(手を握った状態)の場合は、特定部分の面積値が実際の値よりも小さくなるように補正(補正値が小さくなるように設定)されてもよい。これにより、ユーザーが同じ動作をする場合において、算出される第3パラメータの値がそのときの手の形状に応じて異なる値を示すことを抑制できる。同様に、補正値は、補正値は、第2設定部13で設定された基準位置を含む所定の領域の面積値と、当該領域の形状とに応じて可変に設定されてもよい。
【0060】
(4)変形例4
例えば、コマンドベクトルと移動ベクトルとの一致度を考慮せずに、コマンドベクトルと位置ベクトルとの一致度のみに基づいて、コマンドを発行する構成であってもよい。図16は、この場合のコマンド発行装置500の構成例を示すブロック図である。図16に示すように、このコマンド発行装置500は、第1記憶部16、第3算出部17、第4算出部18および第5算出部19を備えていない点で第1実施形態と相違する。この場合、発行部20は、第2算出部15で算出される第1パラメータに基づいてコマンドを発行する。より具体的には、発行部20は、各コマンドベクトルについて、当該コマンドベクトルと位置ベクトルとの一致度を示す第1パラメータ(この例ではコマンドベクトルと位置ベクトルとの内積)の値が閾値以上である場合は、当該コマンドベクトルに対応するコマンドを発行する。なお、閾値は任意に設定可能である。図16の構成でも、上述の各実施形態と同様に、コマンドベクトルと位置ベクトルとの一致度が低ければ、当該コマンドベクトルに対応するコマンドは発行されにくくなるので、例えばユーザーが、所定のコマンドを発行させようとして当該所定のコマンドに対応するコマンドベクトルの方向に手を動かした後、手を元の位置に戻すための復帰動作を行っても、反対方向のコマンドベクトルと位置ベクトルとの一致度が低い場合は、その反対方向のコマンドベクトルに対応するコマンドは発行されにくい。したがって、復帰動作や予備動作などによって、ユーザーが発行させることを意図していないコマンドが発行されることを抑制できる。
【0061】
(ハードウェア構成およびプログラム)
上述の各実施形態および各変形例のコマンド発行装置は、CPU(Central Processing Unit)などの制御装置と、ROMやRAMなどの記憶装置と、HDDやSSDなどの外部記憶装置と、ディスプレイなどの表示装置と、マウスやキーボードなどの入力装置と、通信I/Fなどの通信装置とを備えており、通常のコンピュータを利用したハードウェア構成となっている。上述した取得部10、検出部11、第1設定部12、第2設定部13、第1算出部14、第2算出部15、第3算出部17、第4算出部18、第5算出部19、発行部20、第1補正部22、第2補正部24、表示制御部25および第3補正部26の各々の機能は、コマンド発行装置のCPUがROM等に格納されたプログラムをRAM上で展開して実行することにより実現される。また、これに限らず、これらの機能のうちの少なくとも一部を個別の回路(ハードウェア)で実現することもできる。また、上述した第1記憶部16、第2記憶部21、第3記憶部23は、ハードウェアで実現される要素であり、記憶装置または外部記憶装置に含まれる。
【0062】
また、上述の各実施形態および各変形例のコマンド発行装置で実行されるプログラムを、インターネット等のネットワークに接続されたコンピュータ上に格納し、ネットワーク経由でダウンロードさせることにより提供するようにしてもよい。また、上述の各実施形態および各変形例のコマンド発行装置で実行されるプログラムを、インターネット等のネットワーク経由で提供または配布するようにしてもよい。また、上述の各実施形態および各変形例のコマンド発行装置で実行されるプログラムを、ROM等に予め組み込んで提供するようにしてもよい。また、本実施形態におけるコマンド発行装置は、CPUなどの制御装置と記憶装置を備え、撮像装置から取得される画像を処理する形態であれば、PC(Personal Computer)に限らず、TV等にも適用可能である。
【符号の説明】
【0063】
10 取得部
11 検出部
12 第1設定部
13 第2設定部
14 第1算出部
15 第2算出部
16 第1記憶部
17 第3算出部
18 第4算出部
19 第5算出部
20 発行部
21 第2記憶部
22 第1補正部
23 第3記憶部
24 第2補正部
25 表示制御部
26 第3補正部
100 コマンド発行装置
200 コマンド発行装置
300 コマンド発行装置
400 コマンド発行装置
500 コマンド発行装置

【特許請求の範囲】
【請求項1】
被写体を撮像した画像を取得する取得部と、
前記画像から、前記被写体の特定部分を検出する検出部と、
前記検出部で検出された前記特定部分の位置を示す特定位置を設定する第1設定部と、
前記画像のうち基準となる位置を示す基準位置を設定する第2設定部と、
前記基準位置から前記特定位置へ向かう位置ベクトルを算出する第1算出部と、
所定のコマンドに対応する複数のコマンドベクトルごとに、当該コマンドベクトルと前記位置ベクトルとの一致度を示す第1パラメータを算出する第2算出部と、
前記第1パラメータの値に基づいて前記コマンドを発行する発行部と、を備える、
コマンド発行装置。
【請求項2】
前記取得部により時系列で取得された複数の前記画像の各々の前記特定位置を記憶する第1記憶部と、
前記第1記憶部に記憶された前記特定位置の履歴に基づいて、前記特定部分が移動する方向及び移動量を示す移動ベクトルを求める第3算出部と、
前記コマンドベクトルごとに、当該コマンドベクトルと前記移動ベクトルとの一致度を示す第2パラメータを算出する第4算出部と、をさらに備え、
前記発行部は、前記第1パラメータと前記第2パラメータとに基づいて前記コマンドを発行する、
請求項1のコマンド発行装置。
【請求項3】
前記第1パラメータは、前記位置ベクトルと前記コマンドベクトルとの内積であり、
前記第2パラメータは、前記移動ベクトルと前記コマンドベクトルとの内積であり、
前記コマンドベクトルごとに、当該コマンドベクトルの前記第1パラメータおよび前記第2パラメータを用いて、前記第1パラメータおよび前記第2パラメータの各々の値が大きいほど高い値を示す第3パラメータを算出する第5算出部と、をさらに備え、
前記発行部は、各前記コマンドベクトルについて、当該コマンドベクトルの前記第3パラメータの値が閾値以上である場合は、当該コマンドベクトルに対応する前記コマンドを発行する、
請求項2のコマンド発行装置。
【請求項4】
前記第3パラメータを記憶する第2記憶部と、
前記第2記憶部に記憶された前記第3パラメータの履歴に基づいて、前記第5算出部により算出された前記第3パラメータの値を補正する第1補正部と、をさらに備える、
請求項3のコマンド発行装置。
【請求項5】
前記発行部で発行された前記コマンドを記憶する第3記憶部と、
前記第3記憶部に記憶された前記コマンドの履歴に基づいて、前記第5算出部により算出された前記第3パラメータの値を補正する第2補正部と、をさらに備える、
請求項3のコマンド発行装置。
【請求項6】
前記第2補正部は、過去に発行された前記コマンドに対応する前記コマンドベクトルの前記第3パラメータの値が大きくなるように、前記第5算出部により算出された前記第3パラメータの値を補正する、
請求項5のコマンド発行装置。
【請求項7】
前記第2補正部は、過去に発行された前記コマンドに対応する前記コマンドベクトルの前記第3パラメータの値が大きくなるように、前記基準位置を変更する、
請求項6のコマンド発行装置。
【請求項8】
前記第5算出部により算出された前記第3パラメータが、撮像距離に応じて異なる値を示さないように、当該算出された前記第3パラメータの値を補正する第3補正部をさらに備える、
請求項3のコマンド発行装置。
【請求項9】
前記第3補正部は、前記第5算出部により算出された前記第3パラメータの値を、前記被写体の少なくとも一部の領域の面積値に応じた値に設定される補正値で除算する、
請求項8のコマンド発行装置。
【請求項10】
前記補正値は、前記検出部で検出された前記特定部分の面積値である、
請求項9のコマンド発行装置。
【請求項11】
前記補正値は、前記検出部で検出された前記特定部分の面積値と、当該特定部分の形状とに応じて可変に設定される、
請求項9のコマンド発行装置。
【請求項12】
前記補正値は、前記基準位置を含む所定の領域の面積値である、
請求項9のコマンド発行装置。
【請求項13】
前記補正値は、前記基準位置を含む所定の領域の面積値と、当該所定の領域の形状とに応じて可変に設定される、
請求項9のコマンド発行装置。
【請求項14】
前記第5算出部で算出された前記第3パラメータに対応する前記コマンドの入力状態を表示するように制御する表示制御部をさらに備える、
請求項2のコマンド発行装置。
【請求項15】
被写体を撮像した画像を取得する取得ステップと、
前記画像から、前記被写体の特定部分を検出する検出ステップと、
前記検出ステップで検出された前記特定部分の位置を示す特定位置を設定する第1設定ステップと、
前記画像のうち基準となる位置を示す基準位置を設定する第2設定ステップと、
前記基準位置から前記特定位置へ向かう位置ベクトルを算出する第1算出ステップと、
所定のコマンドに対応する複数のコマンドベクトルごとに、当該コマンドベクトルと前記位置ベクトルとの一致度を示す第1パラメータを算出する第2算出ステップと、
前記第1パラメータの値に基づいて前記コマンドを発行する発行ステップと、を備える、
コマンド発行方法。
【請求項16】
被写体を撮像した画像を取得する取得ステップと、
前記画像から、前記被写体の特定部分を検出する検出ステップと、
前記検出ステップで検出された前記特定部分の位置を示す特定位置を設定する第1設定ステップと、
前記画像のうち基準となる位置を示す基準位置を設定する第2設定ステップと、
前記基準位置から前記特定位置へ向かう位置ベクトルを算出する第1算出ステップと、
所定のコマンドに対応する複数のコマンドベクトルごとに、当該コマンドベクトルと前記位置ベクトルとの一致度を示す第1パラメータを算出する第2算出ステップと、
前記第1パラメータの値に基づいて前記コマンドを発行する発行ステップと、をコンピュータに実行させるためのプログラム。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate

【図9】
image rotate

【図10】
image rotate

【図11】
image rotate

【図12】
image rotate

【図13】
image rotate

【図14】
image rotate

【図15】
image rotate

【図16】
image rotate


【公開番号】特開2013−37467(P2013−37467A)
【公開日】平成25年2月21日(2013.2.21)
【国際特許分類】
【出願番号】特願2011−171744(P2011−171744)
【出願日】平成23年8月5日(2011.8.5)
【出願人】(000003078)株式会社東芝 (54,554)
【Fターム(参考)】