以下、図面を参照しながら、本発明に係る実施形態について説明する。本発明の一実施形態に係る仮想3次元物体処理システムは、現実空間上における手指の動作を認識及び解析して得た各種制御パラメータを用いて、仮想空間上の3次元物体を制御するものである。
<ハードウェア構成>
図1は、一実施形態に係る仮想3次元物体処理システム1のハードウェア構成図である。仮想3次元物体処理システム1は、例えば、CPU(Central Processing Unit)10と、ドライブ装置11と、補助記憶装置13と、メモリ装置14と、インターフェース装置20と、入力装置21と、ディスプレイ装置22と、画像入力インターフェース23と、深度センサ30とを備える。これらの構成要素は、バスやシリアル回線等を介して互いに接続される。
CPU10は、例えば、プログラムカウンタ、命令デコーダ、各種演算器、LSU(Load Store Unit)、汎用レジスタ等を有する演算処理装置で構成される。
ドライブ装置11は、その内部に装着された記憶媒体12からプログラムやデータなどを読み込む装置である。なお、本実施形態では、記憶媒体12は、例えば、CD(Compact Disc)、DVD(Digital Versatile Disc)、USB(Universal Serial Bus)メモリ等の可搬型の記憶媒体である。また、補助記憶装置13は、例えば、HDD(Hard Disk Drive)やフラッシュメモリなどで構成される。
本実施形態において、プログラムが記録された記憶媒体12がドライブ装置11に装着された場合には、該プログラムは、記憶媒体12からドライブ装置11を介して補助記憶装置13にインストールされる。なお、プログラムのインストール手法は、この例に限定されない。例えば、インターフェース装置20が、ネットワークを介して他のコンピュータからプログラムをダウンロードし、該ダウンロードしたプログラムを補助記憶装置13にインストールしてもよい。なお、ネットワークは、インターネット、LAN(Local Area Network)、無線ネットワーク等で構成される。また、例えば、プログラムが、仮想3次元物体処理システム1の出荷時に、補助記憶装置13や図示しないROM(Read Only Memory)等に予め格納(実装)されていてもよい。
上述のようにしてインストールされた各種プログラム、又は、予め格納された各種プログラムをCPU10が実行することにより、本実施形態の仮想3次元物体処理システム1における後述の各種機能(各種処理)が実現される。
メモリ装置14は、例えば、RAM(Random Access Memory)やEEPROM(Electrically Erasable and Programmable Read Only Memory)などの記憶装置で構成される。インターフェース装置20は、上述した各種ネットワーク等に接続され、該ネットワークを介して、外部の各種装置に対して所定のデータやプログラムなどの入出力動作を行う。
入力装置21は、例えば、キーボード、マウス、ボタン、タッチパッド、タッチパネル、マイク等の各種入力操作装置で構成される。ディスプレイ装置22は、例えば、LCD(Liquid Crystal Display)やCRT(Cathode Ray Tube)等の表示装置で構成される。なお、仮想3次元物体処理システム1は、ディスプレイ装置22以外では、例えば、プリンタ、スピーカ等の各種出力装置を備えていてもよい。
画像入力インターフェース23は、深度センサ30に接続される。そして、画像入力インターフェース23は、深度センサ30から入力された距離画像を、メモリ装置14や補助記憶装置13に出力する。
深度センサ30は、物体の距離画像を撮影するセンサカメラである。距離画像とは、物体の深度情報(高さの情報)を2次元上に画像化した画像である。深度の計測方式としては、例えば、TOF(Time-Of-Flight)方式を用いることができる。TOF方式とは、センサから照射した赤外線が物体表面に反射されてセンサに戻ってくるまでの時間の長さから、センサから物体までの距離、すなわち物体の深度を算出する方式である。なお、深度の計測方式としては、TOF方式に限定されるものではなく、例えば、パターン照射方式等の他の方式を用いてもよい。深度センサ30は、撮影した物体の距離画像を、画像入力インターフェース23に出力する。
深度センサ30には、例えば、SoftKinetic社のDepthSense(登録商標)325等を使用することができる。DepthSense325は、320×240ピクセルの深度解像度を有し、最大60fps(frames per second)で距離画像の撮影を行えるセンサカメラである。
<機能構成>
図2は、本実施形態の仮想3次元物体処理システム1の機能構成図である。仮想3次元物体処理システム1は、CPU10がプログラムを実行することにより機能する機能ブロックとして、手指動作検出装置部40と、仮想物体操作部50(仮想物体処理部)とを備える。手指動作検出装置部40は、画像取得部41と、フィルタ処理部42と、内部領域抽出部43と、つまみ動作検出部44(手指形状検出部)と、特徴点抽出部45と、パラメータ算出部46(手指動作検出部)とを含む。これらの各機能ブロックは、例えばメモリ装置14に対して各種情報(データ)を入出力する。そして、メモリ装置14は、各機能ブロックから出力された各種情報を記憶する。
これらの機能ブロックは、ソフトウェアで構成することができる。この場合、各機能ブロックは、互いに明確に分離したプログラムによって実現されるブロックであってもよいし、例えば、サブルーチンや関数などのように、他のプログラムによって呼び出されるプログラムにより実現されるブロックであってもよい。また、これらの機能ブロックの一部又は全てが、例えば、LSI(Large Scale Integrated circuit)、IC(Integrated Circuit)、FPGA(Field Programmable Gate Array)等のハードウェアで構成されていてもよい。
<仮想3次元物体処理手法>
[仮想3次元物体処理手法の概要]
次に、本実施形態における仮想3次元物体処理手法の内容を説明する。
本実施形態における仮想3次元物体処理手法では、まず、手指動作検出装置部40が、手指によるつまみ動作を検出し、該検出により得られた情報に基づいて、仮想3次元物体操作制御用の各種制御パラメータを検出する。続いて、仮想物体操作部50が、手指動作検出装置部40により検出された各種制御パラメータに基づいて、仮想3次元物体に所定の処理を施す。なお、本実施形態における「つまみ動作」とは、例えば親指と人差し指等の、少なくとも2本の指の指先同士を接触させる動作を指す。
[手指動作検出手法の概要]
本実施形態の手指動作検出手法では、まず、深度センサ30で得られた手指の深度分布情報を含む距離画像から、手指によるつまみ動作を検出する。次に、つまみ動作を行っている手指の指先の3次元空間上の位置、及び、つまみ動作を行っている手指の姿勢を推定する。この指先の3次元空間上の位置、及び、つまみ動作を行っている手指の姿勢の情報は、仮想3次元物体操作制御用のパラメータとして使用される。
また、本実施形態の手指動作検出取得手法では、つまみ動作の検出情報を用いて、つまみ動作によって指先同士が接触している状態と、つまみ動作が行われておらず指先同士が接触していない状態とを検出する。そして、この2つの状態間の遷移を検出して、検出した結果をトリガ入力パラメータとする。トリガ入力パラメータとは、仮想空間上の仮想物体に対して所定の作用を与える(所定の処理を施す)か否かを決定するためのパラメータである。
本実施形態の手指動作検出手法の具体的な内容を説明する前に、ここで、前述した「指先の3次元空間上の位置」と「手指の姿勢」の定義を簡単に説明する。本実施形態では、つまみ動作を行っている手指における指先の位置として、空間座標系(カメラ座標系)における、指先同士の接触位置を採用する。
指先の接触位置及び手指の姿勢を規定する空間座標系を、図3に示す。図3に示した座標系において四角錐で囲まれた領域は、深度センサ30(図1参照)の撮影範囲である。四角錐の頂点は深度センサ30の焦点位置に対応する。図3中の略四角形の平面Paは、つまみ動作を行っている人差し指及び親指により形成される手指領域As(図3中の斜線のハッチング領域)の近似平面である。本実施形態では、近似平面Pa上における、指先同士(図3に示した例では親指及び人差し指)の接触位置に対応する特徴点P(以下、「接触点P」(第1の特徴点)という)を、「指先の3次元空間上の位置」と規定する。
また、本実施形態では、近似平面Paにおいて、つまみ動作により手指領域Asの内側に形成される内部領域の凸包領域Acの重心に対応する特徴点O(以下、「重心O」(第3の特徴点)という)から、指先の接触点Pに向かう方向の3次元ベクトルを「第1の姿勢ベクトルVd」として抽出する。さらに、接触点Pにおける近似平面Paの法線ベクトル(近似平面に関する情報)を「第2の姿勢ベクトルVn」として抽出する。そして、第1の姿勢ベクトルVd及び第2の姿勢ベクトルVnを、手指の姿勢を示すパラメータとして採用する。上述した各種パラメータの算出方法については後述する。
[手指動作検出手法の詳細]
次に、本実施形態の手指動作検出手法の具体的な内容について説明する。本実施形態の手指動作検出手法は、図2に示した手指動作検出装置部40を構成する各部によって実行される。よって、手指動作検出装置部40の各部で行われる処理を順に説明することにより、手指動作検出手法の具体的な内容を説明する。
(画像取得部の処理)
画像取得部41は、深度センサ30(図1参照)から出力された深度情報を含む距離画像を取得する。深度センサ30から出力される深度情報には、深度センサ30によって撮影された手指の形状に対応する深度分布情報が含まれる。
(フィルタ処理部の処理)
フィルタ処理部42は、深度センサ30から出力された距離画像に所定のフィルタ処理を施して、距離画像に含まれるノイズを除去する。本実施形態では、フィルタ処理部42は、メディアンフィルタ及びガウシアンフィルタの2つのフィルタを使ってフィルタ処理を行う。メディアンフィルタは、距離画像において局所的に存在するショットノイズを除去する目的で使用し、ガウシアンフィルタは、距離画像全体を平滑化する目的で使用する。このフィルタ処理では、メディアンフィルタ及びガウシアンフィルタが、この順に使用される。
図4Aは、フィルタ処理前の距離画像における深度情報の分布を示す図であり、図4Bは、フィルタ処理後の距離画像における深度情報の分布を示す図である。図4A及び図4Bから明らかなように、このフィルタ処理部42のフィルタ処理により、深度情報に含まれるノイズが除去され、手指の領域がより認識されやすくなっていることが分かる。
なお、フィルタ処理部42で使用するフィルタは、上記例に限定されない。ショットノイズの除去を目的とするフィルタとしては、メディアンフィルタに限定されず、同様の効果が得られるフィルタであれば、任意のフィルタを用いることができる。また、画像全体の平滑化を目的とするフィルタとしては、ガウシアンフィルタに限定されず、平滑化を行えるフィルタであれば、任意のフィルタ(例えば、ブラーフィルタ、バイラテラルフィルタ等)を用いることができる。また、本実施形態では、必ずしも2種類のフィルタを用いる必要はなく、少なくとも平滑化を目的とするフィルタを用いればよい。
(内部領域抽出部の処理)
内部領域抽出部43は、フィルタ処理部42によってフィルタ処理が施された距離画像から、つまみ動作により生成される内部領域Ai(後述の図7参照)を抽出する。内部領域抽出部43は、内部領域Aiの抽出を行う際に、まず、距離画像から手指の輪郭に対応する領域を抽出する処理を行う。手指の輪郭に対応する領域の抽出は、距離画像を構成する各画素における、隣接画素に対する深度の勾配情報(深度の差に関する情報)を用いて行う。
距離画像の各画素における勾配情報は、例えばScharrフィルタを用いることにより取得できる。なお、勾配情報の取得に用いるフィルタとしては、Scharrフィルタに限定されず、勾配情報を取得可能なフィルタであれば、任意のフィルタを用いることができ、例えば、Sobelフィルタ、Prewitフィルタ、Robertsフィルタ等のフィルタを用いることができる。
内部領域抽出部43は、まず、例えば3×3画素のサイズを有するScharrフィルタを用いて、距離画像の各画素におけるx方向及びy方向の勾配を検出する。そして、内部領域抽出部43は、x方向及びy方向において得られた各勾配の2乗和の平方根を算出し、該算出した値を対象画素の勾配値gradとする。勾配値gradは、以下の式(1)で示すことができる。なお、式(1)中の「gradx」はx方向の勾配であり、「grady」はy方向の勾配である。
距離画像全体において勾配値gradの値が大きい画素のみを抽出することで、手の輪郭に対応する領域である「勾配領域」を抽出することができる。この勾配領域の抽出は、例えば、各画素の勾配値gradを、所定の閾値を用いて2値化することにより行うことができる。
図5Aは、x方向の勾配gradxの値の分布を示す画像であり、図5Bは、y方向の勾配gradyの値の分布を示す画像である。図5Cは、勾配値gradの値の分布を示す画像であり、図5Dは、勾配領域Agとして抽出された領域を示す画像である。内部領域抽出部43が勾配値gradの2値化を行う際に用いる閾値として適切な値を設定することにより、図5Dに示すように、手の輪郭に対応する領域に、所定の幅を有する白い線状領域が抽出され、この領域が勾配領域Agとなる。
勾配領域Agとして抽出される線状領域の幅(大きさ)は、勾配値gradの閾値を変えることにより変化させることができる。図6A〜図6Fに、閾値を変化させた場合における、勾配領域Agとして抽出される線状領域の幅(大きさ)の変化例を示す。図6Aは、手指の原画像であり、図6B〜図6Fは、勾配領域Agを抽出した後の各種画像である。
図6Bに示した画像は、最も小さい勾配値gradの閾値を用いて勾配領域Agを抽出した画像であり、図6Fに示した画像は、最も大きな閾値を用いて勾配領域Agを抽出した画像である。また、図6Bから図6Fに向かって、勾配値gradの閾値が大きくなる。図6B〜図6Fに示されるように、閾値を小さくするほど抽出される勾配領域Agの面積は大きくなり、閾値を大きくするほど抽出される勾配領域Agの面積は小さくなる。
内部領域抽出部43は、上述のようにして抽出された勾配領域Agから内部領域Aiを抽出する。内部領域Aiは、手指のつまみ動作によって形成される。図7Aは、つまみ動作が行われていない状態において抽出される勾配領域Agを示し、図7Bは、つまみ動作が行われた状態において抽出される勾配領域Agを示す。図7Bに示すようにつまみ動作が行われた場合は、勾配領域Agが、手の外側の輪郭部分に対応する大きな面積を有する領域と、親指及び人差し指によって周囲を囲われた内側の輪郭部分に対応する面積の小さい領域とに分離される。内部領域抽出部43は、図7Cに示すように、つまみ動作により発生したこの面積の小さい領域を、内部領域Ai(斜線ハッチング部分参照)として抽出する。図7Dは、図7Cの画像から内部領域Aiのみを抽出した画像である。
(つまみ動作検出部)
つまみ動作検出部44は、内部領域抽出部43が抽出した内部領域Aiの面積の時間方向における増減の情報、及び増減の連続性の情報に基づいて、つまみ動作の有無を検出する。つまみ動作検出部44は、内部領域Ai内の画素数をカウントする処理を毎フレーム行い、カウントされた画素数を、現フレームと前フレームとで比較する処理を行う。つまみ動作検出部44は、内部領域Aiとしてカウントされた画素数が、前フレームのそれに対して一定数以上増えている場合には、つまみ動作が行われたと判断する。そして、つまみ動作検出部44は、つまみ動作検出時の手指の形状を、第1の形状として検出する。
逆に、内部領域Aiとしてカウントされた画素数が、前フレームのそれに対して一定数以上減った場合には、つまみ動作検出部44は、つまみ動作が解除されたと判断する。また、現フレームで最大の内部領域Aiとしてカウントされた画素数が一定値以下である場合、例えば、勾配領域Ag中に、つまみ動作以外の要因により分離された小さな面積の勾配領域が存在する場合には、つまみ動作検出部44は、つまみ動作は行われていないと判断する。そして、つまみ動作検出部44は、つまみ動作が解除された場合の手指の形状、又はつまみ動作が行われていない手指の形状を、第2の形状として検出する。
図8A〜図8Cは、つまみ動作が行われた状態において抽出された内部領域Aiの例を示す図である。図8A〜図8Cにおいて、内部領域Aiは斜線でハッチングされた部分である。上述した手法を用いて、内部領域抽出部43が内部領域Aiを抽出することにより、図8Aに示すように、親指と人差し指とにより形成される内部領域Aiの面が、深度センサ30のXY平面(不図示)に対して略平行である場合だけでなく、図8Bに示すように斜めに傾いている場合や、図8Cに示すように内部領域Aiがループ状の領域で表されない場合であっても、つまみ動作検出部44は、つまみ動作の有無を適切に判定することができる。
(特徴点抽出部及びパラメータ算出部の処理<つまみ動作検出時>)
特徴点抽出部45は、指先の接触点Pの3次元空間上の位置及び手指の姿勢を検出するために必要な、手指の特徴点を抽出する。手指の特徴点は、内部領域Ai周辺の手指領域Asを構成する複数の画素からなる点群を平面に近似することにより生成された、近似平面Pa上の点として取得される。
特徴点抽出部45は、手指領域Asの近似平面Paを算出する際、最初に、距離画像から手指領域Asを抽出する処理を行う。手指領域Asとして抽出したい領域は、つまみ動作によって接触した指先同士を含む手指の領域、すなわち、つまみ動作に関与する2本の指により形成される手指領域であり、この領域は、内部領域Aiの外周周辺に存在する。
特徴点抽出部45は、手指領域Asの抽出を行う際、まず、内部領域Aiの全領域を包含する凸包領域Acを抽出する。図9Aは、手指の輪郭に相当する勾配領域Agを示す図であり、図9Bは、図9Aに示した画像から内部領域Aiのみを抽出した図である。図9Cは、内部領域Aiを包含する凸包領域Acを示す図である。図9Bに示す例では、内部領域Aiとしては、つまみ動作によって接触した親指と人差し指との内側の領域、並びに、接触している親指及び人差し指の向こう側(奥側)に位置する手の腹の輪郭部分に相当する領域が抽出されている。それゆえ、図9Bに示した内部領域Aiは、略三角形の辺に沿って延在したループ状の勾配領域と、該三角形の2つの角部からそれぞれ外側に伸びる2本の線状の勾配領域とで構成される。特徴点抽出部45は、この内部領域Aiに対応する凸包を求めることにより、図9Cに示すような、内部領域Aiのすべての領域を包含する凸包領域Acを生成する。
続いて、特徴点抽出部45は、凸包領域Acに所定の膨張処理を施して、膨張凸包領域Aeを生成する。図9Dに、膨張凸包領域Aeを示す。膨張処理とは、凸包領域Acの形状を保ったまま、凸包領域Acの面積を所定の割合だけ外側の方向に拡大させる処理である。この膨張処理は、内部領域Aiの周辺に存在する手指の領域を抽出する目的で行う。この膨張処理では、手指の外側の輪郭部分に対応する勾配領域Agの一部(図9A参照)と、膨張凸包領域Aeの外周部の一部(図9D参照)とが重なるように、凸包領域Acの膨張比率が設定される。
続いて、特徴点抽出部45は、膨張凸包領域Aeから凸包領域Acを差し引くことにより、差分領域Adを求める。図10Aは、差分領域Adを示す図である。特徴点抽出部45は、この差分領域Adから、勾配領域Agと重複する部分をさらに差し引くことにより、手指領域Asを求める。なお、差分領域Ad及び勾配領域Agとの論理積を求めることによっても、手指領域Asを求めることができる。図10Bに、手指領域As(斜線のハッチング部分)を示す。
図9Dに示した膨張凸包領域Aeは、距離画像内の指の太さ、及び/又は膨張処理時の膨張の比率によっては、膨張凸包領域Aeの外周部が、勾配領域Agの外側の領域にまで達する場合もある。上述のように、膨張凸包領域Aeから、凸包領域Acだけでなく勾配領域Agも減算することにより、膨張凸包領域Aeとして手指の外側の領域にまで達する領域が抽出されてしまった場合にも、実際の手指に対応する部分のみを手指領域Asとして抽出することが可能となる。
図10Cは、図9Aに示した勾配領域Agと、図9Bに示した内部領域Aiと、図10Bに示した手指領域Asとを、すべて重ねて示した図である。上述した手順に従って特徴点抽出部45が手指領域Asを算出することにより、図10Cに示したように、手指領域Asとして、内部領域Aiを囲う位置に存在する、親指及び人差し指により構成される手指の領域が抽出される。
特徴点抽出部45は、手指領域Asを抽出した後、手指領域Asを空間座標系の平面に近似する処理を行う。手指領域Asを構成する各画素は、それぞれ3次元座標を持つ。したがって、手指領域Asを構成するすべての画素の3次元座標に対して、最小二乗法を用いた重回帰分析を行うことにより、点群(画素の群)からなる手指領域Asを、平面に近似することができる。手指領域Asを近似した平面である近似平面Paは、以下の式(2)で表すことができる。なお、下記式(2)中の「a」及び「b」は近似平面Paの法線ベクトルに関する係数であり、「c」は定数である。
特徴点抽出部45は、続いて、手指の姿勢を求めるために必要となる手指の特徴点を距離画像上から抽出し、抽出した各特徴点を近似平面Pa上に投影することにより、近似平面Paにおける各特徴点の3次元座標を求める。手指の特徴点として、特徴点抽出部45は、まず距離画像における凸包領域Acの重心O′を算出する。図11Aは、勾配領域Agに凸包領域Acを重ねて示した図であり、図11Bは、凸包領域Ac及びその重心O′を示す図である。
図11Cは、重心O′を近似平面Paに投影した状態を示す図である。重心O′を近似平面Paに投影した点が、上述した近似平面Pa上における重心Oとなる。図11C中の四角錐で囲まれた範囲は、深度センサ30の撮影範囲である。四角錐の頂点が深度センサ30の焦点と対応しており、この位置を原点((x,y,z)=(0,0,0))として3次元空間が形成される。手指領域Asを近似した近似平面Paも、この3次元空間上に位置するものであるため、近似平面Pa上の特徴点の一つである重心Oの座標も、四角錐の頂点を原点とする3次元の座標によって表現される。
続いて、特徴点抽出部45は、手首領域を構成する点群を抽出する。手首領域を構成する点群を抽出する際、特徴点抽出部45は、まず、距離画像において勾配領域Agに属さない領域であり、かつ深度が所定の値以内である領域を、手領域Afとして抽出する。図12Aは、特徴点抽出部45によって抽出された手領域Afを示す図である。図12Aでは、白抜きの領域が手領域Afであり、斜線のハッチング領域が勾配領域Agである。
続いて、特徴点抽出部45は、3次元空間上に、重心Oを中心とした手指を覆うような所定半径の球Blを定義する。なお、球Blの半径は、重心Oから手首領域付近までの距離に設定される。図12Bに、重心Oと、手領域Af及び球Blとの関係を示す。特徴点抽出部45は、手領域Afと、球Blの境界(表面)との交差領域(点群)を、手首領域Awとして抽出する。
さらに、特徴点抽出部45は、手首領域Awを構成する画素群を距離画像上から抽出し、該抽出された手首領域Awの重心N′を求め、求めた重心N′を近似平面Paに投影する。この処理を行うことにより、近似平面Paにおける特徴点の一つである、手首の重心Nが求まる。図12Cは、距離画像における手首領域Awを示す図であり、図12Dは、距離画像から抽出された手首領域Awの重心N′を示す図である。図13は、近似平面Pa上の特徴点である、重心O及び手首の重心Nを示す図である。なお、ここでは手首領域Awの重心N′をいったん距離画像から抽出された2次元画像上で算出し、該算出した重心N′を近似平面Pa(3次元座標上)に投影して重心Nを求める例を説明したが、本発明はこれに限定されない。手首の重心Nを、直接3次元座標上で求めるようにしてもよい。
続いて、特徴点抽出部45は、図14に示すように、近似平面Paにおいて重心Oと重心Nとを結ぶ線分ONを対角線とする正方形Qを求め、その正方形Qを構成する4つの頂点のうち、重心O及び重心N以外の頂点であり、かつ手の甲側の頂点を、基準点Dとして抽出する。図14は、重心O、重心N及び基準点Dの位置関係を簡略的に示した図である。
特徴点抽出部45は、さらに、距離画像上において内部領域Aiを構成している画素であり、かつ、基準点Dから最も遠い位置に存在する点を算出し、その点を近似平面Pa上に投影した点を、指先の接触点Pとして抽出する。図14には、基準点Dを中心とし、指先の接触点Pを通る円Cを破線によって示している。
パラメータ算出部46は、特徴点抽出部45で抽出された各特徴点の情報を用いて、仮想物体の操作制御に必要な各種制御パラメータを算出する。本実施形態では、パラメータ算出部46は、各種制御パラメータとして、つまみ動作における指先の接触位置の3次元座標、手指の姿勢を示す姿勢ベクトル、及びつまみ動作が行われたか否かを示すパラメータ(トリガ入力パラメータ)を算出する。
パラメータ算出部46は、指先の接触位置の3次元座標として、特徴点抽出部45が算出した指先の接触点P(図14参照)の3次元座標を求める。手指の姿勢を示す姿勢ベクトルとしては、第1の姿勢ベクトルVd及び第2の姿勢ベクトルVnを求める。第1の姿勢ベクトルVdとは、近似平面Paの面内方向のベクトルであり、図14に示すように、指先の接触点Pにおいて重心Oから接触点Pに向かう方向(線分Ln1の延在方向)の3次元ベクトルである。第2の姿勢ベクトルVnとは、近似平面Paの法線ベクトルである。
図15に、第1の姿勢ベクトルVd及び第2の姿勢ベクトルVnの算出例を示す。本実施形態では、第1の姿勢ベクトルVdによって、近似平面Paの面内方向における手指の回転方向及び回転量が表される。また、第2の姿勢ベクトルVnによって、基準となる平面に対する近似平面Pa(手指)の傾き方向及び傾き量が表される。基準となる平面とは、例えば、カメラ座標系におけるXY平面である。パラメータ算出部46によって算出された第1の姿勢ベクトルVd及び第2の姿勢ベクトルVnにより、近似平面Paに近似された手指領域Asの3次元空間における姿勢が取得される。
上述した特徴点抽出部45での処理を、つまみ動作検出部44によってつまみ動作が検出されている間中、距離画像が入力される度に(毎フレーム)行うことにより、近似平面Paが実際の手指の動きに追従して生成される。その結果、つまみ動作が検出されている間は、パラメータ算出部46によって、指先の接触点P、第1の姿勢ベクトルVd及び第2の姿勢ベクトルVnが、ほぼリアルタイムで取得される。
また、パラメータ算出部46は、つまみ動作検出部44によってつまみ動作が検出された時には、トリガをオンにするトリガ入力パラメータを出力し、つまみ動作が検出されなかった時には、トリガをオフにするトリガ入力パラメータを出力する。トリガをオンにするトリガ入力パラメータとは、例えば、マウスを入力インターフェースとして使用した場合における、クリック、ドラッグアンドドロップ操作の検出時に出力されるパラメータに対応するパラメータである。トリガをオフにするトリガ入力パラメータとは、これらのマウスの操作が解除された際に出力されるパラメータに対応するパラメータである。本実施形態では、トリガを、つまみ動作による仮想3次元物体への操作の有効/無効を切り替えるためのフラグとして使用する。また、パラメータ算出部46は、トリガ入力パラメータ以外に、上述のようにして算出した指先の接触点Pの3次元位置と、手指の姿勢を示す第1の姿勢ベクトルVd及び第2の姿勢ベクトルVnとを、制御パラメータとして出力する。
指先の接触点Pの位置ベクトルをp、第1の姿勢ベクトルVdをd、第2の姿勢ベクトルVnをnと置くと、これらのベクトルは3次元ベクトルであるため、以下の式(3)〜(5)によって表すことができる。
p=(px,py,pz)…(3)
d=(dx,dy,dz)…(4)
n=(nx,ny,nz)…(5)
また、上記式(5)におけるnx,ny,nzは、以下の式(6)〜(8)によって表すことができる。
なお、本実施形態では、3次元空間における指先の接触位置及び手指の姿勢を示すパラメータとして、上記3つの3次元ベクトルを取得する例を挙げたが、本発明はこれに限定されない。求めた3次元ベクトルをオイラー角、クオータニオン等の別のパラメータに変換してもよいし、3次元ベクトルを求めずに、直接これらのパラメータを算出するようにしてもよい。
(特徴点抽出部及びパラメータ算出部の処理<つまみ動作非検出時>)
次に、つまみ動作非検出時における特徴点抽出処理及びパラメータ算出処理について、図16〜図22を参照して説明する。つまみ動作非検出時には、手指によって閉領域が形成されないため、内部領域抽出部43により内部領域Aiが抽出されない。したがって、特徴点抽出部45は、距離画像から検出された手指の形状の情報に基づいて、内部領域Aiに相当する擬似内部領域Ai′を抽出し、この擬似内部領域Ai′の情報を用いて手指の位置及び姿勢を検出する。
特徴点抽出部45は、擬似内部領域Ai′を求めるために、まず、距離画像より手の指先の領域を抽出する。距離画像上における手の指先の領域は、手領域内の端点あるいは極値点にあたる領域である。そのような領域に位置する画素は、周辺の画素との深度差が大きくなっていると考えられる。そこで、特徴点抽出部45は、以下に示す手順によって距離画像上の各画素とその周辺の画素との深度差を評価し、その評価値に基づいて指先の領域を抽出する。
特徴点抽出部45は、深度差の評価値の算出する際、まず、距離画像において所定の注目画素Piを抽出する。注目画素Piの抽出は、距離画像を構成するすべての画素を対象として行う。続いて、特徴点抽出部45は、注目画素Piを起点とし、該起点から放射状に伸びた32種類の方向(方位)を設定する。なお、32種類の方向は、注目画素Piを中心とする回転方向において、略等間隔の角度で配置される。そして、各方向上に存在する画素のうち、注目画素Piから所定の距離の範囲内に存在する画素を、注目画素Piとの深度差の評価値の算出に用いる画素(以下、「比較画素」という)と定める。特徴点抽出部45は、32の方向のそれぞれにおいて、注目画素Piの深度と、該方向上に位置する各比較画素の深度とを比較する処理を行う。
図16Aは、注目画素Piを中心とする32の方向のうちの、第1の方向に存在する比較画素を示した図であり、図16Bは、時計回りの方向で第1の方向の隣に設定された第2の方向に存在する比較画素を示した図である。図16Cは、時計回りの方向で第2の方向の隣に設定された第3の方向に存在する比較画素を示した図であり、図16Dは、時計回りの方向で第3の方向の隣に設定された第4の方向に存在する比較画素を示した図である。図16A〜図16Dにおいて、比較画素は、斜線のハッチングされた四角印及び黒塗りの四角印で示される。特徴点抽出部45は、図16A〜図16Dに示すように、深度の比較処理を行う方向を時計回り方向に一つずつ順にずらしながら、32のすべての方向において、注目画素Pi及び比較画素間の深度差を評価する。
なお、図16B〜図16Dに示した第2〜第4の方向においては、比較画素の配置形態が階段状になり、直線にはならない。これらの方向においては、評価用に使用する比較画素として、注目画素Piと、注目画素Piから所定の距離離れた比較画素との間に引かれた仮想直線(不図示)になるべく近い位置に配置された画素が、選択されることが好ましい。なお、仮想直線になるべく近い位置に配置された画素が比較画素として選択される方法であれば、画素の選択方法はどのような方法であってもよい。
特徴点抽出部45は、一つの方向の線分内に存在する複数の比較画素の中に、注目画素Piとの深度差が一定の範囲以上である比較画素が一つでも存在する場合には、注目画素Piは、その方向に対して孤立しているとみなす。一方、一つの方向の線分内に存在するすべての比較画素と注目画素Piとの深度差が一定の範囲以内である場合には、注目画素Piの深度とその方向上に存在する比較画素の深度とが、なだらかに連続しているとみなす。特徴点抽出部45は、この評価の結果を、周囲の画素に対する注目画素Piの孤立度を示す32段階の指数を用いて定量化する。より具体的には、特徴点抽出部45は、32方向のうちの、注目画素Piが孤立しているとみなされる方向の数を、注目画素Piの「孤立度」とする。
図17Aは、特定の一本の指が空間上に単独で存在する場合の画像例を示し、図17Bは、図17Aに示した指先上に設定された注目画素Piの孤立度の評価例を示す。図17Bにおいて、注目画素Piが周囲の比較画素に対して孤立していると判断された領域は破線で示し、注目画素Piの深度と周囲の比較画素の深度とがなだらかに連続していると判断された領域は、実線で示す。図17Bに示す例では、破線の領域を含む線分の数、すなわち、注目画素Piが周囲の比較画素に対して孤立していると判断された方向の数は“29”であるため、特徴点抽出部45は、図17A及び17Bに示した注目画素Piにおける孤立度を“29”と設定する。
図17Cは、特定の一本の指が掌の方向に折れ曲がっている場合の画像例を示し、図17Dは、図17Cに示した指先上に設定された注目画素Piの孤立度の評価の例を示す。図17Dに示す例では破線の領域を含む線分の数が32本であるため、特徴点抽出部45は、図17C及び17Dに示した注目画素Piにおける孤立度を“32”と設定する。
図17Eは、手を開いた状態における左手の親指の根本部分に注目画素Piが設定された場合の画像例を示し、図17Fは、図17Eに示した注目画素Piの孤立度の評価例を示す。図17Fに示す例では、破線の領域を含む線分の数が20本であるため、特徴点抽出部45は、図17E及び17Fに示した注目画素Piにおける孤立度を“20”と設定する。
なお、本実施形態では、特徴点抽出部45が孤立度の評価を行う際に設定する方向の数を32としたが、方向の数は32に限定されない。特徴点抽出部45が孤立度の評価を行う際に設定する方向の数は、距離画像の解像度、仮想3次元物体処理システム1の処理性能等に応じて、適宜最適な数に設定可能である。また、孤立度の評価対象とする比較画素の抽出範囲も、距離画像の解像度、仮想3次元物体処理システム1の処理性能等に応じて、適宜最適な範囲に設定可能である。
次に、特徴点抽出部45は、距離画像上の各画素において算出された孤立度の情報を用いて、指先の領域を抽出する。指先の領域は、距離画像上で孤立度が高い画素が密集している領域であると考えられる。図18Aは、右手を撮影した距離画像であり、深度の浅い領域が濃い色によって示され、深度の深い領域が薄い色によって示される。図18Bは、図18Aに示した距離画像に基づいて特徴点抽出部45が算出した孤立度を色の濃淡によって示した孤立度画像である。孤立度画像において、孤立度の高い領域は濃い色によって示され、孤立度の低い領域は淡い色によって示される。
図18Aに示した距離画像によれば、右手の中指、薬指、小指の深度が、人差し指及び親指のそれに対して浅い(深度センサ30に近い位置に配置されている)ことが分かる。一方、図18Bに示した孤立度画像においては、右手を構成する5本の指の指先にあたる領域がすべて濃い色によって示されており、孤立度画像においては、指先の領域をすべて抽出できていることが分かる。
特徴点抽出部45は、図18Bにおいて濃い色で示した、孤立度の高い画素が密集している領域であり、かつ、勾配領域Agにも属している画素の領域を抽出し、さらにその領域の重心を算出することによって、指先の位置を抽出する。
図19Aは、図18Bに示した孤立度画像において、孤立度の高い画素が密集している領域のみを抽出して示した図である。図19Bは、図18Aに示した距離画像から勾配領域Agを抽出して示した画像(勾配領域画像)を示した図である。図19Cは、図19Aに示した画像と図19Bに示した画像との論理積をとることにより得られた画像である。すなわち、図19Cには、孤立度の高い画素が密集している領域であり、かつ、勾配領域Agにも属している画素の領域が示される。図19Cに示す例では、右手の5本の指先に対応する5つの領域が抽出されている。
図19Dは、図19Cに示した画像(指先の領域として5つの領域が抽出されている画像)上に、それぞれの抽出領域における重心の位置を重ねて示した図である。図19Dにおいて、重心の位置は斜線でハッチングされた丸印で示される。図19Dに示されるように、孤立度の高い画素が密集している領域であり、かつ勾配領域Agにも属する領域における重心の位置は、手指の指先の位置と対応している。
特徴点抽出部45は、続いて、検出した指先(重心)の位置の中から親指の先端に対応する位置を抽出し、親指の位置から最も近い指の指先の位置と、親指の指先の位置とを、線分で結ぶ。そして、特徴点抽出部45は、その線分を基準にして勾配領域Agから内部領域Aiに相当する領域を分離することにより、擬似内部領域Ai′を抽出する。
図20Aは、親指と人差し指とが接触していない状態の右手から抽出された勾配領域Agを示す勾配領域画像であり、図20Bは、図20Aに示した勾配領域画像から抽出された擬似内部領域Ai′を示す図である。図20Bには、親指の指先位置Ttと、親指の指先位置Ttから一番近い指先である人差し指の指先位置Tiとを結ぶ線分Ln2が示されている。図20Bに示すように、本実施形態では、線分Ln2により分離された2つの勾配領域Agのうち、手のひら側の面積の小さい勾配領域Agと線分Ln2とにより、擬似内部領域Ai′が構成される。つまみ動作時における指先の接触点に相当する仮想接触点P′には、例えば、線分Ln2の中点が設定される。
なお、検出した指先の位置の中から、親指の先端にあたる位置を抽出する方法としては、例えば以下の方法を採用することができる。図21Aは、孤立度画像から抽出した、孤立度の高い画素が集まっている領域(高孤立度領域Ah)、及び、孤立度の低い画素が集まっている領域(低孤立度領域Al)を示した画像である。図21Aに示すように、高孤立度領域Ahとしては、指の領域に相当する領域が抽出され、低孤立度領域Alとしては、手の腹に相当する領域が抽出されていることが分かる。
特徴点抽出部45は、まず、高孤立度領域Ah及び低孤立度領域Alのそれぞれにおいて、重心を求める処理を行う。図21Aに黒丸で示した点Mが高孤立度領域Ahの重心であり、白抜きの二重丸で示した点Lが低孤立度領域Alの重心である。
特徴点抽出部45は、続いて、図21Bに示すように、重心M及び重心Lを線分Ln3で結ぶ。また、重心Lを起点とする線分であり、かつ線分Ln3に対して垂直の角度を成す所定の長さの線分Ln4を生成する。特徴点抽出部45は、さらに、線分Ln4の重心L側とは反対側の端点Kを求め、この端点Kと距離画像上最も近い位置に存在する指先位置を、親指の指先位置Ttとして抽出する。なお、親指の指先位置Ttの検出方法は、上記方法に限定されず、どのような方法であってもよい。その後、特徴点抽出部45は、親指の指先位置Ttに最も近い指先位置を、人差し指の指先位置Tiとして抽出する。
親指の指先位置Ttと人差し指の指先位置Tiとを抽出した後は、特徴点抽出部45は、親指の指先位置Ttと人差し指の指先位置Tiとを結ぶ線分Ln2の中点を、つまみ動作時における指先の接触点に相当する仮想接触点P′に設定する。
上記手法を用いることにより、図22A及び図22Bに示すように、親指及び人差し指にあたる指の位置が孤立度画像上で判別しにくい場合にも、特徴点抽出部45は、擬似内部領域Ai′を抽出するための線分Ln2を求めることができる。すなわち、つまみ動作が行われておらず、指先同士が接触していない状態であっても、特徴点抽出部45は、指先の接触点Pに相当する仮想接触点P′及び擬似内部領域Ai′を抽出することができる。
パラメータ算出部46は、上述したつまみ動作検出時における手指動作検出手法と同様の手法により、特徴点抽出部45で抽出された各種特徴点の情報を用いて、指先の擬似的な接触位置の3次元空間上の位置と、手指の姿勢と、トリガをオン又はオフさせるトリガ入力パラメータとを算出する。
具体的には、上述したつまみ動作時の処理と同様にして、特徴点抽出部45が、擬似内部領域Ai′に基づいて手指領域Asに相当する領域を抽出し、近似平面Pa及びその近似平面Pa上の各種特徴点を算出する。そして、パラメータ算出部46は、算出した各種特徴点に基づいて、指先の擬似的な接触位置、第1の姿勢ベクトル及び第2の姿勢ベクトルを求める。なお、指先の擬似的な接触位置は、仮想接触点P′を近似平面Paに投影した特徴点(第2の特徴点)とする。
ここで、特徴点抽出部45が各種特徴点を算出する際に用いる、距離画像、勾配領域画像、孤立度画像等の各種画像と、算出される特徴点との対応関係について、図23を参照して説明する。図9A、図19B等に示した勾配領域画像、図12Aに示した、手領域Afが示された画像である手領域画像、及び、図18Bに示した孤立度画像は、すべて深度センサ30により取得された距離画像から生成される。
手指の指先の位置は、勾配領域画像及び孤立度画像の情報を用いて算出される。図7D、図9B等に示した内部領域Aiが示された画像である、内部領域画像は、指先の位置の情報(非つまみ動作時)及び勾配領域画像の情報を用いて生成される。図9C、図11B等に示した凸包領域Acが示された画像である、凸包領域画像は、内部領域画像から生成される。図10B等に示した手指領域Asは、勾配領域画像、内部領域画像及び凸包領域画像の情報を用いて算出される。
近似平面Pa上の特徴点となる重心O(図14参照)は、凸包領域画像より得ることができ、手首の重心Nは、手指領域画像及び重心Oの情報に基づいて算出される。基準点Dは、重心O及び重心Nの情報を用いて算出され、指先の接触点Pは、内部領域画像及び基準点Dの情報を用いて算出される。すなわち、特徴点抽出部45は、距離画像から生成した各種画像及び/又は各種画像を用いて算出された各種特徴点の情報に基づいて、指先の接触位置及び姿勢を算出するために必要な各種特徴点を抽出する。
(手指動作検出処理のフローチャート)
次に、本実施形態の仮想3次元物体処理システム1により手指動作検出を行う際の処理手順を、図24を参照しながら説明する。図24は、本実施形態の仮想3次元物体処理システム1によって実行される手指動作検出手法の処理手順を示すフローチャートである。
まず、仮想3次元物体処理システム1の画像取得部41が、深度センサ30により撮影された距離画像を取得する(ステップS1)。次に、フィルタ処理部42が、距離画像にフィルタ処理を施す(ステップS2)。より具体的には、フィルタ処理部42は、まず、メディアンフィルタを用いて距離画像に局所的に存在するショットノイズを除去し、続いて、ガウシアンフィルタを用いて距離画像全体を平滑化する。次に、内部領域抽出部43は、フィルタ処理部42によってフィルタ処理が施された距離画像から、手指によって周囲を囲われた内部領域Aiを抽出する(ステップS3)。より詳細には、内部領域抽出部43は、距離画像のx方向及びy方向における画素の勾配情報を用いて、手の輪郭の領域に相当する勾配領域Agを抽出する(勾配領域画像を生成する)。そして、内部領域抽出部43は、図7A〜図7Dを用いて説明した内部領域Aiの抽出手順に従い、勾配領域Agが表された勾配領域画像から内部領域Aiを抽出する。なお、ステップS3において内部領域Aiが抽出されなかった場合には、内部領域抽出部43は、図16〜図22を用いて説明した擬似内部領域Ai′の抽出手順に従い、勾配領域画像及び指先の位置に基づいて、擬似内部領域Ai′を抽出する。
続いて、内部領域抽出部43による内部領域Aiの抽出結果に基づいて、特徴点抽出部45が各種特徴点を抽出するとともに、つまみ動作検出部44が、つまみ動作を検出する(ステップS4)。そして、パラメータ算出部46が、パラメータとして、つまみ動作における指先の接触点Pの位置ベクトルと、手指の姿勢を示す第1の姿勢ベクトルVd及び第2の姿勢ベクトルVnと、トリガをオン又はオフさせるトリガ入力パラメータとを算出して出力する(ステップS5)。
(仮想物体操作部の処理)
次に、仮想物体操作部50(図2参照)の処理について説明する。仮想物体操作部50は、手指動作検出装置部40から出力された各種制御パラメータに基づいて、ディスプレイ装置22上において仮想3次元物体を生成したり、造形したり、操作したりする処理を行う。これらの処理は、手指動作検出装置部40で算出された手指の位置及び姿勢を、ディスプレイ装置22に表示される仮想空間上において、仮想3次元物体に対して所定の処理を施すツールの位置及び姿勢に置き換えることによって行われる。また、手指を使った実際のオン/オフ動作と、仮想空間上の仮想3次元物体に対するツール処理のオン/オフ操作との連動又は非連動は、トリガのオン/オフ(トリガ入力パラメータ)に基づいて切り替えられる。
本実施形態では、上述のようにして手指動作検出処理を行う。なお、本実施形態では、上述した手指動作検出処理を、対応する手指動作検出プログラムを仮想3次元物体処理システム1に実装し、手指動作検出プログラムをCPU10で実行することにより実現してもよい。
上述した本実施形態の仮想3次元物体処理システム1は、手指の形状の情報及び姿勢の情報に基づいて、仮想空間上の仮想3次元物体に対して所定の処理を施すツールの位置及び姿勢を決定するための各種制御パラメータを算出する。それゆえ、本実施形態では、ユーザは、現実空間において手指の位置や姿勢を変えるという直感的かつ3次元的な操作によって、仮想3次元物体を操作することができる。このような操作には、専門的な知識や熟練を必要としないので、子供から高齢者に渡るあらゆる世代のユーザが、容易に仮想3次元物体を操作することができる。
また、本実施形態の仮想3次元物体処理システム1では、手指の所定動作の有無に関する情報(トリガ入力パラメータ、つまみ動作検出部44の検出結果に対応する情報)に基づいて、仮想3次元物体に対して所定の処理を施すツールのオン/オフ動作が制御される。具体的には、指先同士を接触させる動作によって、仮想3次元物体の操作ツールのトリガがオンされ、接触させていた指先同士を離す動作によって、仮想3次元物体の操作ツールのトリガがオフされる。したがって、ユーザは、マウス等のトリガ入力用の特別な入力インターフェースを用いることなく、仮想3次元物体の操作時に手指のジェスチャによって、容易にツールのオン/オフ制御(トリガ入力)を行うことができる。
本実施形態の仮想3次元物体処理システム1では、ユーザは、手指の位置や姿勢を変えることによって行う仮想3次元物体の操作ツールの操作と、つまみ動作によって行う操作ツールのオン/オフ操作とを、ほぼ同時に、かつそれぞれ独立して行うことができる。つまり、手指を回転させたり手指の形状を大きく変化させたりすることなく、造形を行っている手指の姿勢及び位置をほぼ維持したまま、指先同士の接触/非接触によってツールのオン/オフを制御することができる。また、本実施形態の仮想3次元物体処理システム1によれば、より自由度の高いインターフェースを提供することができる。
また、本実施形態の仮想3次元物体処理システム1では、つまみ動作によって指先同士が接触しているか否かを、距離画像において内部領域Aiが抽出できたか否かによって判定する。距離画像において内部領域Aiが形成されている状態か否かの区別は、比較的明確に行うことができるので、トリガ入力のオン及びオフ間の切り替えも、ユーザの意図したタイミングで正確に行うことが可能となる。
また、指先同士を接触させたり離したりする動作は、小さな物体や細長い棒などを摘んだり離したりする動作等と同様の動作であり、日常的な場面でよく行われる動作である。したがって、ユーザは不自然なジェスチャを行う必要なく、慣れ親しんだ動作によって、仮想3次元物体に対して所定の処理を行うことができる。
また、本実施形態の仮想3次元物体処理システム1では、深度センサ30で取得された距離画像から抽出した手指領域Asの3次元座標情報を用いて、現実空間上の手指の位置と姿勢とを推定する。これらの3次元座標情報は、手指のわずかな動作に対しても変化する。よって、従来用いられていた、楕円近似により求めた内部領域を用いて手指の位置及び姿勢を検出する手法や、内部領域の重心の情報のみを用いて手指の位置を検出する手法と比較して、手指の位置及び姿勢の検出精度が非常に高くなる。したがって、深度センサ30のように出力値の分散が比較的大きい撮像装置を用いる場合であっても、手指による動作の認識を正確に行うことができる。
また、本実施形態の仮想3次元物体処理システム1では、つまみ動作の検出時には、つまみ動作に関与する手指領域Asの近似平面Pa内の特徴点の一つである重心Oと、指先の接触点Pとを通る線分Ln1の延在方向で、かつ、重心Oから接触点Pに向かう方向のベクトルを、手指の第1の姿勢ベクトルVdとして抽出する(図14参照)。また、非つまみ動作時にも、つまみ動作時と同様に、手指の第1の姿勢ベクトルVdを抽出する。また、本実施形態では、接触点P(又は仮想接触点)の3次元座標を、指先の位置として抽出する。それゆえ、これらのパラメータが反映された仮想空間における仮想3次元物体の位置及び姿勢を、現実空間における指先の細かな動きに追従させて変化させることができる。
また、本実施形態では、手指の第1の姿勢ベクトルVd及び第2の姿勢ベクトルVnによって、仮想3次元空間における手指の姿勢を推定している。したがって、つまみ動作におけるつまみ方や、つまみ動作を行っている手指の姿勢が様々に変化した場合にも、正確に手指の位置及び姿勢を検出できる。
また、本実施形態の仮想3次元物体処理システム1では、例えば深度センサ30の焦点位置を原点とする3次元空間における絶対座標を入力値とするので、マウス等の2次元座標を入力値とするインターフェースを使用した場合のように、入力座標の変換等の中間的な処理を行う必要がなくなる。したがって、本実施形態の仮想3次元物体処理システム1によれば、仮想3次元物体の形状や姿勢等をより微細に、かつユーザの意図により忠実な形で変化させることが可能となる。
また、本実施形態の仮想3次元物体処理システム1では、上述のように3次元空間における絶対座標を入力値とするので、マウス等の2次元座標を入力値とするインターフェースを使用した場合のように、造形操作を仮想3次元物体の表面から開始させる必要がなくなる。つまり、本実施形態の仮想3次元物体処理システム1によれば、ユーザは、仮想3次元物体の配置された位置に限定されない3次元空間上の任意の位置から、造形操作を開始することができる。
[仮想3次元物体処理システムの適用例]
続いて、上記実施形態の仮想3次元物体処理システム1を仮想造形システムに適用した例について、図25〜図30を参照して説明する。図25は、仮想3次元物体処理システム1の外観を示す図である。なお、図25には、説明を簡略化するため、仮想3次元物体処理システム1を構成する深度センサ30とディスプレイ装置22とを示し、他の構成部の図示を省略する。深度センサ30は、ユーザの手指を撮影することができるように、手指によるつまみ動作が行われる空間の上方に、不図示のレンズを下向きにして配置される。ディスプレイ装置22は、ユーザと対向する位置に配置される。また、ディスプレイ装置22は、ディスプレイ装置22とユーザとの間に、深度センサ30の手指の撮影領域(つまみ動作が行われる空間)が配置されるような位置に設けられる。図25には、深度センサ30の位置をパイプで固定した例を示したが、この固定方法に限定されるものではなく、他の方法で固定するようにしてもよい。
ディスプレイ装置22の表示画面には、立方体状の仮想的なオブジェクトVo1(仮想3次元物体)と、オブジェクトVo1を造形する棒状の(円柱形状の)仮想的なツールVo2とが表示されている。図25に示すシステムの例では、つまみ動作の有無及び手指の位置や姿勢の変化に応じて、ツールVo2の位置及び姿勢を変化させるとともに、オブジェクトVo1に対して、ツールVo2による所定の処理(造形)を実施することができる。
ツールVo2の形状は棒状に限定されるものではなく、球状やブラシ形状、その他の形状であってもよい。また、ツールVo2の数は、一つに限定されるものではなく、複数のツールが用意されていてもよい。例えば、オブジェクトVo1を削るツール、オブジェクトVo1に他のオブジェクトを取り付ける(結合させる)ツール、オブジェクトVo1を回転又は移動させるツールなど、様々なツールを用意してもよい。
図26は、深度センサ30の撮影領域Rs、及びつまみ動作の認識可能範囲を示した図である。深度センサ30は、ディスプレイ装置22が配置された平面Fsから上方に580mm離れた位置に配置される。深度センサ30の撮影領域Rsは、平面Fs上における横520mm×縦400mmの撮影範囲を底面とし、高さを580mmとする略四角錐状の形状を有する。この撮影領域Rs内において、つまみ動作等のジェスチャが認識される領域は、平面Fsから高さ80mmの位置から、高さ270mmの位置に渡る領域(四角錐台状の領域)である。なお、深度センサ30の撮影領域Rs、及びつまみ動作の認識可能範囲は、図26に示す例に限定されるものではなく、例えば、深度センサ30の性能(画角)や用途等に応じて、適宜設定することができる。
図27A及び図27Bは、手指動作検出装置部40で検出された手指の位置及び姿勢と、仮想空間上のツールVo2の位置及び姿勢との対応関係を示す図である。図27Aに、手指動作検出装置部40で検出された手指の位置及び姿勢を示し、図27Bに、ツールVo2の仮想空間上における位置及び姿勢を示す。図27Bには、ツールVo2が、オブジェクトVo1を回転させるスパナである場合を例示する。なお、図27A及び図27Bにおいては、説明を簡略化するため、X−Y座標系で表現できるパラメータのみを示す。
いま、図27Aに示すように、指先の接触点PのX軸方向の座標がx1であり、Y軸方向の座標がy1であり、Z軸方向の座標がz1(図示略)であるとする。そして、この例では、図27Bに示すように、スパナ(ツールVo2)の、手によって把持されるグリップの根本の部分を、仮想空間における(x1,y1,z1)の位置に配置する。さらに、スパナ(ツールVo2)の姿勢が、第1の姿勢ベクトルVd及び第2の姿勢ベクトルVnによって規定される手指の姿勢と同一の姿勢に設定される。本実施形態では、このようにして、現実空間における手指の位置及び姿勢と、仮想空間におけるツールVo2(スパナ)の位置及び姿勢とを対応付ける。それゆえ、ユーザは、つまみ動作を行う際の手指の位置や姿勢を変化させるだけで、ツールVo2の位置及び姿勢を容易に変えることができる。
図28は、仮想物体操作部50の内部構成、並びに、仮想物体操作部50を構成する各部と、入力装置21、手指動作検出装置部40及びメモリ装置14との間における情報のフローを示す説明図である。仮想物体操作部50は、トリガ判定部51と、ボクセル操作部52と、ポリゴン生成部53と、描画処理部54とを含む。
メモリ装置14内には、入力装置21、手指動作検出装置部40、及び仮想物体操作部50から出力された各種データが書き込まれる。メモリ装置14に書き込まれた各種データは、仮想物体操作部50の各部によって読み出される。メモリ装置14には、トリガD1、ボクセルデータD2、ツールの種類・大きさ情報D3、ツールの位置・姿勢情報D4、及びオブジェクトの位置・姿勢情報D5等の各種データが格納される。
トリガD1は、オン及びオフに対応する2値データで表されるフラグであり、このフラグは、手指動作検出装置部40から出力されるトリガ入力パラメータによって随時更新される。手指動作検出装置部40は、上述したように、手指のつまみ動作を検出した時には、トリガをオンにするトリガ入力パラメータを出力し、手指のつまみ動作が解除された時には、トリガをオフにするトリガ入力パラメータを出力する。
ボクセルデータD2は、オブジェクトVo1及びツールVo2の仮想空間上における体積や形状を定義するデータである。ボクセルとは、3次元の仮想空間を立体格子状に小さく区切った場合の、区切られた一つのブロック領域を示し、各ボクセルは、一定のスカラー値/ベクトル値を有する。ボクセルデータD2は、仮想物体操作部50のボクセル操作部52によってメモリ装置14に書き込まれる。
ツールの種類・大きさ情報D3は、ユーザによって選択されたツールVo2の種類及び/又は大きさを示す情報である。ツールの種類・大きさの情報D3は、キーボードやマウス等より構成される入力装置21に対して行われるユーザの操作に基づいて、変更される。
ツールの位置・姿勢情報D4は、現実空間上の手指の位置を示す3次元座標と、手指の姿勢を示す第1の姿勢ベクトルVd及び第2の姿勢ベクトルVnとを含む。これらの情報(制御パラメータ)は、手指動作検出装置部40によってメモリ装置14に書き込まれる。オブジェクトの位置・姿勢情報D5は、オブジェクトVo1の仮想空間上の位置と姿勢とを示す。オブジェクトの位置・姿勢情報D5は、仮想物体操作部50のボクセル操作部52によってメモリ装置14に書き込まれる。
続いて、同じく図28を参照して、仮想物体操作部50を構成する各部の処理について説明する。トリガ判定部51は、メモリ装置14内に格納されたトリガD1を参照して、トリガ入力がオンであるか否かを判定する。そして、トリガ判定部51は、トリガ入力のオンを検出した場合には、その情報をボクセル操作部52に出力し、トリガ入力のオフを検出した場合には、その情報をポリゴン生成部53に出力する。
ボクセル操作部52は、ボクセルの生成操作、又は消滅操作を行う。ボクセル操作部52によるこれらの操作は、トリガ入力がオンになっており、かつ、ツールVo2がオブジェクトVo1に接触しているときに行われる。ツールVo2がオブジェクトVo1に接触しているか否かの判定は、メモリ装置14内に格納されたツールの種類・大きさ情報D3と、ツールの位置・姿勢情報D4と、オブジェクトの位置・姿勢情報D5との内容に基づいて行われる。
例えば、いま、ツールの種類・大きさ情報D3が、ツールVo2として、オブジェクトVo1のボクセルを消滅させる棒状のツールが選択されていることを示す情報である場合を考える。この場合、ボクセル操作部52は、ツールVo2の先端部分と接触する位置にあるボクセルを消滅させる。なお、トリガがオンであっても、所定のツールVo2の仮想空間上における位置がオブジェクトVo1から離れている場合には、ボクセル操作部52はボクセル操作を行わない。
ツールVo2の位置及び姿勢を規定するツールの位置・姿勢情報D4は、手指動作検出装置部40による手指動作検出処理によって、随時書き替えられる。このため、例えばツールVo2によって消滅されるボクセルの位置も、ユーザの手指の位置及び/又は姿勢の変化に応じて、その都度変化する。ボクセル操作部52は、操作したボクセルの情報を、ボクセルデータD2としてメモリ装置14内に書き込む。
また、ツールVo2として、例えばオブジェクトVo1の位置や姿勢を変化させるツールが選択されている場合には、ボクセル操作部52は、ボクセルを消滅又は追加する処理は行わずに、ボクセルの集合体であるオブジェクトVo1の位置・姿勢のみを変化させる。この場合は、ボクセル操作部52は、移動させたボクセルの位置・姿勢の情報を、オブジェクトの位置・姿勢情報D5としてメモリ装置14内に書き込む。
ポリゴン生成部53は、メモリ装置14から読み出したボクセルデータD2からポリゴンデータを生成する。ポリゴンデータ生成処理は、例えば、マーチング・キューブズ法等のアルゴリズムを用いて行われる。マーチング・キューブズ法は、ボクセルデータの可視化方法として一般的な方法であり、詳細には、ボクセル集合の局所的な配置からボクセル集合を覆う面素を推定し、ボクセルの表面を多角形ポリゴンで近似することにより、物体の状面を構成する方法である。
描画処理部54は、ポリゴン生成部53でポリゴンデータに変換されたオブジェクトVo1及びツールVo2を、仮想空間上に3DCGとして描画する。オブジェクトVo1の仮想空間上での位置及び姿勢は、メモリ装置14から読み出したオブジェクトの位置・姿勢情報D5に基づいて決定される。ツールVo2の仮想空間上での位置及び姿勢は、メモリ装置14から読み出したツールの種類・大きさ情報D3と、ツールの位置・姿勢情報D4とに基づいて決定される。3DCGの描画は、例えば、オープンソースとして公開されている、OpenGL(登録商標)等のグラフィックAPI(Application Programming Interface)を用いて行うことができる。
[仮想3次元物体処理手法の詳細]
次に、上記実施形態の仮想3次元物体処理システム1(仮想造形システム)により仮想3次元物体の造形処理を行う際の処理手順を、図29を参照しながら説明する。図29は、上記実施形態の仮想3次元物体処理システム1(仮想造形システム)によって実行される仮想3次元物体の造形処理手法の処理手順を示すフローチャートである。
まず、仮想3次元物体処理システム1の手指動作検出装置部40が、つまみ動作における指先の位置と、手指の姿勢と、トリガ入力のオン/オフ情報(トリガ入力パラメータ)とを取得する(ステップS11)。そして、仮想物体操作部50は、入力装置21に対する操作入力があるかどうかを判断して(ステップS12)、操作入力があった場合には、操作内容に基づいて、ツールVo2の種類の変更、及び/又はツールVo2の設定を行う(ステップS13)。操作入力がなかった場合には、仮想物体操作部50は、ステップS14の処理を行う。
ステップS14では、仮想物体操作部50は、トリガ入力がオンであるか否かの判断を行い、トリガ入力がオンであると判断した場合には、続いて、仮想空間におけるツールVo2の位置とオブジェクトVo1の位置との間の距離が、所定の距離以内であるかを判断する(ステップS15)。仮想空間におけるツールVo2の位置とオブジェクトVo1の位置との間の距離が、所定距離以内である場合、すなわち、ツールVo2がオブジェクトVo1に接触していると判断できる距離である場合には、ボクセル操作部52がボクセル操作を行う(ステップS16)。トリガ入力がオフである場合には、仮想物体操作部50は、ステップS17の処理を行う。
ステップS17では、ポリゴン生成部53がボクセルデータD2からポリゴンデータを生成する。続いて、描画処理部54が、ポリゴンデータに変換されたオブジェクトVo1及びツールVo2を、仮想空間上に3DCGとして描画する(ステップS18)。
図30は、上記実施形態の仮想3次元物体処理システム1(仮想造形システム)により造形されたオブジェクトVo1の例を示す図である。図30Aは、恐竜のようなオブジェクトVo1の造形例であり、図30Bは、角及び羽根を有する悪魔のようなオブジェクトVo1の造形例である。上記実施形態の仮想3次元物体処理システム1によれば、図30A及び図30Bに示したような複雑な形状のオブジェクトも、つまみ動作によって容易に造形することが可能である。
上記実施形態では、つまみ動作を行っている指先の接触点Pの現実空間における位置を、仮想空間におけるツールVo2の位置に変換する。さらに、第1の姿勢ベクトルVd及び第2の姿勢ベクトルVnによって表される手指の姿勢を、仮想空間のツールVo2の姿勢に変換する。それゆえ、上記実施形態では、仮想空間におけるツールVo2の位置及び姿勢を、現実空間におけるつまみ動作時の指先の位置及び姿勢と、ほぼ一致させることができる。すなわち、つまみ動作時の指先の細かな動きも、仮想空間におけるツールVo2の動作に正確に反映させることができる。したがって、上記実施形態における仮想3次元物体処理システム1では、ツールVo2の位置や姿勢をわずかに変更させたり、オブジェクトVo1の自由曲面を造形したりする操作も、ユーザは、意図したとおりに自在に行うことができる。
<各種変形例>
本発明に係る手指動作検出装置、手指動作検出方法、手指動作検出プログラム、及び仮想物体処理システムは、上記実施形態で説明した例に限定されない。特許請求の範囲に記載した本発明の要旨を逸脱しない限りその他種々の変形例も本発明に含まれる。例えば、次のような各種変形例及び応用例も本発明に含まれる。
上記実施形態では、図31Aに示すように、近似平面Pa内において、特徴点の重心Oから指先の接触点Pに向かう方向のベクトルを第1の姿勢ベクトルVdとする例を説明したが、本発明はこれに限定されない。例えば、図31Bに示すように、近似平面Pa内において、特徴点の一つである手首の重心Nから重心Oに向かう方向のベクトルを、第1の姿勢ベクトルVd′としてもよい。
図31Aに示した第1の姿勢ベクトルVd及び第2の姿勢ベクトルVnを用いることによって、例えば、図32Aに示すように、道具を指先によって摘んだ状態で細かい操作を行う場合の手指の姿勢を適切に推定することが可能となる。また、図31Bに示した第1の姿勢ベクトルVd′及び第2の姿勢ベクトルVnを用いれば、図32Bに示すように、道具の取っ手部分を手指によってしっかり握りながら安定的に操作を行う場合の手指の姿勢を、適切に推定することが可能となる。
上記実施形態では、仮想3次元物体を操作するための制御パラメータとして、手指の位置及び姿勢と、トリガ入力パラメータとを用いたが、本発明はこれに限定されない。手指の位置及び姿勢の一方の制御パラメータのみを用いるようにしてもよい。
また、上記実施形態では、つまみ動作として、親指及び人差し指の2本の指の指先同士を接触させる動作を例に挙げたが、つまみ動作は、この動作に限定されない。つまみ動作は、親指と人差し指以外の指(中指等)とを接触させる動作であってもよいし、親指の指先とその他のすべての指の指先とを接触させる動作や、親指以外の他の2本の指の指先同士を接触させる動作(例えば、人差し指と中指とを接触させる動作)であってもよい。
また、上記実施形態では、トリガ入力のオン/オフを、つまみ動作を行う指先の接触/非接触によって切り替える例を挙げたが、本発明はこれに限定されない。例えば、手指の特定の指を動かす等の動作(内部領域Ai又は擬似内部領域Ai′が形成されないような動作)を、トリガ入力検出用の動作としてもよい。
また、上記実施形態では、近似平面Pa内において、特徴点の一つである重心Oから指先の接触点Pに向かう方向のベクトルを、第1の姿勢ベクトルVdとする例を説明したが、本発明はこれに限定されない。例えば、近似平面Pa内において、重心O以外の特徴点から指先の接触点P又はそれに準ずる特徴点に向かう方向のベクトルを、第1の姿勢ベクトルVdとしてもよい。
また、上記実施形態では、つまみ動作によって仮想空間上のツールVo2の位置及び姿勢を変化させることにより、オブジェクトVo1に対して所定の処理を施す例を挙げたが、本発明はこれに限定されない。例えば、オブジェクトVo1の位置及び姿勢を変化させるツールが選択された場合には、手指の位置及び姿勢に基づいて、オブジェクトVo1の位置及び姿勢を直接操作するようにしてもよい。
また、上記実施形態では、操作対象となる仮想物体が3次元状の仮想物体である例を説明したが、上述した本発明の仮想物体処理(操作)技術は、2次元状及び1次元状の仮想物体に対しても同様に適用可能であり、同様の効果が得られる。
上記実施形態では、本発明の手指動作検出技術を、仮想3次元物体の操作に適用する例を説明したが、本発明はこれに限定されない。例えば、本発明の手指動作検出技術を、ロボットアームの操作にも同様に適用可能である。