(57)【特許請求の範囲】
【請求項１】
所定の物体の位置情報を入力する位置情報入力部と、
前記位置情報入力部により得られる前記物体の位置情報の変化を解析し、前記物体が円運動をしているかを判定する円運動算出部と、
前記円運動算出部により前記物体が円運動をしていると判定された場合に、前記物体が所定の周回条件を満たしているかを判定する周回条件判定部と、
前記周回条件判定部により得られた判定結果に基づいて、表示部にメニュー項目の表示し、所定の項目を選択させるメニュー選択モードを実行するメニュー選択モード制御部と、
前記メニュー選択モード時に前記表示部に表示されたメニュー項目に対し、前記円運動算出部により得られた前記円運動の中心位置と、前記位置情報入力部により得られた前記物体の位置情報とに基づいて前記所定の項目を選択するメニュー選択部とを有し、
前記円運動算出部は、前記円運動による円運動平面を算出し、
前記メニュー選択部により前記所定の項目を選択した後、前記円運動平面と、前記位置情報入力部により得られる前記物体の位置情報との距離に基づいて、選択した前記所定の項目の確定又はキャンセルを行うメニュー選択決定部を有することを特徴とする情報処理装置。
【請求項２】
前記メニュー選択モード時に、前記位置情報入力部により得られる前記物体の位置情報の変化による移動方向が、前記円運動平面に対して所定方向である場合に、前記メニュー選択部による前記メニュー項目の変更を無効にするメニュー選択制御部を有することを特徴とする請求項１に記載の情報処理装置。
【請求項３】
前記メニュー選択部は、
前記円運動算出部により得られる前記円運動による前記物体の回転方向、前記円運動平面の傾き、及び前記円運動による円の半径のうち、少なくとも１つに基づいて表示するメニューの種類を変更することを特徴とする請求項１又は２に記載の情報処理装置。
【請求項４】
前記メニュー選択決定部は、
前記位置情報入力部により得られる前記物体の位置情報が所定時間の間、前記円運動平面から所定距離内にあり、かつ前記所定の項目の表示位置から所定範囲内にある場合に、前記所定の項目の確定することを特徴とする請求項１乃至３の何れか１項に記載の情報処理装置。
【請求項５】
所定の物体の位置情報を入力し、入力された前記物体の位置情報の変化を解析し、前記物体が円運動をしているかを判定し、前記物体が円運動をしていると判定された場合に、前記物体が所定の周回条件を満たしているかを判定し、判定結果に基づいて、表示部にメニュー項目の表示し、所定の項目を選択させるメニュー選択モードを実行し、前記メニュー選択モード時に前記表示部に表示されたメニュー項目に対し、前記円運動の中心位置と、前記物体の位置情報とに基づいて前記所定の項目を選択し、前記円運動による円運動平面を算出し、前記所定の項目を選択した後、前記円運動平面と、前記物体の位置情報との距離に基づいて、選択した前記所定の項目の確定又はキャンセルを行う、処理をコンピュータに実行させるためのメニュー選択プログラム。
【請求項６】
所定の物体の位置情報を入力し、入力された前記物体の位置情報の変化を解析し、前記物体が円運動をしているかを判定し、前記物体が円運動をしていると判定された場合に、前記物体が所定の周回条件を満たしているかを判定し、判定結果に基づいて、表示部にメニュー項目の表示し、所定の項目を選択させるメニュー選択モードを実行し、前記メニュー選択モード時に前記表示部に表示されたメニュー項目に対し、前記円運動の中心位置と、前記物体の位置情報とに基づいて前記所定の項目を選択し、前記円運動による円運動平面を算出し、前記所定の項目を選択した後、前記円運動平面と、前記物体の位置情報との距離に基づいて、選択した前記所定の項目の確定又はキャンセルを行う、処理を有することを特徴とするメニュー選択方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、簡単な操作によるメニュー選択を実現するための情報処理装置、メニュー選択プログラム、及びメニュー選択方法に関する。
【背景技術】
【０００２】
従来では、アプリケーション等において、快適なメニュー開閉や選択操作をユーザに行わせることが重要な課題となっている。そこで、従来では、空間で物体の動作を読み取るトラッキングデバイス等を用いて、手の動き等を捉え、その手の位置情報をユーザインターフェースに利用する手法が知られている。例えば、従来では、手の２次元的な動きを捉えて画面上に表示された選択項目をポインティングし、何らかの決定手法を用いて選択項目の決定を行う。
【０００３】
ここで、具体的な決定手法としては、例えば、円状に配置されたパイメニューに対して手首の捻りで選択内容を決定する手法がある。また、従来では、手を回転又は往復させる等の循環的なジェスチャの繰り返しを検出し、その検出回数・速度に応じて選択カーソルを移動させて、循環的でないジェスチャによって選択項目を決定する手法がある。
【０００４】
また、従来では、最初に、ユーザの手に持たれたインタラクティブデバイスの位置を検出し、ジェスチャによる特定アクション等で、球状メニューの中心にデバイス位置を対応付ける。次に、従来では、メニュー項目を内側から突き通す動作でメニューを選択し、再び内部に戻り別の項目に移動して別メニュー選択を行う手法がある。
【０００５】
また、従来では、手を所定の形状にすると円形メニューの中心に手の位置に対応したカーソルが現れ、選択肢の外側にカーソルを移動させた時に選択して確定する手法がある。また、従来では、ユーザの手の届く範囲でユーザを囲むような円状メニューをユーザ映像と共に表示する手法がある。また、従来では、手の円運動の中心位置を推定し回転角を求め、それに基づきメニュー項目を選択する手法がある（例えば、特許文献１〜６参照）。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】国際公開第２００８／０２９４６７号パンフレット
【特許文献２】特開２０１０−０７９８４８号公報
【特許文献３】特表２００７−５０６１６４号公報
【特許文献４】特開平９−１２８１４１号公報
【特許文献５】特表２０１０−５３４８９５号公報
【特許文献６】特開２０１１−１４５８４２号公報
【発明の概要】
【発明が解決しようとする課題】
【０００７】
しかしながら、例えば、上述した特許文献１や特許文献４に示すような手法では、手首を捻ったり、所定の形状にする等の不自然な手の動きをする必要があり、手の姿勢を常に気にかけていなければならない。また、特許文献２や特許文献６に示すような手法では、手の循環する動きをカーソル移動に割り当てるため、ポインティングが相対的で手間がかかる上に疲れてしまう。また、特許文献３や特許文献４に示すような手法では、円形又は球形メニューの中心に対応付けられた実空間上の位置から項目に向かって突き抜けるように手を動かす必要があり、メニュー項目が多くなると選択しづらい。更に、特許文献５に示すような手法では、画面を見ながら対象物に手を合わせる操作が必要であり、体の動きが大きくなると共に直感的な選択がしづらい。つまり、上述したような従来技術では、ユーザが簡単な操作によるメニュー選択を実現することができなかった。
【０００８】
開示の技術は、かかる問題を鑑み、簡単な操作によるメニュー選択を実現することを目的とする。
【課題を解決するための手段】
【０００９】
開示の一態様における情報処理装置は、所定の物体の位置情報を入力する位置情報入力部と、前記位置情報入力部により得られる前記物体の位置情報の変化を解析し、前記物体が円運動をしているかを判定する円運動算出部と、前記円運動算出部により前記物体が円運動をしていると判定された場合に、前記物体が所定の周回条件を満たしているかを判定する周回条件判定部と、前記周回条件判定部により得られた判定結果に基づいて、表示部にメニュー項目の表示し、所定の項目を選択させるメニュー選択モードを実行するメニュー選択モード制御部と、前記メニュー選択モード時に前記表示部に表示されたメニュー項目に対し、前記円運動算出部により得られた前記円運動の中心位置と、前記位置情報入力部により得られた前記物体の位置情報とに基づいて前記所定の項目を選択するメニュー選択部とを有し、前記円運動算出部は、前記円運動による円運動平面を算出し、前記メニュー選択部により前記所定の項目を選択した後、前記円運動平面と、前記位置情報入力部により得られる前記物体の位置情報との距離に基づいて、選択した前記所定の項目の確定又はキャンセルを行うメニュー選択決定部を有する。
【発明の効果】
【００１０】
開示の技術によれば、簡単な操作によるメニュー選択を実現することができる。
【図面の簡単な説明】
【００１１】
【図１】本実施形態における情報処理装置の機能構成の一例を示す図である。
【図２】本実施形態における情報処理装置のハードウェア構成の一例を示す図である。
【図３】メニューを開く操作の具体例を示す図である。
【図４】メニュー表示の具体例を示す図である。
【図５】メニュー情報の一例を示す図である。
【図６】メニュー選択操作の具体例を示す図である。
【図７】メニュー項目確定操作の具体例を示す図である。
【図８】本実施形態におけるメニュー選択処理の一例を示すフローチャート（その１）である。
【図９】本実施形態におけるメニュー選択処理の一例を示すフローチャート（その２）である。
【図１０】本実施形態におけるメニュー選択処理の一例を示すフローチャート（その３）である。
【発明を実施するための形態】
【００１２】
以下、添付図面を参照しながら実施例について詳細に説明する。
【００１３】
＜情報処理装置：機能構成例＞
図１は、本実施形態における情報処理装置の機能構成の一例を示す図である。図１に示す情報処理装置１０は、トラッキング入力部（位置情報入力部）１１と、トラッキング位置記憶部１２と、円運動算出部１３と、周回条件判定部１４と、メニュー選択モード制御部１５と、円運動記憶部１６と、メニュー選択決定部１７と、メニュー選択制御部１８と、メニュー選択部１９と、メニュー情報保持部２０とを有する。
【００１４】
トラッキング入力部１１は、トラッキングデバイス２１によって得られるユーザの手等の所定の物体の三次元空間上の位置情報を入力する。ここで、トラッキングデバイス２１は、例えばＣｈａｒｇｅ  Ｃｏｕｐｌｅｄ  Ｄｅｖｉｃｅ（ＣＣＤ）やＣｏｍｐｌｅｍｅｎｔａｒｙ  Ｍｅｔａｌ  Ｏｘｉｄｅ  Ｓｅｍｉｃｏｎｄｕｃｔｏｒ（ＣＭＯＳ）等の光学センサによる受像装置を用いて映像を取得する。また、トラッキングデバイス２１は、例えば取得した映像から画像解析を行い、所定の物体と推測される部分を抽出し、抽出された部分の位置及びサイズから、奥行きを含む空間上の位置を取得する。
【００１５】
なお、所定の物体とは、ユーザの手に限定されるものではなく、例えば手以外のユーザの体の一部や、ユーザが体に装着した物体、ユーザが手に持った物体等であってもよい。
【００１６】
また、トラッキングデバイス２１としては、例えば少し離れて設置した２つの受像装置を用いて、各受像装置から得られた映像をマッチングし、映像の僅かなずれから奥行き推定を行ってユーザの手の位置情報を取得してもよい。また、トラッキングデバイス２１は、例えば赤外線Ｌｉｇｈｔ  Ｅｍｉｔｔｉｎｇ  Ｄｉｏｄｅ（ＬＥＤ）や赤外線レーザ等をユーザの手に照射し、その反射光をセンサで捉え、Ｔｉｍｅ  Ｏｆ  Ｆｌｉｇｈｔ（ＴＯＦ）と呼ばれる方式で位置情報を取得してもよい。また、トラッキングデバイス２１は、例えば投影パターンの歪み解析により、ユーザの手の奥行きを含む位置情報を取得してもよい。
【００１７】
トラッキングデバイス２１は、上述したような手法等を用いることでユーザの手等の所定の物体の有無や追跡等行うことができる。具体的には、トラッキングするユーザの手の部分の抽出手法としては、例えば手に特定色の物体を取り付け、その特定色を元に抽出する手法がある。また、手の追跡手法としては、例えば手の特定の形等の所定の形状パターンを予め設定しておき、その手の形状パターンと照合することで、手の部分を抽出し、その後、オプティカルフロー等の追跡手法で手の動きを追跡する手法がある。なお、オプティカルフローとは、視覚表現（例えば、時間的に連続するデジタル画像）の中で物体の動きをベクトルで表し、物体の動きを追跡する手法である。また、他の手の抽出手法としては、例えば、奥行き情報が先に得られる場合に、手の肌色及び立体形状から手の部分を判定する手法がある。
【００１８】
なお、上述した手の抽出手法や追跡手法等については、これに限定されるものではない。また、本実施形態では、追跡部分としてユーザの手を用いるが、操作上の問題が生じない限りは手に持っている物体や体に装着した物体、体の他の部位を追跡してもよい。
【００１９】
また、トラッキング入力部１１は、トラッキングデバイス２１から、例えば１／３０秒程度の短い時間間隔で位置情報を取得する。なお、時間間隔については、これに限定されるものではなく、例えばユーザの手の動きを捉えることができる間隔で位置情報が逐次取得されればよい。
【００２０】
トラッキング位置記憶部１２は、トラッキング入力部１１で得られたユーザの手の位置情報を記憶する。この記憶は、最新の一定時間分だけ残しておけばよく、古いものは捨ててもよい。つまり、一定時間とは、例えば１０秒間や１分間等であり、ユーザの手の円運動の解析に必要十分な範囲であればよい。なお、最新の一定時間分だけを記憶し続ける場合には、トラッキング位置記憶部１２として、例えばリングバッファ等を用いることができるが、これに限定されるものではない。
【００２１】
円運動算出部１３は、トラッキング位置記憶部１２から得られたユーザの手の位置情報の変化を解析し、ユーザの手の移動が円運動であるかどうかの判定を行う。具体的には、円運動算出部１３は、ユーザの手の位置情報の変化が、ある中心に対してどの程度回転（円運動）しているかによって円運動であるか否かを判定する。
【００２２】
なお、円運動算出部１３は、ユーザの手の位置情報の変化が、例えば所定の円軌道で、ある基準位置から所定の角度分移動したことを認識した場合には、その軌道に対してユーザの手を１周回してなくても円軌道を描いていると認識することができる。
【００２３】
また、円運動算出部１３は、ユーザの手が円運動をしていると判定した場合に、そのユーザの手の円運動に関する各種パラメータを取得する。具体的には、円運動算出部１３は、パラメータとして、例えばその円運動の中心位置を取得する。また、円運動算出部１３は、パラメータとして、例えば円運動平面、周回数、半径等のうち、少なくとも１つを取得する。更に、円運動算出部１３は、パラメータとして、円運動の回転方向や円運動平面のトラッキングデバイス２１に対する傾き等を取得する。
【００２４】
なお、円運動算出部１３における物体運動の解析手法については、例えば、まずトラッキング位置記憶部１２に記憶された位置情報を最新のものから逆に辿っていき、最小二乗法等で一定の直線性が認められる部分をまとめ、その部分を代表する直線に置き換える。その後、円運動算出部１３は、直線が一定数以上揃った時点で、それらの交点の外接矩形の中心点を求める。更に、円運動算出部１３は、時系列順で隣り合う交点から、それぞれ中心点に伸ばしたベクトルがなす角を、外積等を用いて時系列の逆方向に順に求め、その角度が逆向きになることなく、累積した角度が１周分等の所定の角度を満たすかどうかを確認する。
【００２５】
次に、円運動算出部１３は、所定の角度分を満たした場合に、その範囲において中心点と各交点との平均距離をＲとした場合、中心点と交点の距離が「ａ×Ｒ」から「ｂ×Ｒ」の間にあるかどうかを確認する。ここで、上述したａ，ｂは、「０＜ａ＜１」、「１＜ｂ」となる定数である。また、円運動算出部１３は、各距離値が範囲内であった場合には、更に最小二乗法等で各交点から平面を求めることができる。
【００２６】
また、円運動算出部１３は、交点と平面とのずれが範囲内であれば所定の物体が平面上で所定の角度分の円運動をしているとみなす。同様に、円運動算出部１３は、過去の位置情報を遡って解析することで円運動の周回数を得ることができる。
【００２７】
更に、円運動算出部１３は、例えば円運動しているとみなされた範囲で中心点と各交点の距離を求め、その平均を取ることで円の半径を算出することができる。また、円運動算出部１３は、ユーザの手の位置座標の時系列変化から円運動の回転方向や円運動平面のトラッキングデバイス２１に対する傾きを算出することができる。
【００２８】
なお、周回毎に中心点と平面とは異なってくる可能性があるが、そのような場合には、例えば時系列で最新の周回のものを用いたり、平均を取る等の方法を用いことで誤差を解消することができる。更に、本実施形態では、周回間で中心と平面が大きく異なる場合も考えられるが、このような場合には、予め設定された条件を満たす最大の周回数を選択する等により、イレギュラーな手の動作を除外することができる。
【００２９】
周回条件判定部１４は、メニュー選択モードに移行するための判定条件として、予め設定された周回条件による判定を行う。例えば、周回条件判定部１４は、円運動算出部１３から得られた情報から一定時間内に一定周回以上の回転があることを判定する。ここで、周回条件判定部１４は、メニュー選択モードに入る以前の状態がいわゆるフリーカーソル状態である場合に、周回条件判定時の一定時間及び一定周回数がフリーカーソル時の自然な操作では起きにくいものにすべきである。ここで、フリーカーソル状態とは、例えば、表示部２２の画面内を自由にカーソル移動でき、画面上の対象を選択可能な状態等を意味するが、これに限定されるものではない。したがって、周回条件判定部１４は、周回条件としては、例えば２秒以内に２回以上回転させるといったように、意図的に周回させた場合でなければほぼ起き得ない条件とするのが好ましい。なお、上述した周回条件は、複数の条件を設定しておくこともできる。例えば、周回条件判定部１４は、周回条件以外の条件として、例えば円運動の半径が所定の大きさ以上であるとか、円運動の方向が所定の方向である等の条件を付加してもよい。
【００３０】
メニュー選択モード制御部１５は、周回条件判定部１４で所定の周回条件が満たされた場合に、メニュー選択モードに切り替える。ここで、メニュー選択モードに切り替えるとは、例えばモードを切り替えたことを示す値又はフラグ等をセットすることを意味するが、これに限定されるものではない。また、メニュー選択モード制御部１５は、円運動算出部１３から上述した各パラメータを取得する。具体的には、メニュー選択モード制御部１５は、パラメータとして、円運動算出部１３から円運動の中心位置を取得する。また、円運動算出部１３は、パラメータとして、円運動平面や周回数、半径、円運動の回転方向、円運動平面の傾き等の情報を取得する。
【００３１】
メニュー選択モード制御部１５は、モード切り替えたことを示す情報と、円運動算出部１３から得られるパラメータを、円運動記憶部１６に出力する。
【００３２】
円運動記憶部１６は、メニュー選択モード制御部１５でメニュー選択モードに切り替わったときの円運動の中心位置、円運動平面、円の半径等を取得し保持する。ただし、円の半径や、円運動の回転方向、円運動平面の傾き等の情報については、メニュー選択部１９での判定に用いない場合、保持しなくてもよい。
【００３３】
メニュー選択決定部１７は、メニュー選択モード時、トラッキング入力部１１から得た手の位置が円運動記憶部１６に保持されている円運動平面から一定距離以上離れているとき選択された項目の確定又はキャンセル等の動作を決定し、決定した動作を実行する。なお、確定とは、例えば対象のメニュー項目に予め設定された所定の実行イベントを実行する等の処理があるがこれに限定されるものではない。また、キャンセルとは、例えばメニュー選択モードを解除（フラグ等をクリア）したり、選択確定前の状態に戻したり、メニュー項目の表示を画面上から消す等の処理があるがこれに限定されるものではない。
【００３４】
また、上述した一定距離は、メニュー選択のための平面上の手の動きのブレよりも十分大きいものであることが好ましい。例えば、人が平面上を動かすつもりで手を動かしていても実際には、例えば最大で約５ｃｍ程度、平面からずれが起こる場合には、このメニュー選択決定部１７における一定距離値は、約５ｃｍよりも十分大きな値、例えば約１０ｃｍとすることが好ましい。また、メニュー選択決定部１７は、円運動平面に対する垂直方向が２方向あるため、そのどちらかの方向への手の移動を選択項目の確定とし、もう一方をキャンセルとすることができる。
【００３５】
メニュー選択制御部１８は、メニュー選択モード時に、トラッキング位置記憶部１２から得られたユーザの手の位置の変化による移動方向が、円運動記憶部１６に保持されている円運動平面に対して所定方向である場合に、後述するメニュー選択部１９による選択項目の変更を無効にする。具体的には、例えば、メニュー選択制御部１８は、ユーザの手の移動方向が円運動平面に対して平行であるか垂直であるかを求め、求めた移動方向が垂直である場合に、後述するメニュー選択部１９でのメニュー項目の変更を無効にする。これにより、本実施形態では、メニュー選択決定部１７によるメニュー項目の確定及びキャンセルの判定とメニュー項目の変更するための判定とを分けて処理することができる。
【００３６】
ここで、本実施形態では、メニュー選択決定部１７において、単純に平面からの距離の閾値で判定すると、手のブレによっては確定操作の瞬間に別の項目が選択されてしまう可能性がある。したがって、上述したメニュー選択制御部１８では、そのようなことがないように円運動記憶部１６で保持している円運動平面に対する手の進む方向（移動方向）に応じ、距離の閾値以内であっても選択項目が変更されないようにする。また、円運動平面に対する手の進む方向は、例えば量子化することで比較的平行であるか垂直であるかに二分させることができる。
【００３７】
メニュー選択部１９は、メニュー選択モード時に、トラッキング入力部１１から得られた手の位置と円運動記憶部の保持する円の中心位置との関係に基づき、メニューの選択項目を決定する。具体的には、例えば、メニュー選択部１９は、円の中心位置を基準とし、その周囲に円環状にメニュー項目が配置されている場合に、まず、メニュー項目の数に基づき量子化する。その後、メニュー選択部１９は、円の中心位置を基準として、現在の手の位置がなす方向（角度）を、上述した量子化した値に対応させることで、対応するメニュー項目を選択することができる。
【００３８】
また、メニュー選択部１９は、例えば円の中心位置と手の位置との距離の一定の範囲をメニュー項目の数に基づき量子化し、その値に応じた選択を行うこともできる。更に、メニュー選択部１９は、上述した二つを組み合わせて、角度と距離の両方でメニュー選択することもできる。この場合、メニュー選択部１９は、例えばメニュー項目数をｎ分割すると考え、距離の一定範囲をｎ個に量子化して、角度をメニュー項目数／ｎ個で量子化する。このようにすることで、本実施形態では、ある範囲の距離と角度にメニュー項目の一つが割り当てられる。また、上述した手法を用いることで、本実施形態では、メニュー項目数が多いときでも角度が細分化されすぎないという効果がある。
【００３９】
また、メニュー選択部１９は、角度で選択したある一つのメニュー項目について、距離値で選択の種類を変えるといった効果を出すこともできる。選択の種類とは、例えば、色の選択であれば濃い色、薄い色等があり、ファイルの選択であればコピー、削除、移動等があり、人名等であればメールする、電話する、予定を伺う等の選択が確定した後の動作の指示を表す。
【００４０】
この際の距離値の判定は、円運動記憶部１６に保持された円の半径に対する比較で、ほぼ等しい、十分小さい、十分大きい、といったように切り分けすることでユーザによって任意に基準を設定することができる。例えば、メニュー選択部１９は、例えば手と中心点との距離値が保持された円の半径より約５ｃｍ以上小さい、又は、円の半径の１／２以下のとき「十分小さい」とみなし、保持された円の半径より５ｃｍ以上大きい、又は、半径の１．５倍以上のとき「十分大きい」とみなし、それ以外のとき「ほぼ等しい」とみなすことができる。
【００４１】
更に、メニュー選択部１９は、メニュー変更時の処理として、メニュー表示が行われる前に円運動の回転方向や円運動平面の傾き、又はその両者を円運動記憶部１６から取得し、その取得した情報に基づいて表示するメニューの種類を変更する。例えば、メニュー選択部１９は、同じ円運動平面で手を回転させた場合も時計回りと反時計回りで異なるメニューを表示するようにしてもよい。また、メニュー選択部１９は、例えばトラッキングデバイス２１に対して垂直な面に手を円運動させた場合に、その時点で表示部２２に表示されている実行中のアプリケーション（ソフトウェア）に対する操作メニューのメニュー項目に変更してもよい。また、メニュー選択部１９は、例えばトラッキングデバイス２１に対して前後奥行き方向に円運動させた場合には、よく使用するアプリケーションの起動メニューにメニュー項目を変更してもよい。
【００４２】
メニュー情報保持部２０は、表示部２２に表示するメニュー項目や各項目の表示位置、各項目に対する実行イベント等のメニュー情報を１又は複数保持している。メニュー情報保持部２０は、メニュー選択部１９により、メニューの表示や変更等の指示があった場合に、対象のメニュー項目を表示部２２に出力する。また、メニュー情報保持部２０は、メニュー選択決定部１７により選択項目が確定された場合に、その項目内容に対応する実行イベントを抽出し、抽出した実行イベントを実行させる。
【００４３】
表示部２２は、メニュー選択モード時、表示装置上にメニューと選択項目を表示する。ここでの表示形式は、特に限定されるものではなく、例えばメニュー項目を円環状に並べたもの、縦に並べたもの、横に並べたもの、タイル状に並べたもの等、何れの形式であってもよい。また、表示部２２は、例えばユーザの手をどの位置に動かすと、どの項目が選択されるのかが明示されていることが好ましい。例えば、表示部２２は、手の回転移動軌跡を模した画面上の軌跡上にメニュー項目を配置する方法を用いることができるが、これに限定されるものではない。なお、表示部２２は、メニューや選択項目の表示に限定されるものではなく、例えば実行中のアプリケーション等の内容も表示する。表示部２２は、例えば液晶ディスプレイや液晶モニタ等である。
【００４４】
ここで、図１の例において、トラッキングデバイス２１及び表示部２２は、情報処理装置１０の外部に設けられているが、これに限定されるものではなく、例えば情報処理装置１０と一体に設けられていてもよい。
【００４５】
＜情報処理装置：ハードウェア構成例＞
図２は、本実施形態における情報処理装置のハードウェア構成の一例を示す図である。なお、図２は、本実施形態におけるメニュー選択処理を実現するコンピュータのハードウェア構成例を示している。
【００４６】
図２に示す情報処理装置１０を実現するコンピュータは、ＣｅｎｔｒａｌＰｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ（ＣＰＵ）３１と、メモリ３２と、記憶装置３３と、通信装置３４と、ドライブ装置３５と、入力装置３６と、出力装置３７とを有する。なお、図２には、記録媒体３９も示されている。
【００４７】
ＣＰＵ３１は、本実施形態におおけるメニュー選択処理を実行するために情報処理装置１０の全体を制御する。ＣＰＵ３１は、Ｏｐｅｒａｔｉｎｇ  Ｓｙｓｔｅｍ（ＯＳ）等の制御プログラム、及びメモリ３２に格納されている実行プログラムに基づいて、各種演算や各ハードウェア構成部とのデータの入出力等、コンピュータ全体の処理を制御して、本実施形態における各処理を実行する。なお、プログラムの実行中に必要な各種情報等は、記憶装置３３から取得することができ、また実行結果等を格納することもできる。
【００４８】
具体的には、ＣＰＵ３１は、入力装置３６からのユーザの手の動き（位置情報、追跡情報）等を読み取り、本実施形態におけるメニュー選択手法を用いて出力装置３７の画面にメニュー表示を行ったり、メニュー選択等を行う。
【００４９】
また、ＣＰＵ３１は、ドライブ装置３５を介して記録媒体３９から本実施形態に必要な各種情報やプログラムを読み出したり、本実施形態における処理を実行した結果や経過等の情報を記録媒体３９に書き込むための制御等を行う。
【００５０】
メモリ３２は、例えば主記憶装置である。メモリ３２は、本実施形態における実行プログラムや入力データ等が格納され、これらの情報を用いてメニュー選択処理等が実行される。メモリ３２としては、例えばＲｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ（ＲＯＭ）やＲａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ（ＲＡＭ）等を用いることができる。
【００５１】
記憶装置３３は、実行プログラムやコンピュータに設けられた制御プログラム等を蓄積し、必要に応じて入出力を行う補助記憶装置である。記憶装置３３としては、例えばハードディスク等のストレージ手段等を用いることができる。また、記憶装置３３は、予め設定された本実施形態における各種条件や入力データ、出力データ等を記憶することができる。
【００５２】
通信装置３４は、例えばインターネットやＬｏｃａｌ  Ａｒｅａ  Ｎｅｔｗｏｒｋ（ＬＡＮ）等に代表される通信ネットワークを用いて、外部装置と接続してデータの送受信等を行う。なお、通信装置３４は、外部装置と接続し、例えば本実施形態におけるメニュー選択プログラムや他の入力データ等を取得したり、メニュー選択処理の実行結果や経過等の情報を外部装置に送信することができる。また、通信装置３４は、外部装置としてのトラッキング入力部１１と接続されていてもよい。これにより、本実施形態では、通信装置３４を介してトラッキング入力部１１からの情報を取得することができる。
【００５３】
ドライブ装置３５は、例えば本実施形態におけるメニュー選択処理等の実行プログラムが記録された記録媒体３９をセットすることができる。また、ドライブ装置３５は、ＣＰＵ３１の制御により、記録媒体３９に含まれる実行プログラムを読み出し、記憶装置３３に出力してインストールさせる。また、ドライブ装置３５は、ＣＰＵ３１の制御により記録媒体３９に各種データを書き込むことができる。
【００５４】
入力装置３６は、ユーザからの指示情報を入力する。入力装置３６としては、例えばキーボード・マウス等を用いることができる。なお、入力装置３６としては、例えば、トラッキングデバイス２１を実現するカメラ等の受像装置等も含む。
【００５５】
出力装置３７は、本実施形態におけるメニュー選択処理を画面に表示する。出力装置３７としては、例えばディスプレイやモニタ等の表示装置を用いることができるが、これに限定されるものではなく、音声等を出力するスピーカ等も設けていてもよい。
【００５６】
バス３８は、ＣＰＵ３１、メモリ３２、記憶装置３３、通信装置３４、ドライブ装置３５、入力装置３６、及び出力装置３７を、データの入出力が可能な状態となるように接続する。
【００５７】
記録媒体３９は、ドライブ装置３５に接続させてデータを読み出したり、書き込んだりすることができる媒体である。記録媒体３９としては、例えばＣｏｍｐａｃｔ  Ｄｉｓｃ  Ｒｅｃｏｒｄａｂｌｅ（ＣＤ−Ｒ）やＤｉｇｉｔａｌ  Ｖｅｒｓａｔｉｌｅ  Ｄｉｓｃ  Ｒｅｃｏｒｄａｂｌｅ（ＤＶＤ−Ｒ）等の可搬型記録媒体を用いることができる。なお、記録媒体３９は、上述した種類に限定されるものではなく、例えばＵｎｉｖｅｒｓａｌ  Ｓｅｒｉａｌ  Ｂｕｓ（ＵＳＢ）メモリでもよい。また、記録媒体３９は、フラッシュメモリ等の半導体メモリや、ハードディスクドライブ等を用いることもできる。
【００５８】
つまり、情報処理装置１０が備える各機能部は、図２に示すようなコンピュータが備えるＣＰＵ３１、メモリ３２等のハードウェア及びソフトウェアプログラムによって実現することが可能である。また、コンピュータが実行可能なプログラムは、記憶装置３３に記憶され、その実行時にメモリ３２に読み出され、ＣＰＵ３１により実行される。
【００５９】
コンピュータは、可搬型記録媒体から直接プログラムを読み取り、そのプログラムに従った処理を実行することもできる。また、コンピュータは、例えばサーバコンピュータ等からプログラムが転送される毎に、逐次、通信装置３４でそのプログラムを受け取り、受け取ったプログラムに従った処理を実行することもできる。
【００６０】
本実施形態では、上述したようなハードウェア構成により、本実施形態における画像処理を実行することができる。また、プログラムをインストールすることにより、汎用のパーソナルコンピュータ等でメニュー選択処理を容易に実現することができる。
【００６１】
＜メニュー選択動作の具体例＞
次に、本実施形態をユーザ側から見た場合の一例について図を用いて説明する。図３は、メニューを開く操作の具体例を示す図である。なお、図３では、フリーカーソル状態からユーザが手を円状に回転してメニュー選択モードに移行しようとしている様子を示している。
【００６２】
図３（Ａ）では、上述した表示部２２の表示画面４０を示している。フリーカーソル状態では、カーソル４１が表示画面４０上に自由な位置に表示されている。このような状態において、例えば図３（Ｂ）に示すように、円運動平面４５に対して、ユーザの手４２を所定の方向に回転させた場合には、トラッキング入力部１１により得られるユーザの手４２の移動軌跡４３を用いて、円運動の中心位置４４及び円運動平面４５等のパラメータが保持される。なお、これらの情報は、円運動算出部１３により算出される。また、メニュー選択モード時には、円運動の中心位置４４や円運動平面４５等のパラメータが円運動記憶部１６により記憶され、保持される。
【００６３】
なお、円運動平面４５は、表示画面４０と平行でなくてもよい。つまり、ユーザの手４２が円軌道を描く場合には、例えば地面と水平に円軌道を描いていてもよい。トラッキングデバイス２１は、上述の動作であっても、ユーザの手４２の円運動を認識することができ、円運動平面４５を取得することができる。
【００６４】
図４は、メニュー表示の具体例を示す図である。本実施形態では、図３（Ｂ）に示すようなユーザの手４２の動作に対応させて、予め設定された周回条件判定部１４による判定条件を満たす場合に、図４（Ａ）に示すようにメニュー項目５０が表示部２２の表示画面４０に表示される。なお、表示されるメニュー項目５０は、メニュー情報保持部２０に予め保持されているメニュー情報に基づき、所定のメニュー項目が、所定の表示位置に表示される。
【００６５】
例えば図４（Ａ）に示す例では、複数のメニュー項目５０が同一円環状に配置されて表示されている。なお、表示内容は、これに限定されるものではなく、例えば縦一列又は横一列、或いは縦横に所定の間隔で配置されていてもよい。
【００６６】
また、項目数や種類については、図４（Ａ）の例に限定されるものではなく、例えばメニュー選択部１９による変更条件等に応じて、メニュー情報保持部２０に予め保持されているメニュー情報に基づき、メニュー項目の内容や配置等を変更することができる。
【００６７】
更に、各項目の表示される項目の形状は、図４（Ａ）に示すように矩形に限定されるものではなく、例えば円形や楕円形、星型等の形状であってもよく、大きさも項目毎に変更させてもよい。例えば、項目毎に大きさを変更する場合には、項目の優先度や重要度が高いほど、項目の大きさや形状を異ならせて表示させるようにしてもよい。
【００６８】
本実施形態では、図４（Ａ）に示すようにメニュー選択モードに移行した場合に、メニューが表示された直後の状態から、保持された円運動の中心から現在の手４２の位置に向かう方向に対応したメニュー項目が選択状態となる。
【００６９】
例えば、ユーザは、手４２を円運動の中心位置４４を基準として所定の方向に位置付けている場合に、その位置に対応するメニュー項目５０（図４（Ａ）の例では、「項目５」）が選択される。このとき、ユーザの手の位置は、予め設定された所定位置からの角度（図４（ｂ）の例では、θ１）を基準として対応するメニュー項目５０を選択することもできる。
【００７０】
なお、選択されたメニュー項目５０は、強調表示させることができる。強調表示とは、例えば他の項目と色を変えて表示したり、他の項目よりも大きく表示したり、項目を点滅させる等のうち、少なくとも１つを意味するが、これに限定されるものではない。
【００７１】
なお、本実施形態では、例えば、図４（Ａ）に示すような表示画面４０に表示された項目の位置情報や項目の内容については、メニュー情報保持部２０により保持される。
【００７２】
ここで、図５は、メニュー情報の一例を示す図である。なお、図５の例では、メニュー情報としてメニューテーブルの一例を示している。図５に示すメニューテーブルは、項目として、表示項目と、位置情報と、実行コマンド等を有するが、これに限定されるものではない。
【００７３】
図５の例では、各表示項目（例えば、項目１〜項目８）に対して、それぞれの表示画面４０に対する表示位置情報（ｘ，ｙ）が保持されている。本実施形態では、この表示位置情報と、ユーザの手４２の現在の位置情報とにより、その位置に対応する項目の選択が行われる。なお、各項目の位置情報は、量子化されており、多少の位置ずれがあったとしても何れかの項目を容易に選択できるようになっている。
【００７４】
また、図５に示すメニューテーブルは、各項目に対する所定のイベント（例えば、コマンドＡ〜Ｈ）が対応付けられており、項目が確定すると、その項目に対応した実行イベントが実行される。
【００７５】
なお、実行コマンドとしては、例えば「他の画面を開く」、「アプリケーションを実行する」、「アプリケーションを終了する」、「データを保存する」等がある。また、他の実行コマンドとしては、例えばメニュー項目が色の選択であれば濃い色や薄い色の選択を実行したり、メニュー項目がファイルの選択であればコピー、削除、移動等を実行することができる。また、他の実行コマンドとしてメニュー項目が人名等であればメールする、電話する、予定を伺う等の動作等を行うことができるが、これに限定されるものではない。本実施形態では、ユーザが手４２の移動により選択したい項目に位置付けて所定の動作を行うことで、メニューの選択が行われる。
【００７６】
なお、図５に示すメニュー項目は、複数のメニュー毎に各テーブルが設定されていてもよい。これにより、本実施形態では、メニュー選択部１９により得られるメニュー変更指示等に基づいて、メニュー項目等の種類を変更して表示部２２に表示させることができる。
【００７７】
図６は、メニュー選択操作の具体例を示す図である。図６の例では、メニュー選択モード時に、ユーザがメニュー選択を行う様子を示している。例えば、ユーザは、表示部２２の表示画面４０に表示されているメニュー項目５０から選択したい項目を選び、円運動の中心位置４４から選択したい項目に対応する空間上の位置へと真っ直ぐに手４２を移動させる。
【００７８】
ここで、円運動の中心位置４４は、メニューを開く際の手４２の円運動の中心位置であり、メニューを開く動作は、ユーザ自らが行っている。そのため、ユーザは、その円運動の中心位置４４から選択したい項目の相対的な位置関係を感覚的に捉えることができる。  具体的には、図６（Ｂ）に示すように、ユーザが手４２を円運動の中心位置４４から選択したい項目の方向（図６（Ｂ）の例では矢印Ａ方向）に移動させることで、メニューテーブルの位置情報と照合し、対応する項目（図６の例では、「項目８」）を強調表示する。
【００７９】
なお、本実施形態では、位置情報だけでなく、所定位置からの角度方向（図６（Ｂ）の例ではθ２）に対して移動させることで、上述したメニューテーブルの位置情報と照合し、対応する項目を強調表示してもよい。これにより、ユーザは、直感的な項目の選択を行うことができる。
【００８０】
図７は、メニュー項目確定操作の具体例を示す図である。図７の例では、保持された円運動平面４５に対してユーザの手４２を所定方向（図６（Ｂ）の例では矢印Ｂ方向）に一定距離（例えば、距離ｈ）以上移動させる動作を、メニュー項目の確定動作に割り当てている。また、キャンセルは、円運動平面４５に対してユーザの手４２を矢印Ｂ方向と反対方向に一定距離（例えば、距離ｈ）以上移動させる動作を割り当てる。これにより、本実施形態におけるメニュー項目の確定及びキャンセルを容易に行うことができる。
【００８１】
なお、移動する方向の割り当ては、上述した内容と逆であってもよく、同一方向に対して異なる距離だけユーザの手４２を移動させることで、確定又はキャンセル動作を割り当ててもよい。例えば、距離ｈだけ移動させた場合には、メニュー項目を確定し、また同一方向に距離３ｈだけ移動させた場合には、キャンセルする。
【００８２】
更に、本実施形態では、他の所定の動作によってメニュー項目の確定又はキャンセルされるように、予め設定されていてもよい。他の所定の動作としては、例えば、手の形状を変えたり（例えば、手を開く、握る等）、手の平を返す動作で、メニュー項目の確定及びキャンセルを行ってもよい。また、他の所定の動作としては、例えば手の移動する速度情報等を用いて、所定の速度より速い場合にメニュー項目を確定し、所定の速度より遅い場合にキャンセルするといった制御を行うこともできる。
【００８３】
また、他の所定の動作としては、手４２を所定時間移動停止（停留）させた場合にメニュー項目を確定する等の処理を行うこともできる。具体的には、例えばメニュー選択決定部１７がトラッキング入力点の一定時間の停留を判定し、入力点が円運動平面４５から一定距離内にあり、かつ入力点が円中心からの半径に基づいて決められた所定の距離内にある場合に、メニュー項目を確定することができる。
【００８４】
なお、一定時間の停留の判定は、例えば、所定時間内におけるユーザの手４２の移動範囲が一定値以下であるかどうかにより判断することができる。また、メニュー選択決定部１７は、停留かつ範囲内のときに選択されたメニュー項目を確定し、範囲外のとき選択をキャンセルすることができる。
【００８５】
更に、他の所定の動作としては、例えば、表示画面４０に「確定ボタン」や「キャンセルボタン」を表示し、その何れの位置に手４２を移動させることで、確定又はキャンセル動作を実行させることができる。なお、上述したメニュー項目の確定やキャンセルの動作の判定は、例えばメニュー選択決定部１７によって行われる。
【００８６】
＜メニュー選択決定部１７におけるキャンセル動作の具体例＞
ここで、上述したメニュー選択決定部１７におけるキャンセル動作の具体例については、上述したように円運動平面を基準として所定の方向に所定の距離以上移動させたときにキャンセル動作を行うことができる。また、その他の例としては、例えば円運動した場所から一定以上離れた位置に手が移動した場合にキャンセル動作を行ってもよい。なお、上述の例としては、例えばユーザが手を下に下ろした場合等があるが、これに限定されるものではない。
【００８７】
なお、これらの判定は、例えば円運動平面の向きとキャンセルを行うための手の移動内容を設定することで、キャンセル動作を指定することができる。例えば、メニュー選択決定部１７は、円を地面と水平に描いた場合に、下向きをキャンセルとすることができる。また、メニュー選択決定部１７は、垂直円である場合に、手を自然に引っ込める方向（例えば、正面向きの円なら引く方向、側面向きの円なら利き手方向）とすれば誤ってキャンセル動作と判断されることはない。また、メニュー選択決定部１７におけるキャンセル動作については、上述した複数の手法のうち、少なくとも１つを実行することで、キャンセル動作を実行することができるが、これに限定されるものではなく、例えば所定の順序で複数の動作を行わせてもよい。
【００８８】
また、メニュー選択決定部１７は、円運動位置と入力点との距離が円運動半径に基づいて決められた所定値以上離れているときにキャンセルとする。所定値は、例えば円運動半径に対して１次変換で求めることができる。円運動位置と入力点との距離は、円運動の中心と入力点との距離とし、任意の方向で一定以上離れたらキャンセルとする。また、円運動位置と入力点との距離は、入力点から円運動平面へ下ろした垂線と平面との交点と円運動の中心との距離とすることもできる。この場合には、手４２が円上から一定以上離れるとキャンセルとなる。
【００８９】
更に、メニュー選択決定部１７は、予めキャンセルとなるエリア（例えば、表示画面４０の下の方の領域等）を設けて、そこにユーザの手４２が移動したらキャンセルにすることもできる。
【００９０】
上述したように、本実施形態では、ユーザが任意に決めた中心位置と手の位置とのなす方向から絶対位置でメニュー項目を選択することができる。また、本実施形態では、選択のための手の動きの平面から垂直方向に一定以上手を動かすことで選択したメニュー項目の確定又はキャンセルを行うことができる。また、本実施形態では、片手で容易に選択処理を行うことができる。
【００９１】
つまり、本実施形態では、例えばメニューを開く際に任意に定めた空間上の中心点と手の位置との位置関係に基づいて、直感的にメニュー選択を行うことができる。また、本実施形態では、例えば、メニューを開く際に定めた空間上の平面と直行する方向に手を動かすことで、素早く選択項目の選択や確定等を行うことができる。更に、本実施形態では、メニュー選択時に手を循環運動（回転、往復）させたり、画面を見ながらカーソルの位置合わせをしたり、手を所定の形にしたりしなくとも直感的に素早くメニュー選択が可能となる。
【００９２】
＜本実施形態におけるメニュー選択処理手順の一例＞
次に、本実施形態におけるメニュー選択処理手順の一例について、フローチャートを用いて説明する。なお、以下に示すメニュー選択処理は、例えばメニュー選択プログラム（ソフトウェア）が図２に示すようなハードウェア資源にインストールされることで協働して実行される処理である。図８〜図１０は、本実施形態におけるメニュー選択処理の一例を示すフローチャート（その１〜その３）である。
【００９３】
図８〜１０に示す例において、メニュー選択処理は、トラッキング入力による位置情報として座標値Ｘを取得し（Ｓ０１）、その座標値を記憶する（Ｓ０２）。このときの座標値は、座標列Ｘｉ（１≦ｉ≦ｎ）として、所定時間間隔で連続した座標列が記憶される。
【００９４】
次に、メニュー選択処理は、メニュー選択モードか否かを判断し（Ｓ０３）、メニュー選択モードでない場合（Ｓ０３において、ＮＯ）、座標列Ｘｉから中心位置Ｃを算出する（Ｓ０４）。その後、メニュー選択処理は、中心位置を座標列から平均距離Ｒを算出する（Ｓ０５）。
【００９５】
次に、メニュー選択処理は、Ｓ０５の処理で得られた平均距離Ｒが予め設定された一定値である最小距離Ｒｍｉｎより小さいか否か（Ｒ＜Ｒｍｉｎ？）を判断する（Ｓ０６）。メニュー選択処理は、平均距離Ｒが最小距離Ｒｍｉｎより小さくない場合（Ｓ０６において、ＮＯ）、次に、定数ａ，ｂを用いて「ａ×Ｒ」、「ｂ×Ｒ」（０＜ａ＜１、１＜ｂ）と、各座標点Ｘｉと中心点Ｃとの距離ｒｉとを比較する（Ｓ０７）。
【００９６】
ここで、メニュー選択処理は、ｒｉ＜ａＲ又はｒｉ＞ｂＲとなるｒｉが存在するか否かを判断する（Ｓ０８）。メニュー選択処理は、Ｓ０８の条件を満たすｒｉが存在しない場合（Ｓ０８において、ＮＯ）、∠ＸｉＣＸｉ−１を順に算出して角度ａｉを取得する（Ｓ０９）。なお、Ｓ０９の処理では、例えば時計回りが正、逆が負とするが、これに限定されるものではない。
【００９７】
また、メニュー選択処理は、角度「ａｉ×ａｉ−１」＜０となるａｉ、ａｉ−１が存在するか否かを判断する（Ｓ１０）。ここで、メニュー選択処理は、ａｉ、ａｉ−１が存在する場合は、周回数Ｌを０にして（Ｓ１１）、Ｓ０１の処理に戻る。
【００９８】
なお、メニュー選択処理は、Ｓ０６の処理において、平均距離ＲがＲｍｉｎよりも小さい場合（Ｓ０６において、ＹＥＳ）、上述したＳ１１の処理を行い、Ｓ０１の処理に戻る。また、メニュー選択処理は、Ｓ０８の処理において、Ｓ０８の条件を満たすｒｉが存在する場合（Ｓ０８において、ＹＥＳ）の場合、上述したＳ１１の処理を行い、Ｓ０１の処理に戻る。
【００９９】
また、メニュー選択処理は、Ｓ１０の処理において、Ｓ１０の条件を満たすａｉ、ａｉ−１が存在しない場合（Ｓ１０において、ＮＯ）、全ａｉの和Ｗを算出する（Ｓ１２）。次に、メニュー選択処理は、角度の和Ｗの絶対値｜Ｗ｜が３６０°以上であるか否か（｜Ｗ｜≧３６０°？）を判断し（Ｓ１３）、｜Ｗ｜が３６０°以上である場合（Ｓ１３において、ＹＥＳ）、周回数Ｌを１増加する（Ｓ１４）。また、メニュー選択処理は、最後の１点を残して、今まで記憶していた座標値列をクリアする（Ｓ１５）。
【０１００】
次に、メニュー選択処理は、周回数Ｌが予め設定された一定値である最小周回数Ｌｍｉｎ以上か否か（Ｌ≧Ｌｍｉｎ？）を判断する（Ｓ１６）。メニュー選択処理は、周回数Ｌが予め設定された周回数最小値Ｌｍｉｎ以上である場合（Ｓ１６において、ＹＥＳ）、円運動平面を算出する（Ｓ１７）。Ｓ１７の処理では、ベクトルＣＸｉとベクトルＣＸｉ−１の外積がなす方向の単位ベクトルを求め、それらベクトルの平均Ｎ（円運動平面の法線）を求める。また、メニュー選択処理は、上述の処理により求めた半径Ｒ、中心点Ｃ、円運動平面の法線Ｎを記憶する（Ｓ１８）。次に、メニュー選択処理は、メニュー選択モードに移行し（Ｓ１９）、Ｓ０１の処理に戻る。
【０１０１】
ここで、メニュー選択処理は、上述したＳ０３の処理において、メニュー選択モードである場合（Ｓ０３において、ＹＥＳ）、メニュ選択モードへの移行処理を行う。具体的には、メニュー選択処理は、入力点Ｘと円運動平面（例えば、中心点Ｃと法線Ｎ）との距離ｖを算出し（Ｓ２０）、次に、距離ｖが予め設定された一定値である最大距離Ｖｍａｘより大きいか否か（ｖ＞Ｖｍａｘ？）を判断する（Ｓ２１）。
【０１０２】
メニュー選択処理は、距離ｖが予め設定した最大距離Ｖｍａｘより大きくない場合（Ｓ２１において、ＮＯ）、ベクトルＸｎ−１ＸｎとＮのなす角ｔを求める（Ｓ２２）。また、メニュー選択処理は、なす角ｔが予め設定された閾値Ｔｓｈと比較して「Ｔｓｈ≦ｔ≦１８０-Ｔｓｈ」の関係にあるか否かを判断する（Ｓ２３）。メニュー選択処理は、Ｓ２３の条件を満たす場合（Ｓ２３において、ＹＥＳ）、中心点Ｃから入力点Ｘへ向かう方向値Ｄ（０°≦Ｄ＜３６０°）を算出し（Ｓ２４）、更に方向値をメニュー項目数で量子化する（Ｓ２５）。このときの量子化値は、ｄとする。次に、メニュー選択処理は、量子化値ｄに対応するメニュー項目を表示する（Ｓ２６）。
【０１０３】
また、メニュー選択処理は、Ｓ２３の条件を満たさない場合（Ｓ２３において、ＮＯ）、又はＳ２６の処理の終了後、メニュー及び選択項目を強調表示し（Ｓ２７）、Ｓ０１の処理に戻る。
【０１０４】
また、メニュー選択処理は、Ｓ２１の処理において、距離ｖが予め設定した最大距離Ｖｍａｘより大きい場合（Ｓ２１において、ＹＥＳ）、ベクトルＣＸと法線Ｎとの内積を算出する（Ｓ２８）。次に、メニュー選択処理は、角度の和Ｗと、Ｓ２８の処理で得られた内積ｕとの乗算結果が０以上か否か（Ｗ×ｕ≧０？）を判断する（Ｓ２９）。
【０１０５】
ここで、メニュー選択処理は、角度の和Ｗと内積ｕとの乗算結果が０以上である場合（Ｓ２９において、ＹＥＳ）、選択確定処理を行う（Ｓ３０）。選択確定処理とは、例えばユーザの手の位置座標に対応するメニュー項目に予め設定された実行イベント等を実行する等があるがこれに限定されるものではない。
【０１０６】
また、メニュー選択処理は、Ｓ２９の処理において、角度の和Ｗと内積ｕとの乗算結果が０以上でない場合（Ｓ２９において、ＮＯ）、キャンセル処理を行う（Ｓ３１）。キャンセル処理とは、例えばメニュー選択モードを解除（フラグ等をクリア）したり、選択確定前の状態に戻したり、メニュー項目の表示を画面上から消す等の処理があるがこれに限定されるものではない。
【０１０７】
上述したように、本実施形態によれば、ユーザの簡単な操作によるメニュー選択を実現することができる。また、本実施形態では、選択されたメニュー項目の確定やキャンセル、メニューの変更についても簡単な操作で実現することができる。これにより、メニュー操作の利便性を向上させることができる。なお、本実施形態では、奥行き情報の取れるトラッキングデバイスと表示装置を備えた一般的な計算機システムと、その上で動作するソフトウェアとして実装される。また、ソフトウェアの部分は、等価な働きをするハードウェアによって実現されていてもよい。
【０１０８】
なお、本実施形態は、例えば空間での物体の動作をトラッキングすることによる非接触情報入力技術全般に適用することができる。
【０１０９】
以上、各実施例について詳述したが、特定の実施例に限定されるものではなく、特許請求の範囲に記載された範囲内において、種々の変形、変更が可能である。
【０１１０】
なお、以上の実施例に関し、更に以下の付記を開示する。
（付記１）
所定の物体の位置情報を入力する位置情報入力部と、
前記位置情報入力部により得られる前記物体の位置情報の変化を解析し、前記物体が円運動をしているかを判定する円運動算出部と、
前記円運動算出部により前記物体が円運動をしていると判定された場合に、前記物体が所定の周回条件を満たしているかを判定する周回条件判定部と、
前記周回条件判定部により得られた判定結果に基づいて、表示部にメニュー項目の表示し、所定の項目を選択させるメニュー選択モードを実行するメニュー選択モード制御部と、
前記メニュー選択モード時に前記表示部に表示されたメニュー項目に対し、前記円運動算出部により得られた前記円運動の中心位置と、前記位置情報入力部により得られた前記物体の位置情報とに基づいて前記所定の項目を選択するメニュー選択部とを有することを特徴とする情報処理装置。
（付記２）
前記円運動算出部は、前記円運動による円運動平面を算出し、
前記メニュー選択部により前記所定の項目を選択した後、前記円運動平面と、前記位置情報入力部により得られる前記物体の位置情報との距離に基づいて、選択した前記所定の項目の確定又はキャンセルを行うメニュー選択決定部を有することを特徴とする付記１に記載の情報処理装置。
（付記３）
前記メニュー選択モード時に、前記位置情報入力部により得られる前記物体の位置情報の変化による移動方向が、前記円運動平面に対して所定方向である場合に、前記メニュー選択部による前記メニュー項目の変更を無効にするメニュー選択制御部を有することを特徴とする付記２に記載の情報処理装置。
（付記４）
前記メニュー選択部は、
前記円運動算出部により得られる前記円運動による前記物体の回転方向、前記円運動平面の傾き、及び前記円運動による円の半径のうち、少なくとも１つに基づいて表示するメニューの種類を変更することを特徴とする付記２又は３に記載の情報処理装置。
（付記５）
前記メニュー選択決定部は、
前記位置情報入力部により得られる前記物体の位置情報が所定時間の間、前記円運動平面から所定距離内にあり、かつ前記所定の項目の表示位置から所定範囲内にある場合に、前記所定の項目の確定することを特徴とする付記２乃至４の何れか１項に記載の情報処理装置。
（付記６）
所定の物体の位置情報を入力し、入力された前記物体の位置情報の変化を解析し、前記物体が円運動をしているかを判定し、前記物体が円運動をしていると判定された場合に、前記物体が所定の周回条件を満たしているかを判定し、判定結果に基づいて、表示部にメニュー項目の表示し、所定の項目を選択させるメニュー選択モードを実行し、前記メニュー選択モード時に前記表示部に表示されたメニュー項目に対し、前記円運動の中心位置と、前記物体の位置情報とに基づいて前記所定の項目を選択する、処理をコンピュータに実行させるためのメニュー選択プログラム。
（付記７）
前記円運動による円運動平面を算出し、前記所定の項目を選択した後、前記円運動平面と、前記物体の位置情報との距離に基づいて、選択した前記所定の項目の確定又はキャンセルを行うことを特徴とする付記６に記載のメニュー選択プログラム。
（付記８）
前記メニュー選択モード時に、前記物体の位置情報の変化による移動方向が、前記円運動平面に対して所定方向である場合に、前記メニュー項目の変更を無効にすることを特徴とする付記７に記載のメニュー選択プログラム。
（付記９）
前記円運動による前記物体の回転方向、前記円運動平面の傾き、及び前記円運動による円の半径のうち、少なくとも１つに基づいて表示するメニューの種類を変更することを特徴とする付記７又は８に記載のメニュー選択プログラム。
（付記１０）
前記物体の位置情報が所定時間の間、前記円運動平面から所定距離内にあり、かつ前記所定の項目の表示位置から所定範囲内にある場合に、前記所定の項目の確定することを特徴とする付記７乃至９の何れか１項に記載のメニュー選択プログラム。
（付記１１）
所定の物体の位置情報を入力し、入力された前記物体の位置情報の変化を解析し、前記物体が円運動をしているかを判定し、前記物体が円運動をしていると判定された場合に、前記物体が所定の周回条件を満たしているかを判定し、判定結果に基づいて、表示部にメニュー項目の表示し、所定の項目を選択させるメニュー選択モードを実行し、前記メニュー選択モード時に前記表示部に表示されたメニュー項目に対し、前記円運動の中心位置と、前記物体の位置情報とに基づいて前記所定の項目を選択する、処理を有することを特徴とするメニュー選択方法。
（付記１２）
前記円運動による円運動平面を算出し、前記所定の項目を選択した後、前記円運動平面と、前記物体の位置情報との距離に基づいて、選択した前記所定の項目の確定又はキャンセルを行うことを特徴とする付記１１に記載のメニュー選択方法。
（付記１３）
前記メニュー選択モード時に、前記物体の位置情報の変化による移動方向が、前記円運動平面に対して所定方向である場合に、前記メニュー項目の変更を無効にすることを特徴とする付記１２に記載のメニュー選択方法。
（付記１４）
前記円運動による前記物体の回転方向、前記円運動平面の傾き、及び前記円運動による円の半径のうち、少なくとも１つに基づいて表示するメニューの種類を変更することを特徴とする付記１２又は１３に記載のメニュー選択方法。
（付記１５）
前記物体の位置情報が所定時間の間、前記円運動平面から所定距離内にあり、かつ前記所定の項目の表示位置から所定範囲内にある場合に、前記所定の項目の確定することを特徴とする付記１２乃至１４の何れか１項に記載のメニュー選択方法。
【符号の説明】
【０１１１】
１０  情報処理装置
１１  トラッキング入力部（位置情報入力部）
１２  トラッキング位置記憶部
１３  円運動算出部
１４  周回条件判定部
１５  メニュー選択モード
１６  円運動記憶部
１７  メニュー選択決定部
１８  メニュー選択制御部
１９  メニュー選択部
２０  メニュー情報保持部
２１  トラッキングデバイス
２２  表示部
３１  ＣＰＵ
３２  メモリ
３３  記憶装置
３４  通信装置
３５  ドライブ装置
３６  入力装置
３７  出力装置
３８  バス
３９  記録媒体
４０  表示画面
４１  カーソル
４２  手
４３  移動軌跡
４４  中心
４５  円運動平面
５０  メニュー項目
【図１】
0005884584.tif 000002
【図２】
0005884584.tif 000003
【図３】
0005884584.tif 000004
【図４】
0005884584.tif 000005
【図５】
0005884584.tif 000006
【図６】
0005884584.tif 000007
【図７】
0005884584.tif 000008
【図８】
0005884584.tif 000009
【図９】
0005884584.tif 000010
【図１０】
0005884584.tif 000011