(58)【調査した分野】(Int.Cl.,DB名)
【発明を実施するための形態】
【0014】
以下、本発明の実施の形態について説明する。なお、以下に挙げる各実施形態はそれぞれ例示であり、本発明は以下の各実施形態の構成に限定されない。
【0015】
本実施形態に係るユーザインタフェース装置は、ポインティング操作に用いられるユーザの特定部位の少なくとも1つの代表的な位置を示すポインティング位置を逐次取得する位置取得部と、ユーザの特定部位の所定形状への変化開始及び変化終了を検出する変化検出部と、位置取得部により逐次取得されるポインティング位置のうち、変化検出部により検出される変化開始時に対応するポインティング位置を保持する位置保持部と、位置取得部により取得されるポインティング位置のうち、変化検出部により検出される変化終了時に対応するポインティング位置を特定し、特定されたポインティング位置と位置保持部で保持されるポインティング位置との差を算出する算出部と、算出部で算出される差を用いて、位置取得部により取得されるポインティング位置を調節する位置調節部と、を有する。
【0016】
本実施形態に係るユーザインタフェース方法は、少なくとも1つのコンピュータが、ポインティング操作に用いられるユーザの特定部位の少なくとも1つの代表的な位置を示すポインティング位置を逐次取得し、ユーザの特定部位の所定形状への変化開始及び変化終了を検出し、逐次取得されるポインティング位置のうち、検出される変化開始時に対応するポインティング位置を保持し、逐次取得されるポインティング位置のうち、検出される変化終了時に対応するポインティング位置を特定し、特定されたポインティング位置と保持されるポインティング位置との差を算出し、算出される差を用いて、逐次取得されるポインティング位置を調節する、ことを含む。
【0017】
以下、上述の実施形態における作用及び効果について
図1から
図3を用いて説明する。
図1は、ポインティング位置の取得を概念的に示す図である。
図2は、ポインティング位置の取得に関する問題点を概念的に示す図である。
図3は、上述の実施形態におけるポインティング位置の調節を概念的に示す図である。
【0018】
本実施形態では、ユーザの特定部位に対応するポインティング位置が逐次取得される。例えば、ユーザの特定部位を表す2次元画像又は3次元情報(例えば、2次元画像及び深度情報)から、ユーザの特定部位の少なくとも1つの代表的な位置が当該ポインティング位置として特定される。より具体的には、ポインティング位置は、Kinect(登録商標)と呼ばれるゲームコントローラシステムのスケルトントラッキングにより得られるスケルトン情報の中から得られるようにしてもよい。また、当該ポインティング位置は、ユーザの特定部位の外形が認識され、その認識された外形から得られる重心位置に設定されるようにしてもよい。本実施形態は、このポインティング位置の特定手法を制限しない。
【0019】
図1から
図3の例では、ユーザの特定部位として手が用いられ、当該手の中の、体から最も離れた位置にある、代表的な1点の位置がポインティング位置に設定される。また、
図1の例では、ユーザの手を含む腕全体が動かされることにより、ポインティング位置P1及びP2が逐次取得されている。
【0020】
ここで、手で物をつかむ動作を検出し、この動作をコンピュータに対するユーザ入力として用いることを考える。
図2では、立方体が掴みたい物であり、立方体に対するポインティング位置が適正で、かつ、所定動作(握る)が認識された場合に、当該コンピュータは、その立方体をユーザに掴まれた状態とする。この場合、
図2に示されるように、ユーザが手を開いた状態において取得されるポインティング位置P1は、その手の指先に設定される。この状態で、ユーザが手で物をつかむために手を握ると、握った状態の手における体から最も離れた位置がポインティング位置P2として取得される。このように、ポインティング操作に用いられるユーザの特定部位の形状の変化を含む動作(ジェスチャ)を認識する場合、形状の変化の前後で、その特定部位に対応するポインティング位置がずれてしまう。これは、ユーザの特定部位の中でのポインティング位置の決定方法に依存しない。例えば、特定部位としての手における重心がポインティング位置に設定される場合においても、手を開いた時の重心と手を握った時の重心とでは位置が異なるため、両状態の間でポインティング位置もずれることになる。
【0021】
このような特定ジェスチャの前後でのポインティング位置のずれは、その特定ジェスチャでの操作対象となる表示物の位置と、特定ジェスチャ後のポインティング位置との間に距離を生じさせ、その特定ジェスチャが、意図されたユーザ入力とは異なるユーザ入力として誤認識される可能性がある。即ち、その特定ジェスチャによりその表示物に対する操作ができない可能性がある。このように、ユーザの特定部位の形状変化により所定処理を実施し、かつ、形状変化によりポインティング位置が変化しうるユーザインタフェースにおいて、形状変化に応じたポインティング位置の変化によりユーザの意図した動作とならない場合がある。
【0022】
そこで、本実施形態では、まず、上記特定部位の所定形状への変化開始及び変化終了が検出される。ユーザの特定部位の形状の変化は、例えば、データグローブやデータスーツに搭載されるひずみセンサ等のセンサから得られる情報から検出される。また、当該変化は、ユーザの特定部位を表す2次元画像又は3次元情報(例えば、2次元画像及び深度情報)から検出されるようにしてもよい。本実施形態は、当該特定部位の形状の変化の検出手法自体を制限しない。
【0023】
所定形状とは、例えば、特定部位が手の場合、物をつかんだ状態における手の形状である。変化開始は、例えば、予め保持される所定の変化幅を超えて、形状が所定形状方向へ変化したことにより検出される。また、変化終了は、例えば、ユーザの特定部位が所定形状となったことにより検出される。変化終了は、特定部位の形状が所定形状となっている状態において当該センサから得られる所定の変化情報(ひずみ情報など)を超えて更に形状が変化したことにより検出されるようにしてもよい。変化終了は、予め保持される所定時間、形状変化が止まったことにより検出されるようにしてもよい。
【0024】
本実施形態では、
図3に示されるように、逐次取得されるポインティング位置の中の、変化検出部により検出される変化開始時に対応するポインティング位置P1が保持され、更に、変化検出部により検出される変化終了時に対応するポインティング位置P2が特定される。ここで、変化開始時に対応するポインティング位置とは、変化検出部により変化開始が検出された時点、又は、その時点の前後に、取得されているポインティング位置を意味する。これは、変化終了時に対応するポインティング位置についても同様である。
【0025】
そして、変化終了時に対応するポインティング位置P2と、保持されるポインティング位置P1との差が算出され、この算出される差を用いて、ポインティング位置が調節される。これにより、変化検出部で検出される変化終了時の形状となっている当該特定部位に関するポインティング位置P4は、その形状の特定部位に関し位置取得部で取得されるポインティング位置が、上述のように算出される差で調節された値となる。
図3の例では、ポインティング位置の調節として、当該差の加算が用いられる。本実施形態は、ポインティング位置の調節は、当該差の加算のみに制限せず、所定係数が掛け合わされた差が加算されることで当該調節が行われてもよい。
【0026】
このように、本実施形態によれば、ポインティング操作に用いられるユーザの特定部位の形状の変化の前後での、その特定部位に対応するポインティング位置のずれを用いて、変化終了時以降のポインティング位置が調節される。従って、本実施形態によれば、特定ジェスチャの前後でのポインティング位置のずれによるユーザ入力の誤認識を防ぐことができ、結果として、ユーザの特定部位の形状の変化を含むジェスチャによりコンピュータを直感的に分かり易く操作するユーザインタフェースを実現することができる。
【0027】
以下、上述の実施形態について更に詳細を説明する。以下には、詳細実施形態として、第1実施形態、第2実施形態及び第3実施形態、並びにそれらの変形例を例示する。
【0028】
[第1実施形態]
〔装置構成〕
図4は、第1実施形態における3次元ユーザインタフェース装置(以降、3D−UI装置と表記する)1のハードウェア構成例を概念的に示す図である。第1実施形態における3D−UI装置1は、大きく、センサ側構成と表示側構成とを持つ。センサ側構成は、3次元センサ(以降、3Dセンサと表記する)8及びセンサ側装置10から形成される。表示側構成は、ヘッドマウントディスプレイ(以降、HMDと表記する)9及び表示側装置30から形成される。以降、3次元を3Dと適宜省略して表記する。
【0029】
図5は、第1実施形態における3D−UI装置1の利用形態の例を示す図である。
図5に示されるように、3Dセンサ8は、ユーザの特定部位を検出できる位置に配置される。HMD9は、ユーザの頭部に装着され、ユーザの視線に対応する視線映像と共に、その視線映像に合成された上述の仮想3D空間をユーザに視認させる。
【0030】
3Dセンサ8は、ユーザの特定部位の検出などのために利用される3D情報を検出する。3Dセンサ8は、例えば、Kinect(登録商標)のように、可視光カメラ及び距離画像センサにより実現される。距離画像センサは、深度センサとも呼ばれ、レーザから近赤外光のパターンをユーザに照射し、そのパターンを近赤外光を検知するカメラで撮像して得られる情報から距離画像センサからユーザまでの距離(深度)が算出される。なお、3Dセンサ8自体の実現手法は制限されず、3Dセンサ8は、複数の可視光カメラを用いる3次元スキャナ方式で実現されてもよい。また、
図4では、3Dセンサ8が1つ要素で図示されるが、3Dセンサ8は、ユーザの2次元画像を撮像する可視光カメラ及びユーザまでの距離を検出するセンサといった複数の機器で実現されてもよい。
【0031】
図6は、HMD9の外観構成の例を示す図である。
図6には、ビデオシースルー型と呼ばれるHMD9の構成が示されている。
図6の例では、HMD9は、2つの視線カメラ9a及び9b、2つのディスプレイ9c及び9dを有する。各視線カメラ9a及び9bは、ユーザの各視線に対応する各視線画像をそれぞれ撮像する。これにより、HMD9は撮像部と呼ぶこともできる。各ディスプレイ9c及び9dは、ユーザの視野の大部分を覆う形に配置され、各視線画像に仮想3D空間が合成された合成3D画像を表示する。
【0032】
センサ側装置10及び表示側装置は、バスなどで相互に接続される、CPU(Central Processing Unit)2、メモリ3、通信装置4、入出力インタフェース(I/F)5などをそれぞれ有する。メモリ3は、RAM(Random Access Memory)、ROM(Read Only Memory)、ハードディスク、可搬型記憶媒体などである。
【0033】
センサ側装置10の入出力I/F5は、3Dセンサ8と接続され、表示側装置30の入出力I/F5は、HMD9と接続される。また、センサ側装置10の入出力I/F5は、ゆがみセンサ等のようなユーザの特定部位の形状変化の情報を取得するセンサと接続されてもよい。入出力I/F5と3Dセンサ8との間、及び、入出力I/F5とHMD9との間は無線により通信可能に接続されてもよい。各通信装置4は、無線又は有線にて、他の装置(センサ側装置10、表示側装置30など)と通信を行う。本実施形態は、このような通信の形態を制限しない。また、センサ側装置10及び表示側装置30の具体的ハードウェア構成についても制限されない。
【0034】
〔処理構成〕
〈センサ側装置〉
図7は、第1実施形態におけるセンサ側装置10の処理構成例を概念的に示す図である。第1実施形態におけるセンサ側装置10は、3D情報取得部11、第1オブジェクト検出部12、第1基準設定部13、位置算出部14、状態取得部15、送信部16、変化検出部21、位置保持部22、算出部23、位置調節部24などを有する。これら各処理部は、例えば、CPU2によりメモリ3に格納されるプログラムが実行されることにより実現される。また、当該プログラムは、例えば、CD(Compact Disc)、メモリカード等のような可搬型記録媒体やネットワーク上の他のコンピュータから入出力I/F5を介してインストールされ、メモリ3に格納されてもよい。
【0035】
3D情報取得部11は、3Dセンサ8により検出された3D情報を逐次取得する。3D情報は、可視光により得られるユーザの2次元画像と、3Dセンサ8からの距離(深度)の情報とを含む。
【0036】
第1オブジェクト検出部12は、3D情報取得部11により取得された3D情報から既知の共通実オブジェクトを検出する。共通実オブジェクトとは、現実世界に配置された画像や物であり、AR(Augmented Reality)マーカ等と呼ばれる。本実施形態は、この共通実オブジェクトから、参照方向によらず、或る基準点及びこの基準点からの相互に直交する3つの方向を一定に得ることができるのであれば、この共通実オブジェクトの具体的形態を制限しない。第1オブジェクト検出部12は、その共通実オブジェクトが示す形状、サイズ、色などについての情報を予め保持しており、このような既知の情報を用いて、共通実オブジェクトを3D情報から検出する。
【0037】
第1基準設定部13は、第1オブジェクト検出部12により検出される共通実オブジェクトに基づいて、3D座標空間を設定し、かつ、この3D座標空間における3Dセンサ8の位置及び向きを算出する。例えば、第1基準設定部13は、共通実オブジェクトから抽出される基準点を原点とし、その基準点からの相互に直交する3方向を各軸とする3D座標空間を設定する。第1基準設定部13は、共通実オブジェクトに関する既知の形状及びサイズ(本来の形状及びサイズに相当)と、3D情報から抽出された共通実オブジェクトが示す形状及びサイズ(3Dセンサ8からの見え方に相当)との比較により、3Dセンサ8の位置及び向きを算出する。
【0038】
位置算出部14は、3D情報取得部11により逐次取得される3D情報を用いて、ユーザの特定部位に関する上記3D座標空間上の3Dポインティング位置を逐次算出する。これにより、位置算出部14は、位置取得部と呼ぶこともできる。第1実施形態では、位置算出部14は、具体的に次のように当該3Dポインティング位置を算出する。位置算出部14は、まず、3D情報取得部11により取得される3D情報からユーザの特定部位の少なくとも1つの代表的な位置を示す3Dポインティング位置を抽出する。この3Dポインティング位置の抽出は、例えば、上述したようなスケルトントラッキングにより行われる。ここで抽出される3Dポインティング位置は、3Dセンサ8のカメラ座標系に対応する。そこで、位置算出部14は、第1基準設定部13により算出される3Dセンサ8の位置及び向き並びに3D座標空間に基づいて、3Dセンサ8のカメラ座標系に対応する3Dポインティング位置を第1基準設定部13で設定された3D座標空間上の3Dポインティング位置に変換する。この変換は、3Dセンサ8のカメラ座標系から、上記共通実オブジェクトに基づき設定される3D座標系への変換を意味する。
【0039】
ここで、検出すべきユーザの特定部位は複数であってもよい。例えば、複数の特定部位としてユーザの両手が利用される形態があり得る。この場合、位置算出部14は、3D情報取得部11により取得される3D情報から、複数の特定部位の3Dポインティング位置をそれぞれ抽出し、この各3Dポインティング位置を3D座標空間上の各3Dポインティング位置にそれぞれ変換する。また、特定部位とは、ユーザがHMD9のディスプレイ9c及び9dに表示される仮想オブジェクトを操作するために用いる体の一部であるため、或る程度の面積又は体積を有する。よって、位置算出部14により算出される3Dポインティング位置は、当該特定部位の中の或る1点の位置であってもよいし、複数点の位置であってもよい。
【0040】
変化検出部21は、上述の実施形態で述べたように、ユーザの特定部位の所定形状への変化開始及び変化終了を検出する。更に、変化検出部21は、ユーザの特定部位の形状の、上記所定形状から回復方向への回復変化を検出する。ここで、所定形状から回復方向とは、変化終了時に対応する形状(所定形状)から変化開始時に対応する形状(元の形状)に向かう変化方向を意味する。変化検出部21は、入出力I/F5に接続されるゆがみセンサ等のセンサから得られる、当該特定部位のゆがみ(動き)情報を取得し、この情報に基づいて、変化開始及び変化終了並びに回復変化を検出する。また、変化検出部21は、3D情報取得部11で取得されるユーザの特定部位を表す3D情報から検出してもよい。変化終了が形状変化の所定時間の停止により検出される場合には、回復変化は、変化終了の検出後、形状変化が再開されたことにより検出されてもよい。
【0041】
位置保持部22は、位置算出部14により逐次算出される3Dポインティング位置のうち、変化検出部21により検出される変化開始時に対応する3Dポインティング位置を保持する。例えば、位置保持部22は、変化検出部21から変化開始の検出の通知を受け、位置算出部14で算出されたその時点で最新の3Dポインティング位置を保持する。
【0042】
更に、位置保持部22は、変化検出部21による上述の回復変化の検出に応じて、保持される3Dポインティング位置を解放する。ここで、3Dポインティング位置の解放は、3Dポインティング位置の削除により実現されてもよいし、3Dポインティング位置の値無し(NULL)設定により実現されてもよい。
【0043】
算出部23は、位置算出部14により取得される3Dポインティング位置のうち、変化検出部21により検出される変化終了時に対応する3Dポインティング位置を特定し、特定された3Dポインティング位置と位置保持部22で保持される3Dポインティング位置との差を算出する。例えば、算出部23は、変化検出部21から変化終了の検出の通知を受け、位置算出部14で算出されたその時点で最新の3Dポインティング位置を変化終了時に対応する3Dポインティング位置として特定する。また、算出部23は、当該差として、3D座標空間上の距離を算出する。なお、算出部23は、当該差として、即ち、3D座標空間における特定の1軸、即ち、3Dセンサ8の深度方向と平行な軸の距離を算出してもよい。
【0044】
算出部23は、位置保持部22により3Dポインティング位置が保持されている場合に、上述差を算出する。算出部23は、位置保持部22により3Dポインティング位置が解放された状態では、上述の差の算出を行わないようにしてもよい。
【0045】
位置調節部24は、算出部23で算出される差を用いて、位置算出部14により逐次取得される3Dポインティング位置を調節する。例えば、位置調節部24は、変化終了時に対応する3Dポインティング位置に当該差を加算することにより得られた位置を、調節された3Dポインティング位置とする。位置調節部24は、所定係数が掛け合わされた差を加算するようにしてもよい。
【0046】
位置調節部24は、位置保持部22による3Dポインティング位置の解放に応じて、3Dポインティング位置の調節を停止する。よって、位置調節部24は、変化検出部21により変化終了が検出されてから回復変化が検出されるまでの間、位置算出部14により逐次算出される各3Dポインティング位置を算出部23により算出される当該差を用いてそれぞれ調節する。
【0047】
状態取得部15は、変化検出部21により検出されるユーザの特定部位の形状に基づいて、当該特定部位の状態を特定し、状態情報を取得する。例えば、状態取得部15は、手が握られた状態及び手が開かれた状態の少なくとも2つの中の一方を示す状態情報を取得する。本実施形態は、検出可能な範囲で、この状態情報が示し得る状態の数を制限しない。また、複数の特定部位が利用される場合には、状態取得部15は、各特定部位に関する状態情報をそれぞれ取得する。
【0048】
送信部16は、ユーザの特定部位に関する、位置算出部14により算出される3Dポインティング位置又は位置調節部24により調節された3Dポインティング位置と、状態取得部15により取得された状態情報を表示側装置30に送る。
【0049】
〈表示側装置〉
図8は、第1実施形態における表示側装置30の処理構成例を概念的に示す図である。第1実施形態における表示側装置30は、視線画像取得部31、第2オブジェクト検出部32、第2基準設定部33、仮想データ生成部34、操作特定部35、オブジェクト処理部36、画像合成部37、表示処理部38などを有する。これら各処理部は、例えば、CPU2によりメモリ3に格納されるプログラムが実行されることにより実現される。また、当該プログラムは、例えば、CD(Compact Disc)、メモリカード等のような可搬型記録媒体やネットワーク上の他のコンピュータから入出力I/F5を介してインストールされ、メモリ3に格納されてもよい。
【0050】
視線画像取得部31は、HMD9からユーザの視線画像を取得する。この視線画像には、ユーザの特定部位が写る場合もある。この特定部位も、センサ側装置10で検出対象とされる特定部位と同一である。本実施形態では、視線カメラ9a及び9bが設けられているため、視線画像取得部31は、左目及び右目の各々に対応する各視線画像をそれぞれ取得する。なお、各処理部は、左目及び右目に対応する両視線画像に対してそれぞれ同様に処理されるため、以下の説明では、1つの視線画像を対象に説明する。
【0051】
第2オブジェクト検出部32は、視線画像取得部31により取得される視線画像から既知の共通実オブジェクトを検出する。この共通実オブジェクトは、上述のセンサ側装置10で検出されたオブジェクトと同一であってもよいし、センサ側装置10ではそのオブジェクトの特定の一部が利用され、HMD9側ではそのオブジェクトの全体が利用されるような形態であってもよい。第2オブジェクト検出部32の処理は、上述のセンサ側装置10の第1オブジェクト検出部12と同様であるため、ここでは詳細説明を省く。なお、視線画像に含まれる共通実オブジェクトは、3Dセンサ8で得られる3D情報に含まれる共通実オブジェクトとは、撮像方向が異なる。
【0052】
第2基準設定部33は、第2オブジェクト検出部32により検出される共通実オブジェクトに基づいて、センサ側装置10の第1基準設定部13により設定された3D座標空間を設定し、かつ、HMD9の位置及び向きをそれぞれ算出する。第2基準設定部33の処理についても、センサ側装置10の第1基準設定部13と同様であるため、ここでは詳細説明を省く。第2基準設定部33により設定される3D座標空間も、センサ側装置10の第1基準設定部13により設定される3D座標空間と同じ共通実オブジェクトに基づいて設定されるため、結果として、3D座標空間がセンサ側装置10と表示側装置30との間で共有されることになる。
【0053】
仮想データ生成部34は、第2基準設定部33によりセンサ側装置10と共有される3D座標空間に配置される仮想3Dオブジェクトデータを生成する。仮想データ生成部34は、この仮想3Dオブジェクトデータと共に、仮想3Dオブジェクトが配置される仮想3D空間のデータを生成してもよい。
【0054】
操作特定部35は、ユーザの特定部位に関する当該3D座標空間上の3Dポインティング位置及び状態情報をセンサ側装置10から受信し、この状態情報と3Dポインティング位置の変化との組み合わせに基づいて、複数の所定処理の中からオブジェクト処理部36により実行される1つの所定処理を特定する。3Dポインティング位置の変化は、前回の処理の際に得られた3Dポインティング位置との関係から算出される。また、複数の特定部位(例えば、両手)が利用される場合には、操作特定部35は、センサ側装置10から取得される複数の3Dポインティング位置から、複数の特定部位間の位置関係を算出し、算出された複数の特定部位間の位置関係の変化及び複数の状態情報に基づいて、複数の所定処理の中から1つの所定処理を特定する。複数の所定処理には、移動処理、回転処理、拡大処理、縮小処理、及び、機能メニューの表示データの付加処理等がある。
【0055】
例えば、操作特定部35は、ユーザの特定部位が片手の場合、ユーザの片手が特定状態(上記所定形状)(例えば握った状態)を維持している間におけるその片手の直線移動量に対応する距離分、移動させる処理を特定する。また、操作特定部35は、ユーザの複数特定部位が両手の場合、ユーザの両手が特定状態(上記所定形状)(例えば、握られた状態)を維持した状態でのその両手間の距離の変化量に対応する拡大率でユーザの片手の位置を基準点とした拡大処理を特定する。なお、本実施形態は、操作特定部35により特定される所定処理自体を制限しない。
【0056】
操作特定部35は、上述のような各所定処理を識別するためのIDをそれぞれ保持しており、所定処理に対応するIDを選択することにより、所定処理の特定を実現する。操作特定部35は、オブジェクト処理部36にその選択されたID、当該3D座標空間上の3Dポインティング位置などを渡すことで、オブジェクト処理部36にその所定処理を実行させる。
【0057】
オブジェクト処理部36は、仮想データ生成部34により生成された仮想3Dオブジェクトデータに対して、操作特定部35により特定された所定処理を適用する。オブジェクト処理部36は、サポートする複数の所定処理を実行可能となるように実現されている。
【0058】
画像合成部37は、第2基準設定部33により算出されるHMD9の位置及び向き並びに3D座標空間に基づいて、視線画像取得部31により取得される視線画像に、オブジェクト処理部36により所定処理が施された仮想3Dオブジェクトデータに対応する仮想3Dオブジェクトを合成する。なお、画像合成部37による合成処理には、拡張現実(AR)等で用いられる周知の手法が利用されればよいため、ここでは説明を省略する。
【0059】
表示処理部38は、画像合成部37により得られる合成画像をHMD9に表示させる。本実施形態では、ユーザの各視線に対応する2つの視線画像が上述のようにそれぞれ処理されるため、表示処理部38は、各視線画像と合成された各合成画像をそれぞれHMD9のディスプレイ9c及び9dに表示させる。
【0060】
図9は、HMD9に表示される合成画像の例を示す図である。
図9の例に示される合成画像は、球状の仮想3DオブジェクトVOと、ユーザの片手を含む視線画像(机VAを含む)とから形成される。ユーザは、HMD9でこの画像を見ながら、自身の手を動かすことにより、その画像に含まれる仮想3Dオブジェクトを自由に操作することができる。
【0061】
〔動作例〕
以下、第1実施形態におけるユーザインタフェース方法について
図10を用いて説明する。
図10は、第1実施形態における3D−UI装置1の動作例を示すシーケンスチャートである。
【0062】
センサ側装置10は、3Dセンサ8から3D情報を逐次取得する(S101)。センサ側装置10は、所定のフレームレートの当該3D情報に対して次のように動作する。
【0063】
センサ側装置10は、当該3D情報から共通実オブジェクトを検出する(S102)。
続いて、センサ側装置10は、検出された共通実オブジェクトに基づいて、3D座標空間を設定し、かつ、この3D座標空間における3Dセンサ8の位置及び向きを算出する(S103)。
【0064】
更に、センサ側装置10は、当該3D情報を用いて、ユーザの特定部位の3Dポインティング位置を算出する(S104)。更に、センサ側装置10は、工程(S103)で算出された3Dセンサ8の位置及び向き並びに3D座標空間に基づいて、工程(S104)で算出された3Dポインティング位置を工程(S103)で設定された3D座標空間上の3Dポインティング位置に変換する(S105)。
【0065】
センサ側装置10は、ユーザの特定部位の形状変化に応じて、工程(S105)で変換された3Dポインティング位置を調節する(S106)。工程(S106)の詳細については後述する。更に、センサ側装置10は、ユーザの特定部位の形状に基づいて、当該特定部位の状態を特定し、状態情報を取得する(S107)。
【0066】
センサ側装置10は、ユーザの特定部位に関し、工程(S106)で得られた3Dポインティング位置、及び、工程(S107)で得られた状態情報を表示側装置30に送る(S108)。
【0067】
一方で、表示側装置30は、3D情報の取得(S101)とは非同期で、HMD9から視線画像を逐次取得している(S111)。表示側装置30は、所定のフレームレートの当該視線画像に対して次のように動作する。
【0068】
表示側装置30は、当該視線画像から共通実オブジェクトを検出する(S112)。続いて、表示側装置30は、検出された共通実オブジェクトに基づいて、3D座標空間を設定し、かつ、この3D座標空間におけるHMD9の位置及び向きを算出する(S113)。
【0069】
表示側装置30は、設定された3D座標空間に配置される仮想3Dオブジェクトデータを生成する(S114)。
【0070】
表示側装置30は、センサ側装置10から、ユーザの特定部位に関する3Dポインティング位置及び状態情報を受信すると(S115)、当該特定部位の3Dポインティング位置の変化及び状態情報の組み合わせに応じて、ユーザのジェスチャに対応する所定処理を特定する(S116)。特定部位が複数存在する場合には、表示側装置30は、複数の特定部位間の位置関係の変化と複数の状態情報との組み合わせに応じて、所定処理を特定する。
【0071】
表示側装置30は、工程(S114)で生成された仮想3Dオブジェクトデータに対して、工程(S116)で特定された所定処理を適用する(S117)。続いて、表示側装置30は、所定処理が施された仮想3Dオブジェクトデータに対応する仮想3Dオブジェクトと視線画像とを合成し(S118)、表示データを生成する。
【0072】
表示側装置30は、その合成により得られた画像をHMD9に表示させる(S119)。
【0073】
図10では、説明の便宜のため、3D情報の取得(S101)と状態情報の取得(S107)とがシーケンシャルに実行される例が示されるが、特定部位の状態情報が3D情報以外から得られる場合には、工程(S101)及び(S107)は並列に実行される。また、
図10では、工程(S102)及び(S103)が3D情報の所定のフレームレートで実行される例が示されるが、工程(S102)及び(S103)はキャリブレーション時のみ実行されるようにしてもよい。
【0074】
図10では、説明の便宜のため、センサ側装置10から送られるユーザの特定部位に関する情報に対する処理(工程(S115)から工程(S117))と、仮想3Dオブジェクトデータの生成処理(工程(S112)から工程(S114))とがシーケンシャルに実行される例が示される。しかしながら、工程(S115)から工程(S117)と、工程(S112)から工程(S114)とは並列に実行される。
【0075】
図11は、
図10に示される工程(S106)の詳細を示すフローチャートである。
センサ側装置10は、ユーザの特定部位の形状について、変化開始、変化終了又は回復変化を検出する。センサ側装置10は、ユーザの特定部位の形状の変化開始を検出すると(S121;YES)、
図10の工程(S105)で変換される3Dポインティング位置の中の、変化開始時に対応する3Dポインティング位置を保持する(S122)。
【0076】
センサ側装置10は、ユーザの特定部位の形状の変化終了を検出すると(S121;NO、123;YES)、
図10の工程(S105)で変換される3Dポインティング位置の中の、変化終了時に対応する3Dポインティング位置を特定する(S124)。続いて、センサ側装置10は、変化終了時に対応する3Dポインティング位置と、工程(S122)で保持された3Dポインティング位置との差を算出する(S125)。センサ側装置10は、算出された差を用いて、変化終了時に対応する3Dポインティング位置を調節する(S129)。
【0077】
また、センサ側装置10は、ユーザの特定部位の形状の回復変化を検出すると(S121;NO、S123;NO、S126;YES)、工程(S122)で保持された3Dポインティング位置を解放する(S127)。
【0078】
センサ側装置10は、ユーザの特定部位の形状について、変化開始、変化終了、及び、回復変化のいずれも検出されない場合(S121;NO、S123;NO、S126;NO)、3Dポインティング位置が保持中であるか否かを判定する(S128)。センサ側装置10は、3Dポインティング位置が保持中である場合(S128;YES)、工程(S125)で算出された差を用いて、
図10の工程(S105)で変換される3Dポインティング位置を調節する(S129)。これにより、ユーザの特定部位の形状が少なくとも変化終了時の形状を維持している間は、3Dポインティング位置が調節される。
【0079】
一方、センサ側装置10は、3Dポインティング位置が保持されていない場合(S128;NO)、調節することなく、
図10の工程(S105)で変換される3Dポインティング位置をそのまま利用する。
【0080】
〔第1実施形態の作用及び効果〕
上述したように、第1実施形態では、ポインティング操作に用いられる特定部位(手など)が写されたユーザの視線画像が取得され、その視線画像に仮想3Dオブジェクトが合成された画像がビデオシースルー方式でユーザの視野内に表示される。その上で、第1実施形態では、ユーザの当該特定部位の3Dポインティング位置の変化とその特定部位の形状に関する状態情報が取得され、それらの組み合わせから特定される所定処理が、仮想3Dオブジェクトに対して適用される。これにより、第1実施形態によれば、ユーザは、仮想3Dオブジェクトを自身の特定部位で操作しているかのように感じることができる。即ち、第1実施形態によれば、ユーザに、仮想3Dオブジェクトに対する直感的操作感を与えることができる。
【0081】
第1実施形態では、ポインティング操作に用いられるユーザの特定部位の形状の変化の前後での、その特定部位に対応するポインティング位置のずれを用いて、変化終了時以降のポインティング位置が調節される。更に、第1実施形態では、変化終了の検出後、形状の回復変化が検出されると、保持される3Dポインティング位置が解放され、その解放以降、3Dポインティング位置の調節が行われなくなる。例えば、手を握った状態(上記所定形状)から手を開いた状態に変化していく過程で、3Dポインティング位置の調節が行われなくなる。これは、当該特定部位に対応するポインティング位置のずれが解消され、当該位置調節が不要となるからである。
【0082】
従って、本実施形態によれば、特定ジェスチャの前後でのポインティング位置のずれの解消、及び、更なる特定部位の形状変化に伴う位置調節の停止により、ユーザの当該ポインティング操作を一層直感的に認識される操作とすることができる。但し、このような作用効果は、視線画像に、ユーザの特定部位が写され、かつ、操作対象となる仮想3Dオブジェクトが合成されている形態に限定的に生じるわけではない。ユーザは、視線を操作対象に向けることなく、自身の特定部位でその操作対象を操作する場合もあり得るからである。このような場合であっても、第1実施形態によれば、当該特定部位に対応するポインティング位置のずれは、同様に解消することができる。
【0083】
[第2実施形態]
上述の第1実施形態では、HMD9が用いられ、ユーザ視線画像に写るユーザの特定部位の動作により、仮想3Dオブジェクトの操作を可能とする形態が例示された。しかしながら、本発明は、ユーザ視線画像ではなく、向かい側から写されたユーザ画像に写るユーザの特定部位の動作により、仮想3Dオブジェクトの操作を可能とする形態にも適用可能である。このような形態においても、特定ジェスチャの前後でのポインティング位置のずれは起こり得るからである。以下、第2実施形態における3D−UI装置1について、第1実施形態と異なる内容を中心に説明する。以下の説明では、第1実施形態と同様の内容については適宜省略する。
【0084】
第2実施形態における3D−UI装置1は、センサ側装置10のみを有し、センサ側装置10の入出力I/F5に接続される表示部に、当該合成画像を表示させる。
【0085】
図12は、第2実施形態における3D−UI装置1の処理構成例を概念的に示す図である。第2実施形態における3D−UI装置1の処理構成は、第1オブジェクト検出部12、第1基準設定部13、位置算出部14、送信部16、視線画像取得部31、第2オブジェクト検出部32、及び、第2基準設定部33が除かれる点において第1実施形態と異なる。また、第2実施形態では、3Dセンサ8のカメラ座標系に対応する3Dポインティング位置に基づいて処理される点において第1実施形態と異なる。
【0086】
第2実施形態によれば、ユーザは、センサ側装置10の表示部に表示される、向かい側から写された自身の映像を見ながら、その映像上の自身の特定部位を動かすことにより、その映像に写る仮想3Dオブジェクトを操作することができる。第2実施形態におけるセンサ側装置10は、ユーザの画像に替え、疑似的なユーザ画像を表示させるようにしてもよい。
【0087】
第2実施形態においても、特定ジェスチャの前後でのポインティング位置のずれは起こり、このずれを、変化終了時に対応する3Dポインティング位置と、保持される変化開始時に対応する3Dポインティング位置との差を用いた位置調節により解消することができる。
【0088】
[第3実施形態]
上述の第2実施形態では、ポインティング操作に用いられるユーザの特定部位の位置が、3次元座標系により特定されたが、2次元座標系により特定されるようにしてもよい(第3実施形態)。第3実施形態におけるセンサ側装置10は、3Dセンサ8に替え、2D画像の撮像装置、赤外線センサなどのような2Dセンサを有する。3D情報取得部11は、2D情報取得部に替えられ、2D情報取得部は、2Dセンサから得られる、ユーザの特定部位を特定し得る2D情報を取得する。これにより、位置算出部14が、ユーザの特定部位の2Dポインティング位置を逐次算出し、この2Dポインティング位置が当該特定部位の形状変化に伴って調節される。
【0089】
仮想データ生成部34は、2Dの仮想オブジェクトデータを生成すればよい。第3実施形態では、2D情報にユーザの特定部位の画像が含まれていなくてもよい。この場合には、センサ側装置10は、画像合成部37を有しなくてもよく、所定の処理が施された2Dの仮想オブジェクトデータを表示部に表示する。
【0090】
このような第3実施形態においても、特定ジェスチャの前後での2Dポインティング位置のずれは起こり得る。このずれを、変化終了時に対応する2Dポインティング位置と、保持される変化開始時に対応する2Dポインティング位置との差を用いた位置調節により解消することができる。
【0091】
[変形例]
上述の第1実施形態では、カメラ座標系から共通実オブジェクトに基づき設定される3D座標系へ変換された3Dポインティング位置が調節されたが、変換前のカメラ座標系の3Dポインティング位置が調節されてもよい。この場合には、調節された3Dポインティング位置が共通実オブジェクトに基づき設定される3D座標系へ変換される。この場合、
図10の工程(S106)は、工程(S104)の後、かつ、工程(S105)の前に実行される。
【0092】
また、上述の各実施形態における3Dポインティング位置又は2Dポインティング位置の調節は、更に、次のように実施されてもよい。例えば、変化検出部21が、変化開始の検出から変化終了の検出までの変化時間を計測し、位置保持部22が、計測された変化時間が所定閾値より大きい場合に、保持されるポインティング位置を解放し、位置調節部24が、位置保持部22によるポインティング位置の解放に応じて、ポインティング位置の調節を停止する。他の例として、位置保持部22は、算出部23により算出される当該差が所定閾値より大きい場合に、保持されるポインティング位置を解放し、位置調節部24は、位置保持部22によるポインティング位置の解放に応じて、ポインティング位置の調節を停止する。
【0093】
これにより、ユーザの特定部位における形状の変化開始から所定の形状への変化終了までに掛かる時間が通常時よりも長い場合、及び、ユーザの特定部位の位置が形状の変化開始から所定の形状への変化終了までの間に通常時よりも大きく動いた場合に、ポインティング位置の調節を行わなくすることができる。これにより、ユーザが、意図せず、自身の特定部位の形状を変化させた場合や、想定外の動作と共に当該特定部位の形状を変化させた場合等に、その動作をコンピュータの入力と認識しなくすることができる。従って、この変形例によれば、ユーザが意図しない動作でコンピュータが操作されることを防ぐことができるため、ユーザにとって、より直感的に分かり易いコンピュータ操作とすることができる。
【0094】
なお、上述の説明で用いた複数のフローチャートでは、複数の工程(処理)が順番に記載されているが、本実施形態で実行される工程の実行順序は、その記載の順番に制限されない。本実施形態では、図示される工程の順番を内容的に支障のない範囲で変更することができる。また、上述の各実施形態及び各変形例は、内容が相反しない範囲で組み合わせることができる。
【0095】
上記の各実施形態及び各変形例の一部又は全部は、以下の付記のようにも特定され得る。但し、各実施形態及び各変形例が以下の記載に限定されるものではない。
【0096】
(付記1)
ポインティング操作に用いられるユーザの特定部位の少なくとも1つの代表的な位置を示すポインティング位置を逐次取得する位置取得部と、
前記ユーザの前記特定部位の所定形状への変化開始及び変化終了を検出する変化検出部と、
前記位置取得部により逐次取得されるポインティング位置のうち、前記変化検出部により検出される前記変化開始時に対応するポインティング位置を保持する位置保持部と、
前記位置取得部により取得されるポインティング位置のうち、前記変化検出部により検出される前記変化終了時に対応するポインティング位置を特定し、該特定されたポインティング位置と前記位置保持部で保持されるポインティング位置との差を算出する算出部と、
前記算出部で算出される差を用いて、前記位置取得部により取得されるポインティング位置を調節する位置調節部と、
を備えるユーザインタフェース装置。
【0097】
(付記2)
前記変化検出部は、前記ユーザの前記特定部位の形状の、前記所定形状から回復方向への回復変化を検出し、
前記位置保持部は、前記変化検出部による前記回復変化の検出に応じて、保持されるポインティング位置を解放し、
前記位置調節部は、前記位置保持部によるポインティング位置の解放に応じて、前記位置取得部で取得されるポインティング位置の調節を停止する、
付記1に記載のユーザインタフェース装置。
【0098】
(付記3)
前記変化検出部は、前記変化開始の検出から前記変化終了の検出までの変化時間を計測し、
前記位置保持部は、前記変化時間が所定閾値より大きい場合に、保持されるポインティング位置を解放し、
前記位置調節部は、前記位置保持部によるポインティング位置の解放に応じて、前記位置取得部で取得されるポインティング位置の調節を停止する、
付記1又は2に記載のユーザインタフェース装置。
【0099】
(付記4)
前記位置保持部は、前記算出部により算出される前記差が所定閾値より大きい場合に、保持されるポインティング位置を解放し、
前記位置調節部は、前記位置保持部によるポインティング位置の解放に応じて、前記位置取得部で取得されるポインティング位置の調節を停止する、
付記1から3のいずれか1つに記載のユーザインタフェース装置。
【0100】
(付記5)
少なくとも1つのコンピュータにより実行されるユーザインタフェース方法において、
ポインティング操作に用いられるユーザの特定部位の少なくとも1つの代表的な位置を示すポインティング位置を逐次取得し、
前記ユーザの前記特定部位の所定形状への変化開始及び変化終了を検出し、
前記逐次取得されるポインティング位置のうち、前記検出される変化開始時に対応するポインティング位置を保持し、
前記取得されるポインティング位置のうち、前記検出される変化終了時に対応するポインティング位置を特定し、
前記特定されたポインティング位置と前記保持されるポインティング位置との差を算出し、
前記算出される差を用いて、前記取得されるポインティング位置を調節する、
ことを含むユーザインタフェース方法。
【0101】
(付記6)
前記ユーザの前記特定部位の形状の、前記所定形状から回復方向への回復変化を検出し、
前記変化検出部による前記回復変化の検出に応じて、保持されるポインティング位置を解放し、
前記ポインティング位置の解放に応じて、前記ポインティング位置の調節を停止する、
ことを更に含む付記5に記載のユーザインタフェース方法。
【0102】
(付記7)
前記変化開始の検出から前記変化終了の検出までの変化時間を計測し、
前記変化時間が所定閾値より大きい場合に、保持されるポインティング位置を解放し、
前記ポインティング位置の解放に応じて、前記取得されるポインティング位置の調節を停止する、
ことを更に含む付記5又は6に記載のユーザインタフェース方法。
【0103】
(付記8)
前記算出される差が所定閾値より大きい場合に、保持されるポインティング位置を解放し、
前記ポインティング位置の解放に応じて、前記取得されるポインティング位置の調節を停止する、
ことを更に含む付記5から7のいずれか1つに記載のユーザインタフェース方法。
【0104】
(付記9)
少なくとも1つのコンピュータにユーザインタフェース方法を実行させるプログラムにおいて、
前記ユーザインタフェース方法は、
ポインティング操作に用いられるユーザの特定部位の少なくとも1つの代表的な位置を示すポインティング位置を逐次取得し、
前記ユーザの前記特定部位の所定形状への変化開始及び変化終了を検出し、
前記逐次取得されるポインティング位置のうち、前記検出される変化開始時に対応するポインティング位置を保持し、
前記取得されるポインティング位置のうち、前記検出される変化終了時に対応するポインティング位置を特定し、
前記特定されたポインティング位置と前記保持されるポインティング位置との差を算出し、
前記算出される差を用いて、前記取得されるポインティング位置を調節する、
ことを含むプログラム。
【0105】
(付記10)
前記ユーザインタフェース方法は、
前記ユーザの前記特定部位の形状の、前記所定形状から回復方向への回復変化を検出し、
前記変化検出部による前記回復変化の検出に応じて、保持されるポインティング位置を解放し、
前記ポインティング位置の解放に応じて、前記ポインティング位置の調節を停止する、
ことを更に含む付記9に記載のプログラム。
【0106】
(付記11)
前記ユーザインタフェース方法は、
前記変化開始の検出から前記変化終了の検出までの変化時間を計測し、
前記変化時間が所定閾値より大きい場合に、保持されるポインティング位置を解放し、
前記ポインティング位置の解放に応じて、前記取得されるポインティング位置の調節を停止する、
ことを更に含む付記9又は10に記載のプログラム。
【0107】
(付記12)
前記ユーザインタフェース方法は、
前記算出される差が所定閾値より大きい場合に、保持されるポインティング位置を解放し、
前記ポインティング位置の解放に応じて、前記取得されるポインティング位置の調節を停止する、
ことを更に含む付記9から11のいずれか1つに記載のプログラム。
【0108】
(付記13)
付記9から12のいずれか1つに記載のプログラムを記録したコンピュータが読み取り可能な記録媒体。
【0109】
この出願は、2012年10月5日に出願された日本特許出願特願2012−222884を基礎とする優先権を主張し、その開示の全てをここに取り込む。