【文献】
川上 翔治 外,Lumisight Tableにおけるカメラと歪ゲージを併用した接触入力の基礎検討,電子情報通信学会技術研究報告,日本,社団法人電子情報通信学会,2005年 3月18日,Vol. 104 No. 745,pp. 25-28
(58)【調査した分野】(Int.Cl.,DB名)
【発明を実施するための形態】
【0016】
以下、図面を参照しながら、本発明の実施形態を説明する。
【0017】
[概要と前提条件]
最初に、本実施形態の概要と前提条件について説明する。
【0018】
本実施形態は、指などが物体を掴んで変形した状態をカメラなどで撮像し、撮像した画像に基づいて指の歪み量や弾性率を推定し、推定結果から指にかかっている外力の大きさを推定するものである。
【0019】
ここで、本実施形態では、カメラなどで指などが物体を掴んで変形した状態を撮像するとき、指や物体は、弾性限界以下、すなわち応力(外力)と歪み量が弾性率を比例定数として比例する線形弾性の状態であることを前提とする。
【0020】
また、本実施形態で用いるカメラは、常に最適な位置に配置され、指や指が挟んだ物体が変形している状態を適切に撮像可能であることを前提とする。
【0021】
以上、本実施形態の概要と前提条件について説明した。
【0022】
[構成]
次に、本実施形態にかかる入力装置の構成について説明する。
図1は、本実施形態にかかる入力装置1の構成図である。
【0023】
入力装置1は、カメラ10(撮像部)および情報処理装置30を備えている。
【0024】
カメラ10は、指などが物体を掴んで変形した状態を撮像できるものであれば一般的なカメラを用いてもよい。
【0025】
情報処理装置30は、PC(Personal Computer)などの一般的なコンピューターを用いることが出来る。情報処理装置30には、プロセッサ31、メモリー32、入出力部33などを有している。
【0026】
情報処理装置30には、情報処理結果をユーザーに提示するための表示部20が接続されてもよい。表示部20やカメラ10は、情報処理装置30の入出力部33に接続される。
【0027】
メモリー32などに格納されたプログラムがプロセッサ31において実行されることにより、本実施形態で用いる各機能ブロックが実現される。本実施形態で用いる機能ブロックを実現するソフトウェアの構成を
図2に示す。
図2は、本実施形態で用いる機能ブロックを実現するソフトウェアの構成図である。
【0028】
本実施形態で用いる機能ブロックを実現するソフトウェアは、メインプログラム31a、認識エンジン31b(推定部)、アプリケーションプログラム31cを含んで構成されている。
【0029】
メインプログラム31aおよび認識エンジン31bの詳細については後述する。アプリケーションプログラム31cは、例えば、特許文献1にあるような、仮想空間を舞台にしたゲームなどである。
【0030】
以上、本実施形態にかかる入力装置1の構成について説明した。
【0031】
[指と物体の変形量の関係]
次に、本実施形態にかかる入力装置1のカメラ10で撮像する、指と指により押圧される物体とが、押圧により弾性変形する状態について説明する。
【0032】
図3は、指Fが挟む物体O1が剛体である場合の変形状態を示す図である。物体O1は非常に硬いので指による押圧によっても変形しない。逆に指が大きく変形している。指Fの変形量から押圧の力を推定することが出来る。
【0033】
図4は、指Fが挟む物体O2が指に比べて非常に柔らかい場合の変形状態を示す図である。物体O2は非常に柔らかいので大きく変形している。逆に指は殆ど変形していない。物体O2の変形量から押圧の力を推定することが出来る。
【0034】
図5は、指Fと指Fが挟む物体O
3の柔らかさが同程度である場合の変形状態を示す図である。物体O3も指Fも変形している。指Fの変形量からでも物体O3の変形量からでも、押圧の力を推定することが出来る。
【0035】
以上、本実施形態にかかる入力装置1のカメラ10で撮像する、指と指により押圧される物体とが、押圧により弾性変形する状態について説明した。
【0036】
[キャリブレーション処理の流れ]
次に、本実施形態にかかる入力装置1におけるキャリブレーション処理の流れについて説明する。
図6は、本実施形態にかかる入力装置1におけるキャリブレーション処理の流れについて説明するためのアクティビティ図である。なお、キャリブレーション処理では、弾性率が既知の物体を手で掴んだ状態を撮像することにより、押圧の力を求め、押圧の力と手の変形量から手の弾性率(剛性)を推定するものである。
【0037】
まず、メインプログラム31aが、手の弾性率(剛性)の測定を開始する事をユーザーに伝える(ステップS1)。
【0038】
次に、メインプログラム31aが、弾性率が既知であるキャリブレーション用の物体(第1の物体)を用意するようにユーザーに指示を出す(ステップS2)。
【0039】
次に、カメラ10が、手(指、第2の物体)と物体(力はまだ加えていない)を撮像する(ステップS3)。
【0040】
次に、認識エンジン31bが、撮像された手(指)と物体を認識する(ステップS4)。
【0041】
次に、メインプログラム31aが、指で物体を押圧するようにユーザーに指示を出す(ステップS5)。
【0042】
次に、カメラ10が、押圧により変形している指と物体を撮像する(ステップS6)。
【0043】
次に、認識エンジン31bが、指および物体の変形量(歪み量)を認識する(ステップS7)。
【0044】
次に、認識エンジン31bが、認識した物体の歪み量と既知の弾性率から押圧の力(第1の外力)を推定し、推定した力と指の歪み量から指の弾性率を推定する(ステップS8)。なお、変形量(歪み量)は、外力を加える前の物体の画像と外力を加えて変形した物体の画像との差分から求めることが出来る。
【0045】
次に、メインプログラム31aが、アプリケーションプログラム31cで用いる手(指)のモデルに、推定された弾性率を属性として追加する(ステップS9)。
【0046】
次に、メインプログラム31aが、ユーザーに手の弾性率(剛性)の測定の終了を伝える(ステップS10)。
【0047】
以上、本実施形態にかかる入力装置1におけるキャリブレーション処理の流れについて説明した。
【0048】
[未知の弾性率を推定する処理の流れ]
次に、キャリブレーションにより弾性率が推定された指を用いて、弾性率が未知の物体を掴んだ場合に、未知の弾性率を推定する処理の流れを説明する。
図7は、キャリブレーションにより弾性率が推定された指を用いて、弾性率が未知の物体を掴んだ場合に、未知の弾性率を推定する処理の流れを説明するアクティビティ図である。
【0049】
まず、メインプログラム31aが、弾性率が未知の物体(
第3の物体)の弾性率(剛性)の測定を開始する事をユーザーに伝える(ステップS21)。
【0050】
次に、メインプログラム31aが、弾性率を求める物体を用意するようにユーザーに指示を出す(ステップS22)。
【0051】
次に、カメラ10が、手(指)と物体(力はまだ加えていない)を撮像する(ステップS23)。
【0052】
次に、認識エンジン31bが、撮像された手(指)と物体を認識する(ステップS24)。
【0053】
次に、メインプログラム31aが、指で物体を押圧するようにユーザーに指示を出す(ステップS25)。
【0054】
次に、カメラ10が、押圧により変形している指と物体を撮像する(ステップS26)。
【0055】
次に、認識エンジン31bが、指および物体の変形量(歪み量)を認識する(ステップS27)。
【0056】
次に、認識エンジン31bが、認識した指の歪み量と推定されている弾性率から押圧の力(第2の外力)を推定し、推定した力と物体の歪み量から物体の弾性率を推定する(ステップS28)。
【0057】
次に、メインプログラム31aが、アプリケーションプログラム31cで用いる物体のモデルに、推定された弾性率を属性として追加する(ステップS29)。
【0058】
次に、メインプログラム31aが、ユーザーに物体の弾性率(剛性)の測定の終了を伝える(ステップS30)。
【0059】
以上、キャリブレーションにより弾性率が推定された指を用いて、弾性率が未知の物体を掴んだ場合に、未知の弾性率を推定する処理の流れを説明した。
【0060】
[未知の重量を推定する処理の流れ]
次に、上記の処理で弾性率を推定した物体の重量を推定する処理の流れを説明する。
図8は、弾性率を推定した物体の重量を推定する処理の流れを説明するアクティビティ図である。
【0061】
まず、メインプログラム31aが、弾性率を推定した物体の重量の測定を開始する事をユーザーに伝える(ステップS41)。
【0062】
次に、メインプログラム31aが、重量を求める物体(
第3の物体)を手など(第
2の物体)の上に置くようにユーザーに指示を出す(ステップS42)。
【0063】
次に、カメラ10が、自重により変形している物体を撮像する(ステップS43)。
【0064】
次に、認識エンジン31bが、物体の変形量(歪み量)を認識する(ステップS44)。歪み量を求めるための差分に用いる変形前の物体の画像は、ステップS23において撮像されたものを用いることが出来る。
【0065】
次に、認識エンジン31bが、認識した物体の歪み量と推定されている弾性率から物体の重量を推定する(ステップS45)。
【0066】
次に、メインプログラム31aが、アプリケーションプログラム31cで用いる物体のモデルに、推定された重量を属性として追加する(ステップS46)。
【0067】
次に、メインプログラム31aが、ユーザーに物体の重量の測定の終了を伝える(ステップS47)。
【0068】
以上、弾性率を推定した物体の重量を推定する処理の流れを説明した。
【0069】
[アプリケーションプログラムの実行の流れ]
次に、上記で推定した弾性率や重量を用いてアプリケーションプログラムを実行する
処理の流れについて説明する。
図9は、推定した弾性率や重量を用いてアプリケーションプログラムを実行する
処理の流れについて説明するアクティビティ図である。
【0070】
まず、メインプログラム31aが、上記のキャリブレーション処理などで推定した、指や物体の弾性率および重量を適用したモデルを用いて、ゲームなどのアプリケーションプログラム31cを実行する(ステップS51)。
【0071】
次に、メインプログラム31aは、アプリケーションプログラム31cの実行が終了したか否かを判断する(ステップS52)。
【0072】
実行が終了していない場合(ステップS52のN)、カメラ10が指や物体の変形状態を撮像し(ステップS53)、認識エンジン31bが撮像された変形量に応じて指や物体を押圧する力を推定し(ステップS54)、推定された力を用いてアプリケーションプログラム31cが実行される。
【0073】
なお、ここでは、弾性率や重量を推定してアプリケーションプログラム31cを実行したが、これに限らず、弾性率や重量の推定を行わず、指の一般的な弾性率などを用いてアプリケーションプログラムを実行してもよい。
【0074】
以上、推定した弾性率や重量を用いてアプリケーションプログラムを実行する
処理の流れについて説明した。
【0075】
[入力装置1の適用例1]
次に、本実施形態の入力装置1を野球のバッティングゲームに適用した例を説明する。
図10は、本実施形態の入力装置1を野球のバッティングゲームに適用した例を示す図である。
【0076】
従来は、ボールとバットの重量、速度、回転などから打球の飛ぶ方向を計算していた。
【0077】
しかし、この例では、カメラ10が、バットを握った手を撮像しており、ボールがバットに当たった際の、手の変形量も撮像することが出来る。
【0078】
そして、この例では、どの程度の力でバットを握っているかに基づいてボールがバットに当たった瞬間のバットの角度を計算することが出来、より正確に、打球の飛ぶ方向を計算することが出来る。
【0079】
このように、圧力センサーを備えていない物体をバットに用いる場合でも、押圧に用いられる力を推定し、より正確に、打球の飛ぶ方向を計算することが出来る。
【0080】
以上、本実施形態の入力装置1を野球のバッティングゲームに適用した例を説明した。
【0081】
[入力装置1の適用例2]
次に、本実施形態の入力装置1をコンピューターの入力装置であるキーボードに適用した例を説明する。
【0082】
通常、キーボードの各キーは、押されている状態と押されていない状態のどちらかの状態しか検知することは出来ない。例えば、aのキーを押して小文字の「a」が入力される場合、大文字の「A」を入力するためには、「Shift」キーも一緒に押さなければならない。
【0083】
しかし、本実施形態の入力装置1をキーボードに適用し、キーを押す際の指の変形量からキーを押す圧力を推定することにより、例えば、「a」のキーを軽く押すと小文字の「a」が入力され、強い力で押すと大文字の「A」が入力されるような構成とすることも出来る。
【0084】
以上、本実施形態の入力装置1をコンピューターの入力装置であるキーボードに適用した例を説明した。
【0085】
[補足事項]
その他、本技術は、上述の実施形態にのみ限定されるものではなく、本技術の要旨を逸脱しない範囲内において種々変更を加え得ることは勿論である。