以下、本発明の実施の形態について、図面を参照しながら説明する。
(実施の形態1)
実施の形態1における画面表示装置は、タッチパッド上でのユーザの入力を示す位置情報(座標)の軌跡の形状を利用して、タッチパッドを含む操作装置の向き(方向ともいう)を認識する。そして、画面表示装置は、操作装置の向きに基づいて画面上でのカーソル(GUI上での操作位置を示すポインタ)の表示位置を補正する。
図1は、実施の形態1における画面表示装置の概略図である。図1に示された画面表示装置1は、ユーザからの入力を受け付け、画面104にカーソル105等を表示する。
リモコン101は、ユーザが画面104上のGUIを操作する操作装置の一例である。リモコン101は、ユーザの指103による入力を受け付けるタッチパッド102を備えている。
タッチパッド102による入力の受付処理は静電容量の変化を検出する方法などにより実現されるが、公知技術であるため、ここでは説明を省略する。また、リモコン101は、画面104に対してBluetoothおよびZigBee/IEEE802.15.4などの無線によって信号を伝送するが、信号の伝送技術は、同様に公知技術であるため、ここでは説明を省略する。
ユーザが指103をタッチパッド102に接触させた場合、タッチパッド102上での接触位置がx座標、y座標で表される位置情報として検出される。タッチパッド102上での座標系は、画面104上での座標系と一対一で対応づけられている。そのため、画面表示装置1は、検出した位置情報に基づき、カーソル105の画面104上での座標の値を計算できる。なお、指103の接触には、手袋などを介した間接的な接触も含まれる。
また、図1には、ユーザの目106からタッチパッド102を見たときのタッチパッド102上の上下左右の方向が示されている。ユーザがタッチパッド102を操作するときに意図する方向は、図1に示された上下左右の方向であると想定される。すなわち、ユーザが意図する方向は、ユーザからタッチパッド102を見たときのタッチパッド102上の上下左右の方向であると想定される。画面表示装置1は、このような方向を認識し、認識された方向に基づいて、適切な位置にカーソル105を表示する。
ユーザが意図する方向は、ユーザが操作装置に対して意図する方向、すなわち、操作装置の方向ともいえる。図1に示された方向は、リモコン101等の操作装置の方向でもある。
なお、操作装置は、予め定められた上下左右の方向を有する場合がある。操作装置において予め定められた方向は、典型的には、操作装置に付けられているロゴの表示方向に対応する。操作装置の方向は、予め定められた方向からの回転角によって、定量的に表現されてもよい。
図2は、図1に示された実施の形態1における画面表示装置1の構成図である。図2において、図1と同一の構成要素については同一の符号を用い、説明を省略する。
図2に示された画面表示装置1は、タッチパッド102と、タッチ情報検出部201と、タッチ情報蓄積部202と、方向決定部203と、カーソル位置決定部204と、画面データ生成部205と、表示部206とを備える。
図2に示された操作装置11は、リモコン101などによって実現され、タッチパッド102を備える。また、表示制御装置10は、タッチ情報検出部201と、タッチ情報蓄積部202と、方向決定部203と、カーソル位置決定部204と、画面データ生成部205とを備える。
表示制御装置10は、操作装置11から信号を受け、画面104に画像等を表示させるための画面データを生成する。なお、表示制御装置10は、操作装置11または表示部206に組み込まれていてもよい。
タッチ情報検出部201は、ユーザのタッチパッド102上での接触操作あるいは押下操作などに対応して、少なくともタッチパッド102上での接触位置を示すx座標およびy座標である位置情報を含むタッチ情報を検出する手段である。ここでは、タッチ情報検出部201は、表示制御装置10に含まれるが、操作装置11に含まれてもよい。タッチ情報検出部201は、所定の時間間隔でタッチ情報を検出して、検出したタッチ情報をタッチ情報蓄積部202に渡す。このタッチ情報の構成例については、後で図3を用いて詳細に説明する。
タッチ情報蓄積部202は、記憶部等で構成され、タッチ情報検出部201から渡されるタッチ情報を蓄積する手段である。タッチ情報蓄積部202は、方向決定部203がタッチ情報を用いて操作装置11の向きを決定できるように、所定時間あるいは所定量などのタッチ情報を時系列などの順で蓄積する。このタッチ情報を蓄積するためのタッチ情報テーブルの構成例については、後で図4を用いて詳細に説明する。
方向決定部203は、タッチ情報蓄積部202で蓄積されたタッチ情報に基づいて、操作装置11の向きを決定する手段である。具体的には、方向決定部203は、所定のアルゴリズムに基づいてタッチ情報を解析することで、操作装置11のどの面が画面104側を向いているかを決定する。このアルゴリズムについては、後で図6を用いて詳しく説明する。
なお、以下、これに限られるものではないが、基本的には、方向決定部203は、ユーザが自然にタッチパッドを触る操作によって得られたタッチ情報を用いて、操作装置11の向きを決定することができる。このようなタッチ情報は、ユーザが操作装置11を保持し始めた時点、アプリケーションの切替え時、および、同一アプリケーション内で操作装置11の保持方向が変わる時などにおいて、得られる。
カーソル位置決定部204は、方向決定部203で決定した操作装置11の向きと、タッチ情報検出部201で検出したタッチ情報とから、画面104上に表示するカーソル105の位置を計算する手段である。すなわち、カーソル位置決定部204は、タッチ情報に含まれる位置情報から、画面104上でのポインティング位置を示すカーソル105の表示位置を決定する。
カーソル位置決定部204は、方向決定部203でユーザが操作装置11を「正しい向き」に保持していない、すなわち、「逆向き」に保持していると判断された場合、タッチ情報に含まれる位置情報の値を変換(座標変換)する。これにより、カーソル位置決定部204は、ユーザが操作装置11を「正しい向き」に保持している場合と同等のカーソル105の動きとなるように位置情報を補正する。
一方、方向決定部203でユーザが操作装置11を「正しい向き」に保持していると判断された場合には、カーソル位置決定部204は位置情報の補正を行わない。
なお、ここで「正しい向き」とは、タッチパッド102上での座標系の向きと一致する向きであることを示している。言い換えれば、「正しい向き」とは、ユーザが意図する方向と、操作装置11において予め定められている方向とが一致する状態をいう。
なお、「逆向き」とは、ユーザが意図する方向と、操作装置11において予め定められている方向とが正反対である状態をいう。また、「右向き」とは、ユーザが意図する上方向が、操作装置11において予め定められている右方向になっている状態をいう。また、「左向き」とは、ユーザが意図する上方向が、操作装置11において予め定められている左方向になっている状態をいう。
また、カーソル位置決定部204は、タッチ情報検出部201から受け取った位置情報、または、当該手段で補正した後の位置情報を用いて、画面104上でのカーソル105の表示位置(カーソル位置)を決定する。
画面データ生成部205は、カーソル位置決定部204で決定したカーソル105の表示位置などに基づいて、画面データを生成する手段である。画面データ生成部205は、動画ビューワまたはウェブブラウザなどのアプリケーションの画像と、カーソル画像とを重畳することにより、表示部206で表示する画面データを生成する。
表示部206は、画面データ生成部205から渡された画面データを画像等として表示する手段である。表示部206は、例えば、デジタルTVの画面などである。なお、表示部206は、画面表示装置1の外部にあってもよい。
以上で、実施の形態1における画面表示装置1の構成についての説明を終了する。
次に、図3を用いて、タッチ情報検出部201が検出するタッチ情報について説明する。
図3は、タッチ情報の構成例を示す図である。図3に示されたタッチ情報300は、操作ID301と位置情報302とから構成される。
操作ID301は、ユーザがタッチパッド102上で行った操作の種別を示すIDである。操作ID301として、タッチパッド102への接触操作を示す「TOUCH」と、タッチパッド102の押下操作を示す「CLICK」とがある。
位置情報302は、操作ID301で示される操作が行われたタッチパッド102上でのx座標の値とy座標の値とで構成されており、(x座標の値、y座標の値)の形式で表される。
図3では、「タッチパッド102への接触操作が(100、100)で発生した」ことを示すタッチ情報300が例示されている。
以上で、タッチ情報300の構成例についての説明を終了する。
次に、図4を用いて、図2に示されたタッチ情報蓄積部202が保持するタッチ情報テーブルについて説明する。
図4は、図2に示されたタッチ情報蓄積部202が保持するタッチ情報テーブルの構成例を示す図である。図4に示されたタッチ情報テーブル400は、RAM(Random Access Memory)またはフラッシュメモリなどで構成される。
タッチ情報テーブル400には、タッチ情報検出部201から渡されるタッチ情報300が、時系列順で蓄積される。タッチ情報蓄積部202は、タッチ情報検出部201からタッチ情報300が渡される度に、受け取ったタッチ情報300をタッチ情報テーブル400に追加する。
図4に示す例は、(1)「タッチパッド102への接触操作が(100、100)で発生した」、(2)「タッチパッド102への接触操作が(150、200)で発生した」、(3)「タッチパッド102への接触操作が(200、300)で発生した」、(4)「タッチパッド102への押下操作が(200、300)で発生した」ということを示している。
ここで、タッチ情報検出部201は、所定の時間間隔でタッチパッド102上の接触操作および押下操作を検出する。そのため、図4に示すタッチ情報テーブル400から、ユーザの指の動作は、「タッチパッド102に(100、100)で接触し、タッチパッド102に接触した状態で(150、200)を経由して(200、300)まで移動し、そこでタッチパッド102を押下した」と解釈される。
なお、タッチ情報蓄積部202は、所定時間を経過した場合、タッチ情報テーブル400に含まれる古いタッチ情報300を定期的に削除してもよい。また、タッチ情報蓄積部202は、タッチ情報検出部201からタッチ情報300を受け取ったときに蓄積量が所定量を超過するような場合、新しいタッチ情報300で古いタッチ情報300を上書き更新してもよい。
以上で、タッチ情報テーブル400の構成例についての説明を終了する。
次に、図5を用いて、実施の形態1における画面表示装置1の処理フローについて説明する。
図5は、図2に示された実施の形態1における画面表示装置1の全体処理フローである。
まず、画面表示装置1のタッチ情報検出部201は、図2に図示しない指示部からの指示に基づき、タッチパッド102への入力の検出を継続するか否かを確認する(S501)。
ここで、タッチ情報検出部201がタッチパッド102への入力の検出を中断するように指示されている場合(S501でNO)、画面表示装置1は、処理を終了する。
一方、タッチ情報検出部201がタッチパッド102への入力の検出を継続するよう指示されている場合(S501でYES)、タッチ情報検出部201は、タッチパッド102への入力の有無を確認する。そして、タッチ情報検出部201は、図3に示したタッチ情報300の有無を検出する(S502)。
ここで、タッチ情報検出部201は、「タッチ情報無し」と検出した場合(S502でNO)、再度、入力の検出を継続するか否かを確認する(S501)。
一方、タッチ情報検出部201は、「タッチ情報有り」と検出した場合(S502でYES)、タッチ情報蓄積部202にタッチ情報300を蓄積させる(S503)。より具体的には、タッチ情報検出部201は、図4で示したタッチ情報テーブル400にタッチ情報300を追加する。また、タッチ情報検出部201は、画面上でのカーソル表示のため、検出したタッチ情報300をカーソル位置決定部204にも渡す。
次に、カーソル位置決定部204は、タッチ情報検出部201からタッチ情報300を受け取った後、タッチ情報300に含まれる位置情報302を補正する必要があるか否かを決定する。そのため、カーソル位置決定部204は、方向決定部203に対して、操作装置11の向きを問い合わせる(S504)。
次に、方向決定部203は、カーソル位置決定部204からの問い合わせを受けた後、タッチ情報蓄積部202のタッチ情報テーブル400にアクセスして、タッチ情報300を読み出す(S505)。このとき、方向決定部203は、事前に方向決定部203に設定された所定時間分のタッチ情報300あるいは所定量のタッチ情報300を読み出す。
なお、タッチ情報蓄積部202は、タッチ情報検出部201から所定の時間間隔で受け取ったタッチ情報300を順次蓄積する。したがって、計算により所定時間分のタッチ情報の量が求められる。
また、タッチ情報蓄積部202は、タッチ情報300を読み出す際、一旦読み出したタッチ情報300を方向決定部203の内部などに保持させておいてもよい。そして、タッチ情報蓄積部202は、新たに必要となる差分のタッチ情報300のみを読み出してもよい。これにより、以降に読み出されるタッチ情報300の量が削減される。
方向決定部203は、タッチ情報の読み出し処理(S505)で読み出したタッチ情報300を用いて、操作装置11の向きを決定する(S506:方向決定処理)。その後、方向決定部203は、決定した操作装置11の向きをカーソル位置決定部204に渡す。この方向決定処理については、後で図6を用いて詳細に説明する。
カーソル位置決定部204は、方向決定部203から操作装置11の向きを受け取り、操作装置11の向きが「正しい向き」であるか否かを判定する(S507)。
ここで、操作装置11の向きが「正しい向き」である場合(S507でYES)、カーソル位置決定部204は、画面上でのカーソル位置を決定する処理(S509)を実行する。
一方、操作装置11の向きが「正しい向き」以外である場合(S507でNO)、カーソル位置決定部204は、操作装置11の向きに基づいて、タッチ情報検出部201から受け取ったタッチ情報300の位置情報302を補正する(S508:位置情報補正処理)。この場合、カーソル位置決定部204は、操作装置11の向きが「正しい向き」である場合と同等の位置にカーソルが表示されるように、位置情報302を補正する。この位置情報補正処理については、後で詳細に説明する。
次に、カーソル位置決定部204は、タッチ情報検出部201から受け取ったタッチ情報300の位置情報302、または、補正された位置情報302を用いて、画面上でのカーソル位置を決定する(S509)。具体的には、カーソル位置決定部204は、タッチパッド102の座標系および画面表示上の座標系におけるそれぞれの最小値と最大値とから、タッチパッド102の座標系と画面表示上の座標系との拡大比を得ることによりカーソル位置を決定する。
すなわち、カーソル位置決定部204は、位置情報のx座標とy座標とのそれぞれについて、(画面表示上のカーソル位置)=(タッチパッド102上のカーソル位置)×{(画面表示上の座標系の最大値)−(画面表示上の座標系の最小値)}÷{(タッチパッド102上の座標系の最大値)−(タッチパッド102上の座標系の最小値)}により、画面上でのカーソル位置を決定する。
その後、カーソル位置決定部204は、決定したカーソル位置のx座標とy座標とを、画面データ生成部205に渡す。
画面データ生成部205は、カーソル位置決定部204から受け取ったカーソル位置に基づいて、表示部206で表示すべき映像およびアニメーション等にカーソル画像を重畳して、画面データを生成する(S510)。その後、画面データ生成部205は、生成した画面データを表示部206に渡す。
表示部206は、画面データ生成部205から受け取った画面データを画面等に表示する(S511)。本処理の終了後、タッチ情報検出部201は、再度、タッチパッド102への入力の検出を継続するか否かを確認する処理(S501)を実行する。
以上で、図5に示す画面表示装置1の全体処理フローについての説明を終了する。
次に、図6〜図7Dを用いて、図5に示された方向決定処理(S506)のフローについて説明する。以降、図5に示されたタッチ情報の読み出し処理(S505)において読み出したタッチ情報300に含まれる位置情報302を時系列に並べ、隣接する2点の位置情報を線分で結んだものを「軌跡」と記す。
図6は、図2に示された方向決定部203における方向決定処理フローを示す図である。
まず、方向決定部203は、タッチ情報テーブル400から読み出したタッチ情報300の有無を確認する(S601)。
ここで、読み出したタッチ情報300が存在しない場合(S601でNO)、方向決定部203は、操作装置11の向きが「方向不定」であると決定する(S613)。
一方、読み出したタッチ情報300が存在する場合(S601でYES)、方向決定部203は、前段の処理(S601)で読み出したタッチ情報300について、軌跡上の2点の位置情報302を結ぶ線分の傾きΔを計算する(S602)。
傾きΔは、時系列で隣接する2点A、Bの位置情報をA(xa、ya)、B(xb、yb)とした場合、(傾きΔ)=(yb−ya)÷(xb−xa)で計算される。但し、このとき、(yb−ya)と(xb−xa)の符号が考慮される。すなわち、計算された傾きΔは、その正負に関連づけて保持される。このようにして、方向決定部203は、読み出した全てのタッチ情報300について、傾きΔを計算する。
次に、方向決定部203は、前段の処理(S602)で計算した傾きΔについて、時系列で隣接する2つの傾きΔの変化度δを計算する(S603)。変化度δは、時系列で隣接する2つの傾きΔをΔA、ΔBとした場合、(変化度δ)=ΔB−ΔAで計算される。方向決定部203は、前段の処理(S602)で計算した全ての傾きΔについて、変化度δを計算する。
方向決定部203は、位置情報302と、傾きΔと、変化度δとから、軌跡の形状を決定する(S604:軌跡形状決定処理)。この軌跡形状決定処理については、後で図7A〜図7Dを用いて詳細に説明する。
方向決定部203は、軌跡形状決定処理(S604)で決定した軌跡の形状が「上に凸」であるか否かを確認する(S605)。
ここで、軌跡の形状が「上に凸」である場合(S605でYES)、方向決定部203は、人の指の構造上の特徴などを鑑みて、ユーザの指103の向きがタッチパッド102の上方向(タッチパッド102の座標系と同一方向)であると判断する。
また、ユーザの意図する操作装置11の向きは、ユーザの指103の方向と一致すると考えられる。したがって、方向決定部203は、操作装置11の向きが「正しい向き」であると決定する(S606)。そして、方向決定部203は、カーソル位置決定部204に、決定した操作装置11の向きを渡し、本処理を終了する。
一方、軌跡の形状が「上に凸」でない場合(S605でNO)、方向決定部203は、軌跡形状決定処理(S604)で決定した軌跡の形状が「下に凸」であるか否かを確認する(S607)。
ここで、軌跡の形状が「下に凸」である場合(S607でYES)、方向決定部203は、人の指の構造上の特徴などを鑑みて、ユーザの指103の向きがタッチパッド102の下方向(タッチパッド102の座標系と上下反対方向、あるいは、右または左に180°回転させた方向)であると判断する。
また、ユーザの意図する操作装置11の向きは、ユーザの指103の方向と一致すると考えられる。したがって、方向決定部203は、操作装置11の向きが「正しい向き」であると決定する場合(S606)とは反対に、操作装置11の向きが「逆向き」であると決定する(S608)。そして、方向決定部203は、カーソル位置決定部204に、決定した操作装置11の向きを渡し、本処理を終了する。
一方、軌跡の形状が「下に凸」でない場合(S607でNO)、方向決定部203は、軌跡形状決定処理(S604)で決定した軌跡の形状が「右に凸」であるか否かを確認する(S609)。
ここで、軌跡の形状が「右に凸」である場合(S609でYES)、方向決定部203は、人の指の構造上の特徴などを鑑みて、ユーザの指103の向きがタッチパッド102の右方向(タッチパッド102の座標系を右に90°回転させた方向)であると判断する。
また、ユーザの意図する操作装置11の向きは、ユーザの指103の方向と一致すると考えられる。したがって、方向決定部203は、操作装置11の向きが「右向き」であると決定する(S610)。方向決定部203は、カーソル位置決定部204に、決定した操作装置11の向きを渡し、本処理を終了する。
一方、軌跡の形状が「右に凸」でない場合(S609でNO)、方向決定部203は、軌跡形状決定処理(S604)で決定した軌跡の形状が「左に凸」であるか否かを確認する(S611)。
ここで、軌跡の形状が「左に凸」である場合(S611でYES)、方向決定部203は、人の指の構造上の特徴などを鑑みて、ユーザの指103の向きがタッチパッド102の左方向(タッチパッド102の座標系を左に90°回転させた方向)であると判断する。
また、ユーザの意図する操作装置11の向きは、ユーザの指103の方向と一致すると考えられる。したがって、方向決定部203は、操作装置11の向きが「左向き」であると決定する(S612)。方向決定部203は、カーソル位置決定部204に、決定した操作装置11の向きを渡し、本処理を終了する。
一方、軌跡の形状が「左に凸」でない場合(S611でNO)、方向決定部203は、前段の処理で軌跡の形状を決定することができない(「形状不定」)。この場合、方向決定部203は、操作装置11の向きが「方向不定」であると決定する(S613)。
なお、方向決定部203は、操作装置11の向きが方向不定である場合(S613)、操作装置11の向きがデフォルトの向きとして「正しい向き」であると決定してもよい。このデフォルトの向きは、出荷時などに予め画面表示装置1にデフォルト値として設定されていている向きでもよいし、ユーザが予めデフォルト値として設定している向きでもよい。
以上で、方向決定部203での方向決定処理フローについての説明を終了する。
次に、図7A〜図7Dを用いて、方向決定部203での軌跡形状決定処理について説明する。
図7A〜図7Dは、傾きΔと変化度δとから軌跡の形状を決定し、さらに、軌跡の形状からユーザの指の向きを推定することにより、結果として、操作装置11の向きを決定する方法を示した図である。操作装置11の向きには、「正しい向き」、「逆向き」、「右向き」、「左向き」の4パターンがある。図7Aが「正しい向き」を、図7Bが「逆向き」を、図7Cが「右向き」を、図7Dが「左向き」を示している。
方向決定部203は、図6で示した方向決定処理フローの傾きΔの計算処理(S602)で計算した傾きΔの値の正負を判別する。また、方向決定部203は、傾きΔを計算する際のx座標の差分「Δx」の正負とy座標の差分「Δy」の正負とを判別する。また、方向決定部203は、変化度δの計算処理(S603)において計算した変化度δの値の正負を判別する。
図7A〜図7Dでは、それぞれ、これらの正負の判別結果が表で表されており、正が「+」、負が「−」で示されている。当該表中では示されていないが、傾きΔまたは変化度δが0の場合は、「±」によって表される特別な状態として考慮されてもよい。また、当該表中では示されていないが、傾きΔが無限大となる場合、および、Δxが0となることにより傾きΔが計算できない場合なども考えられる。これらの場合も軌跡の形状の特徴として考慮されてもよい。
図7Aの場合、傾きΔが「+」から「−」に変化し、変化度δが全て「−」である。方向決定部203は、ΔxおよびΔyの値も考慮して、軌跡が「上に凸」の形状であると決定する。
図7Bの場合、傾きΔが「−」から「+」に変化し、変化度δが全て「+」である。方向決定部203は、ΔxおよびΔyの値も考慮して、軌跡は「下に凸」の形状であると決定する。
図7Cの場合、傾きΔが「−」から「+」に変化し、変化度δが「−」から「+」に変化している。方向決定部203は、ΔxおよびΔyの値も考慮して、軌跡が「右に凸」の形状であると決定する。
図7Dの場合、傾きΔが「+」から「−」に変化し、変化度δが「−」から「+」に変化している。方向決定部203は、ΔxおよびΔyの値も考慮して、軌跡が「左に凸」の形状であると決定する。
図7A〜図7Dのいずれの場合にも該当しない場合、方向決定部203は、軌跡の形状を決定できない。そのため、方向決定部203は、「形状不定」であると決定する。例えば、方向決定部203が軌跡の形状を決定できない場合として、軌跡に含まれる位置情報302の数が少なかった場合などが考えられる。
なお、方向決定部203は、傾きΔの変化と変化度δの変化との組み合わせが、図7A〜図7Dのいずれにも該当しない場合であっても、図7A〜図7Dのどのパターンに最も近いかを判定してもよい。これにより、方向決定部203は、軌跡の形状を図7A〜図7Dのいずれかに決定してもよい。
以上で、方向決定部203での軌跡形状決定処理についての説明を終了する。
次に、カーソル位置決定部204における位置情報補正処理について説明する。
カーソル位置決定部204は、タッチパッド102上の中心座標Cを中心として回転した座標を計算することで補正後の位置情報を取得する。
例えば、タッチパッド102の座標系のx座標の取り得る値の最小値、最大値がそれぞれx_min、x_maxであって、y座標の値の取り得る最小値、最大値がそれぞれy_min、y_maxであるとする。この場合、中心座標Cは、C((x_max−x_min)÷2、(y_max−y_min)÷2)で表現される。カーソル位置決定部204は、この中心座標Cを中心として回転した座標を計算することで補正後の位置情報を取得する。
カーソル位置決定部204は、方向決定部203から受け取る操作装置11の向きが「逆向き」の場合、タッチ情報検出部201から受け取った位置情報を、中心座標Cを中心に右(または左)に180°回転させる。
カーソル位置決定部204は、方向決定部203から受け取る操作装置11の向きが「右向き」の場合、タッチ情報検出部201から受け取った位置情報を、中心座標Cを中心に左に90°回転させる。カーソル位置決定部204は、操作装置11の向きが「左向き」の場合、タッチ情報検出部201から受け取った位置情報を、中心座標Cを中心に右に90°回転させる。
カーソル位置決定部204は、このような処理により、ユーザが操作装置11をどの向きに保持した場合でも、「正しい向き」に保持している場合と同等のカーソル位置となるようにカーソル位置を補正することができる。
以上で、カーソル位置決定部204における位置情報補正処理についての説明を終了する。
以上で、実施の形態1における画面表示装置1の処理フローの説明を終了する。
上述のような構成によれば、画面表示装置1のタッチ情報蓄積部202は、タッチ情報検出部201で検出したタッチ情報300を蓄積する。そして、方向決定部203は、タッチ情報300に含まれる位置情報302の軌跡の形状を用いて、操作装置11の向きを決定する。カーソル位置決定部204は、その向きに応じて、タッチ情報検出部201から受け取るタッチ情報300に含まれる位置情報302を適切に補正した上で、カーソル105の表示位置を決定する。
したがって、画面表示装置1は、ユーザが操作装置11のどの面を画面104側に向けて保持する場合でも、ユーザによるタッチパッド102への入力のみに基づいて、操作装置11の向きを適切かつ自動的に決定することができる。これにより、画面表示装置1は、正しい位置にカーソル105を表示することができる。よって、画面表示装置1は、ユーザの快適な操作性を実現することができる。
(実施の形態2)
実施の形態2に係る画面表示装置は、2つのタッチパッドを備え、2つのタッチパッド上でのユーザの入力を利用して、操作装置の向きを認識する。そして、画面表示装置は、操作装置の向きに基づき、画面上でのカーソルの表示位置を補正する。
図8は、実施の形態2における画面表示装置の概略図である。図8に示された画面表示装置2は、ユーザからの入力を受け付け、画面805にカーソル806等を表示する。
リモコン801は、ユーザが画面805上のGUIを操作する操作装置の一例である。リモコン801は、ユーザの指804による入力を受け付ける右タッチパッド802と左タッチパッド803とを備えている。
右タッチパッド802および左タッチパッド803による入力の受付処理は、静電容量の変化を検出する方法などにより実現されるが、公知技術であるため、ここでは説明を省略する。また、リモコン801は、画面805に対してBluetoothおよびZigBee/IEEE802.15.4などの無線によって信号を伝送するが、信号の伝送技術は、同様に公知技術であるため、ここでは説明を省略する。
なお、実施の形態2は、ユーザがリモコン801を両手で保持し、2面のタッチパッドが左右に並ぶ向きで使用する場合(以降、保持方向が「横持ち」である、とも記す)の例である。したがって、ユーザが保持する操作装置の向きは、2面のタッチパッド上での位置情報の座標系に対して、「正しい向き」および「逆向き」のどちらかとなる。
なお、以下では、アプリケーションなどの指定によって、操作装置の保持方向が、横持ちで使用するように固定されている場合の例が示される。しかし、アプリケーションなどの指定によって保持方向が、縦持ちで使用するよう固定されている場合、画面表示装置2は、2面のタッチパッド上での座標系を右方向または左方向に90°回転させてもよい。これにより、以下に示される例と同様の処理が実現可能である。
ユーザが指804を右タッチパッド802に接触させた場合、右タッチパッド802上での接触位置がx座標とy座標とで表される位置情報として検出される。右タッチパッド802上での座標系は、画面805上での座標系と一対一で対応づけられている。そのため、画面表示装置2は、検出した位置情報に基づき、カーソル806の画面805上での座標の値を計算できる。
同様に、左タッチパッド803も、右タッチパッド802の座標系とは独立した座標系を有している。そして、左タッチパッド803上での接触位置がx座標とy座標とで表される位置情報として検出される。左タッチパッド803上での座標系が画面805上での座標系と一対一で対応づけられている。そのため、画面表示装置2は、検出した位置情報に基づき、カーソル806の画面805上での座標の値を計算できる。
図9は、図8に示された実施の形態2における画面表示装置2の構成図である。図9において、図8と同一の構成要素については同一の符号を用い、説明を省略する。
図9に示された画面表示装置2は、右タッチパッド802と、左タッチパッド803と、タッチ情報検出部901と、タッチ情報蓄積部902と、方向決定部903と、カーソル位置決定部904と、画面データ生成部905と、表示部906とを備える。
図9に示された操作装置21は、リモコン801などによって実現され、右タッチパッド802と、左タッチパッド803とを備える。また、表示制御装置20は、タッチ情報検出部901と、タッチ情報蓄積部902と、方向決定部903と、カーソル位置決定部904と、画面データ生成部905とを備える。
表示制御装置20は、操作装置21から信号を受け、画面805に表示させるための画面データを生成する。なお、表示制御装置20は、操作装置21または表示部906に組み込まれていてもよい。
タッチ情報検出部901は、ユーザによる右タッチパッド802上または左タッチパッド803上での接触操作あるいは押下操作などに対応して、タッチ情報を検出する手段である。ここでは、タッチ情報検出部901は、表示制御装置20に含まれるが、操作装置21に含まれてもよい。タッチ情報は、少なくとも右タッチパッド802上または左タッチパッド803上での接触位置を示すx座標およびy座標である位置情報を含む。タッチ情報検出部901は、所定の時間間隔でタッチ情報を検出して、タッチ情報蓄積部902に検出したタッチ情報を渡す。このタッチ情報の構成例については、後で図10を用いて詳細に説明する。
タッチ情報蓄積部902は、タッチ情報検出部901から渡されるタッチ情報を蓄積する手段である。タッチ情報蓄積部902は、方向決定部903がタッチ情報を用いて操作装置21の向きを決定できるように、所定時間あるいは所定量などのタッチ情報を時系列などの順で蓄積する。このタッチ情報テーブルの構成例については、後で図11を用いて詳細に説明する。
方向決定部903は、タッチ情報蓄積部902で蓄積されたタッチ情報に基づいて、操作装置21の向きを決定する手段である。具体的には、方向決定部903は、所定のアルゴリズムに基づいてタッチ情報を解析することで、操作装置21がどちらの方向を向いているかを決定する。このアルゴリズムについては、後で図13および図14を用いて詳しく説明する。
なお、以下、これに限られるものではないが、基本的には、方向決定部903は、ユーザが自然にタッチパッドを触る操作によって得られたタッチ情報を用いて、操作装置21の向きを決定することができる。このようなタッチ情報は、ユーザが操作装置21を保持し始めた時点、アプリケーションの切替え時、および、同一アプリケーション内で操作装置21の保持方向が変わる時などにおいて、得られる。
カーソル位置決定部904は、方向決定部903で決定した操作装置21の向きと、タッチ情報検出部901で検出したタッチ情報とから、画面805上に表示するカーソル806の位置を計算する手段である。
カーソル位置決定部904は、方向決定部903でユーザが操作装置21を「正しい向き」に保持していないと判断された場合、タッチ情報に含まれる位置情報の値を変換(座標変換)する。これにより、カーソル位置決定部904は、ユーザが操作装置21を「正しい向き」に保持している場合と同等のカーソル806の動きとなるように、位置情報を補正する。一方、方向決定部903でユーザが操作装置21を「正しい向き」に保持していると判断された場合、カーソル位置決定部904は位置情報の補正を行わない。
また、カーソル位置決定部904は、タッチ情報検出部901から受け取った位置情報、または、当該手段で補正した後の位置情報を用いて、画面805上でのカーソル806の表示位置(カーソル位置)を決定する。
画面データ生成部905は、カーソル位置決定部904で決定したカーソル806の表示位置などに基づいて、画面データを生成する手段である。画面データ生成部905は、動画ビューワまたはウェブブラウザなどのアプリケーションの画像と、カーソル画像とを重畳することにより、表示部906で表示する画面データを生成する。
表示部906は、画面データ生成部905から渡された画面データを表示する手段である。表示部906は、例えば、デジタルTVの画面などである。なお、表示部906は、画面表示装置2の外部にあってもよい。
以上で、実施の形態2における画面表示装置2の構成についての説明を終了する。
次に、図10を用いて、タッチ情報検出部901が検出するタッチ情報について説明する。
図10は、タッチ情報の構成例を示す図である。図10に示されたタッチ情報1000は、タッチパッドID1001と操作ID1002と位置情報1003とから構成される。
タッチパッドID1001は、右タッチパッド802と左タッチパッド803とのどちらのタッチパッド上での接触操作あるいは押下操作によるタッチ情報1000であるかを示すIDである。タッチパッドID1001には、右タッチパッド802の場合を示す「右タッチパッド」と、左タッチパッド803の場合を示す「左タッチパッド」とがある。
操作ID1002は、ユーザが右タッチパッド802または左タッチパッド803上で行った操作の種別を示すIDである。操作ID1002として、右タッチパッド802あるいは左タッチパッド803への接触操作を示す「TOUCH」と、右タッチパッド802あるいは左タッチパッド803の押下操作を示す「CLICK」とがある。
位置情報1003は、操作ID1002で示される操作が行われた右タッチパッド802上あるいは左タッチパッド803上でのx座標の値とy座標の値とで構成されており、(x座標の値、y座標の値)の形式で表される。
図10では、「右タッチパッド802への接触操作が(100、100)で発生した」ことを示すタッチ情報1000が例示されている。
以上で、タッチ情報1000の構成例についての説明を終了する。
次に、図11を用いて、タッチ情報蓄積部902が蓄積するタッチ情報テーブル1100について説明する。
図11は、タッチ情報蓄積部902が蓄積するタッチ情報テーブル1100の構成例を示す図である。タッチ情報テーブル1100は、タッチ情報蓄積部902が、タッチ情報検出部901から渡されるタッチ情報1000を、RAMまたはフラッシュメモリなどに時系列順で蓄積したテーブルである。タッチ情報蓄積部902は、タッチ情報検出部901からタッチ情報1000が渡される度に、受け取ったタッチ情報1000をタッチ情報テーブル1100に追加する。
図11に示す例は、(1)「右タッチパッド802への接触操作が(100、100)で発生した」、(2)「右タッチパッド802への接触操作が(150、200)で発生した」、(3)「左タッチパッド803への接触操作が(30、300)で発生した」、(4)「右タッチパッド802への接触操作が(200、300)で発生した」、(5)「右タッチパッド802への押下操作が(200、300)で発生した」、および、(6)「左タッチパッド803への押下操作が(30、300)で発生した」ということを示している。
ここで、タッチ情報検出部901は、所定の時間間隔で右タッチパッド802上と左タッチパッド803上の接触操作および押下操作を検出する。
したがって、図11に示すタッチ情報テーブル1100から、ユーザの指の動作は、次のように解釈される。すなわち、まず、ユーザの指は、右タッチパッド802に(100、100)で接触した。次に、ユーザの指は、右タッチパッド802に接触した状態で(150、200)を経由して(200、300)まで移動した。そこで、ユーザの指は、右タッチパッド802を押下した。また、ユーザの指は、左タッチパッド803に(30、300)で接触した。そこで、ユーザの指は、左タッチパッド803を押下した。以上の動作が、タッチ情報テーブル1100から、解釈される。
なお、タッチ情報蓄積部902は、所定時間を経過した場合、タッチ情報テーブル1100に含まれる古いタッチ情報1000を定期的に削除してもよい。また、タッチ情報蓄積部902は、タッチ情報検出部901からタッチ情報1000を受け取ったときに蓄積量が所定量を超過するような場合、新しいタッチ情報1000で古いタッチ情報1000を上書き更新してもよい。
以上で、タッチ情報テーブル1100の構成例についての説明を終了する。
次に、図12から図14を用いて、実施の形態2における画面表示装置2の処理フローについて説明する。
図12は、図9に示された実施の形態2における画面表示装置2の全体処理フローである。
まず、画面表示装置2のタッチ情報検出部901は、図9に図示しない指示部からの指示に基づき、右タッチパッド802または左タッチパッド803への入力の検出を継続するか否かを確認する(S1201)。
ここで、タッチ情報検出部901が右タッチパッド802または左タッチパッド803への入力の検出を中断するよう指示されている場合(S1201でNO)、画面表示装置2は、処理を終了する。
一方、タッチ情報検出部901が右タッチパッド802または左タッチパッド803への入力の検出を継続するよう指示されている場合(S1201でYES)、タッチ情報検出部901は、図10に示したタッチ情報1000の有無を検出する(S1202)。この場合、タッチ情報検出部901は、右タッチパッド802または左タッチパッド803への入力の有無を確認することにより、タッチ情報1000の有無を検出する。
ここで、タッチ情報検出部901は、「タッチ情報無し」と検出した場合(S1202でNO)、再度、入力の検出を継続するか否かを確認する(S1201)。
一方、タッチ情報検出部901は、「タッチ情報有り」と検出した場合(S1202でYES)、タッチ情報蓄積部902にタッチ情報1000を蓄積する(S1203)。より具体的には、タッチ情報検出部901は、図11で示したタッチ情報テーブル1100にタッチ情報1000を追加する。また、タッチ情報検出部901は、画面上でのカーソルの表示のため、検出したタッチ情報1000をカーソル位置決定部904にも渡す。
次に、カーソル位置決定部904は、タッチ情報検出部901からタッチ情報1000を受け取った後、タッチ情報1000に含まれる位置情報1003を補正する必要があるか否かを決定する。そのため、方向決定部903に対して、操作装置21の向きを問い合わせる(S1204)。
次に、方向決定部903は、カーソル位置決定部904からの問い合わせを受けた後、タッチ情報蓄積部902のタッチ情報テーブル1100にアクセスして、タッチ情報1000を読み出す(S1205)。このとき、方向決定部903は、事前に方向決定部903に設定された所定時間分のタッチ情報1000あるいは所定量のタッチ情報1000を読み出す。
なお、タッチ情報蓄積部902は、タッチ情報検出部901から所定の時間間隔で受け取ったタッチ情報1000を順次蓄積する。したがって、計算により所定時間分のタッチ情報の量が求められる。
また、タッチ情報蓄積部902は、タッチ情報1000を読み出す際、一旦読み出したタッチ情報1000を方向決定部903の内部などで保持させておいてもよい。そして、タッチ情報蓄積部902は、新たに必要となる差分のタッチ情報1000のみを読み出してもよい。これにより、以降に読み出されるタッチ情報1000の量が削減される。
方向決定部903は、前段の処理(S1205)で読み出したタッチ情報1000を用いて、操作装置21の向きを決定する(S1206:方向決定処理)。その後、方向決定部903は、決定した操作装置21の向きをカーソル位置決定部904に渡す。この方向決定処理については、後で図13を用いて詳細に説明する。
カーソル位置決定部904は、方向決定部903から操作装置21の向きを受け取り、操作装置21の向きが「正しい向き」であるか否かを判定する(S1207)。
ここで、操作装置21の向きが「正しい向き」である場合(S1207でYES)、カーソル位置決定部904は、画面上でのカーソル位置を決定する処理(S1209)を実行する。
一方、操作装置21の向きが「正しい向き」以外である場合(S1207でNO)、カーソル位置決定部904は、タッチ情報検出部901から受け取ったタッチ情報1000の位置情報1003を補正する(S1208:位置情報補正処理)。この場合、カーソル位置決定部904は、操作装置21の向きに基づいて、位置情報1003を、操作装置21の向きが「正しい向き」である場合と同等の位置にカーソルが表示されるように補正する。この位置情報補正処理については、実施の形態1と同様である。
次に、カーソル位置決定部904は、タッチ情報検出部901から受け取ったタッチ情報1000の位置情報1003、または、補正された位置情報1003を用いて、画面上でのカーソル位置を決定する(S1209)。
具体的には、カーソル位置決定部904は、右タッチパッド802の座標系の最小値と最大値と、画面表示上の座標系における最小値と最大値とから、右タッチパッド802の座標系と画面表示上の座標系との拡大比を取得する。また、カーソル位置決定部904は、左タッチパッド803の座標系の最小値と最大値と、画面表示上の座標系における最小値と最大値とから、左タッチパッド803の座標系と画面表示上の座標系との拡大比を取得する。これにより、カーソル位置決定部904は、画面上でのカーソル位置を決定する。
すなわち、カーソル位置決定部904は、位置情報のx座標とy座標とのそれぞれについて、(画面表示上の右タッチパッド802のカーソル位置)=(右タッチパッド802上のカーソル位置)×{(画面表示上の座標系の最大値)−(画面表示上の座標系の最小値)}÷{(右タッチパッド802上の座標系の最大値)−(右タッチパッド802上の座標系の最小値)}により、右タッチパッド802に対応するカーソル位置を決定する。
同様に、カーソル位置決定部904は、(画面表示上の左タッチパッド803のカーソル位置)=(左タッチパッド803上のカーソル位置)×{(画面表示上の座標系の最大値)−(画面表示上の座標系の最小値)}÷{(左タッチパッド803上の座標系の最大値)−(左タッチパッド803上の座標系の最小値)}により、左タッチパッド803に対応するカーソル位置を決定する。
その後、カーソル位置決定部904は、決定したカーソル位置のx座標とy座標とを、画面データ生成部905に渡す。
なお、右タッチパッド802と左タッチパッド803とで画面表示上の座標系が異なるように割り当てられてもよい。この場合、上記の計算において、「画面表示上の座標系の最大値」と「画面表示上の座標系の最小値」とが、右タッチパッド802と左タッチパッド803とのそれぞれに設けられる。これにより、それぞれのカーソル位置が決定される。
画面データ生成部905は、カーソル位置決定部904から受け取ったカーソル位置に基づいて、表示部906で表示すべき映像およびアニメーション等にカーソル画像を重畳して、画面データを生成する(S1210)。その後、画面データ生成部905は、生成した画面データを表示部906に渡す。
表示部906は、画面データ生成部905から受け取った画面データを画面等に表示する(S1211)。本処理の終了後、タッチ情報検出部901は、再度、入力の検出を継続するか否かを確認する(S1201)。
以上で、図12に示す画面表示装置2の全体処理フローについての説明を終了する。
次に、図13〜図15Bを用いて、図12に示された方向決定処理(S1206)のフローについて説明する。以降、図12に示されたタッチ情報の読み出し処理(S1205)において読み出したタッチ情報1000に含まれる位置情報1003を時系列に並べ、隣接する2点の位置情報を線分で結んだものを「軌跡」と記す。
まず、方向決定部903は、右タッチパッド802に関してタッチ情報テーブル1100から読み出したタッチ情報1000の軌跡形状決定処理を実行する(S1301)。この軌跡形状決定処理については、後で図14を用いて詳細に説明する。
次に、方向決定部903は、左タッチパッド803に関してタッチ情報テーブル1100から読み出したタッチ情報1000の軌跡形状決定処理を実行する(S1302)。この軌跡形状決定処理は、前段の軌跡形状決定処理(S1301)と同一である。
次に、方向決定部903は、右タッチパッドの軌跡形状決定処理(S1301)および左タッチパッドの軌跡形状決定処理(S1302)の処理結果から、両方のタッチパッドのタッチ情報が有ることを確認する(S1303)。すなわち、方向決定部903は、右タッチパッド802に関するタッチ情報1000と左タッチパッド803に関するタッチ情報1000との両方が有ることを確認する。
ここで、右タッチパッド802に関するタッチ情報1000と左タッチパッド803に関するタッチ情報1000との両方が有る場合(S1303でYES)、方向決定部903は、両方の軌跡の形状が一致するか否かを確認する(S1304)。すなわち、この場合、方向決定部903は、右タッチパッドの軌跡形状決定処理(S1301)および右タッチパッドの軌跡形状決定処理(S1302)の処理結果から、右タッチパッド802の軌跡の形状と左タッチパッド803の軌跡の形状とが一致するか否かを確認する。
具体的には、方向決定部903は、右タッチパッド802の軌跡の形状と左タッチパッド803の軌跡の形状が、両方とも「上に凸」であるか、または、両方とも「下に凸」であるかを確認する。なお、右タッチパッドの軌跡形状決定処理(S1301)の処理結果または左タッチパッドの軌跡形状決定処理(S1302)の処理結果が「形状不定」である場合がある。この場合、右タッチパッド802の軌跡の形状と左タッチパッド803の軌跡の形状とが一致しないと判断される。
一方、右タッチパッド802に関するタッチ情報1000が無い場合、または、左タッチパッド803に関するタッチ情報1000が無い場合(S1303でNO)、方向決定部903は、そのどちらか一方が有ることを確認する(S1310)。すなわち、この場合、方向決定部903は、右タッチパッドの軌跡形状決定処理(S1301)および右タッチパッドの軌跡形状決定処理(S1302)の処理結果から、右タッチパッド802に関するタッチ情報1000および左タッチパッド803に関するタッチ情報1000のどちらか一方が有ることを確認する。
なお、ここでは、右タッチパッド802および左タッチパッド803のどちらかに関するタッチ情報1000が検知された場合、方向決定部903が軌跡の形状を用いた方向決定処理を実行する例が示されている。しかし、右タッチパッド802と左タッチパッド803の両方に関するタッチ情報1000が検知された場合のみ、方向決定部903が方向決定処理を実行してもよい。この場合、両タッチパッドのどちらか一方のタッチ情報1000が有ることを確認する処理(S1310)は省略される。
そして、両タッチパッドの軌跡の形状が一致しない場合(S1304でNO)、または、両タッチパッドのどちらにもタッチ情報1000がない場合(S1310でNO)、方向決定部903は、操作装置21の向きは「方向不定」であると決定する(S1309)。なお、この場合、方向決定部903は、操作装置21の向きが、デフォルトの向きとして「正しい向き」であると決定してもよい。このデフォルトの向きは、出荷時などに予め画面表示装置2にデフォルト値として設定されている向きでもよいし、ユーザが予めデフォルト値として設定している向きでもよい。
そして、右タッチパッド802の軌跡の形状と左タッチパッド803の軌跡の形状とが一致する場合(S1304でYES)、または、両タッチパッドのどちらかにタッチ情報1000がある場合(S1310でYES)、方向決定部903は、前段の処理で確認した軌跡の形状が「上に凸」であるか否かを確認する(S1305)。
ここで、軌跡の形状が「上に凸」である場合(S1305でYES)、方向決定部903は、人の指の構造上の特徴などを鑑みて、ユーザの指804の向きが右タッチパッド802および左タッチパッド803の上方向であると判断する。つまり、方向決定部903は、ユーザの指804の向きが、右タッチパッド802の座標系および左タッチパッド803の座標系と同一方向であると判断する。
また、ユーザの意図する操作装置21の向きは、ユーザの指804の方向と一致すると考えられる。したがって、方向決定部903は、操作装置21の向きが「正しい向き」であると決定する(S1306)。そして、方向決定部903は、カーソル位置決定部904に、決定した操作装置21の向きを渡し、本処理を終了する。
一方、軌跡の形状が「上に凸」でない場合(S1305でNO)、方向決定部903は、前段の処理で確認した軌跡の形状が「下に凸」であるか否かを確認する(S1307)。
ここで、軌跡の形状が「下に凸」である場合(S1307でYES)、方向決定部903は、人の指の構造上の特徴などを鑑みて、ユーザの指804の向きが右タッチパッド802および左タッチパッド803の下方向であると判断する。つまり、方向決定部903は、ユーザの指804の向きが右タッチパッド802の座標系および左タッチパッド803の座標系と上下反対方向、あるいは、右または左にそれぞれ180°回転させた方向であると判断する。
また、ユーザの意図する操作装置21の向きは、ユーザの指804の方向と一致すると考えられる。したがって、方向決定部903は、操作装置21の向きが「正しい向き」であると決定する場合(S1306)とは反対に、操作装置21の向きが「逆向き」であると決定する(S1308)。そして、方向決定部903は、カーソル位置決定部904に、決定した操作装置21の向きを渡し、本処理を終了する。
一方、軌跡の形状が「下に凸」でない場合(S1307でNO)、両タッチパッドの軌跡の形状が一致しない場合(S1304でNO)などと同様に、方向決定部903は、操作装置21の向きが「方向不定」であると決定する(S1309)。
以上で、方向決定部903での方向決定処理フローについての説明を終了する。
次に、図14、図15Aおよび図15Bを用いて、図13に示された右タッチパッドの軌跡形状決定処理(S1301)および左タッチパッドの軌跡形状決定処理(S1302)のフローについて説明する。
まず、方向決定部903は、タッチ情報テーブル1100から読み出したタッチ情報1000の有無を確認する(S1401)。
ここで、読み出したタッチ情報1000が存在しない場合(S1401でNO)、方向決定部903は、本処理を終了する。
一方、読み出したタッチ情報1000が存在する場合(S1401でYES)、方向決定部903は、前段の処理(S1401)で読み出したタッチ情報1000について、軌跡上の2点の位置情報1003を結ぶ線分の傾きΔを計算する(S1402)。
傾きΔは、時系列で隣接する2点A、Bの位置情報をA(xa、ya)、B(xb、yb)とした場合、(傾きΔ)=(yb−ya)÷(xb−xa)で計算される。但し、このとき、(yb−ya)と(xb−xa)の符号が考慮され、計算された傾きΔと関連づけて保持される。このようにして、方向決定部903は、読み出した全てのタッチ情報1000について、傾きΔを計算する。
次に、方向決定部903は、前段の処理(S1402)で計算した傾きΔについて、時系列で隣接する2つの傾きΔの変化度δを計算する(S1403)。変化度δは、時系列で隣接する2つの傾きΔをΔA、ΔBとした場合、(変化度δ)=ΔB−ΔAで計算される。方向決定部903は、前段の処理(S1402)で計算した全ての傾きΔについて、変化度δを計算する。
次に、方向決定部903は、位置情報1003と、傾きΔと、変化度δとから、軌跡の形状を決定する(S1404)。この処理について、図15Aおよび図15Bを用いて詳細に説明する。
図15Aおよび図15Bは、傾きΔと変化度δとから軌跡の形状を決定し、さらに、軌跡の形状からユーザの指の向きを推定することにより、結果として、操作装置21の向きを決定する方法を示した図である。操作装置21の向きは、「正しい向き」、「逆向き」の2パターンがある。図15Aは「正しい向き」を、図15Bは「逆向き」を示している。
方向決定部903は、図14で示した方向決定処理フローの傾きΔを計算する処理(S1402)で計算した傾きΔの値の正負を判別する。また、方向決定部903は、傾きΔを計算する際のx座標の差分「Δx」とy座標の差分「Δy」との正負を判別する。また、方向決定部903は、変化度δを計算する処理(S1403)において計算した変化度δの値の正負を判別する。
図15Aおよび図15Bでは、それぞれ、これらの正負の判別結果が表で表されており、正が「+」、負が「−」で示されている。当該表中では示されていないが、傾きΔまたは変化度δが0の場合は、「±」によって表される特別な状態として考慮されてもよい。また、当該表中では示されていないが、傾きΔが無限大となる場合、および、Δxが0となることにより傾きΔが計算できない場合なども考えられる。これらの場合も軌跡の形状の特徴として考慮されてもよい。
図15Aの場合、傾きΔが「+」から「−」に変化し、変化度δが全て「−」である。方向決定部903は、ΔxおよびΔyの値も考慮して、軌跡は「上に凸」の形状であると決定する。
図15Bの場合、傾きΔが「−」から「+」に変化し、かつ変化度δが全て「+」である。方向決定部903は、ΔxおよびΔyの値も考慮して、軌跡は「下に凸」の形状であると決定する。
図15Aと図15Bのどちらの場合にも該当しない場合、方向決定部903は、軌跡の形状を決定できない。そのため、方向決定部903は、軌跡の形状を「形状不定」であると決定する。例えば、方向決定部903が軌跡の形状を決定できない場合として、軌跡に含まれる位置情報1003の数が少なかったりする場合などが考えられる。
なお、方向決定部903は、計算した傾きΔと変化度δとの変化の組み合わせが、図15Aと図15Bのどちらの場合にも該当しない場合、図15Aと図15Bのどちらのパターンに最も近いかを判定してもよい。これにより、方向決定部903は、軌跡の形状を図15Aまたは図15Bに決定してもよい。
以上で、図13における右タッチパッドの軌跡形状決定処理(S1301)および左タッチパッドの軌跡形状決定処理(S1302)についての説明を終了する。
以上で、実施の形態2における画面表示装置2の処理フローの説明を終了する。
上述のような構成によれば、画面表示装置2のタッチ情報蓄積部902が、タッチ情報検出部901で検出した右タッチパッド802と左タッチパッド803の2面のタッチパッドにおけるタッチ情報1000を蓄積する。そして、方向決定部903は、タッチ情報1000に含まれる位置情報1003から、右タッチパッド802と左タッチパッド803との両方の軌跡の形状を用いて操作装置21の向きを決定する。
カーソル位置決定部904は、操作装置21の向きに応じて、タッチ情報検出部901から受け取るタッチ情報1000に含まれる位置情報1003を適切に補正した上で、カーソル806の表示位置を決定する。
したがって、ユーザが操作装置21をどの向きに保持しても、画面表示装置2は、ユーザによる右タッチパッド802ならびに左タッチパッド803への入力のみに基づいて、操作装置21の向きを適切かつ自動的に決定して、正しい位置にカーソル806を表示することができる。したがって、画面表示装置2は、ユーザの快適な操作性を実現することができる。
(実施の形態3)
実施の形態3では、2つのタッチパッドを備える画面表示装置が、さらに、ユーザが操作装置のどの部分を把持しているかを検出するためのセンサーを備える。
これにより、実施の形態3の画面表示装置は、図8に示した実施の形態2のリモコンの把持方向(以降、「横持ち」とも記す)に加え、図16に示すリモコンの把持方向(以降、「縦持ち」とも記す)も対応できる。そして、実施の形態3の画面表示装置は、画面表示装置のタッチパッド上でのユーザの入力を利用して、横持ちと縦持ちの両方の持ち方(把持方向)において操作装置の向きを認識することにより、操作装置の把持方向と向きとに基づいて画面上でのカーソルの表示位置を補正する。
図16は、実施の形態3における画面表示装置の概略図である。図16において、図8と同一の構成要素については同一の符号を用い、説明を省略する。図16に示された画面表示装置3は、ユーザからの入力を受け付け、画面805にカーソル806を表示する。
リモコン1601には、図8で示したリモコン801と比較して、ユーザの指の接触位置を検知するための1以上のセンサーがリモコン1601の外周部に配置されている。これにより、画面表示装置3は、ユーザがリモコン1601を横方向(図8で示したリモコン801の方向)で持っているか、あるいは、縦方向(図16で示すリモコン1601の方向)で持っているかを自動的に検出可能になる。
そのため、ユーザは、リモコン1601を横方向または縦方向に自由に持つことができる。なお、このようなユーザの指の接触を検知するためのセンサー(タッチセンサー、把持センサーおよび圧力センサーなど)は公知技術であるため、ここでは詳細な説明を省略する。
図17は、図16に示された実施の形態3における画面表示装置3の構成図である。図17において、図9と同一の構成要素については同一の符号を用い、説明を省略する。
図17に示された画面表示装置3は、センサー1701と、センサー情報検出部1702と、方向決定部1703と、カーソル位置決定部1704と、右タッチパッド802と、左タッチパッド803と、タッチ情報検出部901と、タッチ情報蓄積部902と、画面データ生成部905と、表示部906とを備える。
図17に示された操作装置31は、リモコン1601などによって実現され、センサー1701と、右タッチパッド802と、左タッチパッド803とを備える。また、表示制御装置30は、センサー情報検出部1702と、方向決定部1703と、カーソル位置決定部1704と、タッチ情報検出部901と、タッチ情報蓄積部902と、画面データ生成部905とを備える。
表示制御装置30は、操作装置31から信号を受け、画面805に表示させるための画面データを生成する。なお、表示制御装置30は、操作装置31または表示部906に組み込まれていてもよい。また、ここでは、タッチ情報検出部901は、表示制御装置30に含まれるが、操作装置31に含まれてもよい。
センサー1701は、ユーザの指の接触を検知するためのタッチセンサーである。操作装置31の外周部には1以上のタッチセンサーが配置される。
センサー情報検出部1702は、センサー1701からのユーザの指の接触などの検出を示す信号を検知する。そして、操作装置31の外周部などに配置したセンサー1701の位置を鑑みて、ユーザが操作装置31を横方向に把持、つまり、「横持ち」しているか、および、縦方向に把持、つまり、「縦持ち」しているかのどちらであるかを、操作装置31の把持方向として検出する。
センサー情報検出部1702は、方向決定部1703からの要求に応じて、あるいは、センサー情報検出部1702のセンサー情報の検出状況に応じて、検出した操作装置31の把持方向を方向決定部1703に通知する。
方向決定部1703は、センサー情報検出部1702で検出される、ユーザによる操作装置31の把持位置と、タッチ情報蓄積部902で蓄積されるタッチ情報とに基づいて、操作装置31の向きを決定する手段である。具体的には、方向決定部1703は、センサー情報検出部1702で検出される把持位置から操作装置31が横持ちおよび縦持ちのどちらの把持方向であるかを判別した上で、所定のアルゴリズムに基づいてタッチ情報を解析する。これにより、方向決定部1703は、操作装置31がどちらの方向を向いているかを決定する。
なお、以下、これに限られるものではないが、基本的には、方向決定部1703は、ユーザが自然にタッチパッドを触る操作によって得られたタッチ情報を用いて、操作装置31の向きを決定することができる。このようなタッチ情報は、ユーザが操作装置31を保持し始めた時点、アプリケーションの切替え時、および、同一アプリケーション内で操作装置31の保持方向が変わる時などにおいて、得られる。
カーソル位置決定部1704は、方向決定部1703から受け取る操作装置31の把持方向と、方向決定部1703で決定した操作装置31の向きと、タッチ情報検出部901で検出したタッチ情報とから、画面805上に表示するカーソル806の位置を計算する手段である。
カーソル位置決定部1704は、操作装置31の把持方向(横持ち、または、縦持ち)に基づいてタッチ情報に含まれる位置情報の値を変換(座標変換)する。
そして、カーソル位置決定部1704は、方向決定部1703でユーザが操作装置31を「正しい向き」に保持していないと判断された場合、タッチ情報に含まれる位置情報の値を変換(座標変換)する。これにより、カーソル位置決定部1704は、ユーザが操作装置31を「正しい向き」に保持している場合と同等のカーソル806の動きとなるように、位置情報を補正する。一方、ユーザが操作装置31を「正しい向き」に保持していると方向決定部1703によって判断された場合、カーソル位置決定部1704は位置情報の補正を行わない。
ここで、操作装置31の把持方向(横持ち、または、縦持ち)に基づいた位置情報の変換とは、基準として設定された把持方向の座標系に位置情報を変換する処理のことである。例えば、操作装置31が縦持ちされていること(図16に示すリモコン1601の把持方向)を基準として右タッチパッド802と左タッチパッド803の座標系が固定で設定されている場合であって、操作装置31が横持ちされた場合、位置情報は変換される。
この場合、カーソル位置決定部1704は、基準として設定された把持方向の座標系に対応させるため、右タッチパッド802と左タッチパッド803の座標系を左に90°回転させる。すなわち、カーソル位置決定部1704は、右タッチパッド802および左タッチパッド803のそれぞれの座標系の中心座標を回転の中心として、位置情報を左に90°回転させる。
また、カーソル位置決定部1704は、タッチ情報検出部901から受け取った位置情報、または、当該手段で補正した後の位置情報を用いて、画面805上でのカーソル806の表示位置(カーソル位置)を決定する。
以上で、実施の形態3における画面表示装置3の構成についての説明を終了する。
次に、図18から図20を用いて、図17に示された実施の形態3における画面表示装置3の処理フローについて説明する。
図18は、図17に示された実施の形態3における画面表示装置3の全体処理フローである。
まず、画面表示装置3のタッチ情報検出部901は、図17に図示しない指示部からの指示に基づき、右タッチパッド802または左タッチパッド803への入力の検出を継続するか否かを確認する(S1801)。
ここで、タッチ情報検出部901が右タッチパッド802または左タッチパッド803への入力の検出を中断するよう指示されている場合(S1801でNO)、画面表示装置3は、処理を終了する。
一方、タッチ情報検出部901が右タッチパッド802または左タッチパッド803への入力の検出を継続するよう指示されている場合(S1801でYES)、タッチ情報検出部901は、右タッチパッド802または左タッチパッド803への入力の有無を確認する。これにより、タッチ情報検出部901は、図10に示したタッチ情報1000の有無を検出する(S1802)。
ここで、タッチ情報検出部901は、「タッチ情報無し」と検出した場合(S1802でNO)、再度、入力の検出を継続するか否かを確認する(S1801)。
一方、タッチ情報検出部901は、「タッチ情報有り」と検出した場合(S1802でYES)は、タッチ情報蓄積部902にタッチ情報1000を蓄積させる(S1803)。より具体的には、タッチ情報検出部901は、図11で示したタッチ情報テーブル1100にタッチ情報1000を追加する。また、タッチ情報検出部901は、画面上でのカーソルの表示のため、検出したタッチ情報1000をカーソル位置決定部1704にも渡す。
次に、カーソル位置決定部1704は、タッチ情報検出部901からタッチ情報1000を受け取る。そして、カーソル位置決定部1704は、タッチ情報1000に含まれる位置情報1003を補正する必要があるか否かを決定する。そのため、カーソル位置決定部1704は、方向決定部1703に対して、操作装置31の向きを問い合わせる(S1804)。
次に、方向決定部1703は、カーソル位置決定部1704からの問い合わせを受け取る。そして、方向決定部1703は、タッチ情報蓄積部902のタッチ情報テーブル1100にアクセスして、タッチ情報1000を読み出す(S1805)。このとき、方向決定部1703は、事前に方向決定部1703に設定された所定時間分のタッチ情報1000あるいは所定量のタッチ情報1000を読み出す。
なお、タッチ情報蓄積部902は、タッチ情報検出部901から所定の時間間隔で受け取ったタッチ情報1000を順次蓄積する。したがって、計算により所定時間分のタッチ情報の量が求められる。
また、タッチ情報蓄積部902は、タッチ情報1000を読み出す際、一旦読み出したタッチ情報1000を方向決定部1703の内部などに保持させておいてもよい。そして、タッチ情報蓄積部902は、新たに必要となる差分のタッチ情報1000のみを読み出してもよい。これにより、以降に読み出されるタッチ情報1000の量が削減される。
次に、方向決定部1703は、センサー情報検出部1702にセンサー情報の有無を問い合わせる。そして、センサー情報検出部1702は、センサー1701で検出した信号の有無を確認する(S1806)。
ここで、センサー情報検出部1702は、センサー情報を検出した場合(S1806でYES)、センサー情報を取得(S1807)し、ユーザが操作装置31のどの部分を把持しているかを検出する。
例えば、タッチセンサーであるセンサー1701が、操作装置31において、2つの長辺側の側面と2つの短辺側の側面との4辺に配置されていてもよい。そして、センサー情報検出部1702が2つの短辺側の側面のセンサー1701での接触を検出した場合、操作装置31は「横持ち」されていると認識される。そして、センサー情報検出部1702が長辺側の側面のどちらかのセンサー1701での接触を検出した場合、操作装置31は「縦持ち」されていると認識される。
その後、センサー情報検出部1702は、「横持ち」または「縦持ち」を把持方向として方向決定部1703に渡す。
次に、方向決定部1703は、センサー情報検出部1702から受け取った把持方向から、操作装置31が「横持ち」されているかどうかを確認する(S1808)。
そして、操作装置31が「横持ち」されている場合(S1808でYES)、「横持ち」時における操作装置31の向きを決定する(S1809:横持ち時方向決定処理)。この場合、方向決定部1703は、タッチ情報の読み出し処理(S1805)で読み出したタッチ情報1000を用いて、操作装置31の向きを決定する。また、センサー情報検出部1702がセンサー情報を検出しなかった場合(S1806でNO)も、方向決定部1703は、「横持ち」時における操作装置31の向きを決定する。
その後、方向決定部1703は、決定した操作装置31の向きをカーソル位置決定部1704に渡す。この横持ち時方向決定処理については、後で図19を用いて詳細に説明する。
一方、操作装置31が「縦持ち」されている場合(S1808でNO)、方向決定部1703は、「縦持ち」時における操作装置31の向きを決定する(S1810:縦持ち時方向決定処理)。この場合、方向決定部1703は、タッチ情報の読み出し処理(S1805)で読み出したタッチ情報1000を用いて、操作装置31の向きを決定する。
その後、方向決定部1703は、決定した操作装置31の向きをカーソル位置決定部1704に渡す。この縦持ち時方向決定処理については、後で図20を用いて詳細に説明する。
カーソル位置決定部1704は、方向決定部1703から操作装置31の向きを受け取る。そして、カーソル位置決定部1704は、操作装置31の向きが「正しい向き」であるか否かを判定する(S1811)。
ここで、操作装置31の向きが「正しい向き」である場合(S1811でYES)、カーソル位置決定部1704は、画面上でのカーソルの位置を決定する処理(S1813)を実行する。
一方、操作装置31の向きが「正しい向き」以外である場合(S1811でNO)、カーソル位置決定部1704は、タッチ情報検出部901から受け取ったタッチ情報1000の位置情報1003を補正する(S1812:位置情報補正処理)。この場合、カーソル位置決定部1704は、操作装置31の向きに基づいて、位置情報1003を、操作装置31の向きが「正しい向き」である場合と同等の位置にカーソルが表示されるように補正する。この位置情報補正処理については、実施の形態1と同様である。
次に、カーソル位置決定部1704は、タッチ情報検出部901から受け取ったタッチ情報1000の位置情報1003または補正された位置情報1003を用いて、画面上でのカーソル位置を決定する(S1813)。
具体的には、カーソル位置決定部1704は、右タッチパッド802の座標系の最小値と最大値と、画面表示上の座標系における最小値と最大値とから、右タッチパッド802の座標系と画面表示上の座標系との拡大比を取得する。また、カーソル位置決定部1704は、左タッチパッド803の座標系の最小値と最大値と、画面表示上の座標系における最小値と最大値とから、左タッチパッド803の座標系と画面表示上の座標系との拡大比を取得する。これにより、カーソル位置決定部1704は、画面上でのカーソル位置を決定する。
すなわち、カーソル位置決定部1704は、位置情報のx座標とy座標とのそれぞれについて、(画面表示上の右タッチパッド802のカーソル位置)=(右タッチパッド802上のカーソル位置)×{(画面表示上の座標系の最大値)−(画面表示上の座標系の最小値)}÷{(右タッチパッド802上の座標系の最大値)−(右タッチパッド802上の座標系の最小値)}により、右タッチパッド802に対応するカーソル位置を決定する。
同様に、カーソル位置決定部1704は、(画面表示上の左タッチパッド803のカーソル位置)=(左タッチパッド803上のカーソル位置)×{(画面表示上の座標系の最大値)−(画面表示上の座標系の最小値)}÷{(左タッチパッド803上の座標系の最大値)−(左タッチパッド803上の座標系の最小値)}により、左タッチパッド803に対応するカーソル位置を決定する。
その後、カーソル位置決定部1704は、決定したカーソル位置のx座標とy座標とを、画面データ生成部905に渡す。
なお、右タッチパッド802と左タッチパッド803とで画面表示上の座標系が異なるように割り当てられてもよい。この場合、上記の計算において、「画面表示上の座標系の最大値」と「画面表示上の座標系の最小値」とが、右タッチパッド802と左タッチパッド803とのそれぞれに設けられる。これにより、それぞれのカーソル位置が決定される。
画面データ生成部905は、カーソル位置決定部1704から受け取ったカーソル位置に基づいて、表示部906で表示すべき映像およびアニメーション等にカーソル画像を重畳して、画面データを生成する(S1814)。その後、画面データ生成部905は、生成した画面データを表示部906に渡す。
表示部906は、画面データ生成部905から受け取った画面データを画面等に表示する(S1815)。本処理の終了後、タッチ情報検出部901は、再度、入力の検出を継続するか否かを確認する(S1801)。
以上で、図18に示す画面表示装置3の全体処理フローについての説明を終了する。
次に、図19を用いて、図18に示された横持ち時方向決定処理(S1809)のフローについて説明する。以降、図18に示されたタッチ情報の読み出し処理(S1805)において読み出したタッチ情報1000に含まれる位置情報1003を時系列に並べ、隣接する2点の位置情報を線分で結んだものを「軌跡」と記す。
まず、方向決定部1703は、右タッチパッド802に関してタッチ情報テーブル1100から読み出したタッチ情報1000の軌跡形状決定処理を実行する(S1901)。この軌跡形状決定処理については、後で図21を用いて詳細に説明する。
次に、方向決定部1703は、左タッチパッド803に関してタッチ情報テーブル1100から読み出したタッチ情報1000の軌跡形状決定処理を実行する(S1902)。この軌跡形状決定処理は、右タッチパッドの軌跡形状決定処理(S1901)と同一である。
次に、方向決定部1703は、右タッチパッドの軌跡形状決定処理(S1901)および左タッチパッドの軌跡形状決定処理(S1902)の処理結果から、右タッチパッド802に関するタッチ情報1000と左タッチパッド803に関するタッチ情報1000との両方が有ることを確認する(S1903)。
ここで、右タッチパッド802に関するタッチ情報1000と左タッチパッド803に関するタッチ情報1000との両方が有る場合(S1903でYES)、方向決定部1703は、両方の軌跡の形状が一致するか否かを確認する(S1904)。すなわち、方向決定部1703は、右タッチパッドの軌跡形状決定処理(S1901)および左タッチパッドの軌跡形状決定処理(S1902)の処理結果から、右タッチパッド802の軌跡の形状と左タッチパッド803の軌跡の形状とが一致するか否かを確認する。
具体的には、方向決定部1703は、右タッチパッド802の軌跡の形状と左タッチパッド803の軌跡の形状が、両方とも「上に凸」であるか、または、両方とも「下に凸」であるかを確認する。
一方、右タッチパッド802に関するタッチ情報1000が無い場合、または、左タッチパッド803に関するタッチ情報1000が無い場合(S1903でNO)、方向決定部1703は、右タッチパッドの軌跡形状決定処理(S1901)および左タッチパッドの軌跡形状決定処理(S1902)の処理結果から、右タッチパッド802に関するタッチ情報1000および左タッチパッド803に関するタッチ情報1000のどちらか一方が有ることを確認する(S1910)。
なお、ここでは、右タッチパッド802および左タッチパッド803のどちらかに関するタッチ情報1000が検知された場合、方向決定部1703が軌跡の形状を用いた方向決定処理を実行する例が示されている。しかし、右タッチパッド802と左タッチパッド803の両方に関するタッチ情報1000が検知された場合のみ、方向決定部1703が方向決定処理を実行してもよい。この場合、本処理(S1910)は省略できる。
そして、右タッチパッド802の軌跡の形状と左タッチパッド803の軌跡の形状とが一致しない場合(S1904でNO)、方向決定部1703は、操作装置31の向きは「方向不定」であると決定する(S1909)。また、右タッチパッド802に関するタッチ情報1000と左タッチパッド803に関するタッチ情報1000との両方が無い場合(S1910でNO)も、方向決定部1703は、操作装置31の向きは「方向不定」であると決定する。
なお、この場合、方向決定部1703は、操作装置31の向きが、デフォルトの向きとして「正しい向き」であると決定してもよい。このデフォルトの向きは、出荷時などに予め画面表示装置3にデフォルト値として設定されている向きでもよいし、ユーザが予めデフォルト値として設定している向きでもよい。
一方、右タッチパッド802の軌跡の形状と左タッチパッド803の軌跡の形状とが一致する場合(S1904でYES)、方向決定部1703は、前段の処理で確認した軌跡の形状が「上に凸」であるか否かを確認する(S1905)。また、右タッチパッド802に関するタッチ情報1000および左タッチパッド803に関するタッチ情報1000のどちらか一方が有る場合(S1910でYES)も、方向決定部1703は、軌跡の形状が「上に凸」であるか否かを確認する。
ここで、軌跡の形状が「上に凸」である場合(S1905でYES)、方向決定部1703は、人の指の構造上の特徴などを鑑みて、ユーザの指804の向きが右タッチパッド802および左タッチパッド803の上方向であると判断する。すなわち、方向決定部1703は、ユーザの指804の向きが右タッチパッド802の座標系および左タッチパッド803の座標系と同一方向であると判断する。
また、ユーザの意図する操作装置31の向きは、ユーザの指804の方向と一致すると考えられる。したがって、方向決定部1703は、操作装置31の向きが「正しい向き」であると決定する(S1906)。方向決定部1703は、カーソル位置決定部1704に、決定した操作装置31の向きを渡し、本処理を終了する。
一方、軌跡の形状が「上に凸」でない場合(S1905でNO)、方向決定部1703は、前段の処理で確認した軌跡の形状が「下に凸」であるか否かを確認する(S1907)。
ここで、軌跡の形状が「下に凸」である場合(S1907でYES)、方向決定部1703は、人の指の構造上の特徴などを鑑みて、ユーザの指804の向きは、右タッチパッド802および左タッチパッド803の下方向であると判断する。すなわち、方向決定部1703は、ユーザの指804の向きが、右タッチパッド802の座標系および左タッチパッド803の座標系と上下反対方向、あるいは、右または左にそれぞれ180°回転させた方向であると判断する。
また、ユーザの意図する操作装置31の向きは、ユーザの指804の方向と一致すると考えられる。したがって、方向決定部1703は、操作装置31の向きが「正しい向き」であると決定する場合(S1906)とは反対に、操作装置31の向きが「逆向き」であると決定する(S1908)。方向決定部1703は、カーソル位置決定部1704に、決定した操作装置31の向きを渡し、本処理を終了する。
一方、軌跡の形状が「下に凸」でない場合(S1907でNO)、両タッチパッドの軌跡の形状が一致しない場合(S1904でNO)などと同様に、方向決定部1703は、操作装置31の向きが「方向不定」であると決定する(S1909)。
以上で、方向決定部1703での横持ち時方向決定処理フローについての説明を終了する。
次に、図20を用いて、図18に示された縦持ち時方向決定処理(S1810)のフローについて説明する。
まず、方向決定部1703は、右タッチパッド802に関してタッチ情報テーブル1100から読み出したタッチ情報1000の軌跡形状決定処理を実行する(S2001)。この軌跡形状決定処理については、後で図21を用いて詳細に説明する。
次に、方向決定部1703は、左タッチパッド803に関してタッチ情報テーブル1100から読み出したタッチ情報1000の軌跡形状決定処理を実行する(S2002)。この軌跡形状決定処理は、右タッチパッドの軌跡形状決定処理(S2001)と同様である。
次に、方向決定部1703は、右タッチパッドの軌跡形状決定処理(S2001)および左タッチパッドの軌跡形状決定処理(S2002)の処理結果から、右タッチパッド802に関するタッチ情報1000と左タッチパッド803に関するタッチ情報1000との少なくともどちらか一方が有ることを確認する(S2003)。
ここで、右タッチパッド802に関するタッチ情報1000と左タッチパッド803に関するタッチ情報1000との両方が無い場合(S2003でNO)、方向決定部1703は、操作装置31の向きは「方向不定」であると決定する(S2008)。
なお、この場合、方向決定部1703は、操作装置31の向きが、デフォルトの向きとして「正しい向き」であると決定してもよい。このデフォルトの向きは、出荷時などに予め画面表示装置3にデフォルト値として設定されている向きでもよいし、ユーザが予めデフォルト値として設定している向きでもよい。
一方、右タッチパッド802に関するタッチ情報1000と左タッチパッド803に関するタッチ情報1000との少なくともどちらか一方が有る場合(S2003でYES)、方向決定部1703は、前段の処理で確認した軌跡の形状が「上に凸」であるか否かを確認する(S2004)。なお、右タッチパッド802に関するタッチ情報1000と左タッチパッド803に関するタッチ情報1000との両方が存在する場合には、方向決定部1703は、タッチ情報蓄積部902から取得したタッチ情報1000のデータ数が多い方のタッチパッドに関するタッチ情報1000を用いてもよい。
ここで、方向決定部1703は、タッチパッド軌跡の形状が「上に凸」である場合(S2004でYES)、方向決定部1703は、人の指の構造上の特徴などを鑑みて、ユーザの指804の向きは、画面表示装置3を縦持ちした場合の上方向であると判断する。なお、本実施の形態では、右タッチパッド802側を前方向に向けて把持する方向に、右タッチパッド802の座標系および左タッチパッド803の座標系が定められている。
ユーザの意図する操作装置31の向きは、ユーザの指804の方向と一致すると考えられる。したがって、方向決定部1703は、操作装置31の向きが「正しい向き」であると決定する(S2005)。方向決定部1703は、カーソル位置決定部1704に、決定した操作装置31の向きを渡し、本処理を終了する。
軌跡の形状が「上に凸」でない場合(S2004でNO)、方向決定部1703は、前段の処理で確認した軌跡の形状が「下に凸」であるか否かを確認する(S2006)。
ここで、軌跡の形状が「下に凸」である場合(S2006でYES)、方向決定部1703は、人の指の構造上の特徴などを鑑みて、ユーザの指804の向きは、画面表示装置3を縦持ちした場合の下方向であると判断する。
また、ユーザの意図する操作装置31の向きは、ユーザの指804の方向と一致すると考えられる。したがって、方向決定部1703は、操作装置31の向きが「正しい向き」であると決定する場合(S2005)とは反対に、操作装置31の向きが「逆向き」であると決定する(S2007)。方向決定部1703は、カーソル位置決定部1704に、決定した操作装置31の向きを渡し、本処理を終了する。
一方、軌跡の形状が「下に凸」でない場合(S2006でNO)、両タッチパッドのタッチ情報がない場合(S2003でNO)と同様に、方向決定部1703は、操作装置31の向きが「方向不定」であると決定する(S2008)。
以上で、方向決定部1703での縦持ち時方向決定処理フローについての説明を終了する。
次に、図21、図15Aおよび図15Bを用いて、図19に示された右タッチパッドの軌跡形状決定処理(S1901)と左タッチパッドの軌跡形状決定処理(S1902)、および、図20に示された右タッチパッドの軌跡形状決定処理(S2001)と左タッチパッドの軌跡形状決定処理(S2002)の処理フローについて説明する。
まず、方向決定部1703は、タッチ情報テーブル1100から読み出したタッチ情報1000の有無を確認する(S2101)。
ここで、読み出したタッチ情報1000が存在しない場合(S2101でNO)、方向決定部1703は、本処理を終了する。
一方、読み出したタッチ情報1000が存在する場合(S2101でYES)、方向決定部1703は、前段の処理(S2101)で読み出したタッチ情報1000について、軌跡上の2点の位置情報1003を結ぶ線分の傾きΔを計算する(S2102)。
傾きΔは、時系列で隣接する2点A、Bの位置情報をA(xa、ya)、B(xb、yb)とした場合、(傾きΔ)=(yb−ya)÷(xb−xa)で計算する。但し、このとき、(yb−ya)と(xb−xa)との符号を考慮して、計算した傾きΔと関連づけて保持する。このようにして、方向決定部1703は、読み出した全てのタッチ情報1000について、傾きΔを計算する。
次に、方向決定部1703は、前段の処理(S2102)で計算した傾きΔについて、時系列で隣接する2つの傾きΔの変化度δを計算する(S2103)。変化度δは、時系列で隣接する2つの傾きΔをΔA、ΔBとした場合、(変化度δ)=ΔB−ΔAで計算する。方向決定部1703は、前段の処理(S2102)で計算した全ての傾きΔについて、変化度δを計算する。
次に、方向決定部1703は、位置情報1003と、傾きΔと、変化度δとから、軌跡の形状を決定する(S2104)。この処理について、実施の形態2における説明で用いた図15Aおよび図15Bを再び用いて説明する。
図15Aおよび図15Bは、傾きΔと変化度δとから軌跡の形状を決定し、さらに、軌跡の形状からユーザの指の向きを推定することにより、結果として、操作装置31の向きを決定する方法を示した図である。操作装置31の向きは、「正しい向き」、「逆向き」の2パターンがあり、図15Aは「正しい向き」を、図15Bが「逆向き」を示している。
方向決定部1703は、図21で示した方向決定処理フローの傾きΔを計算する処理(S2102)で計算した傾きΔの値の正負、傾きΔを計算する際のx座標の差分「Δx」とy座標の差分「Δy」、および、変化度δを計算する処理(S2103)において計算した変化度δの値の正負を判別する。
図15Aおよび図15Bでは、それぞれ、これらの正負の判別結果が表で表されており、正が「+」、負が「−」で示されている。当該表中では示されていないが、傾きΔまたは変化度δが0の場合は、「±」によって表される特別な状態として考慮されてもよい。また、当該表中では示されていないが、傾きΔが無限大となる場合、および、Δxが0となることにより傾きΔが計算できない場合なども考えられる。これらの場合も、軌跡の形状の特徴として考慮されてもよい。
図15Aの場合、傾きΔが「+」から「−」に変化し、変化度δが全て「−」である。方向決定部1703は、ΔxおよびΔyの値も考慮して、軌跡は「上に凸」の形状であると決定する。
図15Bの場合、傾きΔが「−」から「+」に変化し、かつ変化度δが全て「+」である。方向決定部1703は、ΔxおよびΔyの値も考慮して、軌跡は「下に凸」の形状であると決定する。
図15Aと図15Bのどちらの場合にも該当しない場合、方向決定部1703は、軌跡の形状が決定できない。そのため、方向決定部1703は、軌跡の形状を「形状不定」であると決定する。例えば、方向決定部1703が軌跡の形状を決定できない場合として、軌跡に含まれる位置情報1003の数が少なかったりする場合などが考えられる。
なお、方向決定部1703は、計算した傾きΔと変化度δとの変化の組み合わせが、図15Aと図15Bのどちらの場合にも該当しない場合、図15Aと図15Bのどちらのパターンに最も近いかを判定してもよい。これにより、方向決定部1703は、軌跡の形状を図15Aまたは図15Bに決定してもよい。
以上で、図19に示された右タッチパッドの軌跡形状決定処理(S1901)と左タッチパッドの軌跡形状決定処理(S1902)、および、図20に示された右タッチパッドの軌跡形状決定処理(S2001)と左タッチパッドの軌跡形状決定処理(S2002)についての説明を終了する。
以上で、実施の形態3における画面表示装置3の処理フローの説明を終了する。
上述のような構成によれば、画面表示装置3がセンサー1701からのセンサー情報をセンサー情報検出部1702で検出することによって、操作装置31の把持方向を認識する。そして、タッチ情報蓄積部902が、タッチ情報検出部901で検出した右タッチパッド802と左タッチパッド803の2面のタッチパッドにおけるタッチ情報1000を蓄積する。
センサー情報検出部1702での把持方向の認識結果とタッチ情報1000に含まれる位置情報1003とから、方向決定部1703が、右タッチパッド802と左タッチパッド803との両方または片方の軌跡の形状を用いて操作装置31の向きを決定する。カーソル位置決定部1704は、操作装置31の把持方向と向きとに応じて、タッチ情報検出部901から受け取るタッチ情報1000に含まれる位置情報1003を適切に補正した上で、カーソル806の表示位置を決定している。
したがって、画面表示装置3は、横持ちと縦持ちの両方の持ち方において、ユーザが操作装置31をどの向きに保持しても、ユーザによる右タッチパッド802ならびに左タッチパッド803への入力のみに基づいて、操作装置31の向きを適切かつ自動的に決定して、正しい位置にカーソル806を表示することができる。これにより、ユーザの快適な操作性を実現することができる。
(実施の形態4)
実施の形態4に係る画面表示装置は、2つのタッチパッドと、ユーザに操作装置のどの部分が把持されているかを検出するためのセンサーと、操作装置の重力方向を検出するためのセンサーとを備える。そして、画面表示装置は、画面表示装置のタッチパッド上でのユーザの入力とセンサーでの把持方向の検知結果を利用して操作装置の向きを認識し、当該認識結果とセンサーでの操作装置の方向の検知結果とが一致しない場合に画面上にアラート表示を行う。
図22は、実施の形態4における画面表示装置の構成図である。図22において、図17と同一の構成要素については同一の符号を用い、説明を省略する。
図22に示された画面表示装置4は、警告データ生成部2201と、画面データ生成部2202と、カーソル位置決定部2203と、第1のセンサー2204と、第2のセンサー2205と、右タッチパッド802と、左タッチパッド803と、タッチ情報検出部901と、タッチ情報蓄積部902と、表示部906と、センサー情報検出部1702と、方向決定部1703とを備える。
図22に示された操作装置41は、第1のセンサー2204と、第2のセンサー2205と、右タッチパッド802と、左タッチパッド803とを備える。また、表示制御装置40は、警告データ生成部2201と、画面データ生成部2202と、タッチ情報検出部901と、タッチ情報蓄積部902と、カーソル位置決定部2203と、センサー情報検出部1702と、方向決定部1703とを備える。
表示制御装置40は、操作装置41から信号を受け、画面に表示させるための画面データを生成する。なお、表示制御装置40は、操作装置41または表示部906に組み込まれていてもよい。また、ここでは、タッチ情報検出部901は、表示制御装置40に含まれるが、操作装置41に含まれてもよい。
警告データ生成部2201は、方向決定部1703で決定した操作装置41の向きから、ユーザが操作装置41を「逆向き」に保持していると判断して、ユーザに提示するためのアラートメッセージ(警告データともいう)を生成する。警告データ生成部2201は、右タッチパッド802の座標系と左タッチパッド803の座標系との方向が一致しない場合に、アラートメッセージを生成してもよい。
なお、ユーザにアラート等を提示(フィードバック)する方法としては、アラートメッセージのみならず、画面上のオブジェクトの色または形状を変更するなど、各種のフィードバック方法が適用できる。さらに、画面表示のみならず、音による方法も適用可能である。
画面データ生成部2202は、警告データ生成部2201で生成されたメッセージおよびカーソル位置決定部2203で決定したカーソルの表示位置などに基づいて、画面データを生成する手段である。
画面データ生成部2202は、動画ビューワまたはウェブブラウザなどのアプリケーションの画像と、カーソル画像とを重畳し、さらに、警告データ生成部2201からアラートメッセージを受け取った場合には、当該アラートメッセージを画面データに重畳する。これにより、画面データ生成部2202は、表示部906で表示する画面データを生成する。
カーソル位置決定部2203は、方向決定部1703から受け取る操作装置41の把持方向と、方向決定部1703で決定した操作装置41の向きと、タッチ情報検出部901で検出したタッチ情報とから、画面上に表示するカーソルの位置を計算する手段である。
カーソル位置決定部2203は、操作装置41の把持方向(横持ち、または、縦持ち)に基づいてタッチ情報に含まれる位置情報の値を変換(座標変換)する。さらに、方向決定部1703でユーザが操作装置41を「正しい向き」に保持していないと判断された場合、警告データ生成部2201に対して、ユーザに注意を促したり、画面表示装置4の持ち替えを促したりするためのアラートメッセージを生成するよう要求する。
ここで、操作装置41の把持方向(横持ち、または、縦持ち)に基づいた位置情報の変換とは、基準として設定された把持方向の座標系に位置情報を変換する処理のことである。例えば、操作装置41が縦持ちされていること(図16に示すリモコン1601の把持方向)を基準として右タッチパッド802と左タッチパッド803の座標系が設定されている場合であって、操作装置41が横持ちにされた場合、位置情報は変換される。
この場合、カーソル位置決定部2203は、基準として設定された把持方向の座標系に対応させるため、右タッチパッド802と左タッチパッド803の座標系を左に90°回転させる。すなわち、カーソル位置決定部2203は、右タッチパッド802および左タッチパッド803のそれぞれの座標系の中心座標を回転の中心として位置情報を左に90°回転させる。
第1のセンサー2204は、ユーザの指の接触を検知するためのタッチセンサーである。操作装置41の外周部には1以上のタッチセンサーが配置される。なお、このようなユーザの指の接触を検知するためのタッチセンサーは公知技術であるため、ここでは詳細な説明を省略する。
第2のセンサー2205は、操作装置41の重力方向を検知するための重力センサーであり、操作装置41に内蔵される。なお、このような操作装置41にかかる重力の方向を検知することで操作装置41の天地方向の向きを認識する重力センサーは公知技術であるため、ここでは詳細な説明を省略する。
センサー情報検出部1702は、第1のセンサー2204から、ユーザが操作装置41を保持している部分の情報である保持部分情報を検出し、第2のセンサー2205から、操作装置41にかかる重力方向の情報である重力方向情報を検出する。重力方向情報には、重力方向に対する操作装置41の傾きの情報が含まれてもよい。また、重力方向情報には、操作装置41の上下方向の情報、すなわち、重力方向に対して操作装置41のどの面が上側または下側かを示す情報が含まれていてもよい。
また、カーソル位置決定部2203は、タッチ情報検出部901から受け取った位置情報、または、当該手段で変換した後の位置情報を用いて、画面上でのカーソルの表示位置(カーソル位置)を決定する。
以上で、実施の形態4における画面表示装置4の構成についての説明を終了する。
次に、図23を用いて、図22に示された実施の形態4における画面表示装置4の全体処理フローについて説明する。なお、図23に示された「横持ち時方向決定処理(S2308)」および「縦持ち時方向決定処理(S2309)」については、実施の形態3において図19から図21を用いて説明した内容と同様である。したがって、実施の形態3における図19から図21の説明を参照することとして、ここでは説明を省略する。ただし、実施の形態3における図19から図21の説明において、「画面表示装置3」は、「画面表示装置4」であり、「カーソル位置決定部1704」などの実施の形態3の構成要素は、「カーソル位置決定部2203」などの実施の形態4の構成要素である。
まず、画面表示装置4のタッチ情報検出部901は、図22に図示しない指示部からの指示に基づき、右タッチパッド802または左タッチパッド803への入力の検出を継続するか否かを確認する(S2301)。
ここで、タッチ情報検出部901が右タッチパッド802または左タッチパッド803への入力の検出を中断するよう指示されている場合(S2301でNO)、画面表示装置4は、処理を終了する。
一方、タッチ情報検出部901が右タッチパッド802または左タッチパッド803への入力の検出を継続するよう指示されている場合(S2301でYES)、タッチ情報検出部901は、右タッチパッド802または左タッチパッド803への入力の有無を確認する。これにより、タッチ情報検出部901は、図10に示したタッチ情報1000の有無を検出する(S2302)。
ここで、タッチ情報検出部901は、「タッチ情報無し」と検出した場合(S2302でNO)、再度、入力の検出を継続するか否かを確認する(S2301)。
一方、タッチ情報検出部901は、「タッチ情報有り」と検出した場合(S2302でYES)、タッチ情報蓄積部902にタッチ情報1000を蓄積させる(S2303)。より具体的には、タッチ情報検出部901は、図11で示したタッチ情報テーブル1100にタッチ情報1000を追加する。また、タッチ情報検出部901は、画面上でのカーソルの表示のため、検出したタッチ情報1000をカーソル位置決定部2203にも渡す。
カーソル位置決定部2203は、タッチ情報検出部901からタッチ情報1000を受け取る。そして、タッチ情報1000に含まれる位置情報1003を補正する必要があるか否かを決定するため、方向決定部1703に対して、操作装置41の向きを問い合わせる(S2304)。
方向決定部1703は、カーソル位置決定部2203からの問い合わせを受け取る。そして、方向決定部1703は、タッチ情報蓄積部902のタッチ情報テーブル1100にアクセスして、タッチ情報1000を読み出す(S2305)。このとき、方向決定部1703は、事前に方向決定部1703に設定された所定時間分のタッチ情報1000あるいは所定量のタッチ情報1000を読み出す。
なお、タッチ情報蓄積部902は、タッチ情報検出部901から所定の時間間隔で受け取ったタッチ情報1000を順次蓄積する。したがって、計算により所定時間分のタッチ情報の量が求められる。
また、タッチ情報蓄積部902は、タッチ情報1000を読み出す際、一旦読み出したタッチ情報1000を方向決定部1703の内部などに保持させておいてもよい。そして、タッチ情報蓄積部902は、新たに必要となる差分のタッチ情報1000のみを読み出してもよい。これにより、以降に読み出されるタッチ情報1000の量が削減される。
次に、方向決定部1703は、センサー情報検出部1702に対して第1のセンサー2204からのセンサー情報の有無を問い合わせる。センサー情報検出部1702は、第1のセンサー2204で検出した信号の有無を確認する(S2306)。
ここで、センサー情報検出部1702は、第1のセンサー2204からのセンサー情報を検出した場合(S2306でYES)、第1のセンサー2204からのセンサー情報を取得する。そして、センサー情報検出部1702は、ユーザが操作装置41のどの部分を把持しているかを検出して、操作装置41が「横持ち」されているかどうかを確認する(S2307)。
例えば、タッチセンサーであるセンサー1701が、操作装置41において、2つの長辺側の側面と2つの短辺側の側面との4辺に配置されていてもよい。そして、センサー情報検出部1702が2つの短辺側の側面のセンサー1701での接触を検出した場合、操作装置41は「横持ち」されていると認識される。そして、センサー情報検出部1702が長辺側の側面のどちらかのセンサー1701での接触を検出した場合、操作装置41は「縦持ち」されていると認識される。
その後、センサー情報検出部1702は、「横持ち」または「縦持ち」を把持方向として方向決定部1703に渡す。
そして、操作装置41が「横持ち」されている場合(S2307でYES)、または、センサー情報検出部1702が第1のセンサー2204からのセンサー情報を検出しなかった場合(S2306でNO)、方向決定部1703は、タッチ情報の読み出し処理(S2305)で読み出したタッチ情報1000を用いて、「横持ち」時における操作装置41の向きを決定する(S2308:横持ち時方向決定処理)。
その後、方向決定部1703は、決定した操作装置41の向きをカーソル位置決定部2203に渡す。この横持ち時方向決定処理は、実施の形態3において、図19を用いて説明した処理と同等である。
一方、操作装置41が「縦持ち」されている場合(S2307でNO)、方向決定部1703は、タッチ情報の読み出し処理(S2305)で読み出したタッチ情報1000を用いて、「縦持ち」時における操作装置41の向きを決定する(S2309:縦持ち時方向決定処理)。その後、方向決定部1703は、決定した操作装置41の向きをカーソル位置決定部2203に渡す。この縦持ち時方向決定処理については、実施の形態3において、図20を用いて説明した処理と同等である。
次に、カーソル位置決定部2203は、方向決定部1703に対して、第2のセンサー2205からのセンサー情報の取得の有無を問い合わせる。そして、方向決定部1703は、センサー情報検出部1702に対して第2のセンサー2205からのセンサー情報の有無を確認する(S2310)。
ここで、センサー情報検出部1702が第2のセンサー2205からのセンサー情報を検出した場合(S2310でYES)、カーソル位置決定部2203は、2つの向きを受け取る。すなわち、カーソル位置決定部2203は、方向決定部1703から、横持ち時方向決定処理(S2308)または縦持ち時方向決定処理(S2309)の結果である操作装置41の向きと、第2のセンサー2205で検知する操作装置41の向きとを受け取る。カーソル位置決定部2203は、これらの両者の向きが一致するか否かを判定する(S2311)。
これらの両者の向きが一致しない場合(S2311でNO)、カーソル位置決定部2203は、警告データ生成部2201に対してアラートメッセージの生成を要求する。警告データ生成部2201は、ユーザに対し、操作装置41の向きが逆である旨を通知したり、操作装置41の向きを認識させたりするためのアラートメッセージを生成する(S2316)。
具体的には、警告データ生成部2201は「リモコンを正しい向きに保持しているかどうか確認してください。」「リモコンの向きを逆にしてください。」等といったアラートメッセージを生成し、画面データ生成部2202に生成したアラートメッセージを渡す。
画面データ生成部2202は、警告データ生成部2201からアラートメッセージを受け取った場合、当該アラートメッセージを画面データに重畳する(S2317)。
一方、センサー情報検出部1702が第2のセンサー2205からのセンサー情報を検出しなかった場合(S2310でNO)、カーソル位置決定部2203は、操作装置41の把持方向(横持ち、または、縦持ち)に基づき、位置情報1003を変換する。また、方向決定部1703により決定された操作装置41の向きがセンサー情報と同じ向きの場合(S2311でYES)も、カーソル位置決定部2203は、操作装置41の把持方向に基づき、位置情報1003を変換する。
例えば、操作装置41の把持方向が「縦持ち」の場合、カーソル位置決定部2203は、タッチ情報検出部901から受け取ったタッチ情報1000の位置情報1003を変換する。具体的には、カーソル位置決定部2203は、操作装置41の把持方向が「縦持ち」の場合、右タッチパッド802および左タッチパッド803のそれぞれの座標系の中心座標を回転の中心として位置情報を左に90°回転させる。これにより、適切なカーソル位置が得られる。
一方、操作装置41の把持方向が「横持ち」の場合には、右タッチパッド802と左タッチパッド803の両方の座標系の向きと一致するので、このような座標変換は行われない。
さらに、カーソル位置決定部2203は、タッチ情報検出部901から受け取ったタッチ情報1000の位置情報1003を補正する(S2312:位置情報補正処理)。この時、カーソル位置決定部2203は、方向決定部1703から受け取った横持ち時方向決定処理(S2308)または縦持ち時方向決定処理(S2309)の結果である操作装置41の向きに基づいて、位置情報1003を補正する。
より具体的には、カーソル位置決定部2203は、操作装置41の向きが「正しい向き」である場合と同等の位置にカーソルが表示されるように位置情報1003を補正する。この位置情報補正処理については、実施の形態1と同様である。
次に、カーソル位置決定部2203は画面上でのカーソル位置を決定する(S2313)。具体的には、カーソル位置決定部2203は、右タッチパッド802の座標系の最小値と最大値と、画面表示上の座標系における最小値と最大値とから、右タッチパッド802の座標系と画面表示上の座標系との拡大比を取得する。また、カーソル位置決定部2203は、左タッチパッド803の座標系の最小値と最大値と、画面表示上の座標系における最小値と最大値とから、左タッチパッド803の座標系と画面表示上の座標系との拡大比を取得する。これにより、カーソル位置決定部2203は、画面上でのカーソル位置を決定する。
すなわち、カーソル位置決定部2203は、位置情報のx座標とy座標とのそれぞれについて、(画面表示上の右タッチパッド802のカーソル位置)=(右タッチパッド802上のカーソル位置)×{(画面表示上の座標系の最大値)−(画面表示上の座標系の最小値)}÷{(右タッチパッド802上の座標系の最大値)−(右タッチパッド802上の座標系の最小値)}により、右タッチパッド802に対応するカーソル位置を決定する。
同様に、カーソル位置決定部2203は、(画面表示上の左タッチパッド803のカーソル位置)=(左タッチパッド803上のカーソル位置)×{(画面表示上の座標系の最大値)−(画面表示上の座標系の最小値)}÷{(左タッチパッド803上の座標系の最大値)−(左タッチパッド803上の座標系の最小値)}により、左タッチパッド803に対応するカーソル位置を決定する。
その後、カーソル位置決定部2203は、決定したカーソル位置のx座標とy座標とを、画面データ生成部2202に渡す。
なお、右タッチパッド802と左タッチパッド803とで画面表示上の座標系が異なるように割り当てられてもよい。この場合、上記の計算において、「画面表示上の座標系の最大値」と「画面表示上の座標系の最小値」とが、右タッチパッド802と左タッチパッド803とのそれぞれに設けられる。これにより、それぞれのカーソル位置が決定される。
次に、画面データ生成部2202は、カーソル位置決定部2203から受け取ったカーソル位置に基づいて、表示部906で表示すべき映像およびアニメーション等にカーソル画像を重畳して、画面データを生成する(S2314)。
次に、表示部906は、画面データ生成部2202から受け取った画面データを画面等に表示する(S2315)。本処理の終了後、タッチ情報検出部901は、再度、入力の検出を継続するか否かを確認する(S2301)。
なお、センサー情報検出部1702が第2のセンサー2205からのセンサー情報を検出しなかった場合(S2310でNO)、カーソル位置決定部2203は、位置情報の補正(S2312)を行うのではなく、アラートメッセージの生成(S2316)を要求してもよい。または、カーソル位置決定部2203は、補正を行わずに、画面上でのカーソル位置の決定(S2313)をしてもよい。
以上で、図23に示す画面表示装置4の全体処理フローについての説明を終了する。
上述のような構成によれば、画面表示装置4のタッチ情報蓄積部902が、タッチ情報検出部901で検出した右タッチパッド802と左タッチパッド803の2面のタッチパッドにおけるタッチ情報1000を蓄積する。そして、タッチ情報1000に含まれる位置情報1003から、方向決定部1703が右タッチパッド802と左タッチパッド803の軌跡の形状を用いて操作装置41の向きを決定する。
方向決定部1703が決定した操作装置41の向きと、第2のセンサー2205で検知した操作装置41の向きとが照合される。そして、両者の向きが一致しない場合、画面上にアラートメッセージが表示される。したがって、ユーザが誤った操作装置41の持ち方をしたと判定される場合、画面表示装置4は、ユーザによる右タッチパッド802ならびに左タッチパッド803への入力を活用して、ユーザに適切かつ迅速に操作装置41の持ち替えなどを促すことができる。
(実施の形態5)
実施の形態5では、2つのタッチパッドを備える画面表示装置が、画面表示装置のタッチパッド上でのユーザの入力を示す位置情報(座標)の分布を利用して操作装置の向きを認識する。そして、画面表示装置は、操作装置の向きに基づいて画面上でのカーソルの表示位置を補正する。
図24は、実施の形態5における画面表示装置の構成図である。図24において、図17と同一の構成要素については同一の符号を用い、説明を省略する。
図24に示された画面表示装置5は、方向決定部2401と、右タッチパッド802と、左タッチパッド803と、タッチ情報検出部901と、タッチ情報蓄積部902と、画面データ生成部905と、表示部906と、センサー1701と、センサー情報検出部1702と、カーソル位置決定部1704とを備える。
図24に示された操作装置31は、右タッチパッド802と、左タッチパッド803と、センサー1701とを備える。また、表示制御装置50は、方向決定部2401と、タッチ情報検出部901と、タッチ情報蓄積部902と、画面データ生成部905と、センサー情報検出部1702と、カーソル位置決定部1704とを備える。
表示制御装置50は、操作装置31から信号を受け、画面に表示させるための画面データを生成する。なお、表示制御装置50は、操作装置31または表示部906に組み込まれていてもよい。また、ここでは、タッチ情報検出部901は、表示制御装置50に含まれるが、操作装置31に含まれてもよい。
方向決定部2401は、センサー情報検出部1702で検出される、ユーザによる操作装置31の把持位置と、タッチ情報蓄積部902で蓄積されるタッチ情報とに基づいて、操作装置31の向きを決定する手段である。具体的には、方向決定部2401は、センサー情報検出部1702で検出される把持位置から操作装置31が横持ちおよび縦持ちのどちらの把持方向であるかを判別する。その上で、方向決定部2401は、所定時間あるいは所定量などのタッチ情報に含まれる位置情報の分布に基づいて、操作装置31がどちらの方向を向いているかを決定する。
なお、以下、これに限られるものではないが、基本的には、方向決定部2401は、ユーザが自然にタッチパッドを触る操作によって得られたタッチ情報を用いて、操作装置31の向きを決定することができる。このようなタッチ情報は、ユーザが操作装置31を保持し始めた時点、アプリケーションの切替え時、および、同一アプリケーション内で操作装置31の保持方向が変わる時などにおいて、得られる。
以上で、実施の形態5における画面表示装置5の構成についての説明を終了する。
次に、図25から図28を用いて、図24に示された実施の形態5における画面表示装置5の処理フローについて説明する。
図25は、図24に示された実施の形態5における画面表示装置5の全体処理フローである。
まず、画面表示装置5のタッチ情報検出部901は、図24に図示しない指示部からの指示に基づき、右タッチパッド802または左タッチパッド803への入力の検出を継続するか否かを確認する(S2501)。
ここで、タッチ情報検出部901が右タッチパッド802または左タッチパッド803への入力の検出を中断するよう指示されている場合(S2501でNO)、画面表示装置5は、処理を終了する。
一方、タッチ情報検出部901が右タッチパッド802または左タッチパッド803への入力の検出を継続するよう指示されている場合(S2501でYES)、タッチ情報検出部901は、右タッチパッド802または左タッチパッド803への入力の有無を確認する。これにより、タッチ情報検出部901は、図10に示したタッチ情報1000の有無を検出する(S2502)。
ここで、タッチ情報検出部901は、「タッチ情報無し」と検出した場合(S2502でNO)、再度、入力の検出を継続するか否かを確認する(S2501)。
一方、タッチ情報検出部901は、「タッチ情報有り」と検出した場合(S2502でYES)は、タッチ情報蓄積部902にタッチ情報1000を蓄積させる(S2503)。より具体的には、タッチ情報検出部901は、図11で示したタッチ情報テーブル1100にタッチ情報1000を追加する。また、タッチ情報検出部901は、画面上でのカーソルの表示のため、検出したタッチ情報1000をカーソル位置決定部1704にも渡す。
次に、カーソル位置決定部1704は、タッチ情報検出部901からタッチ情報1000を受け取る。そして、カーソル位置決定部1704は、タッチ情報1000に含まれる位置情報1003を補正する必要があるか否かを決定するため、方向決定部2401に対して、操作装置31の向きを問い合わせる(S2504)。
次に、方向決定部2401は、カーソル位置決定部1704からの問い合わせを受け取る。そして、方向決定部2401は、タッチ情報蓄積部902のタッチ情報テーブル1100にアクセスして、タッチ情報1000を読み出す(S2505)。このとき、方向決定部2401は、事前に方向決定部2401に設定された所定時間分のタッチ情報1000あるいは所定量のタッチ情報1000を読み出す。
なお、タッチ情報蓄積部902は、タッチ情報検出部901から所定の時間間隔で受け取ったタッチ情報1000を順次蓄積する。したがって、計算により所定時間分のタッチ情報の量が求められる。
また、タッチ情報蓄積部902は、タッチ情報1000を読み出す際、一旦読み出したタッチ情報1000を方向決定部2401の内部などに保持させておいてもよい。そして、タッチ情報蓄積部902は、新たに必要となる差分のタッチ情報1000のみを読み出してもよい。これにより、以降に読み出されるタッチ情報1000の量が削減される。
次に、方向決定部2401は、センサー情報検出部1702に対してセンサー情報の有無を問い合わせる。そして、センサー情報検出部1702は、センサー1701で検出した信号の有無を確認する(S2506)。
ここで、センサー情報検出部1702は、センサー情報を検出した場合(S2506でYES)、センサー情報を取得し、ユーザが操作装置31のどの部分を把持しているかを検出する(S2507)。
例えば、タッチセンサーであるセンサー1701が、操作装置31において、2つの長辺側の側面と2つの短辺側の側面との4辺に配置されていてもよい。そして、センサー情報検出部1702が2つの短辺側の側面のセンサー1701での接触を検出した場合、操作装置31は「横持ち」されていると認識される。そして、センサー情報検出部1702が長辺側の側面のどちらかのセンサー1701での接触を検出した場合、操作装置31は「縦持ち」されていると認識される。
その後、センサー情報検出部1702は、「横持ち」または「縦持ち」を把持方向として方向決定部2401に渡す。
次に、方向決定部2401は、センサー情報検出部1702から受け取った把持方向から、操作装置31が「横持ち」されているかどうかを確認する(S2508)。
操作装置31が「横持ち」されている場合(S2508でYES)、方向決定部2401は、「横持ち」時における操作装置31の向きを決定する(S2509:横持ち時方向決定処理)。この場合、方向決定部2401は、タッチ情報の読み出し処理(S2505)で読み出したタッチ情報1000を用いて、「横持ち」時における操作装置31の向きを決定する。
また、センサー情報検出部1702がセンサー情報を検出しなかった場合(S2506でNO)も、方向決定部2401は、タッチ情報1000を用いて、「横持ち」時における操作装置31の向きを決定する。その後、方向決定部2401は、決定した操作装置31の向きをカーソル位置決定部1704に渡す。この横持ち時方向決定処理については、後で図26を用いて詳細に説明する。
操作装置31が「縦持ち」されている場合(S2508でNO)、方向決定部2401は、タッチ情報の読み出し処理(S2505)で読み出したタッチ情報1000を用いて、「縦持ち」時における操作装置31の向きを決定する(S2510:縦持ち時方向決定処理)。その後、方向決定部2401は、決定した操作装置31の向きをカーソル位置決定部1704に渡す。この縦持ち時方向決定処理については、後で図27を用いて詳細に説明する。
次に、カーソル位置決定部1704は、方向決定部2401から操作装置31の向きを受け取る。そして、カーソル位置決定部1704は、操作装置31の向きが「正しい向き」であるか否かを判定する(S2511)。
ここで、操作装置31の向きが「正しい向き」である場合(S2511でYES)、カーソル位置決定部1704は、画面上でのカーソル位置を決定する処理(S2513)を実行する。
一方、操作装置31の向きが「正しい向き」以外である場合(S2511でNO)、カーソル位置決定部1704は、タッチ情報検出部901から受け取ったタッチ情報1000の位置情報1003を補正する(S2512:位置情報補正処理)。この場合、カーソル位置決定部1704は、操作装置31の向きに基づいて、位置情報1003を、操作装置31の向きが「正しい向き」である場合と同等の位置にカーソルが表示されるように補正する。この位置情報補正処理については、実施の形態1と同様である。
次に、カーソル位置決定部1704は、タッチ情報検出部901から受け取ったタッチ情報1000の位置情報1003、または、補正された位置情報1003を用いて、画面上でのカーソル位置を決定する(S2513)。
具体的には、カーソル位置決定部1704は、右タッチパッド802の座標系の最小値と最大値と、画面表示上の座標系における最小値と最大値とから、右タッチパッド802の座標系と画面表示上の座標系との拡大比を取得する。また、カーソル位置決定部1704は、左タッチパッド803の座標系の最小値と最大値と、画面表示上の座標系における最小値と最大値とから、左タッチパッド803の座標系と画面表示上の座標系との拡大比を取得する。これにより、カーソル位置決定部1704は、画面上でのカーソル位置を決定する。
すなわち、カーソル位置決定部1704は、位置情報のx座標とy座標とのそれぞれについて、(画面表示上の右タッチパッド802のカーソル位置)=(右タッチパッド802上のカーソル位置)×{(画面表示上の座標系の最大値)−(画面表示上の座標系の最小値)}÷{(右タッチパッド802上の座標系の最大値)−(右タッチパッド802上の座標系の最小値)}により、右タッチパッド802に対応するカーソル位置を決定する。
同様に、カーソル位置決定部1704は、(画面表示上の左タッチパッド803のカーソル位置)=(左タッチパッド803上のカーソル位置)×{(画面表示上の座標系の最大値)−(画面表示上の座標系の最小値)}÷{(左タッチパッド803上の座標系の最大値)−(左タッチパッド803上の座標系の最小値)}により、左タッチパッド803に対応するカーソル位置を決定する。
その後、カーソル位置決定部1704は、決定したカーソル位置のx座標とy座標とを、画面データ生成部905に渡す。
なお、右タッチパッド802と左タッチパッド803とで画面表示上の座標系が異なるように割り当てられてもよい。この場合、上記の計算において、「画面表示上の座標系の最大値」と「画面表示上の座標系の最小値」とが、右タッチパッド802と左タッチパッド803とのそれぞれに設けられる。これにより、それぞれのカーソル位置が決定される。
画面データ生成部905は、カーソル位置決定部1704から受け取ったカーソル位置に基づいて、表示部906で表示すべき映像およびアニメーション等にカーソル画像を重畳して、画面データを生成する(S2514)。その後、画面データ生成部905は、生成した画面データを表示部906に渡す。
表示部906は、画面データ生成部905から受け取った画面データを画面等に表示する(S2515)。本処理の終了後、タッチ情報検出部901は、再度、入力の検出を継続するか否かを確認する(S2501)。
以上で、図25に示す画面表示装置5の全体処理フローについての説明を終了する。
次に、図26を用いて、図25に示された横持ち時方向決定処理(S2509)のフローについて説明する。
まず、方向決定部2401は、右タッチパッド802に関してタッチ情報テーブル1100から読み出したタッチ情報1000の位置情報分布判定処理(S2601)を実行する。この位置情報分布判定処理については、後で図28を用いて詳細に説明する。
次に、方向決定部2401は、左タッチパッド803に関してタッチ情報テーブル1100から読み出したタッチ情報1000の位置情報分布判定処理(S2602)を実行する。この位置情報分布判定処理は、右タッチパッドの位置情報分布判定処理(S2601)と同様であるが、位置情報の分布を判定する際には、図28を用いて後述される左指用の分布を用いる。
次に、方向決定部2401は、右タッチパッドの位置情報分布判定処理(S2601)および左タッチパッドの位置情報分布判定処理(S2602)の処理結果から、右タッチパッド802に関するタッチ情報1000と左タッチパッド803に関するタッチ情報1000との両方が有ることを確認する(S2603)。
ここで、右タッチパッド802に関するタッチ情報1000と左タッチパッド803に関するタッチ情報1000との両方が有る場合(S2603でYES)、方向決定部2401は、2つの判定結果が一致するかを確認する(S2604)。すなわち、方向決定部2401は、右タッチパッドの位置情報分布判定処理(S2601)および左タッチパッドの位置情報分布判定処理(S2602)の処理結果から、右タッチパッド802の位置情報の分布の判定結果と左タッチパッド803の位置情報の分布の判定結果とが一致するか否かを確認する。具体的には、方向決定部2401は、右タッチパッド802と左タッチパッド803の判定結果が両方とも「上向き」であるか、または、両方とも「下向き」であるか否かを確認する。
一方、右タッチパッド802に関するタッチ情報1000、および、左タッチパッド803に関するタッチ情報1000のいずれかが無い場合(S2603でNO)、方向決定部2401は、それらのいずれかが有るか否かを確認する(S2610)。すなわち、この場合、方向決定部2401は、右タッチパッドの位置情報分布判定処理(S2601)および左タッチパッドの位置情報分布判定処理(S2602)の処理結果から、右タッチパッド802に関するタッチ情報1000および左タッチパッド803に関するタッチ情報1000のどちらか一方が有ることを確認する。
なお、ここでは、右タッチパッド802および左タッチパッド803のどちらかに関するタッチ情報1000が検知された場合、方向決定部2401が分布を用いた方向決定処理を実行する例が示されている。しかし、右タッチパッド802と左タッチパッド803の両方に関するタッチ情報1000が検知された場合のみ、方向決定部2401が方向決定処理を実行してもよい。この場合、本処理(S2610)は省略できる。
右タッチパッド802の位置情報の分布の判定結果と左タッチパッド803の位置情報の分布の判定結果とが一致しない場合(S2604でNO)、方向決定部2401は、操作装置31の向きが「方向不定」であると決定する(S2609)。また、右タッチパッド802に関するタッチ情報1000と左タッチパッド803に関するタッチ情報1000との両方が無い場合(S2610でNO)も、方向決定部2401は、操作装置31の向きが「方向不定」であると決定する。
なお、この場合、方向決定部2401は、操作装置31の向きが、デフォルトの向きとして「正しい向き」であると決定してもよい。このデフォルトの向きは、出荷時などに予め画面表示装置5にデフォルト値として設定されている向きでもよいし、ユーザが予めデフォルト値として設定している向きでもよい。
右タッチパッド802の位置情報の分布の判定結果と左タッチパッド803の位置情報の分布の判定結果とが一致する場合(S2604でYES)、方向決定部2401は、前段の処理で確認した位置情報の分布の判定結果が「上向き」であるか否かを確認する(S2605)。また、右タッチパッド802に関するタッチ情報1000および左タッチパッド803に関するタッチ情報1000のどちらか一方が有る場合(S2610でYES)も、方向決定部2401は、位置情報の分布の判定結果が「上向き」であるか否かを確認する。
ここで、位置情報の分布の判定結果が「上向き」である場合(S2605でYES)、方向決定部2401は、人の指の構造上の特徴などを鑑みて、ユーザの指804の向きは右タッチパッド802および左タッチパッド803の上方向であると判断する。すなわち、方向決定部2401は、ユーザの指804の向きが右タッチパッド802の座標系および左タッチパッド803の座標系と同一方向であると判断する。
また、ユーザの意図する操作装置31の向きは、ユーザの指804の方向と一致すると考えられる。したがって、方向決定部2401は、操作装置31の向きが「正しい向き」であると決定する(S2606)。方向決定部2401は、カーソル位置決定部1704に、決定した操作装置31の向きを渡し、本処理を終了する。
一方、位置情報の分布の判定結果が「上向き」でない場合(S2605でNO)、方向決定部2401は、前段の処理で確認した位置情報の分布の判定結果が「下向き」であるか否かを確認する(S2607)。
ここで、位置情報の分布の判定結果が「下向き」である場合(S2607でYES)、方向決定部2401は、人の指の構造上の特徴などを鑑みて、ユーザの指804の向きは、右タッチパッド802および左タッチパッド803の下方向であると判断する。すなわち、方向決定部2401は、ユーザの指804の向きが右タッチパッド802の座標系および左タッチパッド803の座標系と上下反対方向、あるいは、右または左にそれぞれ180°回転させた方向であると判断する。
また、ユーザの意図する操作装置31の向きは、ユーザの指804の方向と一致すると考えられる。したがって、方向決定部2401は、操作装置31の向きが「正しい向き」であると決定する場合(S2606)とは反対に、操作装置31の向きが「逆向き」であると決定する(S2608)。方向決定部2401は、カーソル位置決定部1704に、決定した操作装置31の向きを渡し、本処理を終了する。
一方、位置情報の分布の判定結果が「下向き」でない場合(S2607でNO)、両タッチパッドの位置情報分布が一致しない場合(S2604でNO)などと同様に、方向決定部2401は、操作装置31の向きが「方向不定」であると決定する(S2609)。
以上で、方向決定部2401での横持ち時方向決定処理フローについての説明を終了する。
次に、図27を用いて、図25に示された縦持ち時方向決定処理(S2510)のフローについて説明する。
まず、方向決定部2401は、右タッチパッド802に関してタッチ情報テーブル1100から読み出したタッチ情報1000の位置情報分布判定処理(S2701)を実行する。この位置情報分布判定処理については、後で図28を用いて詳細に説明する。
次に、方向決定部2401は、左タッチパッド803に関してタッチ情報テーブル1100から読み出したタッチ情報1000の位置情報分布判定処理(S2702)を実行する。この位置情報分布判定処理は、右タッチパッドの位置情報分布判定処理(S2701)と同様であるが、位置情報の分布を判定する際には、図28を用いて後述される左指用の分布を用いる。
次に、方向決定部2401は、右タッチパッドの位置情報分布判定処理(S2701)および左タッチパッドの位置情報分布判定処理(S2702)の処理結果から、右タッチパッド802に関するタッチ情報1000と左タッチパッド803に関するタッチ情報1000との少なくともどちらか一方が有ることを確認する(S2703)。
ここで、右タッチパッド802に関するタッチ情報1000と左タッチパッド803に関するタッチ情報1000との両方が無い場合(S2703でNO)、操作装置31の向きは「方向不定」であると決定する(S2708)。
なお、この場合、方向決定部2401は、操作装置31の向きが、デフォルトの向きとして「正しい向き」であると決定してもよい。このデフォルトの向きは、出荷時などに予め画面表示装置5にデフォルト値として設定されている向きでもよいし、ユーザが予めデフォルト値として設定している向きでもよい。
一方、右タッチパッド802に関するタッチ情報1000と左タッチパッド803に関するタッチ情報1000との少なくともどちらか一方が有る場合(S2703でYES)、方向決定部2401は、前段の処理で確認した位置情報の分布の判定結果が「上向き」であるか否かを確認する(S2704)。
なお、右タッチパッド802に関するタッチ情報1000と左タッチパッド803に関するタッチ情報1000との両方が存在する場合には、方向決定部2401は、タッチ情報蓄積部902から取得するタッチ情報1000のデータ数が多い方のタッチパッドに関するタッチ情報1000を用いてもよい。
ここで、位置情報の分布の判定結果が「上向き」である場合(S2704でYES)、方向決定部2401は、人の指の構造上の特徴などを鑑みて、ユーザの指804の向きは、操作装置31を縦持ちした場合の上方向であると判断する。本実施の形態では、右タッチパッド802側を前方向に向けて把持する方向に、右タッチパッド802の座標系および左タッチパッド803の座標系が定められている。
ユーザの意図する操作装置31の向きは、ユーザの指804の方向と一致すると考えられる。したがって、方向決定部2401は、操作装置31の向きが「正しい向き」であると決定する(S2705)。方向決定部2401は、カーソル位置決定部1704に、決定した操作装置31の向きを渡し、本処理を終了する。
一方、位置情報の分布の判定結果が「上向き」でない場合(S2704でNO)、方向決定部2401は、前段の処理で確認した位置情報の分布の判定結果が「下向き」であるか否かを確認する(S2706)。
ここで、位置情報の分布の判定結果が「下向き」である場合(S2706でYES)、方向決定部2401は、人の指の構造上の特徴などを鑑みて、ユーザの指804の向きは、操作装置31を縦持ちした場合の下方向であると判断する。
また、ユーザの意図する操作装置31の向きは、ユーザの指804の方向と一致すると考えられる。したがって、方向決定部2401は、操作装置31の向きが「正しい向き」であると決定する場合(S2705)とは反対に、操作装置31の向きが「逆向き」であると決定する(S2707)。方向決定部2401は、カーソル位置決定部1704に、決定した操作装置31の向きを渡し、本処理を終了する。
一方、位置情報の分布の判定結果が「下向き」でない場合(S2706でNO)、両タッチパッドのタッチ情報がない場合(S2703でNO)と同様に、方向決定部2401は、操作装置31の向きが「方向不定」であると決定する(S2708)。
以上で、方向決定部2401での縦持ち時方向決定処理フローについての説明を終了する。
次に、図28、図29Aおよび図29Bを用いて、図26に示された右タッチパッドの位置情報分布判定処理(S2601)と左タッチパッドの位置情報分布判定処理(S2602)、および、図27に示された右タッチパッドの位置情報分布判定処理(S2701)と左タッチパッドの位置情報分布判定処理(S2702)の処理フローについて説明する。
まず、方向決定部2401は、タッチ情報テーブル1100から読み出したタッチ情報1000の有無を確認する(S2801)。
ここで、読み出したタッチ情報1000が存在しない場合(S2801でNO)、方向決定部2401は、操作装置31の向きが「方向不定」であると決定する(S2808)。
一方、読み出したタッチ情報1000が存在する場合(S2801でYES)、方向決定部2401は、内部で保持する位置情報の分布を読み出す(S2802)。
具体的には、方向決定部2401は、右タッチパッド802の位置情報の分布を判定する場合、図29Aと図29Bに示す正しい向き時の位置情報の分布(右指用)と逆向き時の位置情報の分布(右指用)とを読み出す。そして、方向決定部2401は、左タッチパッド803の位置情報の分布を判定する場合、図29Aと図29Bに示す正しい向き時の位置情報の分布(左指用)と逆向き時の位置情報の分布(左指用)とを読み出す。
次に、方向決定部2401は、タッチ情報の確認処理(S2801)で読み出したタッチ情報1000と、位置情報の分布の読み出し処理(S2802)で読み出した位置情報の分布との相関度を計算する(S2803)。相関度の計算は、位置情報の分布の読み出し処理(S2802)で読み出した正しい向き時の位置情報の分布に含まれる位置情報1003の個数と、逆向き時の位置情報の分布に含まれる位置情報1003の個数とをそれぞれ計算する。
例えば、図29Aおよび図29Bに示された例では、点Aから点Jまでの10個の位置情報1003(右タッチパッド802からの位置情報1003が5個、左タッチパッド803からの位置情報1003が5個)がタッチ情報1000として読み出されている。この場合、図29Aでは点A〜点Jまでの10個が「正しい向き時の位置情報の分布」に含まれているため、相関度は「10」と計算できる。一方、図29Bでは点C、点D、点G、点Iの4個が「逆向き時の位置情報の分布」に含まれているため、相関度は「4」と計算できる。
次に、方向決定部2401は、相関度の計算処理(S2803)で計算した相関度に関して、共に相関度が「0」であるか否かを確認する(S2804)。
ここで、相関度が共に「0」である場合(S2804でYES)、方向決定部2401は、相関度からは操作装置31の向きが決定できないため、操作装置31の向きが「方向不定」であると決定する(S2808)。
一方、2つの相関度のうち少なくとも一方が「0」ではない場合(S2804でNO)、方向決定部2401は、相関度の計算処理(S2803)で計算した相関度に関して、(正しい向き時の位置情報との相関度)≧(逆向き時の位置情報との相関度)であるか否かを確認する(S2805)。
ここで、(正しい向き時の位置情報との相関度)≧(逆向き時の位置情報との相関度)である場合(S2805でYES)、方向決定部2401は、タッチ情報1000に含まれる位置情報1003は、正しい向き時の位置情報との相関度が高いため、操作装置31の向きが「上向き」であると決定する(S2806)。
一方、(正しい向き時の位置情報との相関度)<(逆向き時の位置情報との相関度)である場合(S2805でNO)、方向決定部2401は、タッチ情報1000に含まれる位置情報1003は、逆向き時の位置情報との相関度が高いため、操作装置31の向きが「下向き」であると決定する(S2807)。
以上で、図26に示された右タッチパッドの位置情報分布判定処理(S2601)と左タッチパッドの位置情報分布判定処理(S2602)、および、図27に示された右タッチパッドの位置情報分布判定処理(S2701)と左タッチパッドの位置情報分布判定処理(S2702)の処理フローについての説明を終了する。
以上で、実施の形態5における画面表示装置5の処理フローの説明を終了する。
上述のような構成によれば、画面表示装置5のタッチ情報蓄積部902が、タッチ情報検出部901で検出したタッチ情報1000を蓄積する。そして、タッチ情報1000に含まれる位置情報1003の分布を用いて方向決定部2401が操作装置31の向きを決定する。また、その向きに応じて、カーソル位置決定部1704がタッチ情報検出部901から受け取るタッチ情報1000に含まれる位置情報1003を適切に補正した上で、カーソルの表示位置を決定する。
したがって、画面表示装置5は、ユーザが操作装置31をどの向きに保持しても、ユーザによる右タッチパッド802と左タッチパッド803との入力のみに基づいて、操作装置31の向きを適切かつ自動的に決定して、正しい位置にカーソルを表示することができる。これにより、ユーザの快適な操作性を実現することができる。
なお、実施の形態5では、図18に示された実施の形態3の「横持ち時方向決定処理(S1809、図19)」と「縦持ち時方向決定処理(S1810、図20)」とに代えて、図25に示された「横持ち時方向決定処理(S2509、図26)」と「縦持ち時方向決定処理(S2510、図27)」とが適用されている。
すなわち、方向決定部における方向決定処理のみが置換されている。このように、実施の形態1から実施の形態4における各方向決定処理が、実施の形態5で示した方向決定処理に置き換えられてもよい。
また、上記に示された複数の実施の形態は例であって、本発明はこれらの実施の形態に限定されるものではない。これらの実施の形態に対して当業者が思いつく変形を施して得られる形態、および、これらの実施の形態における構成要素を任意に組み合わせて実現される別の形態も、本発明に含まれる。
また、本発明は、画面表示装置のみに限られず、タッチパッドを有する操作装置からの入力を受け、表示部に表示させるためのデータを生成する表示制御装置として利用できる。表示制御装置は、操作装置に組み込まれてもよいし、表示部に組み込まれてもよい。また、表示制御装置は、独立した装置であってもよい。そして、表示制御装置が、操作装置および表示部を備えてもよい。
また、実施の形態に示された操作装置は、無線のリモコンでもよいし、有線のリモコンでもよい。また、操作装置は、リモコン以外でもよく、例えば、表示部、表示制御装置または画面表示装置に、物理的に一体として設置されてもよい。
また、カーソルが用いられない場合、カーソル位置決定部は無くてもよい。さらに、タッチ情報を蓄積する必要がない場合、タッチ情報蓄積部は無くてもよい。以下、図30および図31を用いて例示する。
図30は、実施の形態1における画面表示装置の変形例を示す構成図である。図30に示された画面表示装置6では、操作装置11、表示制御装置60および表示部206は、物理的に一体なって構成される。これにより、画面表示装置6、操作装置11、表示制御装置60および表示部206の向きは、互いに一致する。
方向決定部203は、指の操作に起因する特徴に基づいて、操作装置11の向きを決定する。例えば、ユーザが手で操作装置11を把持しながら指でタッチパッド102に触れることができる範囲は、指の構造の特徴上、限られる。したがって、方向決定部203は、このような特徴にしたがって、蓄積された複数のタッチ情報を利用せずに、検出されたひとつのタッチ情報を利用して、操作装置11の向きを決定してもよい。
そして、画面データ生成部205は、方向決定部203により決定された操作装置11の向きに応じて、画面データを生成し、表示部206に画像などを表示させる。
図31は、図30に示された画面表示装置6を利用する場合の概念図である。様々な方向を向いている画面表示装置6において、適切な方向に画像などが表示される。すなわち、表示制御装置60は、指による操作に基づいて、表示に適切な向きを検出し、画像などを表示できる。
また、実施の形態1から実施の形態5では、方向決定部が、常時、操作装置の向きを決定し、画面上のカーソル位置を補正したり、アラートメッセージを生成したりする場合の例が示された。しかし、画面表示装置がアプリケーション監視部を備え、方向決定部は、アプリケーションの起動時、および、アプリケーションの切替え時など、ユーザが操作装置を持ち替えるような場合に操作装置の向きを決定してもよい。これにより、画面表示装置は、必要な場合にのみ操作装置の向きを認識するように構成されるため、画面表示装置の処理負荷が軽減される。
また、実施の形態1から実施の形態5に係る画面表示装置は、ユーザが入力したタッチパッド上の位置情報に関して、指の操作に起因する特徴を利用して、操作装置の向きを決定する。指の操作に起因する特徴は、指の構造、形状および動作等に起因する特徴である。実施の形態1から実施の形態5に係る画面表示装置は、特に、位置情報の軌跡の傾き(直線で近似した傾き)と変化度、または、位置情報の分布を特徴として利用して、操作装置の向きを決定する。しかし、指の操作に起因する特徴は、このような軌跡または分布に限られない。
画面表示装置は、位置情報の軌跡を曲線で近似し、その曲率を特徴として利用してもよい。画面表示装置は、位置情報の軌跡を曲線で近似し、近似した曲線の端点を挟む角度を利用してもよい。画面表示装置は、位置情報の分布が円形または楕円形になる場合、ユーザの指で操作し易いタッチパッド上の所定の領域に円形または楕円形の開始位置があるか否かを利用してもよい。
また、上述の記載において、方向決定部が決定する方向は、操作装置の向きと表現されている。しかし、この方向は、ユーザが意図する方向として、扱われてもよい。
また、実施の形態1から実施の形態4に係る方向決定部は、ユーザが入力したタッチパッド上の位置情報の軌跡の形状を、直線の傾きおよび変化度を計算することにより特定している。しかし、方向決定部は、事前に予測される軌跡を保持しておき、ユーザが入力したタッチパッド上の軌跡と、事前に保持する軌跡との相関度あるいは乖離度を計算することによって、軌跡の形状を特定してもよい。
また、実施の形態1から実施の形態5に係るタッチパッドは、ユーザが入力したタッチパッド上の位置情報として、x座標とy座標の2次元の座標値を取得している。さらに、z座標(z軸方向)を含む3次元の座標値を取得可能なタッチパッドが用いられてもよい。
このようなタッチパッドの場合、ユーザの接触操作または押下操作について、z軸方向の強度を含む情報が得られる。そのため、ユーザの入力が面積として表現される。したがって、方向決定部は、この入力面積の形状からユーザの指の形状を認識することで、操作装置の向きを決定してもよい。
また、実施の形態1から実施の形態4において、方向決定部が「正しい向き」と決定した場合のタッチパッド上の位置情報の軌跡が記録(学習)されてもよい。そして、記録された軌跡が次回以降の方向決定処理で用いられてもよい。実施の形態5においても、同様に、タッチパッド上の位置情報の分布が記録(学習)されてもよい。
例えば、方向決定処理において、ユーザにより入力されたタッチパッド上の位置情報の軌跡と学習しておいた軌跡との相関度または乖離度などを計算することにより、ユーザの癖などに適応する効果が期待できる。
また、実施の形態1から実施の形態5において、ユーザが、2面以上のタッチパッドを備える操作装置を縦持ちに保持した場合、方向決定部は、タッチ情報の量(数)が多いタッチパッド側の方向が、ユーザが意図する上方向であると判断してもよい。
また、実施の形態4では、方向決定部1703が決定した操作装置41の向きと、第2のセンサー2205で検知した操作装置41の向きとを比較する場合の例が示された。表示制御装置40は、方向決定部1703が決定した操作装置41の向きと、予め固定で設定されている右タッチパッド802上および左タッチパッド803上での座標系の向きとを比較してもよい。そして、表示制御装置40は、両者の向きが一致しない場合に、アラートメッセージなどを生成し、表示部206に表示させてもよい。
また、実施の形態4では、一旦、アラートメッセージを表示した後、ユーザが操作装置41を持ち替えたことを検出したり、方向決定部1703が次の操作装置41の向きを認識したりした時に、画面データ生成部2202が前回表示したアラートメッセージを消去してもよい。
また、警告の方法は、実施の形態4で示された警告データ生成部2201がアラートメッセージを作成するだけに限られない。画面表示装置は、表示制御装置40の外部にアラート部を備えてもよい。また、アラート部は、方向決定部1703で決定した操作装置の向きと、予め固定で設定されているタッチパッド上の座標系の向き、または、センサーで検知した操作装置の向きとが一致しない場合に、ユーザに対して各種フィードバック方法によりアラートを示してもよい。例えば、画面上のオブジェクトの色または形状を変更する、音で通知するなどの多様な方法が適用できる。
また、実施の形態4では、第1のセンサー2204と第2のセンサー2205の両方を備えた画面表示装置の場合の例が示された。しかし、画面表示装置は、どちらか片方のセンサーのみを備えてもよい。これによっても、同様の処理が実現可能である。
この場合、第1のセンサー2204のみを備えた画面表示装置は、第1のセンサー2204で検出した操作装置の把持方向に基づいて予め固定で設定されているタッチパッド上の座標系の向きと、方向決定部1703が決定した操作装置の向きとの比較を行う。逆に、第2のセンサー2205のみを備えた画面表示装置は、第2のセンサー2205が検知した上下方向の向きに基づく操作装置の向きと、方向決定部1703が決定した操作装置の向きとの比較を行う。
また、実施の形態4に係る方向決定部1703は、第1のセンサー2204、第2のセンサー2205、左タッチパッド803、右タッチパッド802、または、それらの任意の組み合わせから得られる情報を用いて、方向を決定することができる。例えば、方向決定部1703は、第2のセンサー2205と左タッチパッド803とから得られる情報を用いて、方向を決定することができる。
また、方向決定部1703は、第1のセンサー2204、第2のセンサー2205、左タッチパッド803、右タッチパッド802、または、それらの任意の組み合わせから得られる別の情報を用いて、方向の妥当性を検証してもよい。すなわち、方向決定部1703は、別の情報からユーザが意図する方向として推定される方向と、指の操作に起因する特徴に基づいて決定した方向とが一致するか否かを判定することにより、方向の妥当性を検証してもよい。
例えば、方向決定部1703は、第1のセンサー2204および第2のセンサー2205から得られる情報により推定される方向と、左タッチパッド803および右タッチパッド802から得られる情報を用いて決定される方向とが一致するか否かを検証してもよい。そして、それらが一致する場合、カーソル位置決定部2203がカーソル位置を決定し、それらが一致しない場合、警告データ生成部2201が警告データを生成してもよい。
また、方向決定部1703によって決定された方向と、操作装置41において予め定められている方向とが異なる場合に、カーソル位置決定部2203が、予め定められている方向に従って決定されるカーソル位置を補正することにより、カーソル位置を決定してもよい。または、方向決定部1703によって決定された方向と、操作装置41において予め定められている方向とが異なる場合に、警告データ生成部2201が警告データを生成してもよい。
また、実施の形態1から実施の形態5では、ユーザが操作装置を持ち始めた時、アプリケーションの切替え時、および、アプリケーション内で操作装置を持つ方向を変更する時などに、表示制御装置はタッチパッド上での指の自然な操作によって操作装置の向きを認識する。しかし、このような初動の操作だけでは、認識に必要なタッチ情報が十分に取得できない場合も想定される。
このような場合、表示制御装置は、認識時間を延長する、再認識を試みる等の処理を自動で行ってもよいし、ユーザに認識失敗を通知してもよい。
また、実施の形態1から実施の形態5において、画面表示装置が、決定された向きに基づいてカーソル表示を行ったにもかかわらず、ユーザがタッチパッド上で不自然な操作を行う場合もある。例えば、ユーザが、画面上で選択すべきオブジェクトが存在しない領域での操作を頻発させたり、タッチパッド上での指の回転などを繰り返したりといった動作を行うことがある。この場合、画面表示装置は、決定された向きが誤認識であったと判断して、決定された操作装置の向きを天地方向に逆転させる処理を自動的あるいはユーザに確認した上で行ってもよい。
また、実施の形態1から実施の形態5において、画面表示装置が、決定された向きに基づいてカーソル表示を行ったにもかかわらず、ユーザが操作装置を天地方向に反転させて持ち替えを行う場合がある。この場合、画面表示装置が決定した向きが誤認識であったと判断される。そのため、画面表示装置は、ユーザが持ち替えを行った直後には操作装置の向きの認識を実行しなくてもよい。そして、画面表示装置は、次にアプリケーションが切替わった場合、または、所定時間の経過後などにユーザが操作装置を持ち替えた場合に、操作装置の向きを再認識してもよい。
また、実施の形態1から実施の形態5において、画面表示装置は、ユーザに対して、自然にタッチパッドを操作させるようなアプリケーション画面を提示してもよい。例えば、アプリケーションの開始時および同一アプリケーション内で操作装置の横持ちと縦持ちとが切り替わる場合などに、両手で扉を開かせるといったようなGUIをアプリケーションの一部として提示する方法が考えられる。
画面表示装置は、このようなGUIをアプリケーションに組み込むことにより、操作装置の向きを認識するための特別な操作をユーザに極力意識させることなく、結果的に操作装置の向きの認識精度を向上させることができる。
また、実施の形態1から実施の形態5において、画面表示装置は、操作装置の向きの決定前であるか決定後であるかを示すGUIを提示してもよい。このGUIとしては、色および濃さを変える、画面上のオブジェクト、カーソルの位置および形状などを変える、メッセージ表示を行う、および、音により通知する、等の種々の方法が考えられる。
例えば、操作装置の向きの決定前では、画面表示装置は、カーソル画像を薄くするなどの透過表示(α表示)をしたり、カーソルを非表示としたりしてもよい。そして、操作装置の向きの決定後に、画面表示装置は、通常通りのカーソル画像を表示してもよい。
また、実施の形態2から実施の形態5では、操作装置の上面に2面のタッチパッドを備えた操作装置の場合の例が示された。しかし、操作装置の上面に3面以上の複数のタッチパッドを備えた操作装置、または、上面と下面(背面)との両方で合わせて複数のタッチパッドを備えた操作装置等にも、実施の形態2から実施の形態5で示した構成が適用されてもよい。
あるいは、画面表示装置は、マルチタッチに対応した1つのタッチパッドから、複数の接触を検出してもよい。例えば、実施の形態2から実施の形態5に示された画面表示装置が、1つのタッチパッドのみを有する場合であっても、1つのタッチパッドから、複数の指の接触を検出することにより、同様の処理を実現することができる。
また、実施の形態2から実施の形態5では、カーソル表示はフリーポインティング(フリーカーソル)である場合の例が示された。しかし、このようなタッチパッドによる表示は、特定のオブジェクト等のフォーカスによる表示であってもよい。
また、実施の形態2から実施の形態5では、右タッチパッド802と左タッチパッド803とでそれぞれ独立した2つのカーソルを表示する場合の例が示されている。しかし、右タッチパッド802と左タッチパッド803とで共通のカーソルが表示されてもよい。また、右タッチパッド802と左タッチパッド803とで、画面上の異なる領域がそれぞれ割り当てられてもよい。
また、画面などの出力手段の背面にタッチパッドを備えるような画面表示装置などの場合、ユーザは、親指以外(例えば、人差し指と中指など)の指でタッチパッドを操作する。このような場合であっても、人の各指の構造、形状および動作などに起因する特徴を活用することにより、本発明による効果が得られることは言うまでもない。
また、図2、図9、図17、図22、図24および図30に示された表示制御装置の構成要素は、集積回路であるLSI(Large Scale Integration)として実現されてもよい。これらの構成要素は、個別に1チップ化されてもよいし、一部または全てを含むように1チップ化されてもよい。ここでは、LSIとしたが、集積度の違いにより、IC(Integrated Circuit)、システムLSI、スーパーLSIまたはウルトラLSIと呼称されることもある。
また、集積回路化の手法はLSIに限るものではなく、専用回路または汎用プロセッサで実現してもよい。プログラムすることが可能なFPGA(Field Programmable Gate Array)、または、LSI内部の回路セルの接続および設定を再構成可能なリコンフィギュラブル・プロセッサを利用してもよい。
さらには、半導体技術の進歩または派生する別技術によりLSIに置き換わる集積回路化の技術が登場すれば、当然、その技術を用いて、表示制御装置に含まれる構成要素の集積回路化を行ってもよい。
また、表示制御装置の構成要素のうち、データを格納する手段だけ1チップ化せずに別構成としてもよい。
また、本発明は、表示制御装置として実現できるだけでなく、表示制御装置を構成する処理手段をステップとする方法として実現できる。その方法に含まれるステップは、典型的には、コンピュータによって、実行される。そして、本発明は、その方法に含まれるステップをコンピュータに実行させるプログラムとして実現できる。さらに、本発明は、そのプログラムを記憶したCD−ROM等のコンピュータ読み取り可能な記憶媒体として実現できる。