(57)【要約】【課題】操作対象機器をジェスチャによって効率的に操作することを可能とし、かつ、誤操作を少なくする。【解決手段】機器を操作するユーザの動作情報に基づいて、前記機器の操作に係る動作指示を表示部を介してユーザに提示する提示手段と、前記提示手段により提示された動作指示に対応する動作をユーザが完了させたか否かを判定する判定手段と、前記判定手段により完了させたと判定された場合、前記動作の結果に基づくコマンドを実行する実行手段と、を有することによって課題を解決する。【選択図】図４
2014219879.tif 000002
【特許請求の範囲】
【請求項１】
機器を操作するユーザの動作情報に基づいて、前記機器の操作に係る動作指示を表示部を介してユーザに提示する提示手段と、
前記提示手段により提示された動作指示に対応する動作をユーザが完了させたか否かを判定する判定手段と、
前記判定手段により完了させたと判定された場合、前記動作の結果に基づくコマンドを実行する実行手段と、
を有する情報処理装置。
【請求項２】
機器を操作するユーザの動作を認識する認識手段と、
前記認識手段により認識された動作に係る動作情報に基づいて、前記ユーザが前記機器を操作する際の動作指示を示す動作指示情報を生成する生成手段と、
を更に有し、
前記提示手段は、前記生成手段により生成された動作指示情報が示す動作指示を表示部を介してユーザに提示する請求項１記載の情報処理装置。
【請求項３】
前記機器を操作するユーザの撮像情報を取得する撮像情報取得手段を更に有し、
前記認識手段は、前記撮像情報取得手段により取得された撮像情報に基づいて前記ユーザの動作を認識する請求項２記載の情報処理装置。
【請求項４】
操作部を介して受け付けた操作情報を取得する操作情報取得手段を更に有し、
前記認識手段は、前記操作情報取得手段により取得された操作情報に基づいて前記ユーザの動作を認識する請求項２記載の情報処理装置。
【請求項５】
前記生成手段は、前記動作情報に基づいてユーザが行う動作を推定し、前記推定した動作に基づいて前記動作指示情報を生成する請求項２乃至４何れか１項記載の情報処理装置。
【請求項６】
前記生成手段は、前記推定した動作の信頼性に関する確率を求め、前記求めた確率が予め定められた確率よりも低くなる動作の指示を示す動作指示情報を生成する請求項５記載の情報処理装置。
【請求項７】
前記判定手段は、前記提示手段により提示された動作指示に係る動作指示情報と、前記動作指示が提示された後に前記認識手段により認識されたユーザの動作に係る動作情報とに基づいて、前記動作指示に対応する動作をユーザが完了させたか否かを判定する請求項２乃至６何れか１項記載の情報処理装置。
【請求項８】
前記判定手段は、前記動作指示が示す動作に係る移動距離と、前記動作情報が示す動作に係る移動距離との差が予め定められた閾値よりも小さいか否かに基づいて、前記動作指示に対応する動作をユーザが完了させたか否かを判定する請求項７記載の情報処理装置。
【請求項９】
前記判定手段は、前記動作指示に対応する動作をユーザが予め定められた時間が経過するまでに行ったか否かに基づいて、前記動作指示に対応する動作をユーザが完了させたか否かを判定する請求項７又は８記載の情報処理装置。
【請求項１０】
前記判定手段により前記動作指示に対応する動作をユーザが完了させなかったと判定された場合、
前記生成手段は、前記動作情報に基づいて、既に生成した動作指示情報とは異なる動作指示情報を生成し、
前記提示手段は、前記生成手段により生成された前記異なる動作指示情報が示す動作指示を表示部を介してユーザに提示する請求項２乃至９何れか１項記載の情報処理装置。
【請求項１１】
情報処理装置が実行する情報処理方法であって、
機器を操作するユーザの動作情報に基づいて、前記機器の操作に係る動作指示を表示部を介してユーザに提示する提示ステップと、
前記提示ステップにより提示された動作指示に対応する動作をユーザが完了させたか否かを判定する判定ステップと、
前記判定ステップにより完了させたと判定された場合、前記動作の結果に基づくコマンドを実行する実行ステップと、
を含む情報処理方法。
【請求項１２】
コンピュータに、
機器を操作するユーザの動作情報に基づいて、前記機器の操作に係る動作指示を表示部を介してユーザに提示する提示ステップと、
前記提示ステップにより提示された動作指示に対応する動作をユーザが完了させたか否かを判定する判定ステップと、
前記判定ステップにより完了させたと判定された場合、前記動作の結果に基づくコマンドを実行する実行ステップと、
を実行させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報処理装置、情報処理方法及びプログラムに関する。
【背景技術】
【０００２】
機器をジェスチャによって操作することに対する需要がある。従来、ユーザは、メニューや、アイコンによって情報機器を操作する際、マウスをクリックすることによって自身の意図を情報機器に伝えていた。しかし、近年の情報機器の高性能化により、ジェスチャによって機器操作を行うシーンが増えてきており、どのようにしてユーザの意図を確実に情報機器に伝えるかが課題となっている。
メニューや、アイコンや、ポインタ等からなるＧＵＩアプリケーションをジェスチャで操作する際のカーソルの制御方法については、手の移動によって制御する手法が一般的となってきている。この制御手法により、ユーザにとって直感的な操作が実現されている。
特許文献１に開示されている技術は、ディスプレイに内蔵されたカメラを用いて操作者を撮像し、操作者の手の形状や、手の動きを認識することによって、ハンドジェスチャによる操作を可能にしている。また、Ｍｉｃｒｏｓｏｆｔ（登録商標）社が発売している「Ｋｉｎｅｃｔアドベンチャー！」というゲームソフトでは、メニュー等の項目の選択方法として、メニュー項目の上にカーソルを合わせて一定時間静止することで項目を選択するという手法がとられている。なお、「Ｋｉｎｅｃｔアドベンチャー！」についての詳細は、（ｈｔｔｐ：／／ｂｉｔ．ｌｙ／ｌＦＺＣ９ａ）に記載されている。更に、ＰｒｉｍｅＳｅｎｓｅ社が公開している「ＯｐｅｎＮＩ」と、「ＯｐｅｎＮＩ  Ｍｉｄｄｌｅｗａｒｅ  ＮＩＴＥ」とでは、メニュー等の項目の選択方法として、手をユーザ前方に押し出すことで項目を選択するという手法がとられている。なお、「ＯｐｅｎＮＩ」と、「ＯｐｅｎＮＩ  Ｍｉｄｄｌｅｗａｒｅ  ＮＩＴＥ」とについての詳細は、（ｈｔｔｐ：／／ｗｗｗ．ｏｐｅｎｎｉ．ｏｒｇ／）に記載されている。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２００４−７８９７７号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
しかしながら、特許文献１に開示されている手法のように、手の形状変化によってメニューを選択する方法の場合、事前にユーザが手の形状変化について学習しなければならないという課題がある。また、上述した「ＯｐｅｎＮＩ」と、「ＯｐｅｎＮＩ  Ｍｉｄｄｌｅｗａｒｅ  ＮＩＴＥ」とで採用されている手法の場合、メニューの選択に時間がかかるため素早い操作が困難であるという課題がある。また、上述した「Ｋｉｎｅｃｔアドベンチャー！」で採用されている手法の場合、ユーザの手が前方へ押し出されたことを確実に検知するために、三次元カメラが必須となる。また、何れの手法においても、ユーザの意図しないメニュー選択が行われてしまう可能性がある。
本発明は、上記課題を鑑みてなされたものであり、操作対象機器をジェスチャによって効率的に操作することを可能とし、かつ、誤操作を少なくすることを目的とする。
【課題を解決するための手段】
【０００５】
そこで、本発明は、機器を操作するユーザの動作情報に基づいて、前記機器の操作に係る動作指示を表示部を介してユーザに提示する提示手段と、前記提示手段により提示された動作指示に対応する動作をユーザが完了させたか否かを判定する判定手段と、前記判定手段により完了させたと判定された場合、前記動作の結果に基づくコマンドを実行する実行手段と、を有する。
【発明の効果】
【０００６】
本発明によれば、操作対象機器をジェスチャによって効率的に操作することを可能とし、かつ、誤操作を少なくすることができる。
【図面の簡単な説明】
【０００７】
【図１】実施形態１の機器操作装置のハードウェア構成の一例を示す図である。
【図２】実施形態１の機器操作装置のソフトウェア構成等の一例を示す図である。
【図３】実施形態１の機器操作装置の装置構成等の一例を示す図である。
【図４】実施形態１の処理の一例を示すフローチャートである。
【図５】動作指示生成処理の一例を示すフローチャートである。
【図６】撮像データの一例を示す図である。
【図７】ディスプレイの表示画面の一例を示す図（その１）である。
【図８】確率分布の一例を示す図（その１）である。
【図９】ディスプレイの表示画面の一例を示す図（その２）である。
【図１０】指示動作完了判定処理の一例を示すフローチャートである。
【図１１】実施形態２の機器操作装置のハードウェア構成の一例を示す図である。
【図１２】実施形態２の機器操作装置のソフトウェア構成等の一例を示す図である。
【図１３】実施形態２の機器操作装置の装置構成等の一例を示す図である。
【図１４】実施形態２の処理の一例を示すフローチャートである。
【図１５】ディスプレイの表示画面の一例を示す図（その３）である。
【図１６】確率分布の一例を示す図（その２）である。
【図１７】ディスプレイの表示画面の一例を示す図（その４）である。
【図１８】実施形態３の機器操作装置の装置構成等の一例を示す図である。
【図１９】ディスプレイの表示画面の一例を示す図（その５）である。
【図２０】確率分布の一例を示す図（その３）である。
【発明を実施するための形態】
【０００８】
以下、本発明を実施するための最良の形態について図面を用いて説明する。
＜実施形態１＞
以下、図面を参照して実施形態１について詳細に説明する。
図１は、本実施形態の機器操作装置１０１のハードウェア構成の一例を示す図である。なお、機器操作装置１０１は、情報処理装置の一例である。
機器操作装置１０１は、ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）１０２と、ＲＯＭ（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）１０３と、ＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）１０４と、バス１０５とを有する。更に、機器操作装置１０１は、カメラＩ／Ｆ１０６と、カメラ１０７と、ディスプレイＩ／Ｆ１０８と、ディスプレイ１０９とを有する。
ＣＰＵ１０２は、機器操作装置１０１全体を制御する。また、ＣＰＵ１０２は、ＲＯＭ１０３等に保存されているプログラムをＲＡＭ１０４にロードして実行することにより、後述の機器操作装置１０１の機能（ソフトウェア構成）及びフローチャートに係る処理を実現する。
ＲＯＭ１０３は、各種のプログラムや、閾値に関するデータ等、各種のデータを格納している。
ＲＡＭ１０４は、プログラムやデータを一時記憶するワークメモリとして機能する。
カメラＩ／Ｆ１０６は、バス１０５と、カメラ１０７とを接続するインターフェースである。
カメラ１０７は、ユーザを撮像する。
ディスプレイＩ／Ｆ１０８は、バス１０５と、ディスプレイ１０９とを接続するインターフェースである。
ディスプレイ１０９は、後述する動作指示情報等が表示される表示部である。
バス１０５は、ＣＰＵ１０２、ＲＯＭ１０３、ＲＡＭ１０４、カメラＩ／Ｆ１０６及びディスプレイＩ／Ｆ１０８を互いに通信可能に接続するシステムバスである。
なお、カメラ１０７及びディスプレイ１０９は、機器操作装置１０１の外部に接続される構成であってもよい。
【０００９】
図２は、本実施形態の機器操作装置１０１におけるソフトウェア構成等の一例を示す図である。
機器操作装置１０１は、動作データ取得部Ａ１１００、計算部Ａ１２００及び提示部Ａ１３００を有する。
動作データ取得部Ａ１１００は、カメラ等を介してユーザの動作に関するデータを取得する。より具体的には、動作データ取得部Ａ１１００は、ユーザの動作を表すデータ取得のためにユーザを撮像し、動作データである撮像データ（撮像情報）を取得する。なお、動作データ取得部Ａ１１００による撮像データの取得は、撮像情報取得処理の一例である。
計算部Ａ１２００は、様々な計算を行う。
撮像データ保持部Ａ１２０１は、動作データ取得部Ａ１１００で取得されたデータを保持する。
ユーザ動作認識部Ａ１２１０は、撮像データ保持部Ａ１２０１に保持された撮像データからユーザの動作（以下、単にユーザ動作という）を認識する。
ユーザ動作保持部Ａ１２０２は、ユーザ動作認識部Ａ１２１０で認識されたユーザ動作の内容を示す動作情報（以下、単に動作情報という）を保持する記憶領域である。
動作指示生成部Ａ１２２０は、ユーザ動作保持部Ａ１２０２に保持された動作情報からユーザに対する動作指示の内容を示す動作指示情報（以下、単に動作指示情報という）を生成する。
【００１０】
動作指示保持部Ａ１２０３は、動作指示生成部Ａ１２２０で生成された動作指示情報を保持する記憶領域である。
指示動作完了判定部Ａ１２３０は、ユーザ動作保持部Ａ１２０２に保持された動作情報と、動作指示保持部Ａ１２０３に保持された動作指示情報とから、ユーザによる指示動作が完了したか否かを判定する。
指示動作完了時コマンド保持部Ａ１２０４は、指示動作完了判定部Ａ１２３０がユーザによる指示動作が完了したと判定した際に実行されるコマンドを保持する記憶領域である。
指示動作完了時コマンド実行部Ａ１２４０は、指示動作完了判定部Ａ１２３０がユーザによる指示動作が完了したと判定した際に、指示動作完了時コマンド保持部Ａ１２０４に保持されたコマンドを実行する。
提示部Ａ１３００は、ユーザ動作保持部Ａ１２０２に保持された動作情報と、動作指示保持部Ａ１２０３に保持された動作指示情報とを提示する。より具体的には、提示部Ａ１３００は、前記動作情報と、前記動作指示情報とを、機器操作装置１０１が有するディスプレイ等の表示部を介してユーザに提示する。
なお、動作データ取得部Ａ１１００、計算部Ａ１２００及び提示部Ａ１３００は、上述の機能を有するハードウェアであってもよい。
【００１１】
図３は、本実施形態における機器操作装置１０１の装置構成等の一例を示す図である。
ここでは、図２で上述した動作データ取得部Ａ１１００、計算部Ａ１２００及び提示部Ａ１３００を有する機器操作装置１０１の一例として操作対象機器２１００を用いて説明する。
動作データ取得部Ａ１１００は、カメラ２１２０を介してユーザ２２００の手２２１０を捉える。ユーザ２２００は、操作対象機器２１００のディスプレイ２１１０上に提示されるカーソル２１１３を、手２２１０を動かすことにより移動させて操作対象機器２１００の操作を行う。
また、上述したように、操作対象機器２１００は、ユーザ動作認識部Ａ１２１０、動作指示生成部Ａ１２２０、指示動作完了判定部Ａ１２３０及び指示動作完了時コマンド実行部Ａ１２４０の機能を含む計算部Ａ１２００を有する。また、計算部Ａ１２００は、記憶領域として、撮像データ保持部Ａ１２０１、ユーザ動作保持部Ａ１２０２、動作指示保持部Ａ１２０３及び指示動作完了時コマンド保持部Ａ１２０４を有している。
以上が、本実施形態における機器操作装置１０１の装置構成の一例である。
【００１２】
図４は、本実施形態の処理の一例を示すフローチャートである。
Ｓ３１００で、ユーザ動作認識部Ａ１２１０は、撮像データ保持部Ａ１２０１から撮像データを取得し、ユーザ２２００の手２２１０の位置の認識を行う。そして、ユーザ動作認識部Ａ１２１０は、認識したユーザ２２００の手２２１０の位置に関する動作情報をユーザ動作保持部Ａ１２０２に保持する。
Ｓ３２００で、動作指示生成部Ａ１２２０は、ユーザに対する動作指示に関する動作指示情報を生成する。Ｓ３２００の詳細な処理について、図５を用いて説明する。なお、図５は、Ｓ３２００における動作指示生成処理の一例を示すフローチャートである。
Ｓ３２１０で、動作指示生成部Ａ１２２０は、ユーザ動作保持部Ａ１２０２からユーザ２２００の手２２１０の位置に関する動作情報を取得する。即ち、動作指示生成部Ａ１２２０は、ユーザ２２００の過去動作の情報を取得する。
Ｓ３２２０で、動作指示生成部Ａ１２２０は、Ｓ３２１０で取得したユーザ２２００の手２２１０の位置に関する動作情報をもとにユーザ２２００の将来の動作を予測する。
Ｓ３２３０で、動作指示生成部Ａ１２２０は、Ｓ３２２０で予測した結果をもとに、ユーザ２２００に対する動作指示に関する動作指示情報を生成する。
【００１３】
図４の説明に戻る。
Ｓ３３００で、提示部Ａ１３００は、動作指示保持部Ａ１２０３から動作指示情報を取得し、ディスプレイ２１１０を介してユーザ２２００に対する動作指示を提示する。
Ｓ３４００で、指示動作完了判定部Ａ１２３０は、動作指示保持部Ａ１２０３から動作指示情報を取得し、更に、ユーザ動作保持部Ａ１２０２からユーザ２２００の手２２１０の位置に関する動作情報を取得する。そして、指示動作完了判定部Ａ１２３０は、取得した動作指示情報と、動作情報とをもとに、ユーザ２２００が指示動作を完了させたか否かを判定する。なお、判定の手法に関する詳細については、図１０等を用いて後述する。指示動作完了判定部Ａ１２３０は、ユーザ２２００が指示動作を完了させたと判定した場合、処理をＳ３５００に進める。一方、指示動作完了判定部Ａ１２３０は、ユーザ２２００が指示動作を完了させていないと判定した場合、更に、Ｓ３４００の指示動作完了判定を終了するか否かを判定する。そして、指示動作完了判定部Ａ１２３０は、終了すると判定した場合、処理を終了し、終了しないと判定した場合、処理をＳ３１００に戻す。
Ｓ３５００で、指示動作完了時コマンド実行部Ａ１２４０は、指示動作完了時コマンド保持部Ａ１２０４から指示動作が完了した際に実行するコマンドを取得し、取得したコマンドを実行する。
以上が、本実施形態における機器操作装置１０１の処理フローである。
【００１４】
次に、図３の装置構成等と、図４及び図５の処理フローとを用いた場合における処理の一例について説明する。
本実施形態では、ユーザ２２００が、操作対象機器２１００のディスプレイ２１１０上に表示される選択可能な項目をジェスチャによって選択する。
動作データ取得部Ａ１１００は、操作対象機器２１００が有するカメラ２１２０を介して、ユーザ２２００を撮像し、ユーザ２２００の動作を表す動作データである撮像データを取得する。
図６は、動作データ取得部Ａ１１００が取得した撮像データの一例を示す図である。
撮像データ４１００の中にユーザ２２００が映っており、ユーザ２２００は、手２２１０によるジェスチャによって操作対象機器２１００を操作している。
ここで、図７に示されるように、操作対象機器２１００のディスプレイ２１１０に選択可能項目２１１１及び選択可能項目２１１２が表示されているものとして説明を行う。なお、図７は、ディスプレイ２１１０の表示画面の一例を示す図である。
ユーザ２２００は、選択可能項目のひとつである選択可能項目２１１１を選択しようとしている。操作対象機器２１００は、動作データ取得部Ａ１１００が取得した撮像データ４１００を撮像データ保持部Ａ１２０１にあたるバッファメモリに一時的に保持し、図４に示されるフローに従って処理する。
【００１５】
図４のＳ３１００で、ユーザ動作認識部Ａ１２１０は、動作データ取得部Ａ１１００により取得された画像中から背景差分を用いてユーザ２２００の領域を抽出する。そして、ユーザ動作認識部Ａ１２１０は、人物の手の領域を学習させた認識器を用いてユーザ２２００の手２２１０の位置をユーザ２２００の領域から認識する。ユーザ動作認識部Ａ１２１０は、認識した手２２１０の領域に関する情報を、ユーザ動作保持部Ａ１２０２にあたるメモリに保持する。そして、操作対象機器２１００は、ディスプレイ２１１０に、ユーザ２２００の手２２１０の領域と対応した位置にカーソル２１１３を描画する。なお、ここでいう対応とは、ユーザ２２００が手２２１０を上方向に１０ｃｍだけ動かせば、ディスプレイ２１１０上のカーソル２１１３も上方向に１０ｃｍだけ移動する関係のことをいう。また、これは上方向に限ることではない。即ち、ユーザ２２００が手２２１０を右方向に１０ｃｍだけ動かせば、ディスプレイ２１１０上のカーソル２１１３も右方向に１０ｃｍだけ移動する。他の方向に関しても同様である。
なお、ユーザ動作認識部Ａ１２１０が撮像データ４１００からユーザ２２００の領域を抽出する方法は、背景差分に限る必要はなく、撮像データ４１００中からユーザ２２００の領域を抽出することができれば他の方法でもよい。また、ユーザ動作認識部Ａ１２１０がユーザ２２００の領域から手２２１０の領域を抽出する方法についても、認識器を用いることは必須ではなく、ユーザ２２００の手２２１０の領域を抽出することができれば他の方法でもよい。
また、ユーザ動作認識部Ａ１２１０は、撮像データ４１００からユーザ２２００の領域を抽出した後にユーザ２２００の手２２１０の領域を認識するようにしたが、撮像データ４１００から直接、ユーザ２２００の手２２１０の領域を認識するようにしてもよい。
【００１６】
また、操作対象機器２１００がユーザ２２００の手２２１０の位置と対応した位置に表示するカーソル２１１３についても、矢印の形状であることは必須ではなく、ユーザがポインティングしている位置がわかれば、他の表示方法であってもよい。
また、ユーザ２２００の手２２１０の移動距離と、カーソル２１１３の移動距離との対応関係が１対１の関係であることは必須ではなく、ディスプレイ２１１０の大きさや、操作のしやすさによって対応関係を変えてもよい。
また、カーソル２１１３をディスプレイ２１１０に表示することは必須ではない。例えば操作対象機器２１００は、ディスプレイ２１１０に映りこんだユーザ２２００の手２２１０や、ディスプレイ２１１０の前面にハーフミラーを設置し、ハーフミラーに映ったユーザ２２００の手２２１０をカーソル２１１３に見立てるようにしてもよい。
本実施形態におけるユーザ動作認識部Ａ１２１０は、ディスプレイ２１１０上のカーソル２１１３が選択可能項目２１１１又は選択可能項目２１１２に重なると、処理をＳ３２００に進める。本実施形態におけるユーザ動作認識部Ａ１２１０は、ディスプレイ２１１０上のカーソル２１１３が選択可能項目２１１１又は選択可能項目２１１２に重なったか否かを、以下の方法により検知するようにした。ユーザ動作認識部Ａ１２１０は、ディスプレイ２１１０上のカーソル２１１３の座標（Ｘ、Ｙ）が、選択可能項目の領域（Ｘ'、Ｙ'）から（Ｘ''、Ｙ''）までの中に含まれるか否かによって判断する。しかし、ユーザ動作認識部Ａ１２１０は、これ以外の方法によって検知するようにしてもよい。また、本実施形態では選択可能項目の領域を直方体としたが、直方体に限る必要はない。また、Ｓ３２００へと進む条件は、特定領域にカーソル２１１３が重なった場合に限らず、その他のユーザ動作、プログラム処理結果、時間又は外部入出力等を開始条件としてもよい。これによって、多種多様な状況において、本実施形態を適用することができる。
【００１７】
Ｓ３２１０で、動作指示生成部Ａ１２２０は、ユーザ動作保持部Ａ１２０２に保持されている、カーソル２１１３が選択可能項目２１１１に重なるまでのユーザ２２００の手２２１０の動きに関する動作情報を取得する。
Ｓ３２２０で、動作指示生成部Ａ１２２０は、Ｓ３２１０で取得した動作情報から、ユーザの将来動作であるカーソル２１１３が動く方向を推定する。本実施形態において、動作指示生成部Ａ１２２０は、カーソル２１１３の動きの予測方法として、カーソル２１１３の手の位置に連動するカーソルと、選択可能項目との交差の直前の移動方向から、各方向への移動確率を求める。
本実施形態では、動作指示生成部Ａ１２２０は、今後のカーソル２１１３の各方向への移動確率を図８のように仮定する。なお、図８は、確率分布の一例を示す図である。
図８は、縦軸が確率、横軸が現在の進行方向との角度差を示しており、縦軸と、横軸との交点が角度差ゼロ、確率ゼロを示す。このグラフでは、進行方向に変更を加えずそのまま進む確率が高く、進行方向との角度差が大きくなるにつれて、確率が低くなることがわかる。動作指示生成部Ａ１２２０は、図８に示される各方向への移動確率をもとに移動確率の低い方向に対して、カーソル２１１３を移動させるような動作指示に関する動作指示情報を生成する。例えば、動作指示生成部Ａ１２２０は、予め定められた確率よりも低くなる方向を求めて、求めた方向に対して移動させるような動作指示情報を生成する。なお、本実施形態において、動作指示生成部Ａ１２２０は、直前の移動方向から確率を求めるようにしたが、カーソル２１１３の動きの予測方法はこれに限る必要はない。例えば、動作指示生成部Ａ１２２０は、過去のユーザ２２００の手２２１０の動きを学習した認識器を用いる方法等を用いてもよい。この認識器における学習方法に関して、例えば実際の表示矢印方向に対してどのような挙動を示したかに関する方向別ヒストグラム分布を用いて学習する方法等があるが、学習方法に関してもこれに限る必要なない。
また、動作指示生成部Ａ１２２０は、カーソル２１１３が同じ動作をしていたとしても、同じ動作を指示することは必須ではなく、毎回異なる動作を指示してもよい。
また、動作指示生成部Ａ１２２０によるユーザ２２００への動作指示は、カーソル２１１３の移動に限ったものではなく、例えばユーザ２２００の手２２１０を軸に、手のひらを回転させる等の動作指示であってもよい。
このように、動作指示生成部Ａ１２２０がユーザへの多様な動作指示を可能にすることで、誤認識確率を少なくすることができる。
【００１８】
Ｓ３２３０で、動作指示生成部Ａ１２２０は、将来のカーソル２１１３の動きの推定結果の信頼性をもとに、動作指示情報を生成する。より具体的には、動作指示生成部Ａ１２２０は、動く可能性が低いと予測した方向で、かつ、他の選択可能項目２１１２と重ならない方向にカーソル２１１３を移動させる動作指示に関する動作指示情報を生成する。
動作指示としては、例えば「カーソル２１１３を上方向に３０ｃｍ動かした後、右方向に６０ｃｍ動かす」といった指示が挙げられる。しかし、その時点でユーザ２２００が将来行う確率が予め定められた閾値よりも低いものであれば、ジェスチャや、発話等の動作指示であってもよい。
動作指示生成部Ａ１２２０は、Ｓ３２００で生成した動作指示情報を、動作指示保持部Ａ１２０３にあたるメモリに保持する。そして、Ｓ３３００で、提示部Ａ１３００は、動作指示保持部Ａ１２０３から動作指示情報を取得し、操作対象機器２１００のディスプレイ２１１０に表示してユーザに提示する。提示部Ａ１３００は、例えば図９に示されるような表示画面を提示する。なお、図９は、ディスプレイ２１１０の表示画面の一例を示す図である。
図９の表示画面は、カーソル２１１３を移動させる方向及び距離を、矢印２１１４によってユーザ２２００に提示している。なお、提示部Ａ１３００によるユーザ２２００への動作指示に関する提示方法は、矢印での表示に限る必要はない。例えば、提示部Ａ１３００は、文字や、音声等で動作指示を提示するようにしてもよい。これによって、操作対象機器２１００は、ディスプレイ２１１０の表示への影響を最小限にして、ユーザによる操作対象機器２１００の操作を実現することができるようになる。
【００１９】
Ｓ３４００で、指示動作完了判定部Ａ１２３０は、操作対象機器２１００のディスプレイ２１１０上に表示されるカーソル２１１３が、生成された動作指示情報が示す動作指示である矢印２１１４の通りに動いたか否かを判定する。
図１０は、Ｓ３４００における指示動作完了判定処理の一例を示すフローチャートである。
Ｓ３４１０で、指示動作完了判定部Ａ１２３０は、動作指示に関する動作をユーザが完了させたか否かを判定する。即ち、指示動作完了判定部Ａ１２３０は、ディスプレイ２１１０上に表示されるカーソル２１１３が、動作指示である矢印２１１４の通りに動いたか否かを判定する。より具体的には、指示動作完了判定部Ａ１２３０は、矢印２１１４が表示された後に、カーソル２１１３が上方向に２７ｃｍから３３ｃｍまでの間で動き、右方向に５４ｃｍから６６ｃｍまでの間で動いたことを検出した場合、指示動作が完了したと判定する。なお、本実施形態では、指示動作完了判定部Ａ１２３０が判定に用いる許容誤差を、カーソル２１１３を上方向に３０ｃｍ動かした後、右方向に６０ｃｍ動かすといった動作指示が示す移動距離の１０％と定めたが、これに限る必要はない。
また、指示動作完了判定部Ａ１２３０は、判定にカーソル２１１３の移動距離を用いることは必須ではなく、例えば、予め定めた領域にカーソル２１１３が重なった場合に指示動作完了と判定するようにしてもよい。このように、操作対象機器２１００は、多様に閾値を設定することで、例えば身体の動作が不自由なユーザへの使い勝手を確保することができるようになる。また、操作対象機器２１００は、例えば身長が低いためディスプレイ２１１０の上部にカーソル２１１３を移動させることが困難な場合等、体格的に困難な動作を行わなければならないユーザへの使い勝手を確保することができるようになる。
また、本実施形態では、動作指示生成部Ａ１２２０は、「カーソル２１１３を上に３０ｃｍ動かした後、右に６０ｃｍ動かす」といった動作指示を示す動作指示情報を生成した。提示部Ａ１３００は、二つの動作指示を表す矢印を一度に提示したが、ユーザ２２００がカーソル２１１３を上方向に３０ｃｍ動かしたことを判定した後に、右方向に６０ｃｍ動かす動作指示を提示するようにしてもよい。
また、動作指示生成部Ａ１２２０が予め全ての動作指示を生成することは必須ではない。例えば、動作指示生成部Ａ１２２０は、ユーザ２２００がカーソル２１１３を上に３０ｃｍ動かした後で、更なる動作指示情報を生成し、提示部Ａ１３００が新たな動作指示を提示するようにしてもよい。これによって、操作対象機器２１００は、誤認識の確率を少なくすることができる。
【００２０】
指示動作完了判定部Ａ１２３０は、Ｓ３４１０でユーザ２２００による指示動作が完了したと判定した場合、処理を図４のＳ３５００へと進める。そして、Ｓ３５００で、指示動作完了時コマンド実行部Ａ１２４０は、指示動作完了時コマンド保持部Ａ１２０４に保持されている動作認識完了時コマンドを取得して実行する。即ち、指示動作完了時コマンド実行部Ａ１２４０は、選択可能項目２１１１の選択の結果に対応するコマンドを指示動作完了時コマンド保持部Ａ１２０４から取得して実行する。
指示動作完了判定部Ａ１２３０は、Ｓ３４１０でユーザ２２００による指示動作が完了していないと判定した場合、処理をＳ３４２０に進める。Ｓ３４２０で、指示動作完了判定部Ａ１２３０は、生成された動作指示情報が示す指示動作と異なる動作をユーザ２２００が行ったか否かを判定する。例えば本実施形態において、指示動作完了判定部Ａ１２３０は、ユーザ２２００が上方向に３０ｃｍ動かさずに、右方向に３０ｃｍ以上動かした場合、指示無視とみなす。指示動作完了判定部Ａ１２３０は、指示無視と判定すると、認識失敗として認識動作を終了する。
指示動作完了判定部Ａ１２３０は、Ｓ３４２０において指示無視と判定しなかった場合、処理をＳ３４３０に進める。Ｓ３４３０で、指示動作完了判定部Ａ１２３０は、認識処理が開始されてから、予め定められた時間が経過したか否かを判定する。例えば本実施形態における指示動作完了判定部Ａ１２３０は、認識処理が開始されてから１０秒以上経過すると認識失敗と判定し、認識動作を終了する。一方、指示動作完了判定部Ａ１２３０は、認識処理が開始されてから１０秒以上経過していないと判定した場合、処理をＳ３４１０に戻し、一連の処理を繰り返す。
Ｓ３４００で、指示動作完了判定部Ａ１２３０は、認識失敗と判定した場合、処理をＳ３１００に戻す。そして、動作指示生成部Ａ１２２０は、異なる動作指示情報を生成する。更に、提示部Ａ１３００は、再度、動作指示情報が示す動作指示を提示する。但し、提示部Ａ１３００が異なる動作指示を５回提示しても、指示動作完了判定部Ａ１２３０が動作完了と判定しない場合は、指示動作完了判定部Ａ１２３０は、指示動作完了判定処理を中断する。こうすることによって、操作対象機器２１００は、柔軟な認識処理と、少ない誤動作とを実現し、ユーザの使い勝手を向上させることができる。
【００２１】
上記のように、操作対象機器２１００は、動的に生成した動作指示を用いて項目の選択をユーザに行わせることによって、ユーザの何気ない動作をジェスチャとして誤認識する可能性が少なくなる。これによって、操作対象機器２１００は、ジェスチャによる機器操作における誤動作を少なくし、更に、ユーザによる確実な項目選択を可能にすることで、ユーザの使い勝手を向上させることができる。
以上、本実施形態では、ユーザがジェスチャによって画面に表示される項目を選択する場合において、操作対象機器２１００がユーザに対する項目選択のための動作指示情報を動的に生成し、動作指示を提示する実施形態について述べた。本実施形態では、操作対象機器２１００が、ユーザが項目にカーソルを重ねるまでの動作とは不連続な動作の指示を示す指示情報を生成することで、ユーザが意図せずに項目を選択することを抑止することができる。これにより、操作対象機器２１００は、誤動作を少なくし、ユーザが効率的に操作対象機器を操作することを可能にする。
【００２２】
＜実施形態２＞
以下、図面を参照して実施形態２について詳細に説明する。
実施形態１との主な差異は、機器操作装置１０１がユーザ動作を示す動作情報を取得するために、撮像データ保持や、それに基づく画像認識を行わず、操作部等を介して直接ポインティングデバイスの操作情報から得られるデータを用いる点である。
図１１は、本実施形態の機器操作装置１０１のハードウェア構成の一例を示す図である。
機器操作装置１０１は、ＣＰＵ１０２と、ＲＯＭ１０３と、ＲＡＭ１０４と、操作部Ｉ／Ｆ１１０と、操作部１１１と、ディスプレイＩ／Ｆ１０８と、ディスプレイ１０９と、バス１０５とを有する。
ＣＰＵ１０２は、機器操作装置１０１全体を制御する。また、ＣＰＵ１０２は、ＲＯＭ１０３等に保存されているプログラムをＲＡＭ１０４にロードして実行することにより、後述の機器操作装置１０１の機能（ソフトウェア構成）及びフローチャートに係る処理を実現する。
ＲＯＭ１０３は、各種のプログラムや、閾値に関するデータ等、各種のデータを格納している。
ＲＡＭ１０４は、プログラムやデータを一時記憶するワークメモリとして機能する。
操作部Ｉ／Ｆ１１０は、バス１０５と、操作部１１１とを接続するインターフェースである。
操作部１１１は、ユーザが入力操作に用いるマウスや、キーボード等である。本実施形態では、操作部１１１がマウス等のポインティングデバイスであるものとして説明する。
ディスプレイＩ／Ｆ１０８は、バス１０５と、ディスプレイ１０９とを接続するインターフェースである。
ディスプレイ１０９は、後述する動作指示情報等を表示する表示部である。
バス１０５は、ＣＰＵ１０２、ＲＯＭ１０３、ＲＡＭ１０４、操作部Ｉ／Ｆ１１１０及びディスプレイＩ／Ｆ１０８を互いに通信可能に接続するシステムバスである。
なお、操作部１１１及びディスプレイ１０９は、機器操作装置１０１の外部に接続される構成であってもよい。
【００２３】
図１２は、本実施形態の機器操作装置１０１におけるソフトウェア構成等の一例を示す図である。
以下、図１２に示される機器操作装置１０１ソフトウェア構成等について説明する。
動作データ取得部Ａ９１００は、カーソルを操作するためのポインティングデバイスの操作情報からカーソル操作をするユーザの動作情報を取得する。なお、動作データ取得部Ａ９１００がポインティングデバイスの操作情報を取得する処理は、操作情報取得処理の一例である。
計算部Ａ９２００は、様々な計算を行う。
ユーザ動作保持部Ａ９２０１は、動作データ取得部Ａ９１００により取得された動作情報を保持する。
動作指示生成部Ａ９２１０は、ユーザ動作保持部Ａ９２０１に保持された動作情報から動作指示情報を生成する。
動作指示保持部Ａ９２０３は、動作指示生成部Ａ９２１０で生成された動作指示情報を保持する。
指示動作完了判定部Ａ９２２０は、ユーザ動作保持部Ａ９２０１に保持された動作情報と、動作指示保持部Ａ９２０３に保持された動作指示情報とから、ユーザによる指示動作が完了したか否かを判定する。
指示動作完了時コマンド保持部Ａ９２０２は、指示動作完了判定部Ａ９２２０がユーザによる指示動作が完了したと判定した際に実行されるコマンドを保持する記憶領域である。
指示動作完了時コマンド実行部Ａ９２３０は、指示動作完了判定部Ａ９２２０がユーザによる指示動作が完了したと判定した際に、指示動作完了時コマンド保持部Ａ９２０２に保持されたコマンドを実行する。
提示部Ａ９３００は、ユーザ動作保持部Ａ９２０１に保持された動作情報と、動作指示保持部Ａ９２０３に保持された動作指示情報とを提示する。より具体的には、提示部Ａ９３００は、前記動作情報と、前記動作指示情報とを、機器操作装置１０１が有するディスプレイ等の表示部を介してユーザに提示する。
なお、動作データ取得部Ａ９１００、計算部Ａ９２００及び提示部Ａ９３００は、上述の機能を有するハードウェアであってもよい。
【００２４】
図１３は、本実施形態における機器操作装置１０１の装置構成等の一例を示す図である。
ここでは、図１２で上述した動作データ取得部Ａ９１００、計算部Ａ９２００及び提示部Ａ９３００を有する機器操作装置１０１の一例として操作対象機器１０１００を用いて説明する。
ユーザ２２００は、マウス１０１２０を移動させることによって操作対象機器１０１００のディスプレイ１０１１０上に提示されるカーソル１０１１３の位置を移動させ操作を行う。
また、上述したように、操作対象機器２１００は、動作指示生成部Ａ９２１０、指示動作完了判定部Ａ９２２０及び指示動作完了時コマンド実行部Ａ９２３０の機能を含む計算部Ａ９２００を有する。また、計算部Ａ９２００は、記憶領域として、ユーザ動作保持部Ａ９２０１、指示動作完了時コマンド保持部Ａ９２０２及び動作指示保持部Ａ９２０３を有している。
以上が、本実施形態における機器操作装置の装置構成の一例である。
【００２５】
図１４は、本実施形態の処理の一例を示すフローチャートである。
Ｓ１１１００で、動作データ取得部Ａ９１００は、マウス等の操作によって移動されたカーソル１０１１３の位置に関する動作情報をユーザ動作保持部Ａ９２０１に保持する。
Ｓ１１２００で、動作指示生成部Ａ９２１０は、ユーザ動作保持部Ａ９２０１から取得したカーソル１０１１３の位置に関する動作情報に基づいて、ユーザ２２００に対する動作指示情報を生成する。そして、動作指示生成部Ａ９２１０は、生成した動作指示情報を動作指示保持部Ａ９２０３に保持する。なお、Ｓ１１２００において動作指示生成部Ａ９２１０は、実施形態１の図４で上述したＳ３２００と同様の方法により動作指示情報を生成する。
Ｓ１１３００で、提示部Ａ９３００は、動作指示保持部Ａ９２０３から動作指示情報を取得し、ディスプレイ１０１１０を介してユーザ２２００に動作指示を提示する。
Ｓ１１４００で、指示動作完了判定部Ａ９２２０は、動作指示保持部Ａ９２０３から動作指示情報を取得し、更に、ユーザ動作保持部Ａ９２０１からカーソル１０１１３の位置に関する動作情報を取得する。そして、指示動作完了判定部Ａ９２２０は、取得した動作指示情報と、動作情報とをもとに、ユーザ２２００が指示動作を完了させたか否かを判定する。なお、指示動作完了判定部Ａ９２２０による判定の手法は、実施形態１の図１０等を用いて上述した手法と同様である。
Ｓ１１５００で、指示動作完了時コマンド実行部Ａ９２３０は、指示動作完了時コマンド保持部Ａ９２０２から指示動作が完了した際に実行するコマンドを取得し、取得したコマンドを実行する。
以上が、本実施形態における機器操作装置の処理フローである。
【００２６】
次に、図１３の装置構成等と、図１４の処理フローとを用いた場合における処理の一例について説明する。
本実施形態では、ユーザ２２００が、操作対象機器１０１００のディスプレイ１０１１０上に表示される選択可能な項目を、マウス１０１２０を用いたジェスチャによって選択する。ここで、ユーザは、操作対象機器１０１００に接続されているマウス１０１２０を操作することによってディスプレイ１０１１０上に表示されるカーソル１０１１３を操作する。また、図１５に示されるように、ディスプレイ１０１１０に、選択可能項目１０００１、選択可能項目１０００２、選択可能項目１０００３及び選択可能項目１０００４が表示されているものとして説明を行う。なお、図１５は、ディスプレイ２１１０の表示画面の一例を示す図である。ユーザ２２００は、選択可能項目のひとつである選択可能項目１０００１を選択しようとしているものとする。
図１４のＳ１１１００で、ユーザによるマウス１０１２０の操作を介して入力された座標の情報がユーザ動作保持部Ａ９２０１にあたるバッファメモリに一時的に保持される。
本実施形態における操作対象機器１０１００は、ディスプレイ１０１１０上のカーソル１０１１３が選択可能項目１０００１、選択可能項目１０００２、選択可能項目１０００３又は選択可能項目１０００４に重なると、処理をＳ１１２００へ進める。なお、操作対象機器１０１００が、ディスプレイ１０１１０上のカーソル１０１１３が選択可能項目１０００１等に重なったか否かを判定する方法は、上述したＳ３４００の処理と同様であるため、説明を省略する。また、Ｓ１１２００へと進む条件は、特定領域にカーソル１０１１３が重なった場合に限らず、その他のユーザ動作、プログラム処理結果、時間又は外部入出力等を開始条件としてもよい。これによって、多種多様な状況において、本実施形態を適用することができる。
【００２７】
Ｓ１１２００で、動作指示生成部Ａ９２１０は、ユーザ動作保持部Ａ９２０１に保持されている動作情報が示すカーソル１０１１３が選択可能項目１０００１に重なるまでの動きから、今後カーソル１０１１３が動く方向と、速度とを推定する。本実施形態において、動作指示生成部Ａ９２１０は、カーソル１０１１３の動きの予測方法として、カーソル１０１１３の直前の移動方向と、速度とから各方向への移動確率を求める。より具体的には、動作指示生成部Ａ９２１０は、実施形態１と同様に図８を用いて各方向への移動確率を求める。また、動作指示生成部Ａ９２１０は、速度の推定について、今後のカーソル１０１１３の速度変化を図１６のように仮定する。なお、図１６は、確率分布の一例を示す図である。
図１６は、縦軸が確率、横軸が現在の速度との速度差を示しており、縦軸と、横軸との交点が速度差ゼロ、確率ゼロを示す。このグラフでは、同じ進行速度でそのまま進む確率が高く、現在の速度との速度差が大きくなるにつれて、確率が低くなることがわかる。動作指示生成部Ａ９２１０は、図１６に示される速度変化確率をもとに確率が低くなる移動速度で、カーソル１０１１３を移動させるような動作指示を示す動作指示情報を生成する。例えば、動作指示生成部Ａ９２１０は、予め定められた確率よりも低くなる移動速度を求めて、求めた移動速度で移動させるような動作指示情報を生成する。なお、本実施形態において、動作指示生成部Ａ９２１０は、直前の移動方向と、速度とから予め定められた確率を求めるようにしたが、カーソル１０１１３の動きの予測方法はこれに限る必要はない。例えば、動作指示生成部Ａ９２１０は、過去のカーソル１０１１３の動きを学習した認識器を用いる方法等を用いてもよい。動作指示生成部Ａ９２１０は、この認識器を用いることで、より精度よくカーソル１０１１３の動きを予測することができる場合があり、その結果、誤認識を少なくすることが可能となる。
動作指示生成部Ａ９２１０は、将来のカーソル１０１１３の動きを予測し、動く可能性が低いと予測した方向、速度で、カーソル１０１１３を移動させる動作指示を示す動作指示情報を生成する。動作指示としては、例えば「カーソル１０１１３を秒速１０ｃｍで、上方向に３０ｃｍ動かす」といった指示が挙げられる。しかし、その時点でユーザ２２００が将来行う確率が予め定められた閾値よりも低いものであれば、ジェスチャや、発話等の動作指示であってもよい。
【００２８】
動作指示生成部Ａ９２１０は、Ｓ１１２００で生成した動作指示情報を、動作指示保持部Ａ９２０３にあたるメモリに保持する。そして、Ｓ１１３００で、提示部Ａ９３００は、動作指示保持部Ａ９２０３から動作指示情報を取得し、操作対象機器１０１００のディスプレイ１０１１０に表示してユーザに提示する。提示部Ａ１３００は、例えば図１７に示されるような表示画面を提示する。なお、図１７は、ディスプレイ１０１１０の表示画面の一例を示す図である。
図１７の表示画面では、カーソル１０１１３が選択可能項目１０００１と重なった状態で表示されており、選択可能項目１０００１は秒速１０ｃｍで上方向に３０ｃｍ移動する。即ち、提示部Ａ１３００は、カーソル１０１１３と、選択可能項目１０００１とを重ね合わせた状態のまま、秒速１０ｃｍで上方向に３０ｃｍ移動することをユーザ２２００に対して指示している。なお、提示部Ａ１３００によるユーザ２２００への動作指示に関する提示方法は、これに限る必要はない。例えば、提示部Ａ１３００は、文字や、音声等で動作指示を提示するようにしてもよい。これによって、操作対象機器１０１００は、ディスプレイ１０１１０の表示における影響を最小限にして、ユーザによる操作対象機器１０１００の操作を実現することができるようになる。また、動きは直線に限る必要はなく、曲線であってもよい。
このように、操作対象機器１０１００がユーザへの多様な動作指示を可能にすることで、誤認識を抑止することが可能になる。
【００２９】
Ｓ１１４００で、指示動作完了判定部Ａ９２２０は、操作対象機器１０１００のディスプレイ１０１１０上に表示されるカーソル１０１１３が、生成された動作指示情報が示す動作指示１０１１４の通りに動いたか否かを判定する。より具体的には、指示動作完了判定部Ａ９２２０は、カーソル１０１１３が移動する選択可能項目１０００１と重なった状態で上方向に３０ｃｍ移動したかどうかで判定する。なお、カーソル１０１１３が選択可能項目１０００１からはみ出した場合、動作指示生成部Ａ９２１０は、新たな動作指示情報を生成する。また、動作指示生成部Ａ９２１０が生成する動作指示情報が示す動作指示において、移動速度は秒速１０ｃｍに限る必要はなく、移動距離も３０ｃｍに限る必要はない。動作指示生成部Ａ９２１０は、ユーザ２２００の状態や、ユースケース等によって生成する動作指示情報を調節するようにしてもよい。
また、本実施形態において、動作指示生成部Ａ９２１０は、「カーソル１０１１３を秒速１０ｃｍで、上方向に３０ｃｍ動かす」といった動作指示を示す動作指示情報を生成した。しかし、動作指示生成部Ａ９２１０は、ユーザ２２００がカーソル１０１１３を選択可能項目１０００１と重なった状態で上方向に３０ｃｍ動かしたことを判定した後に、更なる動作指示情報を生成するようにしてもよい。このように、操作対象機器１０１００は、ユーザへの多様な動作指示を可能にすることで、誤認識を抑止することが可能になる。
Ｓ１１４００で、指示動作完了判定部Ａ９２２０は、指示動作が完了したと判定すると、処理をＳ１１５００に進める。
Ｓ１１５００で、指示動作完了時コマンド実行部Ａ９２３０は、指示動作完了時コマンド保持部Ａ９２０２に保持されている指示動作完了時コマンドを取得し、取得したコマンドを実行する。
【００３０】
上記のように、操作対象機器１０１００は、動的に生成した動作指示情報を用いて項目の選択をユーザに行わせることによって、機器操作における誤動作を少なくし、確実な項目の選択を可能にすることができる。また、この場合、操作対象機器１０１００は、操作に伴うクリック動作の発生を必須としないため、セキュリティを確保することが可能である。更に、操作対象機器１０１００は、身体的にクリック操作が困難なユーザに対する利便性を向上させることができる。
以上、本実施形態では、ユーザがマウス等を用いて操作対象機器１０１００を操作する場合において、ユーザに対する機器操作のための動作指示情報を動的に生成し、動作指示を提示する実施形態について述べた。本実施形態では、操作対象機器１０１００が、ユーザが項目にカーソルを重ねるまでの動作（マウス操作）とは不連続な動作（マウス操作）の指示を示す指示情報を生成することで、ユーザが意図せずに項目を選択することを抑止することができる。
【００３１】
＜実施形態３＞
以下、図面を参照して実施形態３について詳細に説明する。
本実施形態の機器操作装置１０１における機能構成等は、実施形態１で上述した図２と同様である。
図１８は、本実施形態における機器操作装置１０１の装置構成等の一例を示す図である。
ここでは、動作データ取得部Ａ１１００、計算部Ａ１２００及び提示部Ａ１３００を有する機器操作装置１０１の一例として操作対象機器１３１００を用いて説明する。
動作データ取得部Ａ１１００は、カメラ１３１２０を介してユーザ２２００の手２２１０を捉える。ユーザ２２００は、操作対象機器１３１００の三次元ディスプレイ１３１１０上に提示されるカーソル１３１１３を、手２２１０を動かすことにより移動させて操作対象機器１３１００の操作を行う。
以上が、本実施形態における機器操作装置の装置構成の一例である。
また、本実施形態における処理フローも、実施形態１で上述した図４と同様である。
【００３２】
次に、図３の装置構成と、図４の処理フローとを用いた場合における本実施形態の処理の一例について説明する。
本実施形態において、操作対象機器１３１００は、ユーザ２２００が操作対象機器１３１００を操作中、ネットワーク経由で外部からのメッセージを受信する。ユーザ２２００は、ハンドジェスチャによって三次元ディスプレイ１３１１０上に表示される図１９に示されるような受信メッセージ表示ボタン１３１１１を選択する。そして、操作対象機器１３１００は、メッセージを表示する。なお、図１９は、三次元ディスプレイ１３１１０の表示画面の一例を示す図である。
動作データ取得部Ａ１１００は、図６に示されるようにカメラ２１２０を介してユーザ２２００を撮像する。撮像データ４１００の中にユーザ２２００が映っており、ユーザ２２００は、手２２１０によるジェスチャによって操作対象機器１３１００を操作している。
操作対象機器１３１００は、ユーザ２２００が操作対象機器１３１００を操作している際に外部からメッセージを受信すると、メッセージを受信したことをユーザ２２００に通知する。より具体的には、操作対象機器１３１００は、図１９に示される受信メッセージ表示ボタン１３１１１を表示する。操作対象機器１３１００は、ユーザ２２００が受信メッセージ表示ボタン１３１１１にカーソルを合わせると、受信したメッセージを表示する。
操作対象機器１３１００は、撮像データ４１００を撮像データ保持部Ａ１２０１にあたるバッファメモリに一時的に保持し、図４に示されるフローに従って処理する。なお、カメラ１３１２０は、ステレオカメラＴＯＦや、パターン投光等の測距部を有する。これにより、動作データ取得部Ａ１１００は、カメラ１３１２０を介してユーザ動作に関する３次元的な動作情報（例えばユーザの手の３次元的位置）が抽出可能な撮像データを取得することができる。
【００３３】
Ｓ３１００で、ユーザ動作認識部Ａ１２１０は、撮像データ保持部Ａ１２０１から撮像データを取得する。そして、ユーザ動作認識部Ａ１２１０は、背景差分を用いて画像中からユーザ２２００の領域を抽出し、人物の手の領域を学習させた認識器を用いてユーザ２２００の手２２１０の位置をユーザ２２００の領域から推定する。また、ユーザ動作認識部Ａ１２１０は、画像中の手２２１０のサイズから、奥行き方向への移動量を推定する。ユーザ動作認識部Ａ１２１０は、推定した手２２１０の領域に関する情報を、ユーザ動作保持部Ａ１２０２にあたるメモリに保持する。
提示部Ａ１３００は、ユーザ動作保持部Ａ１２０２から手２２１０の領域に関する情報を取得し、操作対象機器１３１００の三次元ディスプレイ１３１１０に、手２２１０の領域と対応した位置にカーソル１３１１３を描画する。なお、ここでいう対応とは、ユーザ２２００が手２２１０を上方向に１０ｃｍだけ動かせば、三次元ディスプレイ１３１１０上のカーソル１３１１３も上方向に１０ｃｍだけ移動する関係のことをいう。また、これは上方向に限ることではない。即ち、ユーザ２２００が手２２１０を右方向に１０ｃｍだけ動かせば、三次元ディスプレイ１３１１０上のカーソル１３１１３も右方向に１０ｃｍだけ移動する。他の方向に関しても同様である。
なお、ユーザ動作認識部Ａ１２１０が撮像データ４１００からユーザ２２００の領域を抽出する方法は、背景差分に限る必要はなく、撮像データ４１００中からユーザ２２００の領域を抽出することができれば他の方法でもよい。また、ユーザ動作認識部Ａ１２１０がユーザ２２００の領域から手２２１０の領域を抽出する方法についても、認識器を用いることは必須ではなく、ユーザ２２００の手２２１０の領域を抽出することができれば他の方法でもよい。
【００３４】
また、ユーザ動作認識部Ａ１２１０は、撮像データ４１００の中からユーザ２２００の領域を抽出した後にユーザ２２００の手２２１０の領域を推定するようにしたが、撮像データ４１００から直接ユーザ２２００の手２２１０の領域を推定するようにしてもよい。
また、ユーザ２２００の手２２１０の位置と対応した位置に表示するカーソル１３１１３についても、矢印の形状であることは必須ではなく、ユーザがポインティングしている位置がわかれば、他の表示方法であってもよい。
また、ユーザ２２００の手２２１０の移動距離と、カーソル１３１１３の移動距離との対応関係が１対１の関係であることは必須ではなく、三次元ディスプレイ１２１１０の大きさや、操作のしやすさによって対応関係を変えてもよい。
また、本実施形態の操作対象機器１３１００がユーザ２２００の手２２１０の奥行きを推定する方法についても、手２２１０のサイズから推定することは必須ではなく、三次元カメラや、測距センサ等を使う方法であってもよい。
【００３５】
本実施形態では、操作対象機器１３１００が外部からメッセージを受信すると、Ｓ３２００の処理を実行する。なお、操作対象機器１３１００がＳ３２００の処理を開始する際の開始条件は、外部からのメッセージ受信に限る必要はない。例えば、操作対象機器１３１００は、スイッチが押下された場合等、外部からの様々な入出力や、その他のユーザ動作、プログラム処理結果、時間等に係る予め定められた条件を開始条件としてもよい。これによって、多種多様な状況において、本実施形態を適用することができる。
Ｓ３２００で、動作指示生成部Ａ１２２０は、ユーザ動作保持部Ａ１２０２に保持されている動作情報に基づくカーソル１３１１３の動きから、今後カーソル１３１１３が動く方向を推定する。なお、本実施形態において、動作指示生成部Ａ１２２０は、カーソル１３１１３の動きの予測方法として、カーソル１３１１３の直前の移動方向から、各方向への移動確率を求める。より具体的には、動作指示生成部Ａ１２２０は、各方向への移動確率について、操作者に平行する面の移動確率を実施形態１と同様に図８を用いて求める。また、動作指示生成部Ａ１２２０は、奥行き方向への移動確率を、図２０を用いて求める。なお、図２０は、移動確率の一例を示す図である。
本実施形態では、今後のカーソル１３１１３の速度変化を図２０のように仮定する。図２０は、縦軸が確率、横軸が現在のカーソルの奥行き方向への移動速度変化の確率を示しており、縦軸と、横軸との交点が速度差ゼロ、確率ゼロを示す。このグラフでは、同じ進行速度でそのまま進む確率が高く、現在の速度との速度差が大きくなるにつれて、確率が低くなることがわかる。動作指示生成部Ａ１２２０は、図２０に示される奥行き方向への速度変化確率をもとに確率の低い移動速度で、カーソル１３１１３を移動させるような動作指示を示す動作指示情報を生成する。例えば、動作指示生成部Ａ１２２０は、予め定められた確率よりも低くなる移動速度を求めて、求めた移動速度で移動させるような動作指示情報を生成する。
【００３６】
なお、本実施形態において、動作指示生成部Ａ１２２０は、直前の移動方向と、速度とから予め定められた確率を求めるようにしたが、カーソル１３１１３の動きの予測方法はこれに限る必要はない。例えば、動作指示生成部Ａ１２２０は、過去のカーソル１３１１３の動きを学習した認識器を用いる方法等により確率を求めるようにしてもよい。また、動作指示生成部Ａ１２２０は、速度変化を確率として求めるのではなく、カーソル１３１１３の将来位置を確率として求めるようにしてもよい。
また、動作指示生成部Ａ１２２０は、将来のカーソル１３１１３の動きを予測し、動く可能性が低いと予測した方向で、かつ、他の選択可能項目と重ならない方向にカーソル１３１１３を移動させるような動作指示を示す動作指示情報を生成する。動作指示としては、例えば「カーソル１３１１３を移動させて表示された受信メッセージ表示ボタン１３１１１に重ねる」のような指示が挙げられる。また、その時点でユーザ２２００が将来行う確率が予め定められた閾値よりも低いものであれば、ジェスチャや、発話等の動作指示であってもよい。
Ｓ３３００で、提示部Ａ１３００は、Ｓ３２００で生成され動作指示保持部Ａ１２０３にあたるメモリに保持されている動作指示情報を取得し、操作対象機器１３１００の三次元ディスプレイ１３１１０上に表示する。例えば、提示部Ａ１３００は、三次元ディスプレイ１３１１０上に図１９のような画面表示を表示する。図１９は、カーソル１３１１３を三次元ディスプレイ１３１１０の左上に表示された受信メッセージ表示ボタン１３１１１に重ねることを指示している。なお、提示部Ａ１３００によるユーザ２２００への動作指示に関する提示方法は、これに限る必要はない。例えば、提示部Ａ１３００は、文字や、音声等で動作指示を提示するようにしてもよい。
【００３７】
Ｓ３４００で、指示動作完了判定部Ａ１２３０は、操作対象機器１３１００の三次元ディスプレイ１３１１０上に表示されるカーソル１３１１３が、生成された動作指示情報が示す動作指示の通りに動いたか否かを判定する。より具体的には、指示動作完了判定部Ａ１２３０は、カーソル１３１１３が動作指示である受信メッセージ表示ボタン１３１１１と重なったかどうかで判定する。動作指示生成部Ａ１２２０は、受信メッセージ表示ボタン１３１１１が表示されてから１０秒間経過してもカーソル１３１１３が受信メッセージ表示ボタン１３１１１と重ならない場合は、新たな動作指示情報を生成する。なお、動作指示生成部Ａ１２２０が新たな動作指示情報を生成するまでの時間は１０秒間に限る必要はなく、ユーザ２２００の状態や、ユースケース、機器操作の状態等によって調節するようにしてもよい。また、状況によっては、動作指示生成部Ａ１２２０が一度生成した動作指示情報を時間経過に応じて生成しなおさなくてもよい場合もある。また、本実施形態において、動作指示生成部Ａ１２２０は、「カーソル１３１１３を受信メッセージ表示ボタン１３１１１と重ねる」といった動作指示を示す動作指示情報を生成した。しかし、動作指示生成部Ａ１２２０は、ユーザ２２００がカーソル１３１１３を受信メッセージ表示ボタン１３１１１と重ねた後に、更なる動作指示情報を生成するようにしてもよい。このように、動作指示生成部Ａ１２２０がユーザへの多様な動作指示を可能にすることで、誤認識確を抑止することが可能になる。Ｓ３４００で、指示動作完了判定部Ａ１２３０は、指示動作が完了したと判定すると、処理をＳ３５００に進める。
Ｓ３５００で、指示動作完了時コマンド実行部Ａ１２４０は、指示動作完了時コマンド保持部Ａ１２０４から指示動作が完了した際に実行するコマンドを取得し、取得したコマンドを実行する。
【００３８】
上記のように、操作対象機器１３１００は、動的に生成した動作指示を用いて項目の選択をユーザに行わせることによって、ジェスチャによる機器操作における誤動作を少なくし、確実な項目選択を可能にし、更に、ユーザの使い勝手を向上させることができる。
以上、本実施形態では、三次元ディスプレイを備えた操作対象機器１３１００とのインタラクションにおいて、操作対象機器１３１００がユーザに対する動作指示を動的に生成して、提示する実施形態について述べた。本実施形態において、操作対象機器１３１００は、メッセージを受信したことをユーザ２２００に通知し、受信メッセージ表示ボタン１３１１１を表示するまでの動作といった動作指示を行うまでの動作とは不連続な動作の指示を示す動作指示情報を生成する。これにより、操作対象機器１３１００は、ユーザが意図せずに項目を選択することを抑止している。
また、ユーザが三次元ディスプレイ上に表示される項目を備える機器を操作する場合は、二次元ディスプレイ上に表示される項目を操作する場合と異なり、画面に表示されるカーソル位置に影響を与えないジェスチャを定義するのが困難である。それは、以下の理由による。二次元ディスプレイ上に表示される項目に対するカーソル等の動きに対し、それと直交する軸（三つ目の空間軸）上でのカーソル等の動きは定義できる。しかし、三次元ディスプレイ上に表示される項目に対するカーソル等の動きに直交する軸（四つ目の空間軸）は定義できないからである。それに対して、本実施形態の操作対象機器１３１００は、動的に生成する動作指示情報が示す動作指示をユーザに提示する。これにより、操作対象機器１３１００は、誤動作を少なくし、ユーザが確実に機器を操作することを可能にする。
【００３９】
＜その他の実施形態＞
また、本発明は、以下の処理を実行することによっても実現される。即ち、上述した実施形態の機能を実現するソフトウェア（プログラム）を、ネットワーク又は各種記憶媒体を介してシステム或いは装置に供給し、そのシステム或いは装置のコンピュータ（又はＣＰＵやＭＰＵ等）がプログラムを読み出して実行する処理である。
【００４０】
以上、上述した各実施形態によれば、操作対象機器をジェスチャによって効率的に操作することを可能とし、かつ、誤操作を少なくすることができる。
【００４１】
以上、本発明の好ましい形態について詳述したが、本実施形態は係る特定の実施形態に限定されるものではなく、特許請求の範囲に記載された本発明の要旨の範囲内において、種々の変形・変更が可能である。
【図１】
2014219879.tif 000003
【図２】
2014219879.tif 000004
【図３】
2014219879.tif 000005
【図４】
2014219879.tif 000006
【図５】
2014219879.tif 000007
【図６】
2014219879.tif 000008
【図７】
2014219879.tif 000009
【図８】
2014219879.tif 000010
【図９】
2014219879.tif 000011
【図１０】
2014219879.tif 000012
【図１１】
2014219879.tif 000013
【図１２】
2014219879.tif 000014
【図１３】
2014219879.tif 000015
【図１４】
2014219879.tif 000016
【図１５】
2014219879.tif 000017
【図１６】
2014219879.tif 000018
【図１７】
2014219879.tif 000019
【図１８】
2014219879.tif 000020
【図１９】
2014219879.tif 000021
【図２０】
2014219879.tif 000022