以下、本発明の実施形態について添付の図面を参照しながら説明する。
<第1の実施形態>
[システムの全体構成]
まず、第1の実施形態に係る表示システム1の構成について、図1を参照しながら説明する。図1は、第1の実施形態に係る表示システムの全体構成例を示す図である。本実施形態に係る表示システム1は、ポインティング端末10及び携帯端末20を有する。ポインティング端末10及び携帯端末20は、有線又は無線により通信可能に接続されている。
ポインティング端末10は、図1に示すようにウェアラブル型の端末であり、携帯端末20から受け取った画像データ(投影画像データ)を投影して、投影画像Sを投影面に表示させる。また、ポインティング端末10は、後述するように、モーションセンサから得られる姿勢変化量データを用いて、ポインタPにより投影画像Sに表示されている各オブジェクトA〜Cに対してポインティング操作を行うことができる。
ここで、オブジェクトとは、例えば、携帯端末20に搭載されたアプリケーションを操作するためのアイコン等である。したがって、ユーザは、ポインティング端末10を用いて、投影画像Sにおいて各オブジェクトA〜Cに対してポインティング操作を行うことにより、操作されたオブジェクトに対応するアプリケーションを利用することができる。ただし、オブジェクトは、アプリケーションを操作するためのアイコン等に限られず、例えば、オブジェクトとしてソフトウェアキーボードの各キーを表示させて、文字入力等を行えるようにしてもよい。
また、ポインティング操作とは、投影画像S内においてポインタPでオブジェクトA〜Cを指し示す、又は選択してアプリケーションを実行させる等のユーザが行う操作のことである。
携帯端末20は、ユーザが携帯可能な情報処理装置であり、上述した各種アプリケーションやポインティング端末10により投影される投影画像データの元データである投影元画像データが格納されている。また、携帯端末20は、後述するように、ユーザの操作に応じて投影画像における各オブジェクトA〜Cの位置やサイズ(拡縮倍率)等を決定して、投影元画像データから投影画像データを生成する。より詳しくは、携帯端末20は、ユーザの操作に応じて、ポインティング端末10が投影する表示対象物に基づき各オブジェクトの位置や拡縮倍率等を、ユーザがポインティング操作を行い易いように決定して、投影元画像データから投影画像データを生成する。
なお、図1では、ポインティング端末10及び携帯端末20がそれぞれ異なる端末である例を示したが、これに限られず、ポインティング端末10及び携帯端末20は1台の端末で実現されてもよい。すなわち、携帯端末20は、ポインティング端末10に含まれていてもよい。
ここで、上述した各オブジェクトの位置やサイズ(拡縮倍率)等をユーザがポインティング操作を行い易いように決定する必要がある場合について、図2を参照しながら説明する。図2は、投影画像が1つの平面に収まらない場合の例を示す図である。図2では、投影画像Sにおいて、ポインタPによるポインティング操作の対象となるオブジェクトA〜Dのうち、オブジェクトA及びBは1つの平面L内に投影されている。一方で、オブジェクトCは、平面Lとは角度の異なる平面に投影されており、オブジェクトDは、一部が平面Lからはみ出して、平面Lの奥に投影されている。このような場合、ユーザは、オブジェクトCやオブジェクトDの位置関係を把握し難いため、ポインタPを操作して、オブジェクトCやオブジェクトDの選択等を的確に行えないことがある。
そこで、本実施形態に係る表示システム1では、ポインタPが投影されている平面Lからポインティング操作に適した領域を抽出し、ポインタP及びオブジェクトA〜Dの位置やサイズ(拡縮倍率)を調整した上で、抽出した領域に含まれるように投影する。これにより、本実施形態に係る表示システム1では、ユーザのポインティング操作を向上させることができる。
[ハードウェア構成]
次に、本実施形態に係る表示システム1のハードウェア構成について、図3を参照しながら説明する。図3は、第1の実施形態に係る表示システムのハードウェア構成例を示す図である。
ポインティング端末10は、投影装置101、撮像装置102、モーションセンサ103、入力装置104、I/F装置105、CPU(Central Processing Unit)106、RAM(Random Access Memory)107、及びROM(Read Only Memory)等を備える。これら各ハードウェアは、それぞれがバスB1で相互に接続されている。
投影装置101は、プロジェクタ等であり、I/F装置105を介して携帯端末20から受け取った投影画像データを投影して、投影画像を表示させる。撮像装置102は、距離を測定することができるカメラ(測距カメラ)等であり、所定の範囲を撮像して、撮像装置102から撮像対象物までの距離を含む撮像画像データを生成する。撮像装置102により生成された撮像画像データは、I/F装置105を介して携帯端末20に送信される。ここで、撮像画像データは、後述するように、携帯端末20において、各オブジェクトのサイズ(拡縮倍率)等を決定する際に用いられる。モーションセンサ103は、ポインティング端末10の姿勢変化量を測定し、姿勢変化量データを出力する。なお、撮像装置102により測定される距離を、便宜上、以降では「第1の距離」と表す。
入力装置104は、例えば各種ボタン等であり、ユーザによる各種の入力操作を受け付ける。I/F装置105は、携帯端末20とのインタフェースであり、各種データの送受信を行う。CPU106は、例えばROM107等からプログラムや各種データをRAM108上に読み出し、各種処理を実行する演算装置である。RAM107は、プログラムやデータを一時保存する揮発性の半導体メモリである。ROM108は、電源を切ってもデータを保持することができる不揮発性の半導体メモリである。
携帯端末20は、CPU201、RAM202、ROM203、補助記憶装置204を備える。また、携帯端末20は、入力装置205、出力装置206、I/F装置207、ドライブ装置208、通信装置209等を備える。これら各ハードウェアは、それぞれがバスB2で相互に接続されている。
CPU201は、例えば補助記憶装置204やROM203等からプログラムや各種データをRAM202上に読み出し、各種処理を実行する演算装置である。RAM202は、プログラムやデータを一時保存する揮発性の半導体メモリである。ROM203は、電源を切ってもデータを保持することができる不揮発性の半導体メモリである。補助記憶装置204は、プログラムや各種データを格納している不揮発性のメモリであり、例えばSSD(Solid State Drive)等である。格納されるプログラムやデータには、携帯端末20の全体を制御する基本ソフトウェアであるOS(Operating System)やOS上で動作する各種プログラム等がある。
入力装置205は、例えばタッチパネル等であり、ユーザによる各種の入力操作を受け付ける。出力装置206は、例えばディスプレイ等であり、各種の処理結果を表示する。I/F装置207は、ポインティング端末10とのインタフェースであり、各種データの送受信を行う。ドライブ装置208は、記録媒体208aとのインタフェースである。記録媒体208aには、例えば、SDメモリカード(SD memory card)、USBメモリ(Universal Serial Bus memory)等がある。通信装置209は、ネットワークに接続するためのインタフェースである。
本実施形態に係る表示システム1は、図3に示すハードウェア構成により、後述する各種処理が実現される。
[機能構成]
次に、本実施形態に係る表示システム1の機能構成について、図4を参照しながら説明する。図4は、第1の実施形態に係る表示システムの機能構成例を示す図である。
ポインティング端末10は、入力部11、投影部12、撮像部13、及び変化量取得部14を有する。これらの各部は、ポインティング端末10にインストールされたプログラムが、CPU106に実行させる処理により実現される。
入力部11は、ユーザからのポインティング操作を開始するための入力操作を受け付ける。このとき、入力部11は、ユーザからポインティング操作を開始するための入力操作を受け付けると、投影画像生成部26を介してポインタを投影するための投影画像データを投影部12により投影させる。
投影部12は、携帯端末20から受け取った投影画像データを投影して、投影画像データに基づく投影画像を表示させる。
撮像部13は、投影部12により表示されたポインタを含む所定の範囲を撮像して、撮像画像データを生成する。ここで、撮像部13により生成される撮像画像データには、撮像装置102から撮像対象物までの第1の距離が含まれる。すなわち、撮像部13は、撮像装置102から撮像対象物までの第1の距離を算出し、算出された第1の距離を含む撮像画像データを生成する。なお、所定の範囲は、投影部12により表示される投影画像を少なくとも含む範囲であれば良い。
変化量取得部14は、ポインティング端末10の姿勢変化に応じてモーションセンサ103から出力される姿勢変化量データを取得する。ここで、姿勢変化量データは、ポインティング端末10の姿勢変化の前後における角度の変化量で表される。
携帯端末20は、ポインタ特定部21、領域抽出部22、オブジェクト決定部23、拡縮倍率決定部24、位置決定部25、投影画像生成部26、及び変化量算出部27を有する。これらの各部は、携帯端末20にインストールされたプログラムが、CPU201に実行させる処理により実現される。また、携帯端末20は、画像データ記憶部28及びオブジェクト管理データ記憶部29を有する。これら各記憶部は、補助記憶装置204を用いて実現可能である。
ポインタ特定部21は、撮像部13により生成された撮像画像データに含まれるポインタを特定する。
領域抽出部22は、撮像部13により生成された撮像画像データに基づき、ポインタ及び各オブジェクトを投影して表示させる領域を抽出する。
オブジェクト決定部23は、オブジェクト管理データ記憶部29を参照し、領域抽出部22により抽出された領域に投影して表示させるオブジェクトを決定する。
拡縮倍率決定部24は、領域抽出部22により抽出された領域に投影して表示させる各オブジェクト及びポインタのサイズ(拡縮倍率)を決定する。
位置決定部25は、領域抽出部22により抽出された領域に投影して表示させるポインタ及び各オブジェクトの位置を決定する。より詳しくは、位置決定部25は、領域に投影して表示させるポインタ及び各オブジェクトの位置を、オブジェクト間の距離、オブジェクトとポインタとの距離、及びオブジェクトと領域の境界との距離に基づいて決定する。なお、このようなオブジェクト間の距離、ポインタとオブジェクトとの距離、及びオブジェクトと領域の境界との距離を、上述した第1の距離と区別するため、便宜上、以降では「第2の距離」と表す。
投影画像生成部26は、拡縮倍率決定部24により決定された拡縮倍率と、位置決定部25により決定された位置とに基づき、抽出された領域に投影して表示させるポインタ及び各オブジェクトの投影元画像データから投影画像データを生成する。また、投影画像生成部26は、変化量算出部27により算出されたオブジェクトの位置の変化量に基づき、投影画像データを生成する。
変化量算出部27は、変化量取得部14が取得した姿勢変化量データに基づき、ポインティング端末10の姿勢変化に応じて、オブジェクトの位置が変化する量(位置の変化量)を算出する。算出された位置の変化量に基づき、投影画像生成部26により位置の変化量を相殺した投影画像データを生成することで、ポインティング端末10の姿勢変化の前後において、背景(表示対象物)に対してオブジェクトを静止させることができる。
画像データ記憶部28は、投影元画像データを格納している。ここで、画像データ記憶部28に格納されている投影元画像データは、例えば、ポインタの投影画像を表示するための画像データ(ポインタ画像データ)やオブジェクトの投影画像を表示するための画像データ(オブジェクト画像データ)等がある。上述した投影画像生成部26は、画像データ記憶部28から1以上の投影元画像データを取得し、取得した投影元画像データから投影画像データを生成する。なお、ポインタ画像データ及びオブジェクト画像データは、投影画像として表示された場合における投影画像内における位置(初期位置)が関連付けられている。ここで、本実施形態では、ポインタ画像データの初期位置は投影画像の中心であるとする。
オブジェクト管理データ記憶部29は、オブジェクトに対する操作履歴等のオブジェクト管理データが格納されている。上述したオブジェクト決定部23は、オブジェクト管理データ記憶部29からオブジェクト管理データを取得し、取得したオブジェクト管理データに基づき、領域抽出部22により抽出された領域に投影して表示させるオブジェクトを決定する。
[ポインティング操作の開始処理]
次に、本実施形態に係る表示システム1のポインティング操作の開始処理について、図5を参照しながら説明する。図5は、第1の実施形態に係るポインティング操作の開始処理を示した一例のフローチャートである。以降では、ユーザがポインティング操作を行うためにオブジェクト等を投影する表示対象物を選択してからポインタ及び各オブジェクトを当該表示対象物に投影して表示するまでの処理について説明する。
まず、ユーザは、入力部11を介して、ポインティング操作を開始するための操作を行う。すると、投影画像生成部26は、画像データ記憶部28からポインタ画像データを取得し、ポインタを投影画像の中心に表示させる投影画像データを生成し、投影部12に送信する。投影部12は、投影画像生成部26から受信した投影画像データに基づき投影画像S1を投影して表示させる。
そして、ユーザは、図6に示すように、ポインティング操作を行いたいと所望する表示対象物(ここでは、平面L)に、投影画像S1に含まれるポインタP1を投影して表示させる(ステップS501)。
次に、撮像部13は、ポインタP1が所定の時間の間、同一の場所に表示されていることを契機として、又はユーザからの入力部11を介した入力操作を契機として、投影画像S1を含む所定の範囲を撮像して、撮像画像データを生成する(ステップS502)。なお、このとき、撮像部13により生成された撮像画像データには、例えば、各画素毎に、撮像装置102から撮像対象物までの第1の距離が関連付けられている。
ポインタ特定部21及び領域抽出部22は、撮像画像データに基づき、ポインタと、ポインティング操作の対象となる各オブジェクトを表示する領域を、撮像画像データから抽出する(ステップS503)。すなわち、ポインタ特定部21及び領域抽出部22は、例えば図7に示すように、撮像画像Wから平面Lに含まれる領域Rを抽出する。ここで、領域抽出部22により抽出される領域Rは、例えば、ポインティング端末10から表示対象物までの第1の距離等が滑らかに変化している領域等である。このような領域Rを抽出するための領域抽出処理については、図10を用いて後述する。
オブジェクト決定部23は、オブジェクト管理データ記憶部29を参照し、領域抽出部22により抽出された領域に投影して表示するオブジェクトを決定する(ステップS504)。より具体的には、オブジェクト決定部23は、オブジェクトに対する操作履歴等を示すオブジェクト管理データをオブジェクト管理データ記憶部29から取得する。そして、オブジェクト決定部23は、オブジェクト管理データから領域Rに投影して表示させるオブジェクトを決定する。
例えば、直前のポインティング操作において、オブジェクトA〜Dがポインティング端末10により投影して表示されていた場合、オブジェクト決定部23は、オブジェクトA〜Dを領域Rに表示させると決定する。また、例えば、携帯端末20に搭載されたアプリケーションAに対応するオブジェクトAが、直前のユーザの操作によりオブジェクトA'に変更された場合、オブジェクト決定部23は、オブジェクトA'を領域Rに表示させると決定する。以降では、オブジェクト決定部23は、オブジェクトA1〜D1を領域Rに表示させると決定したものとする。
次に、拡縮倍率決定部24は、領域抽出部22により抽出された領域Rに投影して表示されるポインタP1及び各オブジェクトA1〜D1のサイズ(拡縮倍率)を決定する(ステップS505)。また、位置決定部25は、領域抽出部22により抽出された領域Rに投影して表示されるポインタP1及び各オブジェクトA1〜D1の領域R内における表示位置を決定する(ステップS506)。すなわち、拡縮倍率決定部24及び位置決定部25は、図8に示すようにポインタP1及びオブジェクトA1〜D1の位置及びサイズが、領域R内においてポインティング操作がし易い位置及びサイズとなるように決定する。このような拡縮倍率の決定処理及び位置の決定処理については、それぞれ図12及び図14を用いて後述する。
なお、ステップS506において位置決定部25は、ポインタP1の領域R内における表示位置を、上記のステップS502でポインタP1が投影して表示されている位置に決定してもよい。
次に、投影画像生成部26は、拡縮倍率決定部24により決定された拡縮倍率と、位置決定部25により決定されたポインタP1及び各オブジェクトA1〜D1の位置とに基づき、画像データ記憶部28から取得した投影元画像データから投影画像データを生成する。そして、投影部12は、投影画像データに基づく投影画像を表示させる。これにより、図9に示すような投影画像S2が表示される。
図9に示す投影画像S2において、ポインタP2及びオブジェクトA2〜D2は、それぞれポインタP1及びオブジェクトA1〜D1のサイズ及び位置を拡縮倍率決定部24により決定されたサイズ及び位置決定部25により決定された位置で調整したものである。すなわち、投影画像生成部26は、例えばポインタP1のポインタ画像データを、拡縮倍率決定部24により決定された拡縮倍率で調整し、位置決定部25により決定された位置に表示させる投影画像データを生成する。同様に、投影画像生成部26は、例えばオブジェクトA1のオブジェクト画像データを、拡縮倍率決定部24により決定された拡縮倍率で調整し、位置決定部25により決定された位置に表示させる投影画像データを生成する。オブジェクトB1〜D1についても同様である。投影部12は、このように生成された各投影画像データを重畳させて投影することで、図9に示すような投影画像S2を表示させることができる。
以上のように、本実施形態に係る表示システム1では、ポインティング操作を行いたいとユーザが所望する平面Lから領域Rを抽出する。そして、本実施形態に係る表示システム1では、抽出した領域R内に、ポインタP1及びオブジェクトA1〜D1のサイズ及び位置を調整したポインタP2及びオブジェクトA2〜D2を投影して表示させる。これにより、ユーザのポインティング操作を向上させることができる。
[領域抽出処理]
次に、図5のステップS503における領域抽出処理について、図10を参照しながら説明する。図10は、第1の実施形態に係る領域抽出処理の一例のフローチャートである。
まず、ポインタ特定部21は、撮像画像からポインタを特定し、バウンディングボックスで囲む(ステップS1001)。すなわち、ポインタ特定部21は、画像データ記憶部28からポインタP1のポインタ画像データを取得し、ポインタ画像データを用いて撮像画像データに対してテンプレートマッチング等の手法を用いることにより、ポインタP1を特定する。そして、ポインタ特定部21は、図11に示すように、特定したポインタP1を、ポインタP1を含む枠(バウンディングボックスQ)で囲む。
次に、領域抽出部22は、バウンディングボックスQの各辺に対応する撮像画像データにおける画素の画素値p1、・・・、pn(nは1以上の整数)を取得し、取得した画素値p1、・・・、pnの中央値M1を算出する(ステップS1002)。
次に、領域抽出部22は、撮像画像データにおいて、バウンディングボックスQによって囲まれる範囲の各画素に関連付けられている第1の距離d1、・・・、dm(mは1以上の整数)を取得し、取得した第1の距離d1、・・・、dmの中央値M2を算出する(ステップS1003)。
続いて、領域抽出部22は、撮像画像データにおいて、M1との差が予め設定された第1の閾値以下の画素で、かつ、M2との差が予め設定された第2の閾値以下となる第1の距離と関連付けられている画素を抽出する(ステップS1004)。なお、第1の閾値及び第2の閾値は、本実施形態を実現するプログラムの設計時等に予め定められる。第1の閾値及び第2の閾値を適切に設定することで、ポインタP1の付近の画素の色が大きく変化しない画素であって、かつ、ポインタP1の付近と第1の距離が大きく変化しない画素を抽出することができる。
領域抽出部22は、ステップS1004で抽出された画素について、オープニング処理及びクロージング処理を行う(ステップS1005)。このようなオープニング処理及びクロージング処理により、ステップS1004で抽出された画素を描画した場合における穴や突起物を除去することができる。これにより、領域抽出部22は、撮像画像データに基づき描画された撮像画像において、オープニング処理及びクロージング処理後の画素により描画される1以上の領域を得ることができる。
最後に、領域抽出部22は、上記のステップS1005で得られた1以上の領域のうち、ポインタP1が含まれる領域を抽出する(ステップS1006)。このようにして領域抽出部22により抽出された領域が、図7で示した領域Rである。
なお、領域抽出部22は、ステップS1002の処理を行わなくてもよい。この場合、領域抽出部22は、ステップS1004において中央値M2との差が第2の閾値以下となる第1の距離と関連付けられている画素を抽出すればよい。このように、領域抽出部22は、第1の距離に基づき領域Rを抽出してもよい。ただし、領域抽出部22は、図10で説明したように第1の距離と画素値とに基づいて領域を抽出した方が、よりポインティング操作に適した領域を抽出することができる場合が多い。
[拡縮倍率の決定処理]
次に、図5のステップS505における拡縮倍率の決定処理について、図12を参照しながら説明する。図12は、第1の実施形態に係る拡縮倍率の決定処理の一例のフローチャートである。
まず、拡縮倍率決定部24は、撮像画像におけるポインタの面積と、領域抽出部22により抽出された領域の面積とを算出する(ステップS1201)。すなわち、拡縮倍率決定部24は、図13に示すように、撮像画像Wにおいて、バウンディングボックスQで囲まれる範囲の面積をポインタP1の面積Bpとして算出する。また、拡縮倍率決定部24は、領域抽出部22により抽出された領域Rの面積Brを算出する。ここで、面積BpはバウンディングボックスQに含まれる画素数、面積Brは領域Rに含まれる画素数を面積として算出すればよい。
次に、拡縮倍率決定部24は、投影画像におけるポインタの面積とオブジェクトの面積とを算出する(ステップS1202)。すなわち、拡縮倍率決定部24は、ポインタP1のポインタ画像データを画像データ記憶部28から取得し、ポインタ画像データの画素数を投影画像におけるポインタP1の面積Apとする。また、拡縮倍率決定部24は、オブジェクトA1〜D1それぞれのオブジェクト画像データを画像データ記憶部28から取得し、各オブジェクト画像データの画素数の合計を投影画像におけるオブジェクトA〜Dの面積Aoとする。
最後に、拡縮倍率決定部24は、以下の式(1)〜(3)により、拡縮倍率sを算出する(ステップS1203)。そして、拡縮倍率決定部24は、このように算出された拡縮倍率sを、領域抽出部22により抽出された領域に投影して表示するポインタP1及び各オブジェクトA1〜D1のサイズ(拡縮倍率)と決定する。上述したように、投影画像生成部26は、投影元画像データに対して拡縮倍率sで調整することで、投影画像に表示されるポインタ及びオブジェクトのサイズを調整する。
まず、拡縮倍率決定部24は、以下の式(1)により、拡縮倍率sで調整せずにオブジェクトA1〜D1を投影して表示した場合に、撮像部13で撮像することにより生成される撮像画像データにおけるオブジェクトA1〜D1の面積の合計Boを算出する。
次に、拡縮倍率決定部24は、面積Bpと面積Boの合計を拡縮倍率sの二乗で拡縮させた面積と、面積Brとの比が、予め設定された面積比kとなることなることが、以下の式(2)が導出される。なお、面積比kの値は、本実施形態を実現するプログラムの設計時等に予め定められる。面積比kを大きな値に設定することで領域に対してポインタ及びオブジェクトが示す割合を大きくすることができる一方で、面積比kを小さな値に設定することで領域に対してポインタ及びオブジェクトが占める割合を小さくすることができる。
拡縮倍率決定部24は、式(1)及び(2)を用いて、以下の式(3)により拡縮倍率sを算出する。
[位置の決定処理]
次に、図5のステップS506における位置の決定処理について、図14を参照しながら説明する。図14は、第1の実施形態に係る位置の決定処理の一例のフローチャートである。図14に示す位置の決定処理は、ポインタP1及びオブジェクトA1〜D1を電荷qの荷電粒子と見做して、斥力モデルでシミュレーションを行うことにより、ポインタP1及びオブジェクトA1〜D1の位置を決定する。
まず、位置決定部25は、領域抽出部22により抽出された領域の境界に、所定の間隔毎に、電荷qの荷電粒子を配置する(ステップS1401)。すなわち、図15に示すように、領域Rの境界に、所定の間隔毎に、電荷qの荷電粒子を配置する。
次に、位置決定部25は、後述するステップS1403〜ステップS1405の処理を所定の回数繰り返したかを判定する(ステップS1402)。位置決定部25は、ステップS1403〜ステップS1405の処理を所定の回数繰り返した場合、ステップS1406に進む。一方、位置決定部25は、ステップS1403〜ステップS1405の処理を所定の回数繰り返していない場合、ステップS1403に進む。ここで、所定の回数としては、例えば、数千回乃至数万回が挙げられる。
ステップS1402において、所定の回数繰り返していないと判定された場合、位置決定部25は、ポインタP1及びオブジェクトA1〜D1について、他の荷電粒子から受ける斥力の和を算出する(ステップS1402)。
例えば、図15に示すように、オブジェクトC1について、ポインタP1から受ける斥力F1と、他のオブジェクトA1〜B1及びD1からそれぞれ受ける斥力F2と、領域Rの境界の荷電粒子からそれぞれ受ける斥力F3との和を算出する。このような各斥力Fn(nは1以上の整数)は、クーロンの法則により、荷電粒子間の第2の距離をr、クーロン定数をk1、とすれば、以下の式(4)により表される。したがって、各斥力Fnの和Fは、各斥力Fnのベクトルの和により算出することができる。
位置決定部25は、ポインタP1及び他のオブジェクトA1〜B1及びD1についても、上記と同様に、それぞれ他の荷電粒子から受ける斥力の和を算出する。
次に、位置決定部25は、時点tにおけるポインタP1及びオブジェクトA1〜D1の加速度を算出する(ステップS1404)。なお、時点tとは、位置決定部25によりステップS1403〜ステップS1405の処理を繰り返す際に1ずつ加算されるカウンタ変数である。時点tは、初期値を0として、位置決定部25によりステップS1403〜ステップS1405が実行される都度、1ずつ加算される。
例えば、オブジェクトA1について、ステップS1403で算出された斥力の和F(ここで、時点tにおける斥力の和FをFtと表す)を用いて、運動方程式により、以下の式(5)により表される。
なお、上記の式(5)において、質量mは、加速度atを調整するための予め定められた値である。質量mは、ポインタP1及びオブジェクトA1〜D1のそれぞれについて、同一の値としてもよいし、異なる値としてもよい。
位置決定部25は、ポインタP1及び他のオブジェクトB1〜D1についても、上記と同様に、ステップS1403で算出された斥力の和を用いて、時点tにおける加速度を算出する。
続いて、位置決定部25は、ステップS1404で算出された時点tにおけるポインタP1及びオブジェクトA1〜D1それぞれの加速度を用いて、それぞれの領域R内における位置を算出する(ステップS1405)。
例えば、オブジェクトA1について、ステップS1404で算出された時点tにおける加速度atを用いて、時点t+1における速度vt+1及び位置xt+1は、それぞれ以下の式(6)及び式(7)で表される。ここで、Δtは、時点tから時点t+1となる間に経過した時間として予め設定された値である。
なお、式(6)において、時点t=0の速度v0は、例えばv0=0とすればよい。また、式(7)において、時点t=0の位置x0は、ポインタP1やオブジェクトA1〜D1の初期位置とすればよい。このようにして、位置決定部25は、時点tにおいてポインタP1及びオブジェクトA1〜D1が受ける斥力から時点t+1におけるポインタP1及びオブジェクトA1〜D1の位置xt+1を算出する。
位置決定部25は、ポインタP1及び他のオブジェクトB1〜D1についても、上記と同様に、ステップS1404で算出された加速度を用いて、時点t+1における位置を算出する。
ステップS1402において、所定の回数繰り返したと判定された場合、位置決定部25は、ステップS1405で算出されたポインタP1及びオブジェクトA1〜D1の位置を、ポインタP2及びオブジェクトA2〜D2の位置に決定する(ステップS1406)。
なお、上記のステップS1405において、式(5)の代わりに、式(5)に対して予め設定された所定の定数k2を用いた抵抗を示す項を追加した以下の式(8)を用いてもよい。これにより、よりポインティング操作を行い易い位置にポインタP1及びオブジェクトA1〜D1の位置を決定できる場合がある。
また、図14では、ポインタP1及びオブジェクトA1〜D1の電荷並びに領域Rの境界に配置される荷電粒子の電荷をいずれも同一の値qとしたが、これに限られず、それぞれ異なる値としてもよい。例えば、ポインタP1の電荷をq1、オブジェクトA1〜D1をq2、領域Rの境界に配置される荷電粒子の電荷をq3としてもよい。さらに、オブジェクトA1〜D1のそれぞれの電荷を異なるようにしてもよいし、領域Rの境界に配置されるそれぞれの荷電粒子の電荷も異なるようにしてもよい。例えば、領域Rの形状に応じて、境界に配置される荷電粒子の電荷を異なるようにすることで、よりポインティング操作を行い易い位置にポインタP1及びオブジェクトA1〜D1の位置を決定できる場合がある。
また、上記の説明では、ポインタP1及びオブジェクトA1〜D1ついてステップS1403〜ステップS1405の処理を繰り返し実行したが、ポインタP1についてはステップS1403〜ステップS1405の処理を実行しないようにしてもよい。すなわち、位置決定部25は、ポインタP1の位置を、図5のステップS502でポインタP1が投影して表示されている位置に決定してもよい。
[ポインティング操作処理]
次に、本実施形態に係る表示システム1においてポインティング操作を行う処理について、図16を参照しながら説明する。図16は、第1の実施形態に係るポインティング操作処理の一例のフローチャートである。上述したように、本実施形態に係る表示システム1では、ポインティング端末10に搭載されたモーションセンサ103から得られる姿勢変化量データを用いて、ポインタによりオブジェクトに対してポインティング操作を行う。なお、以降では、ポインティング端末10により図9に示す投影画像S2が表示されているものとして説明する。
まず、変化量取得部14は、ポインティング端末10の姿勢が変化したか否かを判定する(ステップS1601)。これは、変化量取得部14がモーションセンサ103から姿勢変化量データを取得したか否かにより判定すればよい。変化量取得部14によりポインティング端末10の姿勢が変化したと判定されていない場合、何もしない。一方、変化量取得部14によりポインティング端末10の姿勢が変化したと判定された場合、ステップS1602に進む。
ステップS1601において、変化量取得部14によりポインティング端末10の姿勢が変化したと判定された場合、変化量取得部14は、モーションセンサ103から取得した姿勢変化量データを変化量算出部27に送信する。そして、変化量算出部27は、姿勢変化量データに基づき、ポインティング端末10の姿勢の変化に伴うオブジェクトA2〜D2の位置の変化量を算出する(ステップS1602)。これについて、オブジェクトA2の位置の変化量を算出する場合について、図17を参照しながら説明する。なお、以降では、姿勢変化後のオブジェクトA2を「オブジェクトA2'」とする。
まず、図17に示すように、姿勢変化前の投影画像S2において、投影面と水平にx軸として、中心を原点と定める。このとき、図17に示すように、投影画像S2のx軸方向の幅の半分をxw(画素)、オブジェクトA2のx軸方向の位置をxa(画素)、ポインティング端末10の画角をθw、オブジェクトA2のx軸の原点からの角度をθa、姿勢変化量データをΔθとする。また、オブジェクトA2'のx軸方向の位置をxb(画素)とする。このとき、xw:xa=tanθw:tanθaより、以下の式(9)が算出される。
また、xw:xb=tanθw:tan(θa+Δθ)より、以下の式(10)が算出される。
したがって、変化量算出部27は、式(9)及び式(10)から姿勢変化に伴うオブジェクトA2のx軸方向の位置の変化量xb−xaを算出することができる。同様に、投影画像S2においてx軸と直交するy軸においても上記と同様の計算を行うことにより、変化量算出部27は、姿勢変化に伴うオブジェクトA2のy軸方向の位置の変化量yb−yaを算出することができる。これにより、変化量算出部27は、投影画像S2において姿勢変化に伴うオブジェクトA2の位置の変化量を算出することができる。なお、他のオブジェクトB2〜D2についても上記と同様に位置の変化量が算出される。
投影画像生成部26は、ステップS1602で算出された位置の変化量に基づき、各オブジェクトA2〜D2の位置が、姿勢変化により変化しないように、投影画像データを生成する。そして、投影部12は、投影画像生成部26により生成された投影画像データを投影して、投影画像を表示させる(ステップS1603)。
例えば、投影画像生成部26は、上記で算出されたオブジェクトA2〜D2の位置の変化量を、姿勢変化後の投影画像データのオブジェクトA2'〜D2'の位置から減算した投影画像データを生成する。これにより、投影部12により投影される姿勢変化後の投影画像は、ポインタP2の位置は姿勢変化に応じて変化して表示される一方で、オブジェクトA2〜D2の位置は姿勢変化に関わらず変化せずに表示される。このため、ユーザは、ポインティング端末10を用いて、ポインタP2でオブジェクトA2〜D2に対してポインティング操作を行うことができる。
<第2の実施形態>
次に、第2の実施形態に係る表示システム1について説明する。第2の実施形態の説明では、第1の実施形態との相違点について説明し、第1の実施形態と実施的に同様の機能構成を有する構成要素については、同一の符号を付することにより重複した説明を省く。
[機能構成]
図18は、第2の実施形態に係る表示システムの機能構成例を示す図である。第2の実施形態に係る表示システム1の携帯端末20が有する位置決定部25Aは、第1の実施形態と異なる手法により、領域抽出部22により抽出された領域に投影して表示させるポインタ及び各オブジェクトの位置を決定する。より詳しくは、位置決定部25Aは、抽出された領域を囲むバウンディングボックスを、所定の回数、分割する。そして、分割により得られた領域の所定の位置を、ポインタ及び各オブジェクトの位置と決定する。
[位置の決定処理]
次に、図5のステップS506における位置の決定処理について、図19を参照しながら第2の実施形態を説明する。図19は、第2の実施形態に係る位置の決定処理の一例のフローチャートである。
まず、位置決定部25Aは、撮像画像において、領域抽出部22により抽出された領域R'をバウンディングボックスQ'で囲む(ステップS1901)。すなわち、位置決定部25Aは、図20(a)に示すように、領域R'をバウンディングボックスQ'で囲む。
なお、位置決定部25Aは、領域R'をバウンディングボックスQ'で囲む際に、有向バウンディングボックスを用いてもよい。有効バウンディングボックスを用いることで、位置決定部25Aは、領域R'を囲む際により適した(すなわち、領域R'に外接する点が多い)バウンディングボックスを求めることができる。
次に、位置決定部25Aは、バウンディングボックスQ'の長手方向を等分するように、バウンディングボックスQ'により囲まれる範囲を分割する(ステップS1902)。すなわち、位置決定部25Aは、図20(a)に示す「1回目の分割」を行う。これにより、バウンディングボックスQ'で囲まれる範囲を分割して、2つの四角形が得られる。
なお、バウンディングボックスQ'が正方形である場合、位置決定部25Aは、所定の1つの辺を等分するように分割すればよい。
続いて、位置決定部25Aは、バウンディングボックスQ'により囲まれる範囲の分割により得られた四角形の数が、投影して表示するポインタとオブジェクトの数以上であるかを判定する(ステップS1903)。分割して得られた四角形の数が、投影して表示するポインタとオブジェクトの数未満である場合、ステップS1904に進む。一方、分割して得られた四角形の数が、投影して表示するポインタとオブジェクトの数以上である場合、ステップS1905に進む。
ステップS1903において、分割して得られた四角形の数が、投影して表示するポインタとオブジェクトの数未満である場合、位置決定部25Aは、分割して得られた四角形を、さらに、長手方向を等分するように分割する(ステップS1904)。すなわち、位置決定部25Aは、図20(a)に示す「2回目の分割」を行う。このように、位置決定部25Aは、分割により得られた四角形の数が、投影して表示するポインタとオブジェクトの数以上となるまで、繰り返し分割を行う。
ステップS1903において、分割して得られた四角形の数が、投影して表示するポインタとオブジェクトの数以上である場合、位置決定部25Aは、分割して得られた各四角形の重心の位置を、ポインタ及びオブジェクトの位置と決定する(ステップS1905)。すなわち、位置決定部25Aは、図20(b)に示すように、分割により得られた各四角形の重心の位置を、ポインタP2及びオブジェクトA2〜D2それぞれの位置と決定する。
ここで、どの四角形の重心の位置をポインタP2の位置とするか、また、一の四角形の重心の位置をオブジェクトA2〜D2のいずれの位置とするかは、次のように決定すればよい。すなわち、例えば、領域R'の中心又は重心の位置に最も近い四角形の重心の位置をポインタP2の位置とし、このポインタP2の位置から所定の順序(例えば、時計回り)で、各四角形の重心の位置をオブジェクトA2〜D2の位置とすればよい。
なお、ステップS1903において、四角形の重心の位置が、例えば、領域R'の境界から所定の範囲内にある場合には、この重心をポインタ又はオブジェクトを配置する位置から除外してもよい。四角形の重心の位置が領域R'の境界の付近にあるような場合、この位置にオブジェクト等を配置すると、投影されるオブジェクトが領域R'の外にはみ出てしまうことがあるためである。
<第3の実施形態>
次に、第3の実施形態に係る表示システム1について説明する。第3の実施形態の説明では、第1の実施形態との相違点について説明し、第1の実施形態と実施的に同様の機能構成を有する構成要素については、同一の符号を付することにより重複した説明を省く。
[機能構成]
図21は、第3の実施形態に係る表示システムの機能構成例を示す図である。第3の実施形態に係る表示システム1の携帯端末20が有する拡縮倍率決定部24Aは、位置決定部25により投影して表示させるポインタ及び各オブジェクトの位置が決定された後に、サイズ(拡縮倍率)を決定する点が第1の実施形態と異なる。
[拡縮倍率の決定処理]
次に、図5のステップS505における拡縮倍率の決定処理について、図21を参照しながら第3の実施形態を説明する。図22は、第3の実施形態に係る拡縮倍率の決定処理の一例のフローチャートである。ここで、上述したように、本実施形態では、図5のステップS505の処理の前に、ステップS506の処理が行われる。すなわち、以降で説明する拡縮倍率の決定処理は、ポインタP2及びオブジェクトA2〜D2の位置が位置決定部25により決定された後に行われる。なお、ポインタP2及びオブジェクトA2〜D2の位置の決定は、第2の実施形態の位置決定部25Aにより行われてもよい。
以降では、オブジェクトA1の拡縮倍率saを決定する場合について、説明する。ポインタP1及びオブジェクトB1〜D1の拡縮倍率を決定する場合についても、以降のステップS2201〜ステップS2203の処理をそれぞれ行えばよい。したがって、本実施形態では、ポインタP1及びオブジェクトA1〜D1のそれぞれに対して、異なる拡縮倍率が決定される。
まず、拡縮倍率決定部24Aは、拡縮倍率saで調整せずにオブジェクトA1を投影して表示した場合に、撮像部13で撮像することにより生成される撮像画像データにおけるオブジェクトA1の外接円の半径raを算出する(ステップS2201)。このような半径raは、オブジェクトA1のオブジェクト画像データの外接円の半径に対して、上述した式(1)で用いたBp/Apの正の平方根√(Bp/Ap)を乗じることで算出することができる。なお、オブジェクトA1のオブジェクト画像データと、撮像画像データにおけるオブジェクトA1との長さの比を、例えばそれぞれのバウンディングボックスの横幅の比として算出してもよい。
次に、拡縮倍率決定部24Aは、位置決定部25により決定された位置にポインタP1及びオブジェクトA1〜D1が配置された場合における他のオブジェクト等との第2の距離を算出する。すなわち、拡縮倍率決定部24Aは、オブジェクトA1とポインタP1との第2の距離T1、オブジェクトA1と他のオブジェクトB1〜D1それぞれとの第2の距離T2〜T4、及びオブジェクトA1と領域Rの境界との第2の距離T5を算出する。そして、拡縮倍率決定部24Aは、算出されたT1〜T5のうち、最小の第2の距離を算出する(ステップS2202)。ここでは、拡縮倍率決定部24Aは、最小の第2の距離としてT5を算出したものとする。
最後に、拡縮倍率決定部24Aは、予め設定された所定の値k3を用いて、以下の式(11)により拡縮倍率saを算出する(ステップS2203)。これにより、オブジェクトA1に対する拡縮倍率saが算出される。本実施形態では、このようにポインタP1及びオブジェクトA1〜D1に対して、それぞれ拡縮倍率が算出される。なお、k3の値は、本実施形態を実現するプログラムの設計時等に予め定められる。
以上に一例を説明したように、第1の実施形態に係る表示システム1によれば、ユーザは、ポインティング操作を行うための平面を選択することができる。このとき、第1の実施形態に係る表示システム1によれば、選択された表示対象物からポインティング操作を行い易い領域を抽出して、この抽出した領域内に、ポインティング操作を行い易いようにポインタやオブジェクトのサイズや位置を調整した上で投影して表示する。これにより、第1の実施形態に係る表示システム1によれば、ユーザが所望する表示対象物から抽出された領域内においてポインティング操作を行うことができ、ユーザのポインティング操作を向上させることができる。
また、第2の実施形態に係る表示システム1によれば、抽出した領域内に投影されるポインタ及びオブジェクトの位置を、簡易な方法で決定することができる。
さらに、第3の実施形態に係る表示システム1によれば、抽出した領域内容に投影されるポインタ及びオブジェクトのサイズを、ポインタ及びオブジェクト毎に決定することができる。これにより、第3の実施形態に係る表示システム1によれば、抽出された領域内に投影させるポインタ及びオブジェクトのサイズをそれぞれ異なるようにすることができる。
以上、本発明の実施例について詳述したが、本発明は斯かる特定の実施形態に限定されるものではなく、特許請求の範囲に記載された本発明の要旨の範囲内において、種々の変形・変更が可能である。
以上の説明に関し、更に以下の項を開示する。
(付記1)
複数のアプリケーションを操作するポインタを表示対象物に投影して表示する表示部と、
前記ポインタが投影された前記表示対象物までの第1の距離を算出する算出部と、
前記第1の距離に基づいて、前記表示対象物において、前記ポインタにより操作される前記複数のアプリケーションに対応する複数のオブジェクトを表示する領域を抽出する抽出部と、
前記領域内において前記複数のオブジェクトが重畳しない位置を、前記複数のオブジェクト及び前記ポインタのそれぞれの相対位置に基づいて決定する決定部と
を有し、
前記表示部は、
前記ポインタと、前記決定された位置に前記複数のオブジェクトとを投影して表示する、表示装置。
(付記2)
前記表示対象物を撮像して画像を得る撮像部を有し、
前記抽出部は、
前記画像における前記表示対象物の画素及び前記第1の距離に基づいて、前記表示対象物において、前記領域を抽出する、付記1に記載の表示装置。
(付記3)
前記決定部は、
さらに、前記ポインタ及び前記複数のオブジェクトの拡縮倍率を、前記画像に基づいて決定する、付記2に記載の表示装置。
(付記4)
前記決定部は、
前記複数のオブジェクトの間の距離、前記ポインタと前記複数のオブジェクトとの間の距離、及び前記領域の境界と前記複数のオブジェクトと間の距離を示す第2の距離に基づいて、前記位置を決定する、付記1ないし3のいずれか1項に記載の表示装置。
(付記5)
前記決定部は、
前記第2の距離を用いた斥力モデルに基づいて、前記位置を決定する、付記4に記載の表示装置。
(付記6)
複数のアプリケーションを操作するポインタを表示対象物に投影して表示し、
前記ポインタが投影された前記表示対象物までの第1の距離を算出し、
前記第1の距離に基づいて、前記表示対象物において、前記ポインタにより操作される前記複数のアプリケーションに対応する複数のオブジェクトを表示する領域を抽出し、
前記領域内において前記複数のオブジェクトが重畳しない位置を、前記複数のオブジェクト及び前記ポインタのそれぞれの相対位置に基づいて決定する
処理を表示装置に実行させ、
前記表示する処理は、
前記ポインタと、前記決定された位置に前記複数のオブジェクトとを投影して表示する、プログラム。
(付記7)
前記表示対象物を撮像して画像を得る処理を前記表示装置に実行させ、
前記抽出する処理は、
前記画像における前記表示対象物の画素及び前記第1の距離に基づいて、前記表示対象物において、前記領域を抽出する、付記6に記載のプログラム。
(付記8)
前記決定する処理は、
さらに、前記ポインタ及び前記複数のオブジェクトの拡縮倍率を、前記画像に基づいて決定する、付記7に記載のプログラム。
(付記9)
前記決定する処理は、
前記複数のオブジェクトの間の距離、前記ポインタと前記複数のオブジェクトとの間の距離、及び前記領域の境界と前記複数のオブジェクトと間の距離を示す第2の距離に基づいて、前記位置を決定する、付記6ないし8のいずれか1項に記載のプログラム。
(付記10)
前記決定する処理は、
前記第2の距離を用いた斥力モデルに基づいて、前記位置を決定する、付記9に記載のプログラム。
(付記11)
複数のアプリケーションを操作するポインタを表示対象物に投影して表示し、
前記ポインタが投影された前記表示対象物までの第1の距離を算出し、
前記第1の距離に基づいて、前記表示対象物において、前記ポインタにより操作される前記複数のアプリケーションに対応する複数のオブジェクトを表示する領域を抽出し、
前記領域内において前記複数のオブジェクトが重畳しない位置を、前記複数のオブジェクト及び前記ポインタのそれぞれの相対位置に基づいて決定する
処理を表示装置が実行し、
前記表示する処理は、
前記ポインタと、前記決定された位置に前記複数のオブジェクトとを投影して表示する、表示方法。
(付記12)
前記表示対象物を撮像して画像を得る処理を表示装置が実行し、
前記抽出する処理は、
前記画像における前記表示対象物の画素及び前記第1の距離に基づいて、前記表示対象物において、前記領域を抽出する、付記11に記載の表示方法。
(付記13)
前記決定する処理は、
さらに、前記ポインタ及び前記複数のオブジェクトの拡縮倍率を、前記画像に基づいて決定する、付記12に記載の表示方法。
(付記14)
前記決定する処理は、
前記複数のオブジェクトの間の距離、前記ポインタと前記複数のオブジェクトとの間の距離、及び前記領域の境界と前記複数のオブジェクトと間の距離を示す第2の距離に基づいて、前記位置を決定する、付記11ないし13のいずれか1項に記載の表示方法。
(付記15)
前記決定する処理は、
前記第2の距離を用いた斥力モデルに基づいて、前記位置を決定する、付記14に記載の表示方法。