投影システム、投影装置、投影方法、および制御プログラム
【課題】ディスプレイの面積を仮想的に拡大させ、作業効率を向上させることのできる投影システムを提供する。
【解決手段】投影システム1は、ヘッドマウンテンディスプレイ(HMD)である投影装置300と、ディスプレイ500と、HMD300に接続されたカメラ400と、HMD300での投影とディスプレイ500での表示とを制御するための制御装置であるCP100,200とを備える。制御装置であるCP100,200は、画面データを生成してHMD300に対して送信する処理と、カメラ400での撮影画像からディスプレイ500を検出し、その位置に応じてディスプレイ500の周囲にHMD300からの投影位置の候補を特定して、それぞれの優先順位を設定し、その優先順位に応じて投影位置を決定してHMD300に画面を投影させる処理とを実行する。
【解決手段】投影システム1は、ヘッドマウンテンディスプレイ(HMD)である投影装置300と、ディスプレイ500と、HMD300に接続されたカメラ400と、HMD300での投影とディスプレイ500での表示とを制御するための制御装置であるCP100,200とを備える。制御装置であるCP100,200は、画面データを生成してHMD300に対して送信する処理と、カメラ400での撮影画像からディスプレイ500を検出し、その位置に応じてディスプレイ500の周囲にHMD300からの投影位置の候補を特定して、それぞれの優先順位を設定し、その優先順位に応じて投影位置を決定してHMD300に画面を投影させる処理とを実行する。
【発明の詳細な説明】
【技術分野】
【0001】
この発明は投影システム、投影装置、投影方法、および制御プログラムに関し、特に、目標位置に画像を投影する投影システム、投影装置、投影方法、および制御プログラムに関する。
【背景技術】
【0002】
昨今のオフィス環境などにおいては、机上にディスプレイを設置し、当該ディスプレイに画像を表示して作業を行なうことが多くなされている。この場合、ディスプレイの面積が広いほど表示面積が増加するために作業効率が向上する。
【0003】
しかしながら、オフィス環境などのおいては各自の作業スペースに制限があるため、ディスプレイの面積にも制限が生じる。
【0004】
また一方で、必ずしもディスプレイ全面を用いて作業するとは限られないため、ディスプレイの面積を増加させても作業効率には直接的に結びつかない場合もある。
【0005】
このような問題に対して、下記の特許文献1、2は画像を投影する技術や、その投影方法などを開示している。
【先行技術文献】
【特許文献】
【0006】
【特許文献1】特開2009−278234号公報
【特許文献2】特開2010−151997号公報
【発明の概要】
【発明が解決しようとする課題】
【0007】
しかしながら、これらの技術を用いても、作業対象であるディスプレイを必要な時に面積を拡大して用いることは実現できず、ディスプレイを用いた作業の効率の向上に寄与するものではない。
【0008】
本発明はこのような問題に鑑みてなされたものであって、ディスプレイの面積を仮想的に拡大させ、作業効率を向上させることのできる投影システム、投影装置、投影方法、および制御プログラムを提供することを目的としている。
【課題を解決するための手段】
【0009】
上記目的を達成するために、本発明のある局面に従うと、投影システムはディスプレイから規定される位置に画面を投影するための投影システムであって、投影装置と、ディスプレイと、投影装置から所定位置に設置され、投影装置に接続されたカメラと、投影装置に接続されたセンサと、投影装置での投影とディスプレイでの表示とを制御するための制御装置とを備える。制御装置は、投影装置の投影する画面データを生成して投影装置に対して送信する処理と、カメラでの撮影画像からディスプレイを検出し、その位置に応じてディスプレイの周囲に投影装置からの投影位置の候補を特定する処理と、投影位置の候補に対してセンサでの検出結果を用いて優先順位を設定する処理と、優先順位に応じて投影位置の候補の中から投影装置からの投影位置を決定し、投影装置に投影位置に画面データに基づく画面を投影させる処理とを実行する。
【0010】
好ましくは、制御装置は、撮影画像におけるディスプレイの位置の偏りに応じて、ディスプレイの周囲に投影装置からの投影位置の候補を特定する。
【0011】
好ましくは、センサはユーザの視線を検出するためのセンサであって、制御装置は、撮影画像におけるユーザの視線の位置に応じて投影位置の候補に対して優先順位を設定する。
【0012】
好ましくは、投影システムは制御装置に対して情報を入力するための入力装置をさらに備え、制御装置はカメラをセンサとして用い、入力装置からの入力を受け付けている場合に、撮影画像から検出された入力装置の位置に応じて投影位置の候補に対して優先順位を設定する。
【0013】
好ましくは、制御装置はカメラを上記センサとして用い、撮影画像から検出されたディスプレイとは異なるディスプレイの位置に応じて投影位置の候補に対して優先順位を設定する。
【0014】
好ましくは、制御装置はカメラを上記センサとして用い、撮影画像から検出された人の顔の画像の位置に応じて投影位置の候補に対して優先順位を設定する。
【0015】
好ましくは、制御装置はカメラを上記センサとして用い、撮影画像から検出された文字の位置に応じて投影位置の候補に対して優先順位を設定する。
【0016】
好ましくは、制御装置はカメラを上記センサとして用い、撮影画像から検出されたディスプレイ周囲の画像のコントラスト比を算出し、コントラスト比がしきい値以上である領域を含む投影位置の候補ほど低い優先順位を設定する。
【0017】
好ましくは、投影装置はユーザの頭部に装着可能であり、センサは加速度センサであって、制御装置は、加速度センサからのセンサ信号に基づき、投影装置から投影位置の候補へ向かう方向の水平方向からの傾きが小さくなる投影位置の候補ほど高い優先順位を設定する。
【0018】
好ましくは、センサはディスプレイ周囲のオブジェクトまでの距離を検出するためのセンサであって、制御装置は、投影位置の候補のうち、投影装置からの距離がしきい値より小さいオブジェクトを含む投影位置の候補ほど低い優先順位を設定する。
【0019】
本発明の他の局面に従うと、投影装置は所定位置に画面を投影するための投影装置であって、当該投影装置から所定位置に設置されたカメラから撮影画像の入力を受け付けるための第1の入力手段と、当該投影装置に接続されたセンサから検出結果の入力を受け付けるための第2の入力手段と、画面データに基づく画面を所定位置に投影させるための制御手段とを備える。制御手段は、撮影画像からディスプレイを検出し、その位置に応じてディスプレイの周囲に投影位置の候補を特定する処理と、投影位置の候補に対してセンサでの検出結果を用いて優先順位を設定する処理と、優先順位に応じて投影位置の候補の中から投影位置を決定し、投影位置に画面データに基づく画面を投影させる処理とを実行する。
【0020】
本発明のさらに他の局面に従うと、投影方法はディスプレイから規定される位置に投影装置によって画面を投影させるための投影方法であって、投影装置の投影する画面データを生成するステップと、投影装置から所定位置に設置され、投影装置に接続されたカメラから、撮影画像の入力を受け付けるステップと、撮影画像からディスプレイを検出し、その位置に応じてディスプレイの周囲に投影装置からの投影位置の候補を特定するステップと、投影位置の候補に対して投影装置に接続されたセンサでの検出結果を用いて優先順位を設定するステップと、優先順位に応じて投影位置の候補の中から投影装置からの投影位置を決定し、投影装置に投影位置に画面データに基づく画面を投影させるステップとを備える。
【0021】
本発明のさらに他の局面に従うと、制御プログラムはディスプレイから規定される位置に投影装置によって画面を投影させる制御をコンピュータに実行させるためのプログラムあって、投影装置の投影する画面データを生成するステップと、投影装置から所定位置に設置され、投影装置に接続されたカメラから、撮影画像の入力を受け付けるステップと、撮影画像からディスプレイを検出し、その位置に応じてディスプレイの周囲に投影装置からの投影位置の候補を特定するステップと、投影位置の候補に対して投影装置に接続されたセンサでの検出結果を用いて優先順位を設定するステップと、優先順位に応じて投影位置の候補の中から投影装置からの投影位置を決定し、投影装置に投影位置に画面データに基づく画面を投影させるステップとをコンピュータに実行させる。
【発明の効果】
【0022】
この発明によると、ディスプレイの面積を適切な位置に仮想的に拡大させ、作業効率を向上させることができる。
【図面の簡単な説明】
【0023】
【図1】本実施の形態にかかる投影システムの構成の具体例を示す図である。
【図2】投影システムの構成の他の具体例を示す図である。
【図3】投影システムの構成の他の具体例を示す図である。
【図4】投影システムに含まれる第1のPCの装置構成の具体例を示すブロック図である。
【図5】投影システムに含まれる第2のPCの装置構成の具体例を示すブロック図である。
【図6】投影システムに含まれるHMDの装置を構成の具体例を示すブロック図である。
【図7】投影システムに含まれるカメラの装置構成の具体例を示すブロック図である。
【図8】投影システムでの動作の概要を説明するための図である。
【図9】第1のPCの機能構成の具体例を示すブロック図である。
【図10】第2のPCの機能構成の具体例を示すブロック図である。
【図11】第1のPCでの投影動作の流れの具体例を示すフローチャートである。
【図12】カメラ画像からマーカ画像を検出して、その位置に基づいて画面を投影させる動作の具体的な流れを表わすフローチャートである。
【図13】マーカ画像の具体例を示す図である。
【図14】マーカ画像の検出例とそれに基づく画像の投影の具体例とを表わす図である。
【図15】第1の実施例での、第1カメラ画像の具体例を示す図である。
【図16】HMDでの画面の表示候補位置を表わす図である。
【図17】第1の実施例での、第1カメラ画像の他の具体例を示す図である。
【図18】表示候補位置の順位を特定する動作および表示位置を決定する動作の具体的な流れを表わしたフローチャートである。
【図19】第1カメラ画像において検出されたユーザの視認量を表わした図である。
【図20】第1の実施例での、決定されたHMDでの画面の表示位置を表わした図である。
【図21】第3の実施例での、第1カメラ画像の具体例を示す図である。
【図22】第3の実施例での、決定されたHMDでの画面の表示位置を表わした図である。
【図23】第4の実施例での、第1カメラ画像の具体例を示す図である。
【図24】第4の実施例での、決定されたHMDでの画面の表示位置を表わした図である。
【図25】第6の実施例での、第1カメラ画像の具体例を示す図である。
【図26】第6の実施例での、決定されたHMDでの画面の表示位置を表わした図である。
【図27】第7の実施例での、第1カメラ画像と、HMDを装着したユーザの頭部の傾きとディスプレイにおける表示画面との間の関係との第1の具体例を示す図である。
【図28】第7の実施例での、第1カメラ画像と、HMDを装着したユーザの頭部の傾きとディスプレイにおける表示画面との間の関係との第2の具体例を示す図である。
【図29】第7の実施例での、第1カメラ画像と、HMDを装着したユーザの頭部の傾きとディスプレイにおける表示画面との間の関係との第3の具体例を示す図である。
【図30】第8の実施例での、第1カメラ画像の具体例を示す図である。
【図31】第8の実施例での、決定されたHMDでの画面の表示位置を表わした図である。
【発明を実施するための形態】
【0024】
以下に、図面を参照しつつ、本発明の実施の形態について説明する。以下の説明では、同一の部品および構成要素には同一の符号を付してある。それらの名称および機能も同じである。
【0025】
<システム構成>
図1は、本実施の形態にかかる投影システム1の構成の具体例を示す図である。
【0026】
図1を参照して、本実施の形態にかかる投影システム1は、ディスプレイ500と、投影装置としてのヘッドマウンテンディスプレイ(以下、HMD)300と、ディスプレイ500の表示およびHMD300における画像の投影を制御するための制御装置としてのパーソナルコンピュータ(以下、PC)200と、HMD300における画像の投影を制御するための制御装置としてのPC100とを含む。
【0027】
PC100はHMD300に接続されて、HMD300に対して画像データと共に制御信号を送信して、HMD300での画像の投影を制御する。
【0028】
HMD300には、センサとしてのカメラ400が接続されており、カメラ400からの撮影画像がPC100に入力される。PC100は当該撮影画像を用いて、HMD300での画像の投影の制御を実行する。
【0029】
PC200はディスプレイ500に接続されて、画像データのうちのディスプレイ500に表示させるデータから表示データを生成し、制御信号と共にディスプレイ500に送信することで、ディスプレイ500での画面表示を実行させる。
【0030】
また、PC200はPC100に接続されて、上記画像データのうちのHMD300で投影させるデータを制御信号と共にPC100に送信することで、HMD300での画像の投影を実行させる。PC100は当該制御信号に従って、当該画像データからHMD300で投影させるための投影データを生成し、投影させるための処理を実行する。
【0031】
PC100とHMD300およびカメラ400との間の通信、PC200とディスプレイ500との間の通信、およびPC100とPC200との間の通信は図1に示されるように専用回線などを介した有線の通信であってもよいし、無線LANや赤外線通信などの無線通信であってもよい。
【0032】
なお、図1に表わされた投影システム1の形態は一例であって、この形態に限定されるものではない。たとえば、図2、図3に他の構成の投影システム1A,1Bの具体例を示す。
【0033】
すなわち、図2に示されるように、上記PC100とPC200とが一台のPC200Aで構成されてもよい。または、図3に示されるように、上記PC100とPC200とが一台のPC200Bで構成され、さらに、当該PC200Bとディスプレイ500およびHMD300との間の通信がインターネットを介した通信であってもよい。すなわち、PC200Bは後述する処理を実行して必要な情報をディスプレイ500およびHMD300に対してインターネットを介して送信する。このような形態は、クラウドとも称される。
【0034】
<装置構成>
図4は、PC100の装置構成の具体例を示すブロック図である。図4に示されたPC100の装置構成は、一般的なパーソナルコンピュータの装置構成である。すなわち、図4を参照して、PC100は、装置全体を制御するためのCPU10と、CPU10で実行されるプログラムなどを記憶するためのメモリ11と、HMD300やPC200などの他の装置と通信するための通信インタフェース(I/F)12とを含む。
【0035】
図5は、PC200の装置構成の具体例を示すブロック図である。図5に示されたPC200の装置構成もまた、一般的なパーソナルコンピュータの装置構成であり、図4に示された構成と概ね同じ構成である。すなわち、図5を参照して、PC200もまた、装置全体を制御するためのCPU20と、CPU20で実行されるプログラムなどを記憶するためのメモリ21と、PC100やディスプレイ500などの他の装置と通信するための通信I/F22とを含む。PC200は、さらに、マウスやキーボードなどの入力装置23を備える。
【0036】
図6は、HMD300の装置を構成の具体例を示すブロック図である。図6を参照して、HMD300は、装置全体を制御するためのCPU30と、CPU30で実行されるプログラムなどを記憶するためのメモリ31と、PC100やカメラ400などの他の装置と通信するための通信I/F32と、図示しないディスプレイを含んで、画像データに基づく画面を当該ディスプレイに投影するための投影部33を含む。
【0037】
本実施の形態において、投影部33は透過性を有するディスプレイを含み、当該ディスプレイに対して画像を投影する。投影部33に含まれるディスプレイは図示しない装着部によって、投影方向と視線方向と略一致させるようにユーザの頭部等に装着可能である。
【0038】
そのため、HMD300を装着したユーザは、当該ディスプレイを介して背景を視認しつつ当該背景に重ねて投影された画面を視認することができる。
【0039】
図7は、カメラ400の装置構成の具体例を示すブロック図である。図7を参照して、カメラ400は、装置全体を制御するためのCPU40と、CPU40で実行されるプログラムなどを記憶するためのメモリ41と、HMD300などの他の装置と通信するための通信I/F42と、第1撮影部43および第2撮影部44とを含む。
【0040】
第1撮影部43は、その撮影方向をHMD300の投影部33での投影方向に略一致させた位置に設置される。そのため、第1撮影部43は、HMD300の図示しないディスプレイを介してユーザが視認することのできる、当該HMD300によって画面が投影された先の背景を撮影することになる。以降の説明において、第1撮影部43が撮影することによって得られた画像を第1カメラ画像とも称する。
【0041】
第2撮影部44は、その撮影方向をHMD300の投影部33での投影方向と反対向きとさせた位置に設置される。そのため、第2撮影部44は、HMD300を装着したユーザの目の付近を撮影することになる。以降の説明において、第2撮影部44が撮影することによって得られた画像を第2カメラ画像とも称する。
【0042】
<動作概要>
図8は、投影システム1での動作の概要を説明するための図である。
【0043】
図8を参照して、投影システム1では、ディスプレイ500に表示画面501が表示されると共に、ディスプレイ500の周囲の予め設定された位置にHMD300から画面が投影されることで、画面601,602が表示される。
【0044】
これにより、HMD300を装着したユーザは、ディスプレイ500の面積分の表示画面501に加えて、当該ディスプレイ500から所定位置に拡張された表示画面601,602も視認することができる。
【0045】
<機能構成>
図9は、上記動作を行なうためのPC100の機能構成の具体例を示すブロック図である。図9に示される各機能は、PC100のCPU10がメモリ11に記憶されるプログラムを読み込んで実行することで、主にCPU10上に形成されるものであるが、少なくとも一部が電気回路等のハードウェア構成によって実現されてもよい。
【0046】
図9を参照して、CPU10は、通信I/F12を介してデータを受信するためのデータ受信部101と、受信したデータを解析するためのデータ解析部102と、データ管理を行なうためのPC・HMD用データマネージメント部103と、カメラ400の第1撮影部43を制御するためのカメラ管理部(Outside)105と、第1カメラ画像からディスプレイ500を検出するためのモニタ検出部104と、カメラ400の第2撮影部44を制御するためのカメラ管理部(Inside)107と、第2カメラ画像から視線を検出するための視線検出部106と、HMD300での投影を制御するためのディスプレイ管理部108と、その他処理を行なうためのその他処理部109と、送信用のデータを特定のデータ形式に整形するためのデータ作成部110と、通信I/F12を介してデータを送信するためのデータ送信部111とを含む。
【0047】
データ受信部101は、上述の通信によって送信されるデータのうち、必要なデータ(パケット)を受信する。データ解析部102は受信されたデータの中から必要なデータを抽出し、当該PC100での処理に必要なデータであるか否かを解析する。そして、必要なデータである場合、解析結果に従って当該データがPC・HMD用データマネージメント部103またはその他処理部109に渡される。すなわち、データ受信部101がPC200からHMD300で投影される画面データを受信すると、データ解析部102での解析結果に従って当該データがPC・HMD用データマネージメント部103に渡される。
【0048】
モニタ検出部104は予めディスプレイ500の形状としてたとえば矩形形状を記憶している。そして、カメラ管理部105から第1カメラ画像を受け取り、当該画像と記憶しているディスプレイ500の形状とをマッチングすることで、第1カメラ画像の中からディスプレイ500を検出する。また、第1カメラ画像中のディスプレイ500の形状の変化から、カメラ400からディスプレイ500までの距離および傾き具合を検出する。そして、モニタ検出部104は、これらの検出結果をPC・HMD用データマネージメント部103に渡す。
【0049】
視線検出部106は、カメラ管理部107から第2カメラ画像を受け取り、その中からHMD300を装着しているユーザの目を検出して、その視線方向を検出する。そして、その検出結果をPC・HMD用データマネージメント部103に渡す。
【0050】
PC・HMD用データマネージメント部103は、モニタ検出部104からの検出結果に基づいて表示位置を決定する。また、このときに、視線検出部106での検出結果を用いて表示位置を決定してもよい。
【0051】
この決定方法については、以降に具体例を挙げて説明する。そして、PC・HMD用データマネージメント部103は、画面データをディスプレイ管理部108に渡して、HMD300での画面を当該位置に表示させるように画面の投影を実行させる。
【0052】
図10は、上記動作を行なうためのPC200の機能構成の具体例を示すブロック図である。図10に示される各機能は、PC200のCPU20がメモリ21に記憶されるプログラムを読み込んで実行することで、主にCPU20上に形成されるものであるが、少なくとも一部が電気回路等のハードウェア構成によって実現されてもよい。PC200は図10の各機能を備えて、サーバとして機能する。
【0053】
図10を参照して、CPU20は、通信I/F22を介してデータを受信するためのデータ受信部201と、受信したデータを解析するためのデータ解析部202と、PC100から送信されるデータを管理するための入力データ管理部203と、ディスプレイ500での表示を管理するためのモニタ管理部204と、HMD300で投影させる画面データを管理するためのVAD描画管理部205と、ユーザ管理などのその他のPCに関する管理を行なうためのその他管理部207と、ディスプレイ500に関する情報などの各種データを保持するためのデータ保持部206と、送信用のデータを特定のデータ形式に整形するためのデータ作成部208と、通信I/F22を介してデータを送信するためのデータ送信部209とを含む。
【0054】
データ受信部201は、上述の通信によって送信されるデータのうち、必要なデータ(パケット)を受信する。データ解析部202は受信されたデータの中から必要なデータを抽出し、当該PC200での処理に必要なデータであるか否かを解析する。そして、必要なデータである場合、解析結果に従って当該データが入力データ管理部203、モニタ管理部204、VAD描画管理部205、またはその他管理部207に渡される。
【0055】
モニタ管理部204およびVAD描画管理部205は、それぞれ、ディスプレイ500に表示させる画面の画面データおよびHMD300で投影させる画面データを生成する。そして、モニタ管理部204は当該画面データをディスプレイ500に送信し、当該画面データに基づく画面をディスプレイ500に表示させるための制御を実行する。また、VAD描画管理部205は、当該画面データをPC100に対して送信する。
【0056】
HMD300で投影させる画面データの一例として、入力装置23からの操作信号に従う画像データから生成されたディスプレイ500に表示させる画面データに対応した画面データが挙げられる。このような画面データをHMD300に投影させることで、ディスプレイ500の表示画面501がマークの表示位置の方向に拡張されて、画像データがより広い範囲で表示されることになる。もちろん、HMD300で投影させる画面データはこの例に限定されず、以降の具体例に示されるような、他の画面データであってもよい。
【0057】
さらに、入力データ管理部203がカメラ400からマークまでの距離および傾き具合の検出結果をPC100から取得し、VAD描画管理部205において、これら検出結果に基づいて生成した画面データを補正するようにしてもよい。このような補正を行なうことで、HMD300を装着したユーザがディスプレイ500を視認する角度、距離に応じて、ディスプレイ500での表示画面501と同じような見え方となるようにHMD300から画面が投影されることになり、視認性が高まる。
【0058】
<動作フロー>
図11は、PC100での、第1カメラ画像に基づいた投影動作の流れの具体例を示すフローチャートである。図11のフローチャートに示される動作は、PC100のCPU10がメモリ11に記憶されるプログラムを読み出して図9の各機能を発揮させることで実現される。
【0059】
図11を参照して、CPU10は、第1カメラ画像が入力されると(ステップS101でYES)、ステップS103で当該画像を解析し、予め記憶しているディスプレイ500の形状とマッチングすることで当該画像中のディスプレイ500をマーカ画像として検出する。
【0060】
第1カメラ画像からディスプレイ500が検出されると(ステップS105でYES)、ステップS107でCPU10は、予め記憶されているディスプレイ500との位置関係に対して規定されているHMD300での画面を表示する位置の候補を特定し、さらにその順位を特定する。ここでの順位の特定方法については、後に具体例を挙げて説明する。
【0061】
そして、ステップS109で当該優先順位に応じてHMD300での画面を表示する位置を決定し、ステップS111で画面データと共に制御信号をHMD300に対して出力する。ここでは、一例として、表示する画面の数に応じて優先順位の高い順から表示位置として決定してもよいし、予め表示箇所が規定されている場合には、優先順位の高い順から当該表示箇所の数までを、表示位置として決定してもよい。HMD300ではこの制御信号に従って投影動作が実行されることで、決定された位置にHMD300での画面が表示されることになる。
【0062】
なお、上記ステップS103〜S105、およびステップS111の動作での、第1カメラ画像からマーカ画像を検出して、その位置に基づいて画面を投影させる動作の具体例について、図12のフローチャートを用いてさらに詳細に説明する。ここでは、具体例として、拡張現実感の研究のためにワシントン大学HIT研究室で開発されたソフトウェアライブラリとしてのプログラムを用いて実現される動作について説明する。用いられるプログラムはこのプログラムに限定されない。
【0063】
図12を参照して、まず、処理が開始するとステップS11でCPU10は初期化処理を実行する。ここでの初期化処理の一つとして、メモリ11の所定領域に記憶されている撮影画像に対して設定した座標系を初期化する処理が含まれる。
【0064】
ステップS12でCPU10は、カメラ400からの第1カメラ画像の入力を受け付けて、撮影画像を取得する。CPU10は、撮影画像(1フレーム)が入力されるごとに、ステップS13でCPU10は、入力された第1カメラ画像をメモリ11の描画用の領域に描画する。そして、ステップS14でCPU10は、そのメモリ11に展開された画像の中から座標系の基準となる位置を特定するディスプレイ500の画像をマーカとして検出する。CPU10は、予めマーカとするディスプレイ500の画像、および、そのマーカと撮影空間に設定される3次元座標系における座標との関係を記憶している。
【0065】
説明のため、CPU10はマーカの画像として図13の画像を記憶しているものとする。そして、一例として、撮影空間のこのマーカの画像に表わされた板状のコンテンツのある位置を、3次元座標系の原点とし、このコンテンツに対して3方向に、x軸、y軸、z軸を設定する、との3次元座標系との対応関係を記憶しているものとする。
【0066】
この場合、ステップS14でCPU10は、メモリ11に展開した第1カメラ画像から図13の画像を検索する。そして、その画像またはその画像に近似した画像を検出すると、撮影画像内にマーカが存在すると認識し、ステップS19でCPU10は、その信頼度を比較する。ステップS15での処理の一例として、CPU10は、予め記憶されているマーカの画像と検出された画像とを比較し、その相関度合いが基準として設定されているものを満たしているか否かで信頼度を比較する。
【0067】
その後、ステップS16でCPU10は、第1カメラ画像から検出されたマーカの画像の位置や、検出されたマーカの画像と記憶している画像との比較に基づいて、この撮影画像を撮影した時のカメラ400の位置や方向を計算する。そして、ステップS17で、計算されたカメラ400の位置や方向に基づいて、撮影画像に対して、予めマーカとした画像の位置を原点とし、マーカとした画像の傾きに応じてx軸、y軸、z軸を設定する。
【0068】
さらに、PC100から得られた画面データの表示位置の候補として、3次元座標で記憶されている座標を第1カメラ画像に設定された3次元座標系において特定する。
【0069】
たとえば、図13の画像がマーカの画像として記憶されているところ、撮影画像中に図14(A)の画像がマーカとして検出された場合、カメラ400の撮影位置がマーカで表わされたコンテンツの正面よりも向かって右側上方、撮影方向が該コンテンツを見下ろす角度と、カメラ400の位置や方向が計算される。CPU10は、予め該マーカとの関係で規定されている3次元の座標系をその撮影位置、撮影方向に基づいて第1カメラ画像に対して設定する。
【0070】
さらに、図13の画像に示されたマーカとするコンテンツのある原点を表示位置とする、立方体を表わす表示データがある場合、CPU10は、その形状をカメラ400から該コンテンツまでの距離や方向などに基づいて変形して、規定された表示位置に投影させる。これにより、図14(B)に示されるように、原点とするマーカの画像の近傍にマーカで表わされたコンテンツと同じ位置、方向から見たように変形された形状で立方体が投影される。
【0071】
ステップS18でCPU10は、PC200から送信された画面データを、以上の処理で得られた位置に画面データに基づく画面を投影させるための制御信号と共にHMD300に送信する。
【0072】
CPU10は、表示の終了を要求する信号が入力されるまで、第1カメラ画像が入力されるたびに以上の処理を繰り返す。そして、表示の終了を要求する信号の入力を受け付けると(ステップS19でYES)、一連の動作を終了する。
【0073】
以降、具体的な実施例を挙げて、上記ステップS107でのHMD300での画面を表示する位置の候補およびその順位を特定する動作について説明する。
【0074】
<実施例1>
第1の実施例でPC100は、ディスプレイ500の位置およびその周辺のオブジェクトを検出し、その検出結果に基づいてHMD300での画面の表示位置の候補を特定した上でその順位を決定する。
【0075】
図15は、第1の実施例での、第1カメラ画像の具体例を示す図である。このような撮影画像の入力を受け付けると、PC100は当該撮影画像とディスプレイ500の画像とをマッチングすることでディスプレイ500を特定する。そして、ディスプレイ500に表示されている表示画面501の周囲に、HMD300での画面の表示候補位置を特定する。
【0076】
図16は、予めディスプレイ500との位置関係によって規定されているHMD300での画面の表示候補位置を表わす図である。図16において、表示位置VAD−A、VAD−B、VAD−C、およびVAD−Dは、それぞれ、ディスプレイ500に表示されている表示画面501の右隣、下隣、左隣、および上隣に規定されるHMD300での画面の表示候補位置を表わしている。なお、以降の説明でも表示位置VAD−A、VAD−B、VAD−C、およびVAD−Dの表示画面501に対する位置関係は同様のものとする。
【0077】
PC100は、上記ステップS107で、図16に示された規定に基づいて、HMD300での画面の表示候補位置を、第1カメラ画像におけるディスプレイ500の位置に応じて特定する。たとえば図17に示されたように、第1カメラ画像においてディスプレイ500が中央より右に偏った位置にあり、その表示画面501の右側に所定面積が存在しない場合には、PC100は第1段階において、表示位置VAD−Aは表示候補位置と特定せず、表示画面501の下隣、左隣、および上隣に該当する表示位置VAD−B、VAD−C、およびVAD−Dを表示候補位置と特定する。
【0078】
このようにして表示候補位置が特定された後、PC100は、予め規定された順に応じてそれぞれの表示候補位置に対して順位を付与してもよい。すなわち、一例として、表示画面501の左隣、右隣、上隣および、下隣の順に順位が規定されている場合であって、表示位置VAD−A、VAD−B、VAD−C、およびVAD−Dが特定された場合には、PC100はこの規定に従って、表示位置VAD−C、VAD−A、VAD−B、およびVAD−Dの順に順位を付与する。さらに、この順は、ユーザからの所定の操作によって登録、更新可能であってよい。
【0079】
さらに、PC100は、HMD300を装着したユーザの視線を利用して順位を特定してもよい。
【0080】
図18は、上記ステップS107での表示候補位置の順位を特定する動作および表示位置を決定する動作の具体的な流れを表わしたフローチャートである。
【0081】
図18を参照して、PC100のCPU10はカメラ400からHMD300を装着したユーザを撮影した第2カメラ画像の入力を受け付ける(ステップS201)。そして、CPU10は第2カメラ画像を解析してユーザの目の画像を検出し(ステップS203)、さらにその視線方向を特定する(ステップS205)。ここでの視線の特定方法は特定の方法には限定されず、様々な方法を採用することができる。一例として特開2001−61785号公報において開示されている方法を採用してもよい。
【0082】
ステップS207でCPU10は、特定された視線方向と第1カメラ画像とを比較することで第1カメラ画像における当該ユーザの視線の向かう位置を特定する。
【0083】
CPU10は、この処理を所定期間行なうことで、ステップS209で、上記動作によって特定された表示候補位置のそれぞれで表わされる表示領域へ視線が向けられた時間を特定する。この時間のことを、説明上、「視認量」と称する。そして、ステップS211で、それぞれの領域の視認量に応じて、特定された表示候補のそれぞれに対する順位を特定する。
【0084】
ステップS213でCPU10は、特定された順位に従って、表示位置を決定する。すなわち、予め表示する画面の数を記憶しておき、特定された順位の高い表示候補位置から順に、表示する画面の数までの表示候補位置を表示位置として決定する。
【0085】
ここで、図19に示されたように、表示画面501の下側に置かれたキーボードをユーザが視認することによって表示画面501の下隣の領域の視認量と、表示画面501の左側に置かれた本をユーザが視認することによって表示画面501の左隣の領域の視認量とが、予め規定されたしきい値よりも大きく検出されたとする。この場合、PC100は、これら領域に特定された表示位置VAD−BおよびVAD−Cの順位が他の表示位置の順位より低く設定する。
【0086】
表示する画面の数が2画面と規定されている場合、図20に示されるように、上記ステップS213では、順位の低い表示位置VAD−BおよびVAD−Cは表示位置とは決定されず、これよりも順位の高い2つの表示位置VAD−AおよびVAD−Dが表示位置として決定されることになる。
【0087】
これにより、ディスプレイ500の表示画面501の周囲であって、ユーザが何か視認する対象に対して視線を向けている方向にはHMD300からの画面が表示されず、その他の方向にHMD300からの画面が表示されることになる。そのため、たとえば本を視認しながらや、キーボードを操作しながら表示画面を確認する、といったユーザの操作を妨げることなく表示画面501を仮想的に拡張することが可能となる。
【0088】
なお、上の順位の決定方法は一例であって、他の考え方に基づくものであってもよい。すなわち、視認量がしきい値よりも大きい表示候補位置の順位ほど高く特定するようにしてもよい。この場合、たとえばユーザが本を視認しながらや、キーボードを操作しながら表示画面を確認する場合に、視線を他の位置に変えることなくその操作をしながらHMD300からの画面を視認することが可能となり、ユーザによっては操作性が高まる場合もある。
【0089】
<実施例2>
第2の実施例でPC100は、上述のユーザの視線の替りに、図示しないキーボードからの入力を利用して表示候補位置の順位を特定してもよい。
【0090】
すなわち、ディスプレイ500の下側に図示しないキーボードが設置されており、PC100が当該キーボードからの入力を所定期間受け付けている場合には、ユーザがキーボード操作を行なっているものとして、表示画面501の周囲に表示候補位置として特定された表示位置VAD−A、VAD−B、VAD−C、およびVAD−Dのうち、表示画面501の下隣の表示位置VAD−Bを他の表示位置VAD−A、VAD−C、およびVAD−Dよりも順位を低く特定する。
【0091】
これにより、ディスプレイ500の表示画面501の周囲であって、ユーザが図示しないキーボードの操作を行なっている場合には当該キーボードの方向にはHMD300からの画面が表示されず、その他の方向にHMD300からの画面が表示されることになる。そのため、ユーザの操作を妨げることなく表示画面501を仮想的に拡張することが可能となる。
【0092】
なお、上の順位の決定方法は一例であって、他の考え方に基づくものであってもよい。すなわち、キーボードの入力を受け付けている場合には、当該キーボードの位置している表示候補位置の順位を高く特定するようにしてもよい。この場合、ユーザは視線をキーボードから他の位置に変えることなく入力操作をしながらHMD300からの画面を視認することが可能となり、ユーザによっては操作性が高まる場合もある。
【0093】
<実施例3>
第3の実施例でPC100は、上述のように表示画面501の周囲に表示候補位置を特定した後、第1カメラ画像にディスプレイ500以外に含まれるディスプレイの位置に応じて順位を特定して表示位置を決定する。
【0094】
図21は、第3の実施例での、第1カメラ画像の具体例を示す図である。PC100は、たとえば矩形形状をディスプレイ形状として記憶しており、第1カメラ画像から複数の矩形形状が検出されると、より中央に近い位置にある矩形形状の画像をディスプレイ500と特定し、その他の矩形形状の画像をディスプレイ500以外のディスプレイと特定する。
【0095】
他の方法として、各矩形形状の画像を比較することで、最も正面から見た形状となっている矩形形状や、最も大きな矩形形状の画像をディスプレイ500と特定し、その他の矩形形状の画像をディスプレイ500以外のディスプレイと特定するようにしてもよい。
【0096】
このようにディスプレイ500以外のディスプレイが第1カメラ画像から検出された場合、PC100では、表示画面501の周囲に表示候補位置として特定された表示位置のうち、ディスプレイ500以外のディスプレイの属している表示候補位置の順位を他の表示候補位置の順位よりも低く特定する。より好ましくは、ディスプレイ500以外のディスプレイがより多くの面積属している領域に対応した表示候補位置ほど順位を低く特定する。
【0097】
第1カメラ画像が図21のものである場合、表示画面501の周囲に表示候補位置として特定された表示位置VAD−A、VAD−B、VAD−C、およびVAD−Dのうち、表示位置VAD−BおよびVAD−Cはディスプレイ500以外のディスプレイが属しているため、他の表示候補位置である表示位置VAD−AおよびVAD−Dよりも順位を低く特定する。そして、表示するHMD300からの画面の数が2画面と規定されている場合、図22に示されるように、上記ステップS213では、順位の低い表示位置VAD−BおよびVAD−Cは表示位置とは決定されず、これよりも順位の高い2つの表示位置VAD−AおよびVAD−Dが表示位置として決定されることになる。
【0098】
これにより、ディスプレイ500の表示画面501の周囲であって、他のディスプレイが存在している方向にはHMD300からの画面が表示されず、その他の、ディスプレイのない方向にHMD300からの画面が表示されることになる。そのため、ディスプレイ500の他のディスプレイの表示画面にHMD300からの画面が重複して双方の画面が視認し難くなることでユーザの操作性を妨げることなく、表示画面501を仮想的に拡張することが可能となる。
【0099】
なお、上の順位の決定方法は一例であって、他の考え方に基づくものであってもよい。すなわち、ディスプレイ500の他のディスプレイが属する表示候補位置の順位ほど高く特定するようにしてもよい。この場合、たとえばユーザがディスプレイ500の他のディスプレイに表示される画面を確認しながらディスプレイ500の表示画面を確認する場合に、視線を上記他のディスプレイから他の位置に変えることなくその画面を視認しながらHMD300からの画面も視認することが可能となり、ユーザによっては操作性が高まる場合もある。
【0100】
<実施例4>
第4の実施例でPC100は、上述のように表示画面501の周囲に表示候補位置を特定した後、第1カメラ画像に含まれる人の顔の画像の位置に応じて順位を特定して表示位置を決定する。
【0101】
図23は、第4の実施例での、第1カメラ画像の具体例を示す図である。PC100は、一例として、円形あるいは楕円形を人の顔のテンプレートとして記憶しており、当該テンプレートを用いて第1カメラ画像をマッチングする、などの処理によって第1カメラ画像から人の顔の画像を検出することができる。もちろん、他の方法で人の顔の画像を検出するようにしてもよい。
【0102】
このように人の顔の画像が第1カメラ画像から検出された場合、PC100では、表示画面501の周囲に表示候補位置として特定された表示位置のうち、人の顔の画像が属している表示候補位置の順位を他の表示候補位置の順位よりも低く特定する。より好ましくは、人の顔の画像がより多くの面積属している領域に対応した表示候補位置ほど順位を低く特定する。
【0103】
第1カメラ画像が図23のものである場合、表示画面501の周囲に表示候補位置として特定された表示位置VAD−A、VAD−C、およびVAD−Dのうち、表示位置VAD−Dは人の顔の画像が属しているため、他の表示候補位置である表示位置VAD−AおよびVAD−Cよりも順位を低く特定する。そして、表示するHMD300からの画面の数が2画面と規定されている場合、図24に示されるように、上記ステップS213では、順位の低い表示位置VAD−Dは表示位置とは決定されず、これよりも順位の高い2つの表示位置VAD−AおよびVAD−Cが表示位置として決定されることになる。
【0104】
これにより、ディスプレイ500の表示画面501の周囲であって、人の顔のある方向にはHMD300からの画面が表示されず、その他の方向にHMD300からの画面が表示されることになる。そのため、たとえばユーザが、ディスプレイ500越しに他の人と向き合ってディスプレイ500の表示画面を視認しているという使い方において、HMD300からの画面が当該他の人の顔に重複してその画面を視認する際に当該他の人の顔を注目することになる、という事態を避けつつ、表示画面501を仮想的に拡張することが可能となる。
【0105】
なお、上の順位の決定方法は一例であって、他の考え方に基づくものであってもよい。すなわち、人の顔の画像が属する表示候補位置の順位ほど高く特定するようにしてもよい。この場合、たとえばユーザはディスプレイ500越しの当該他の人の顔から視線をはずすことなくHMD300からの画面も視認することが可能となり、ユーザによっては操作性が高まる場合もある。
【0106】
<実施例5>
第5の実施例ではPC100は、上述の人の顔の替りに、第1カメラ画像中のディスプレイ500周囲の画像から文字を検出し、その検出結果を用いて表示候補位置の順位を特定してもよい。
【0107】
すなわち、ディスプレイ500周囲の画像から文字が検出されると、表示画面501の周囲に表示候補位置として特定された表示位置VAD−A、VAD−B、VAD−C、およびVAD−Dのうち、検出された文字の属する表示候補位置の順位を他の表示候補位置の順位よりも低く特定する。
【0108】
これは、たとえば書籍などをディスプレイ500近傍に置いて、当該書籍を参照しながらディスプレイ500を用いた操作を行なっている場合が想定される。
【0109】
たとえばこのような場合に上のように順位が特定されることにより、ディスプレイ500の表示画面501の周囲であって、文字が検出された方向にはHMD300からの画面が表示されず、その他の方向にHMD300からの画面が表示されることになる。そのため、ユーザの操作を妨げることなく表示画面501を仮想的に拡張することが可能となる。
【0110】
なお、上の順位の決定方法は一例であって、他の考え方に基づくものであってもよい。すなわち、ディスプレイ500周囲の画像から文字が検出された場合には、当該文字の属する表示候補位置の順位を高く特定するようにしてもよい。この場合、ユーザは視線を当該文字の印字されている書籍等から他の位置に変えることなくHMD300からの画面を視認することが可能となり、ユーザによっては操作性が高まる場合もある。
【0111】
<実施例6>
第6の実施例でPC100は、上述のように表示画面501の周囲に表示候補位置を特定した後、第1カメラ画像中のディスプレイ500周囲の画像のコントラスト比を利用して順位を特定し、表示位置を決定する。
【0112】
図25は、第6の実施例での、第1カメラ画像の具体例を示す図である。このような撮影画像の入力を受け付けると、PC100は上述と同様にしてディスプレイ500を特定し、その周囲に表示位置VAD−A、VAD−B、VAD−C、およびVAD−Dを特定する。
【0113】
さらに、第6の実施例でPC100は、ディスプレイ500周囲の表示候補位置ごとに、当該領域の画像のコントラスト比を算出する。そして、コントラスト比が予め設定されたしきい値よりも高い領域の属する表示候補位置の順位を他の表示候補位置の順位よりも低く特定する。
【0114】
たとえばディスプレイ500の周囲に書籍などを置いて当該書籍を参照しながらディスプレイ500を用いた操作を行なっている場合など、当該書籍の置かれている位置の属する表示候補位置の画像のコントラスト比が何も置かれていない位置の属する表示候補位置の画像のコントラスト比よりも高くなる。すなわち、このように順位が特定されることにより、図26に示すように、ディスプレイ500の周囲の何も置かれていないエリアや背景が白いエリアや置かれているものが少ないエリアなどにはHMD300からの画面が表示され、その他のエリアにはHMD300からの画面が表示されないことになる。そのため、HMD300からの画面の視認性を高めることができる。
【0115】
<実施例7>
第7の実施例においては、HMD300にセンサの他の例としての、カメラ400に加えて加速度センサが備えられ、当該加速度センサからのセンサ信号がPC100に入力される。PC100は上述のように表示画面501の周囲に表示候補位置を特定した後、HMD300に備えられた加速度センサからのセンサ信号に基づいて当該HMD300を装着したユーザの頭部の傾きを算出し、それに応じて順位を特定して表示位置を決定する。
【0116】
図27は、第7の実施例での、第1カメラ画像と、HMD300を装着したユーザの頭部の傾きと表示画面501との間の関係との第1の具体例を示す図である。
【0117】
PC100は、図27(B)に表わされた撮影画像の入力を受け付けると、上述と同様にしてディスプレイ500を特定し、その周囲に表示位置VAD−A、VAD−BおよびVAD−Dを特定する。
【0118】
その後、PC100はHMD300に備えられた加速度センサからのセンサ信号に基づいて当該HMD300を装着したユーザの頭部の傾きを算出する。図27(A)の例の場合、ユーザの頭部の傾きが概ね垂直方向と算出される。
【0119】
PC100は、HMD300を装着したユーザが頭部を概ね垂直方向にした状態で正面から視認可能な位置にHMD300での画面を表示させるよう、表示候補位置の順位を設定する。
【0120】
すなわち、図27の例の場合、PC100は、当該ユーザが頭部を表示画面501に対して略平行にして表示画面501を視認しているものとして、表示画面501と角度の異なる表示位置VAD−BおよびVAD−Dの順位を表示位置VAD−Aの順位よりも低く特定する。
【0121】
また、他の例として図28(B)に表わされた撮影画像の入力を受け付けると、PC100は上述と同様にしてディスプレイ500を特定し、その周囲に表示位置VAD−A、VAD−CおよびVAD−Dを特定する。
【0122】
その後、PC100はHMD300に備えられた加速度センサからのセンサ信号に基づいて当該HMD300を装着したユーザの頭部の傾きを算出する。図28(A)の例の場合、ユーザの頭部の傾きが垂直方向よりも下向きと算出される。
【0123】
この場合、PC100は、当該ユーザが頭部を表示画面501に対して略平行にして表示画面501を視認しているものとして、頭部を概ね垂直方向にした状態で正面から視認可能な位置を表示画面501の上方と判断する。そして、この場合、PC100は、表示画面501の上方にある表示位置VAD−Dの順位を表示位置VAD−AおよびVAD−Cの順位よりも高く特定する。
【0124】
また、他の例として図29(B)に表わされた撮影画像の入力を受け付けると、PC100は上述と同様にしてディスプレイ500を特定し、その周囲に表示位置VAD−A、VAD−BおよびVAD−Cを特定する。
【0125】
その後、PC100はHMD300に備えられた加速度センサからのセンサ信号に基づいて当該HMD300を装着したユーザの頭部の傾きを算出する。図29(A)の例の場合、ユーザの頭部の傾きが垂直方向よりも上向きと算出される。
【0126】
この場合、PC100は、当該ユーザが頭部を表示画面501に対して略平行にして表示画面501を視認しているものとして、頭部を概ね垂直方向にした状態で正面から視認可能な位置を表示画面501の下方と判断する。そして、この場合、PC100は、表示画面501の下方にある表示位置VAD−Bの順位を表示位置VAD−AおよびVAD−Cの順位よりも高く特定する。
【0127】
このように順位が特定されることにより、HMD300を装着したユーザが頭部を概ね垂直方向にした状態でHMD300による画面を正面から視認可能な位置にHMD300からの画面が表示されることになる。そのため、HMD300を装着したユーザはより自然な姿勢でHMD300からの画面を視認することが可能となり、作業性を向上させることができる。
【0128】
なお、上の説明ではHMD300に加速度センサが備えられ、その検出結果に基づいてPC100がHMD300を装着したユーザの頭部の傾きを算出するものとしている。しかしながら、必ずしも加速度センサは必須ではなく、その他の方法でPC100がHMD300を装着したユーザの頭部の傾きを算出してもよい。他の例としては、上述のように第1カメラ画像から予め記憶しているマーカ画像を検出し、その基本形状からの変化量に基づいてHMD300を装着したユーザの頭部の傾きを算出する方法が挙げられる。
【0129】
<実施例8>
なお、以上の例では、HMD300に設置されたカメラ400からの一つの撮影画像である第1カメラ画像を解析することで表示候補位置を設定し、さらに、それらの順位を決定して、より順位の高い表示候補位置を実際の表示位置と決定するとしている。
【0130】
さらに他の例として、第8の実施例において、HMD300にセンサとしてステレオカメラであるカメラ400が備えられた場合を説明する。この場合、PC100はステレオカメラであるカメラ400からの第1カメラ画像として2つの画像を取得し、これらを解析することで、HMD300からディスプレイ500までの距離および傾きを算出する。
【0131】
さらに、PC100は、上述のようにディスプレイ500の周囲に表示候補位置を設定した上で、検出されたディスプレイ500の周囲にオブジェクトを検出し、HMD300からオブジェクトまでの距離を算出する。
【0132】
ここでの距離の算出方法は特定の方法に限定されるものではない。一例としてPC100は、たとえば国際公開WO01/039513号パンフレットや特開平5−50390号公報、特開平11−66319号公報、などに開示されている、ステレオカメラのカメラ間の視差情報を用いた三角測量の原理を利用して算出することができる。
【0133】
図30は、第8の実施例での、第1カメラ画像の具体例を示す図である。このような撮影画像の入力を受け付けると、PC100は上述と同様にしてディスプレイ500を特定し、その周囲に表示位置VAD−A、VAD−B、およびVAD−Cを特定する。
【0134】
さらに、PC100はディスプレイ500の周囲のオブジェクトとして、ディスプレイ500の上辺、開いている書籍、積まれている書籍群、およびキーボードを検出する。そして、PC100は、それぞれのオブジェクトまでのHMD300からの距離D1,D2,D3,D4を上記方法などを利用して算出する。
【0135】
ここで、図30の例においては、ディスプレイ500の上辺までの距離D1が3463mm、開いている書籍までの距離D2が3281mm、積まれている書籍群までの距離D3が6045mm、およびキーボードまでの距離D4が2850mmと算出されたものとする。この場合、PC100は、HMD300からの距離が予め規定されたしきい値以上であるオブジェクトの属する表示候補位置の順位をそうでない表示候補位置の順位より高く設定する。たとえば、上記しきい値として4000mmが設定されているとすると、この例の場合、積まれている書籍群までの距離D3が上記しきい値よりも大きく、他のオブジェクトまでの距離は上記しきい値よりも小さい。そのため、PC100はしきい値よりも大きいオブジェクトの属する表示位置VAD−Aの順位を、他の表示位置VAD−BおよびVAD−Cの順位よりも高く特定する。これにより、図31に示されるように、順位の高い表示位置VAD−Aが表示位置として決定されることになる。
【0136】
このように順位が特定されることにより、ディスプレイ500の周囲の空間的にスペースの空いている位置にHMD300からの画面が表示されることになる。そのため、HMD300からの画面が背後のオブジェクトと重なって視認し難くなることを抑え、HMD300からの画面の視認性を高めることができる。
【0137】
他の例として、PC100はステレオカメラからの画像を用いてディスプレイ500周辺の平面性を算出し、検出された平面部分の属する表示候補位置の順位を他の表示候補位置の順位よりも高く特定するようにしてもよい。
【0138】
なお、上の説明ではHMD300にセンサとしてステレオカメラが設けられ、PC100が当該ステレオカメラでの撮影画像を用いてオブジェクトまでの距離を算出するものとしているが、必ずしもステレオカメラは必須ではなく、その他の方法でPC100がオブジェクトまでの距離を算出してもよい。他の例としては、HMD300にセンサとして赤外線センサなどの距離を測定するためのセンサが設けられ、当該センサでの検出結果に基づいてPC100がオブジェクトまでの距離を算出する方法が挙げられる。
【0139】
<他の例>
なお、以上の例では、第1の実施例〜第8の実施例がそれぞれ説明されているが、説明された動作が組み合わされてもよい。
【0140】
さらに、上述のPC100での動作を実行させるためのプログラムを提供することもできる。このようなプログラムは、コンピュータに付属するフレキシブルディスク、CD−ROM(Compact Disk-Read Only Memory)、ROM(Read Only Memory)、RAM(Random Access Memory)およびメモリカードなどのコンピュータ読取り可能な記録媒体にて記録させて、プログラム製品として提供することもできる。あるいは、コンピュータに内蔵するハードディスクなどの記録媒体にて記録させて、プログラムを提供することもできる。また、ネットワークを介したダウンロードによって、プログラムを提供することもできる。
【0141】
なお、本発明にかかるプログラムは、コンピュータのオペレーティングシステム(OS)の一部として提供されるプログラムモジュールのうち、必要なモジュールを所定の配列で所定のタイミングで呼出して処理を実行させるものであってもよい。その場合、プログラム自体には上記モジュールが含まれずOSと協働して処理が実行される。このようなモジュールを含まないプログラムも、本発明にかかるプログラムに含まれ得る。
【0142】
また、本発明にかかるプログラムは他のプログラムの一部に組込まれて提供されるものであってもよい。その場合にも、プログラム自体には上記他のプログラムに含まれるモジュールが含まれず、他のプログラムと協働して処理が実行される。このような他のプログラムに組込まれたプログラムも、本発明にかかるプログラムに含まれ得る。
【0143】
提供されるプログラム製品は、ハードディスクなどのプログラム格納部にインストールされて実行される。なお、プログラム製品は、プログラム自体と、プログラムが記録された記録媒体とを含む。
【0144】
今回開示された実施の形態はすべての点で例示であって制限的なものではないと考えられるべきである。本発明の範囲は上記した説明ではなくて特許請求の範囲によって示され、特許請求の範囲と均等の意味および範囲内でのすべての変更が含まれることが意図される。
【符号の説明】
【0145】
1,1A,1B 投影システム、11 メモリ、12,22,32,42 通信I/F、23 入力装置、33 投影部、43 第1撮影部、44 第2撮影部、101,201 データ受信部、102,202 データ解析部、103 PC・HMD用データマネージメント部、104 モニタ検出部、105,107 カメラ管理部、106 視線検出部、108 ディスプレイ管理部、109 その他処理部、110,208 データ作成部、111,209 データ送信部、203 入力データ管理部、204 モニタ管理部、205 VAD描画管理部、206 データ保持部、207 その他管理部、400 カメラ、500 ディスプレイ、501,601,602 表示画面。
【技術分野】
【0001】
この発明は投影システム、投影装置、投影方法、および制御プログラムに関し、特に、目標位置に画像を投影する投影システム、投影装置、投影方法、および制御プログラムに関する。
【背景技術】
【0002】
昨今のオフィス環境などにおいては、机上にディスプレイを設置し、当該ディスプレイに画像を表示して作業を行なうことが多くなされている。この場合、ディスプレイの面積が広いほど表示面積が増加するために作業効率が向上する。
【0003】
しかしながら、オフィス環境などのおいては各自の作業スペースに制限があるため、ディスプレイの面積にも制限が生じる。
【0004】
また一方で、必ずしもディスプレイ全面を用いて作業するとは限られないため、ディスプレイの面積を増加させても作業効率には直接的に結びつかない場合もある。
【0005】
このような問題に対して、下記の特許文献1、2は画像を投影する技術や、その投影方法などを開示している。
【先行技術文献】
【特許文献】
【0006】
【特許文献1】特開2009−278234号公報
【特許文献2】特開2010−151997号公報
【発明の概要】
【発明が解決しようとする課題】
【0007】
しかしながら、これらの技術を用いても、作業対象であるディスプレイを必要な時に面積を拡大して用いることは実現できず、ディスプレイを用いた作業の効率の向上に寄与するものではない。
【0008】
本発明はこのような問題に鑑みてなされたものであって、ディスプレイの面積を仮想的に拡大させ、作業効率を向上させることのできる投影システム、投影装置、投影方法、および制御プログラムを提供することを目的としている。
【課題を解決するための手段】
【0009】
上記目的を達成するために、本発明のある局面に従うと、投影システムはディスプレイから規定される位置に画面を投影するための投影システムであって、投影装置と、ディスプレイと、投影装置から所定位置に設置され、投影装置に接続されたカメラと、投影装置に接続されたセンサと、投影装置での投影とディスプレイでの表示とを制御するための制御装置とを備える。制御装置は、投影装置の投影する画面データを生成して投影装置に対して送信する処理と、カメラでの撮影画像からディスプレイを検出し、その位置に応じてディスプレイの周囲に投影装置からの投影位置の候補を特定する処理と、投影位置の候補に対してセンサでの検出結果を用いて優先順位を設定する処理と、優先順位に応じて投影位置の候補の中から投影装置からの投影位置を決定し、投影装置に投影位置に画面データに基づく画面を投影させる処理とを実行する。
【0010】
好ましくは、制御装置は、撮影画像におけるディスプレイの位置の偏りに応じて、ディスプレイの周囲に投影装置からの投影位置の候補を特定する。
【0011】
好ましくは、センサはユーザの視線を検出するためのセンサであって、制御装置は、撮影画像におけるユーザの視線の位置に応じて投影位置の候補に対して優先順位を設定する。
【0012】
好ましくは、投影システムは制御装置に対して情報を入力するための入力装置をさらに備え、制御装置はカメラをセンサとして用い、入力装置からの入力を受け付けている場合に、撮影画像から検出された入力装置の位置に応じて投影位置の候補に対して優先順位を設定する。
【0013】
好ましくは、制御装置はカメラを上記センサとして用い、撮影画像から検出されたディスプレイとは異なるディスプレイの位置に応じて投影位置の候補に対して優先順位を設定する。
【0014】
好ましくは、制御装置はカメラを上記センサとして用い、撮影画像から検出された人の顔の画像の位置に応じて投影位置の候補に対して優先順位を設定する。
【0015】
好ましくは、制御装置はカメラを上記センサとして用い、撮影画像から検出された文字の位置に応じて投影位置の候補に対して優先順位を設定する。
【0016】
好ましくは、制御装置はカメラを上記センサとして用い、撮影画像から検出されたディスプレイ周囲の画像のコントラスト比を算出し、コントラスト比がしきい値以上である領域を含む投影位置の候補ほど低い優先順位を設定する。
【0017】
好ましくは、投影装置はユーザの頭部に装着可能であり、センサは加速度センサであって、制御装置は、加速度センサからのセンサ信号に基づき、投影装置から投影位置の候補へ向かう方向の水平方向からの傾きが小さくなる投影位置の候補ほど高い優先順位を設定する。
【0018】
好ましくは、センサはディスプレイ周囲のオブジェクトまでの距離を検出するためのセンサであって、制御装置は、投影位置の候補のうち、投影装置からの距離がしきい値より小さいオブジェクトを含む投影位置の候補ほど低い優先順位を設定する。
【0019】
本発明の他の局面に従うと、投影装置は所定位置に画面を投影するための投影装置であって、当該投影装置から所定位置に設置されたカメラから撮影画像の入力を受け付けるための第1の入力手段と、当該投影装置に接続されたセンサから検出結果の入力を受け付けるための第2の入力手段と、画面データに基づく画面を所定位置に投影させるための制御手段とを備える。制御手段は、撮影画像からディスプレイを検出し、その位置に応じてディスプレイの周囲に投影位置の候補を特定する処理と、投影位置の候補に対してセンサでの検出結果を用いて優先順位を設定する処理と、優先順位に応じて投影位置の候補の中から投影位置を決定し、投影位置に画面データに基づく画面を投影させる処理とを実行する。
【0020】
本発明のさらに他の局面に従うと、投影方法はディスプレイから規定される位置に投影装置によって画面を投影させるための投影方法であって、投影装置の投影する画面データを生成するステップと、投影装置から所定位置に設置され、投影装置に接続されたカメラから、撮影画像の入力を受け付けるステップと、撮影画像からディスプレイを検出し、その位置に応じてディスプレイの周囲に投影装置からの投影位置の候補を特定するステップと、投影位置の候補に対して投影装置に接続されたセンサでの検出結果を用いて優先順位を設定するステップと、優先順位に応じて投影位置の候補の中から投影装置からの投影位置を決定し、投影装置に投影位置に画面データに基づく画面を投影させるステップとを備える。
【0021】
本発明のさらに他の局面に従うと、制御プログラムはディスプレイから規定される位置に投影装置によって画面を投影させる制御をコンピュータに実行させるためのプログラムあって、投影装置の投影する画面データを生成するステップと、投影装置から所定位置に設置され、投影装置に接続されたカメラから、撮影画像の入力を受け付けるステップと、撮影画像からディスプレイを検出し、その位置に応じてディスプレイの周囲に投影装置からの投影位置の候補を特定するステップと、投影位置の候補に対して投影装置に接続されたセンサでの検出結果を用いて優先順位を設定するステップと、優先順位に応じて投影位置の候補の中から投影装置からの投影位置を決定し、投影装置に投影位置に画面データに基づく画面を投影させるステップとをコンピュータに実行させる。
【発明の効果】
【0022】
この発明によると、ディスプレイの面積を適切な位置に仮想的に拡大させ、作業効率を向上させることができる。
【図面の簡単な説明】
【0023】
【図1】本実施の形態にかかる投影システムの構成の具体例を示す図である。
【図2】投影システムの構成の他の具体例を示す図である。
【図3】投影システムの構成の他の具体例を示す図である。
【図4】投影システムに含まれる第1のPCの装置構成の具体例を示すブロック図である。
【図5】投影システムに含まれる第2のPCの装置構成の具体例を示すブロック図である。
【図6】投影システムに含まれるHMDの装置を構成の具体例を示すブロック図である。
【図7】投影システムに含まれるカメラの装置構成の具体例を示すブロック図である。
【図8】投影システムでの動作の概要を説明するための図である。
【図9】第1のPCの機能構成の具体例を示すブロック図である。
【図10】第2のPCの機能構成の具体例を示すブロック図である。
【図11】第1のPCでの投影動作の流れの具体例を示すフローチャートである。
【図12】カメラ画像からマーカ画像を検出して、その位置に基づいて画面を投影させる動作の具体的な流れを表わすフローチャートである。
【図13】マーカ画像の具体例を示す図である。
【図14】マーカ画像の検出例とそれに基づく画像の投影の具体例とを表わす図である。
【図15】第1の実施例での、第1カメラ画像の具体例を示す図である。
【図16】HMDでの画面の表示候補位置を表わす図である。
【図17】第1の実施例での、第1カメラ画像の他の具体例を示す図である。
【図18】表示候補位置の順位を特定する動作および表示位置を決定する動作の具体的な流れを表わしたフローチャートである。
【図19】第1カメラ画像において検出されたユーザの視認量を表わした図である。
【図20】第1の実施例での、決定されたHMDでの画面の表示位置を表わした図である。
【図21】第3の実施例での、第1カメラ画像の具体例を示す図である。
【図22】第3の実施例での、決定されたHMDでの画面の表示位置を表わした図である。
【図23】第4の実施例での、第1カメラ画像の具体例を示す図である。
【図24】第4の実施例での、決定されたHMDでの画面の表示位置を表わした図である。
【図25】第6の実施例での、第1カメラ画像の具体例を示す図である。
【図26】第6の実施例での、決定されたHMDでの画面の表示位置を表わした図である。
【図27】第7の実施例での、第1カメラ画像と、HMDを装着したユーザの頭部の傾きとディスプレイにおける表示画面との間の関係との第1の具体例を示す図である。
【図28】第7の実施例での、第1カメラ画像と、HMDを装着したユーザの頭部の傾きとディスプレイにおける表示画面との間の関係との第2の具体例を示す図である。
【図29】第7の実施例での、第1カメラ画像と、HMDを装着したユーザの頭部の傾きとディスプレイにおける表示画面との間の関係との第3の具体例を示す図である。
【図30】第8の実施例での、第1カメラ画像の具体例を示す図である。
【図31】第8の実施例での、決定されたHMDでの画面の表示位置を表わした図である。
【発明を実施するための形態】
【0024】
以下に、図面を参照しつつ、本発明の実施の形態について説明する。以下の説明では、同一の部品および構成要素には同一の符号を付してある。それらの名称および機能も同じである。
【0025】
<システム構成>
図1は、本実施の形態にかかる投影システム1の構成の具体例を示す図である。
【0026】
図1を参照して、本実施の形態にかかる投影システム1は、ディスプレイ500と、投影装置としてのヘッドマウンテンディスプレイ(以下、HMD)300と、ディスプレイ500の表示およびHMD300における画像の投影を制御するための制御装置としてのパーソナルコンピュータ(以下、PC)200と、HMD300における画像の投影を制御するための制御装置としてのPC100とを含む。
【0027】
PC100はHMD300に接続されて、HMD300に対して画像データと共に制御信号を送信して、HMD300での画像の投影を制御する。
【0028】
HMD300には、センサとしてのカメラ400が接続されており、カメラ400からの撮影画像がPC100に入力される。PC100は当該撮影画像を用いて、HMD300での画像の投影の制御を実行する。
【0029】
PC200はディスプレイ500に接続されて、画像データのうちのディスプレイ500に表示させるデータから表示データを生成し、制御信号と共にディスプレイ500に送信することで、ディスプレイ500での画面表示を実行させる。
【0030】
また、PC200はPC100に接続されて、上記画像データのうちのHMD300で投影させるデータを制御信号と共にPC100に送信することで、HMD300での画像の投影を実行させる。PC100は当該制御信号に従って、当該画像データからHMD300で投影させるための投影データを生成し、投影させるための処理を実行する。
【0031】
PC100とHMD300およびカメラ400との間の通信、PC200とディスプレイ500との間の通信、およびPC100とPC200との間の通信は図1に示されるように専用回線などを介した有線の通信であってもよいし、無線LANや赤外線通信などの無線通信であってもよい。
【0032】
なお、図1に表わされた投影システム1の形態は一例であって、この形態に限定されるものではない。たとえば、図2、図3に他の構成の投影システム1A,1Bの具体例を示す。
【0033】
すなわち、図2に示されるように、上記PC100とPC200とが一台のPC200Aで構成されてもよい。または、図3に示されるように、上記PC100とPC200とが一台のPC200Bで構成され、さらに、当該PC200Bとディスプレイ500およびHMD300との間の通信がインターネットを介した通信であってもよい。すなわち、PC200Bは後述する処理を実行して必要な情報をディスプレイ500およびHMD300に対してインターネットを介して送信する。このような形態は、クラウドとも称される。
【0034】
<装置構成>
図4は、PC100の装置構成の具体例を示すブロック図である。図4に示されたPC100の装置構成は、一般的なパーソナルコンピュータの装置構成である。すなわち、図4を参照して、PC100は、装置全体を制御するためのCPU10と、CPU10で実行されるプログラムなどを記憶するためのメモリ11と、HMD300やPC200などの他の装置と通信するための通信インタフェース(I/F)12とを含む。
【0035】
図5は、PC200の装置構成の具体例を示すブロック図である。図5に示されたPC200の装置構成もまた、一般的なパーソナルコンピュータの装置構成であり、図4に示された構成と概ね同じ構成である。すなわち、図5を参照して、PC200もまた、装置全体を制御するためのCPU20と、CPU20で実行されるプログラムなどを記憶するためのメモリ21と、PC100やディスプレイ500などの他の装置と通信するための通信I/F22とを含む。PC200は、さらに、マウスやキーボードなどの入力装置23を備える。
【0036】
図6は、HMD300の装置を構成の具体例を示すブロック図である。図6を参照して、HMD300は、装置全体を制御するためのCPU30と、CPU30で実行されるプログラムなどを記憶するためのメモリ31と、PC100やカメラ400などの他の装置と通信するための通信I/F32と、図示しないディスプレイを含んで、画像データに基づく画面を当該ディスプレイに投影するための投影部33を含む。
【0037】
本実施の形態において、投影部33は透過性を有するディスプレイを含み、当該ディスプレイに対して画像を投影する。投影部33に含まれるディスプレイは図示しない装着部によって、投影方向と視線方向と略一致させるようにユーザの頭部等に装着可能である。
【0038】
そのため、HMD300を装着したユーザは、当該ディスプレイを介して背景を視認しつつ当該背景に重ねて投影された画面を視認することができる。
【0039】
図7は、カメラ400の装置構成の具体例を示すブロック図である。図7を参照して、カメラ400は、装置全体を制御するためのCPU40と、CPU40で実行されるプログラムなどを記憶するためのメモリ41と、HMD300などの他の装置と通信するための通信I/F42と、第1撮影部43および第2撮影部44とを含む。
【0040】
第1撮影部43は、その撮影方向をHMD300の投影部33での投影方向に略一致させた位置に設置される。そのため、第1撮影部43は、HMD300の図示しないディスプレイを介してユーザが視認することのできる、当該HMD300によって画面が投影された先の背景を撮影することになる。以降の説明において、第1撮影部43が撮影することによって得られた画像を第1カメラ画像とも称する。
【0041】
第2撮影部44は、その撮影方向をHMD300の投影部33での投影方向と反対向きとさせた位置に設置される。そのため、第2撮影部44は、HMD300を装着したユーザの目の付近を撮影することになる。以降の説明において、第2撮影部44が撮影することによって得られた画像を第2カメラ画像とも称する。
【0042】
<動作概要>
図8は、投影システム1での動作の概要を説明するための図である。
【0043】
図8を参照して、投影システム1では、ディスプレイ500に表示画面501が表示されると共に、ディスプレイ500の周囲の予め設定された位置にHMD300から画面が投影されることで、画面601,602が表示される。
【0044】
これにより、HMD300を装着したユーザは、ディスプレイ500の面積分の表示画面501に加えて、当該ディスプレイ500から所定位置に拡張された表示画面601,602も視認することができる。
【0045】
<機能構成>
図9は、上記動作を行なうためのPC100の機能構成の具体例を示すブロック図である。図9に示される各機能は、PC100のCPU10がメモリ11に記憶されるプログラムを読み込んで実行することで、主にCPU10上に形成されるものであるが、少なくとも一部が電気回路等のハードウェア構成によって実現されてもよい。
【0046】
図9を参照して、CPU10は、通信I/F12を介してデータを受信するためのデータ受信部101と、受信したデータを解析するためのデータ解析部102と、データ管理を行なうためのPC・HMD用データマネージメント部103と、カメラ400の第1撮影部43を制御するためのカメラ管理部(Outside)105と、第1カメラ画像からディスプレイ500を検出するためのモニタ検出部104と、カメラ400の第2撮影部44を制御するためのカメラ管理部(Inside)107と、第2カメラ画像から視線を検出するための視線検出部106と、HMD300での投影を制御するためのディスプレイ管理部108と、その他処理を行なうためのその他処理部109と、送信用のデータを特定のデータ形式に整形するためのデータ作成部110と、通信I/F12を介してデータを送信するためのデータ送信部111とを含む。
【0047】
データ受信部101は、上述の通信によって送信されるデータのうち、必要なデータ(パケット)を受信する。データ解析部102は受信されたデータの中から必要なデータを抽出し、当該PC100での処理に必要なデータであるか否かを解析する。そして、必要なデータである場合、解析結果に従って当該データがPC・HMD用データマネージメント部103またはその他処理部109に渡される。すなわち、データ受信部101がPC200からHMD300で投影される画面データを受信すると、データ解析部102での解析結果に従って当該データがPC・HMD用データマネージメント部103に渡される。
【0048】
モニタ検出部104は予めディスプレイ500の形状としてたとえば矩形形状を記憶している。そして、カメラ管理部105から第1カメラ画像を受け取り、当該画像と記憶しているディスプレイ500の形状とをマッチングすることで、第1カメラ画像の中からディスプレイ500を検出する。また、第1カメラ画像中のディスプレイ500の形状の変化から、カメラ400からディスプレイ500までの距離および傾き具合を検出する。そして、モニタ検出部104は、これらの検出結果をPC・HMD用データマネージメント部103に渡す。
【0049】
視線検出部106は、カメラ管理部107から第2カメラ画像を受け取り、その中からHMD300を装着しているユーザの目を検出して、その視線方向を検出する。そして、その検出結果をPC・HMD用データマネージメント部103に渡す。
【0050】
PC・HMD用データマネージメント部103は、モニタ検出部104からの検出結果に基づいて表示位置を決定する。また、このときに、視線検出部106での検出結果を用いて表示位置を決定してもよい。
【0051】
この決定方法については、以降に具体例を挙げて説明する。そして、PC・HMD用データマネージメント部103は、画面データをディスプレイ管理部108に渡して、HMD300での画面を当該位置に表示させるように画面の投影を実行させる。
【0052】
図10は、上記動作を行なうためのPC200の機能構成の具体例を示すブロック図である。図10に示される各機能は、PC200のCPU20がメモリ21に記憶されるプログラムを読み込んで実行することで、主にCPU20上に形成されるものであるが、少なくとも一部が電気回路等のハードウェア構成によって実現されてもよい。PC200は図10の各機能を備えて、サーバとして機能する。
【0053】
図10を参照して、CPU20は、通信I/F22を介してデータを受信するためのデータ受信部201と、受信したデータを解析するためのデータ解析部202と、PC100から送信されるデータを管理するための入力データ管理部203と、ディスプレイ500での表示を管理するためのモニタ管理部204と、HMD300で投影させる画面データを管理するためのVAD描画管理部205と、ユーザ管理などのその他のPCに関する管理を行なうためのその他管理部207と、ディスプレイ500に関する情報などの各種データを保持するためのデータ保持部206と、送信用のデータを特定のデータ形式に整形するためのデータ作成部208と、通信I/F22を介してデータを送信するためのデータ送信部209とを含む。
【0054】
データ受信部201は、上述の通信によって送信されるデータのうち、必要なデータ(パケット)を受信する。データ解析部202は受信されたデータの中から必要なデータを抽出し、当該PC200での処理に必要なデータであるか否かを解析する。そして、必要なデータである場合、解析結果に従って当該データが入力データ管理部203、モニタ管理部204、VAD描画管理部205、またはその他管理部207に渡される。
【0055】
モニタ管理部204およびVAD描画管理部205は、それぞれ、ディスプレイ500に表示させる画面の画面データおよびHMD300で投影させる画面データを生成する。そして、モニタ管理部204は当該画面データをディスプレイ500に送信し、当該画面データに基づく画面をディスプレイ500に表示させるための制御を実行する。また、VAD描画管理部205は、当該画面データをPC100に対して送信する。
【0056】
HMD300で投影させる画面データの一例として、入力装置23からの操作信号に従う画像データから生成されたディスプレイ500に表示させる画面データに対応した画面データが挙げられる。このような画面データをHMD300に投影させることで、ディスプレイ500の表示画面501がマークの表示位置の方向に拡張されて、画像データがより広い範囲で表示されることになる。もちろん、HMD300で投影させる画面データはこの例に限定されず、以降の具体例に示されるような、他の画面データであってもよい。
【0057】
さらに、入力データ管理部203がカメラ400からマークまでの距離および傾き具合の検出結果をPC100から取得し、VAD描画管理部205において、これら検出結果に基づいて生成した画面データを補正するようにしてもよい。このような補正を行なうことで、HMD300を装着したユーザがディスプレイ500を視認する角度、距離に応じて、ディスプレイ500での表示画面501と同じような見え方となるようにHMD300から画面が投影されることになり、視認性が高まる。
【0058】
<動作フロー>
図11は、PC100での、第1カメラ画像に基づいた投影動作の流れの具体例を示すフローチャートである。図11のフローチャートに示される動作は、PC100のCPU10がメモリ11に記憶されるプログラムを読み出して図9の各機能を発揮させることで実現される。
【0059】
図11を参照して、CPU10は、第1カメラ画像が入力されると(ステップS101でYES)、ステップS103で当該画像を解析し、予め記憶しているディスプレイ500の形状とマッチングすることで当該画像中のディスプレイ500をマーカ画像として検出する。
【0060】
第1カメラ画像からディスプレイ500が検出されると(ステップS105でYES)、ステップS107でCPU10は、予め記憶されているディスプレイ500との位置関係に対して規定されているHMD300での画面を表示する位置の候補を特定し、さらにその順位を特定する。ここでの順位の特定方法については、後に具体例を挙げて説明する。
【0061】
そして、ステップS109で当該優先順位に応じてHMD300での画面を表示する位置を決定し、ステップS111で画面データと共に制御信号をHMD300に対して出力する。ここでは、一例として、表示する画面の数に応じて優先順位の高い順から表示位置として決定してもよいし、予め表示箇所が規定されている場合には、優先順位の高い順から当該表示箇所の数までを、表示位置として決定してもよい。HMD300ではこの制御信号に従って投影動作が実行されることで、決定された位置にHMD300での画面が表示されることになる。
【0062】
なお、上記ステップS103〜S105、およびステップS111の動作での、第1カメラ画像からマーカ画像を検出して、その位置に基づいて画面を投影させる動作の具体例について、図12のフローチャートを用いてさらに詳細に説明する。ここでは、具体例として、拡張現実感の研究のためにワシントン大学HIT研究室で開発されたソフトウェアライブラリとしてのプログラムを用いて実現される動作について説明する。用いられるプログラムはこのプログラムに限定されない。
【0063】
図12を参照して、まず、処理が開始するとステップS11でCPU10は初期化処理を実行する。ここでの初期化処理の一つとして、メモリ11の所定領域に記憶されている撮影画像に対して設定した座標系を初期化する処理が含まれる。
【0064】
ステップS12でCPU10は、カメラ400からの第1カメラ画像の入力を受け付けて、撮影画像を取得する。CPU10は、撮影画像(1フレーム)が入力されるごとに、ステップS13でCPU10は、入力された第1カメラ画像をメモリ11の描画用の領域に描画する。そして、ステップS14でCPU10は、そのメモリ11に展開された画像の中から座標系の基準となる位置を特定するディスプレイ500の画像をマーカとして検出する。CPU10は、予めマーカとするディスプレイ500の画像、および、そのマーカと撮影空間に設定される3次元座標系における座標との関係を記憶している。
【0065】
説明のため、CPU10はマーカの画像として図13の画像を記憶しているものとする。そして、一例として、撮影空間のこのマーカの画像に表わされた板状のコンテンツのある位置を、3次元座標系の原点とし、このコンテンツに対して3方向に、x軸、y軸、z軸を設定する、との3次元座標系との対応関係を記憶しているものとする。
【0066】
この場合、ステップS14でCPU10は、メモリ11に展開した第1カメラ画像から図13の画像を検索する。そして、その画像またはその画像に近似した画像を検出すると、撮影画像内にマーカが存在すると認識し、ステップS19でCPU10は、その信頼度を比較する。ステップS15での処理の一例として、CPU10は、予め記憶されているマーカの画像と検出された画像とを比較し、その相関度合いが基準として設定されているものを満たしているか否かで信頼度を比較する。
【0067】
その後、ステップS16でCPU10は、第1カメラ画像から検出されたマーカの画像の位置や、検出されたマーカの画像と記憶している画像との比較に基づいて、この撮影画像を撮影した時のカメラ400の位置や方向を計算する。そして、ステップS17で、計算されたカメラ400の位置や方向に基づいて、撮影画像に対して、予めマーカとした画像の位置を原点とし、マーカとした画像の傾きに応じてx軸、y軸、z軸を設定する。
【0068】
さらに、PC100から得られた画面データの表示位置の候補として、3次元座標で記憶されている座標を第1カメラ画像に設定された3次元座標系において特定する。
【0069】
たとえば、図13の画像がマーカの画像として記憶されているところ、撮影画像中に図14(A)の画像がマーカとして検出された場合、カメラ400の撮影位置がマーカで表わされたコンテンツの正面よりも向かって右側上方、撮影方向が該コンテンツを見下ろす角度と、カメラ400の位置や方向が計算される。CPU10は、予め該マーカとの関係で規定されている3次元の座標系をその撮影位置、撮影方向に基づいて第1カメラ画像に対して設定する。
【0070】
さらに、図13の画像に示されたマーカとするコンテンツのある原点を表示位置とする、立方体を表わす表示データがある場合、CPU10は、その形状をカメラ400から該コンテンツまでの距離や方向などに基づいて変形して、規定された表示位置に投影させる。これにより、図14(B)に示されるように、原点とするマーカの画像の近傍にマーカで表わされたコンテンツと同じ位置、方向から見たように変形された形状で立方体が投影される。
【0071】
ステップS18でCPU10は、PC200から送信された画面データを、以上の処理で得られた位置に画面データに基づく画面を投影させるための制御信号と共にHMD300に送信する。
【0072】
CPU10は、表示の終了を要求する信号が入力されるまで、第1カメラ画像が入力されるたびに以上の処理を繰り返す。そして、表示の終了を要求する信号の入力を受け付けると(ステップS19でYES)、一連の動作を終了する。
【0073】
以降、具体的な実施例を挙げて、上記ステップS107でのHMD300での画面を表示する位置の候補およびその順位を特定する動作について説明する。
【0074】
<実施例1>
第1の実施例でPC100は、ディスプレイ500の位置およびその周辺のオブジェクトを検出し、その検出結果に基づいてHMD300での画面の表示位置の候補を特定した上でその順位を決定する。
【0075】
図15は、第1の実施例での、第1カメラ画像の具体例を示す図である。このような撮影画像の入力を受け付けると、PC100は当該撮影画像とディスプレイ500の画像とをマッチングすることでディスプレイ500を特定する。そして、ディスプレイ500に表示されている表示画面501の周囲に、HMD300での画面の表示候補位置を特定する。
【0076】
図16は、予めディスプレイ500との位置関係によって規定されているHMD300での画面の表示候補位置を表わす図である。図16において、表示位置VAD−A、VAD−B、VAD−C、およびVAD−Dは、それぞれ、ディスプレイ500に表示されている表示画面501の右隣、下隣、左隣、および上隣に規定されるHMD300での画面の表示候補位置を表わしている。なお、以降の説明でも表示位置VAD−A、VAD−B、VAD−C、およびVAD−Dの表示画面501に対する位置関係は同様のものとする。
【0077】
PC100は、上記ステップS107で、図16に示された規定に基づいて、HMD300での画面の表示候補位置を、第1カメラ画像におけるディスプレイ500の位置に応じて特定する。たとえば図17に示されたように、第1カメラ画像においてディスプレイ500が中央より右に偏った位置にあり、その表示画面501の右側に所定面積が存在しない場合には、PC100は第1段階において、表示位置VAD−Aは表示候補位置と特定せず、表示画面501の下隣、左隣、および上隣に該当する表示位置VAD−B、VAD−C、およびVAD−Dを表示候補位置と特定する。
【0078】
このようにして表示候補位置が特定された後、PC100は、予め規定された順に応じてそれぞれの表示候補位置に対して順位を付与してもよい。すなわち、一例として、表示画面501の左隣、右隣、上隣および、下隣の順に順位が規定されている場合であって、表示位置VAD−A、VAD−B、VAD−C、およびVAD−Dが特定された場合には、PC100はこの規定に従って、表示位置VAD−C、VAD−A、VAD−B、およびVAD−Dの順に順位を付与する。さらに、この順は、ユーザからの所定の操作によって登録、更新可能であってよい。
【0079】
さらに、PC100は、HMD300を装着したユーザの視線を利用して順位を特定してもよい。
【0080】
図18は、上記ステップS107での表示候補位置の順位を特定する動作および表示位置を決定する動作の具体的な流れを表わしたフローチャートである。
【0081】
図18を参照して、PC100のCPU10はカメラ400からHMD300を装着したユーザを撮影した第2カメラ画像の入力を受け付ける(ステップS201)。そして、CPU10は第2カメラ画像を解析してユーザの目の画像を検出し(ステップS203)、さらにその視線方向を特定する(ステップS205)。ここでの視線の特定方法は特定の方法には限定されず、様々な方法を採用することができる。一例として特開2001−61785号公報において開示されている方法を採用してもよい。
【0082】
ステップS207でCPU10は、特定された視線方向と第1カメラ画像とを比較することで第1カメラ画像における当該ユーザの視線の向かう位置を特定する。
【0083】
CPU10は、この処理を所定期間行なうことで、ステップS209で、上記動作によって特定された表示候補位置のそれぞれで表わされる表示領域へ視線が向けられた時間を特定する。この時間のことを、説明上、「視認量」と称する。そして、ステップS211で、それぞれの領域の視認量に応じて、特定された表示候補のそれぞれに対する順位を特定する。
【0084】
ステップS213でCPU10は、特定された順位に従って、表示位置を決定する。すなわち、予め表示する画面の数を記憶しておき、特定された順位の高い表示候補位置から順に、表示する画面の数までの表示候補位置を表示位置として決定する。
【0085】
ここで、図19に示されたように、表示画面501の下側に置かれたキーボードをユーザが視認することによって表示画面501の下隣の領域の視認量と、表示画面501の左側に置かれた本をユーザが視認することによって表示画面501の左隣の領域の視認量とが、予め規定されたしきい値よりも大きく検出されたとする。この場合、PC100は、これら領域に特定された表示位置VAD−BおよびVAD−Cの順位が他の表示位置の順位より低く設定する。
【0086】
表示する画面の数が2画面と規定されている場合、図20に示されるように、上記ステップS213では、順位の低い表示位置VAD−BおよびVAD−Cは表示位置とは決定されず、これよりも順位の高い2つの表示位置VAD−AおよびVAD−Dが表示位置として決定されることになる。
【0087】
これにより、ディスプレイ500の表示画面501の周囲であって、ユーザが何か視認する対象に対して視線を向けている方向にはHMD300からの画面が表示されず、その他の方向にHMD300からの画面が表示されることになる。そのため、たとえば本を視認しながらや、キーボードを操作しながら表示画面を確認する、といったユーザの操作を妨げることなく表示画面501を仮想的に拡張することが可能となる。
【0088】
なお、上の順位の決定方法は一例であって、他の考え方に基づくものであってもよい。すなわち、視認量がしきい値よりも大きい表示候補位置の順位ほど高く特定するようにしてもよい。この場合、たとえばユーザが本を視認しながらや、キーボードを操作しながら表示画面を確認する場合に、視線を他の位置に変えることなくその操作をしながらHMD300からの画面を視認することが可能となり、ユーザによっては操作性が高まる場合もある。
【0089】
<実施例2>
第2の実施例でPC100は、上述のユーザの視線の替りに、図示しないキーボードからの入力を利用して表示候補位置の順位を特定してもよい。
【0090】
すなわち、ディスプレイ500の下側に図示しないキーボードが設置されており、PC100が当該キーボードからの入力を所定期間受け付けている場合には、ユーザがキーボード操作を行なっているものとして、表示画面501の周囲に表示候補位置として特定された表示位置VAD−A、VAD−B、VAD−C、およびVAD−Dのうち、表示画面501の下隣の表示位置VAD−Bを他の表示位置VAD−A、VAD−C、およびVAD−Dよりも順位を低く特定する。
【0091】
これにより、ディスプレイ500の表示画面501の周囲であって、ユーザが図示しないキーボードの操作を行なっている場合には当該キーボードの方向にはHMD300からの画面が表示されず、その他の方向にHMD300からの画面が表示されることになる。そのため、ユーザの操作を妨げることなく表示画面501を仮想的に拡張することが可能となる。
【0092】
なお、上の順位の決定方法は一例であって、他の考え方に基づくものであってもよい。すなわち、キーボードの入力を受け付けている場合には、当該キーボードの位置している表示候補位置の順位を高く特定するようにしてもよい。この場合、ユーザは視線をキーボードから他の位置に変えることなく入力操作をしながらHMD300からの画面を視認することが可能となり、ユーザによっては操作性が高まる場合もある。
【0093】
<実施例3>
第3の実施例でPC100は、上述のように表示画面501の周囲に表示候補位置を特定した後、第1カメラ画像にディスプレイ500以外に含まれるディスプレイの位置に応じて順位を特定して表示位置を決定する。
【0094】
図21は、第3の実施例での、第1カメラ画像の具体例を示す図である。PC100は、たとえば矩形形状をディスプレイ形状として記憶しており、第1カメラ画像から複数の矩形形状が検出されると、より中央に近い位置にある矩形形状の画像をディスプレイ500と特定し、その他の矩形形状の画像をディスプレイ500以外のディスプレイと特定する。
【0095】
他の方法として、各矩形形状の画像を比較することで、最も正面から見た形状となっている矩形形状や、最も大きな矩形形状の画像をディスプレイ500と特定し、その他の矩形形状の画像をディスプレイ500以外のディスプレイと特定するようにしてもよい。
【0096】
このようにディスプレイ500以外のディスプレイが第1カメラ画像から検出された場合、PC100では、表示画面501の周囲に表示候補位置として特定された表示位置のうち、ディスプレイ500以外のディスプレイの属している表示候補位置の順位を他の表示候補位置の順位よりも低く特定する。より好ましくは、ディスプレイ500以外のディスプレイがより多くの面積属している領域に対応した表示候補位置ほど順位を低く特定する。
【0097】
第1カメラ画像が図21のものである場合、表示画面501の周囲に表示候補位置として特定された表示位置VAD−A、VAD−B、VAD−C、およびVAD−Dのうち、表示位置VAD−BおよびVAD−Cはディスプレイ500以外のディスプレイが属しているため、他の表示候補位置である表示位置VAD−AおよびVAD−Dよりも順位を低く特定する。そして、表示するHMD300からの画面の数が2画面と規定されている場合、図22に示されるように、上記ステップS213では、順位の低い表示位置VAD−BおよびVAD−Cは表示位置とは決定されず、これよりも順位の高い2つの表示位置VAD−AおよびVAD−Dが表示位置として決定されることになる。
【0098】
これにより、ディスプレイ500の表示画面501の周囲であって、他のディスプレイが存在している方向にはHMD300からの画面が表示されず、その他の、ディスプレイのない方向にHMD300からの画面が表示されることになる。そのため、ディスプレイ500の他のディスプレイの表示画面にHMD300からの画面が重複して双方の画面が視認し難くなることでユーザの操作性を妨げることなく、表示画面501を仮想的に拡張することが可能となる。
【0099】
なお、上の順位の決定方法は一例であって、他の考え方に基づくものであってもよい。すなわち、ディスプレイ500の他のディスプレイが属する表示候補位置の順位ほど高く特定するようにしてもよい。この場合、たとえばユーザがディスプレイ500の他のディスプレイに表示される画面を確認しながらディスプレイ500の表示画面を確認する場合に、視線を上記他のディスプレイから他の位置に変えることなくその画面を視認しながらHMD300からの画面も視認することが可能となり、ユーザによっては操作性が高まる場合もある。
【0100】
<実施例4>
第4の実施例でPC100は、上述のように表示画面501の周囲に表示候補位置を特定した後、第1カメラ画像に含まれる人の顔の画像の位置に応じて順位を特定して表示位置を決定する。
【0101】
図23は、第4の実施例での、第1カメラ画像の具体例を示す図である。PC100は、一例として、円形あるいは楕円形を人の顔のテンプレートとして記憶しており、当該テンプレートを用いて第1カメラ画像をマッチングする、などの処理によって第1カメラ画像から人の顔の画像を検出することができる。もちろん、他の方法で人の顔の画像を検出するようにしてもよい。
【0102】
このように人の顔の画像が第1カメラ画像から検出された場合、PC100では、表示画面501の周囲に表示候補位置として特定された表示位置のうち、人の顔の画像が属している表示候補位置の順位を他の表示候補位置の順位よりも低く特定する。より好ましくは、人の顔の画像がより多くの面積属している領域に対応した表示候補位置ほど順位を低く特定する。
【0103】
第1カメラ画像が図23のものである場合、表示画面501の周囲に表示候補位置として特定された表示位置VAD−A、VAD−C、およびVAD−Dのうち、表示位置VAD−Dは人の顔の画像が属しているため、他の表示候補位置である表示位置VAD−AおよびVAD−Cよりも順位を低く特定する。そして、表示するHMD300からの画面の数が2画面と規定されている場合、図24に示されるように、上記ステップS213では、順位の低い表示位置VAD−Dは表示位置とは決定されず、これよりも順位の高い2つの表示位置VAD−AおよびVAD−Cが表示位置として決定されることになる。
【0104】
これにより、ディスプレイ500の表示画面501の周囲であって、人の顔のある方向にはHMD300からの画面が表示されず、その他の方向にHMD300からの画面が表示されることになる。そのため、たとえばユーザが、ディスプレイ500越しに他の人と向き合ってディスプレイ500の表示画面を視認しているという使い方において、HMD300からの画面が当該他の人の顔に重複してその画面を視認する際に当該他の人の顔を注目することになる、という事態を避けつつ、表示画面501を仮想的に拡張することが可能となる。
【0105】
なお、上の順位の決定方法は一例であって、他の考え方に基づくものであってもよい。すなわち、人の顔の画像が属する表示候補位置の順位ほど高く特定するようにしてもよい。この場合、たとえばユーザはディスプレイ500越しの当該他の人の顔から視線をはずすことなくHMD300からの画面も視認することが可能となり、ユーザによっては操作性が高まる場合もある。
【0106】
<実施例5>
第5の実施例ではPC100は、上述の人の顔の替りに、第1カメラ画像中のディスプレイ500周囲の画像から文字を検出し、その検出結果を用いて表示候補位置の順位を特定してもよい。
【0107】
すなわち、ディスプレイ500周囲の画像から文字が検出されると、表示画面501の周囲に表示候補位置として特定された表示位置VAD−A、VAD−B、VAD−C、およびVAD−Dのうち、検出された文字の属する表示候補位置の順位を他の表示候補位置の順位よりも低く特定する。
【0108】
これは、たとえば書籍などをディスプレイ500近傍に置いて、当該書籍を参照しながらディスプレイ500を用いた操作を行なっている場合が想定される。
【0109】
たとえばこのような場合に上のように順位が特定されることにより、ディスプレイ500の表示画面501の周囲であって、文字が検出された方向にはHMD300からの画面が表示されず、その他の方向にHMD300からの画面が表示されることになる。そのため、ユーザの操作を妨げることなく表示画面501を仮想的に拡張することが可能となる。
【0110】
なお、上の順位の決定方法は一例であって、他の考え方に基づくものであってもよい。すなわち、ディスプレイ500周囲の画像から文字が検出された場合には、当該文字の属する表示候補位置の順位を高く特定するようにしてもよい。この場合、ユーザは視線を当該文字の印字されている書籍等から他の位置に変えることなくHMD300からの画面を視認することが可能となり、ユーザによっては操作性が高まる場合もある。
【0111】
<実施例6>
第6の実施例でPC100は、上述のように表示画面501の周囲に表示候補位置を特定した後、第1カメラ画像中のディスプレイ500周囲の画像のコントラスト比を利用して順位を特定し、表示位置を決定する。
【0112】
図25は、第6の実施例での、第1カメラ画像の具体例を示す図である。このような撮影画像の入力を受け付けると、PC100は上述と同様にしてディスプレイ500を特定し、その周囲に表示位置VAD−A、VAD−B、VAD−C、およびVAD−Dを特定する。
【0113】
さらに、第6の実施例でPC100は、ディスプレイ500周囲の表示候補位置ごとに、当該領域の画像のコントラスト比を算出する。そして、コントラスト比が予め設定されたしきい値よりも高い領域の属する表示候補位置の順位を他の表示候補位置の順位よりも低く特定する。
【0114】
たとえばディスプレイ500の周囲に書籍などを置いて当該書籍を参照しながらディスプレイ500を用いた操作を行なっている場合など、当該書籍の置かれている位置の属する表示候補位置の画像のコントラスト比が何も置かれていない位置の属する表示候補位置の画像のコントラスト比よりも高くなる。すなわち、このように順位が特定されることにより、図26に示すように、ディスプレイ500の周囲の何も置かれていないエリアや背景が白いエリアや置かれているものが少ないエリアなどにはHMD300からの画面が表示され、その他のエリアにはHMD300からの画面が表示されないことになる。そのため、HMD300からの画面の視認性を高めることができる。
【0115】
<実施例7>
第7の実施例においては、HMD300にセンサの他の例としての、カメラ400に加えて加速度センサが備えられ、当該加速度センサからのセンサ信号がPC100に入力される。PC100は上述のように表示画面501の周囲に表示候補位置を特定した後、HMD300に備えられた加速度センサからのセンサ信号に基づいて当該HMD300を装着したユーザの頭部の傾きを算出し、それに応じて順位を特定して表示位置を決定する。
【0116】
図27は、第7の実施例での、第1カメラ画像と、HMD300を装着したユーザの頭部の傾きと表示画面501との間の関係との第1の具体例を示す図である。
【0117】
PC100は、図27(B)に表わされた撮影画像の入力を受け付けると、上述と同様にしてディスプレイ500を特定し、その周囲に表示位置VAD−A、VAD−BおよびVAD−Dを特定する。
【0118】
その後、PC100はHMD300に備えられた加速度センサからのセンサ信号に基づいて当該HMD300を装着したユーザの頭部の傾きを算出する。図27(A)の例の場合、ユーザの頭部の傾きが概ね垂直方向と算出される。
【0119】
PC100は、HMD300を装着したユーザが頭部を概ね垂直方向にした状態で正面から視認可能な位置にHMD300での画面を表示させるよう、表示候補位置の順位を設定する。
【0120】
すなわち、図27の例の場合、PC100は、当該ユーザが頭部を表示画面501に対して略平行にして表示画面501を視認しているものとして、表示画面501と角度の異なる表示位置VAD−BおよびVAD−Dの順位を表示位置VAD−Aの順位よりも低く特定する。
【0121】
また、他の例として図28(B)に表わされた撮影画像の入力を受け付けると、PC100は上述と同様にしてディスプレイ500を特定し、その周囲に表示位置VAD−A、VAD−CおよびVAD−Dを特定する。
【0122】
その後、PC100はHMD300に備えられた加速度センサからのセンサ信号に基づいて当該HMD300を装着したユーザの頭部の傾きを算出する。図28(A)の例の場合、ユーザの頭部の傾きが垂直方向よりも下向きと算出される。
【0123】
この場合、PC100は、当該ユーザが頭部を表示画面501に対して略平行にして表示画面501を視認しているものとして、頭部を概ね垂直方向にした状態で正面から視認可能な位置を表示画面501の上方と判断する。そして、この場合、PC100は、表示画面501の上方にある表示位置VAD−Dの順位を表示位置VAD−AおよびVAD−Cの順位よりも高く特定する。
【0124】
また、他の例として図29(B)に表わされた撮影画像の入力を受け付けると、PC100は上述と同様にしてディスプレイ500を特定し、その周囲に表示位置VAD−A、VAD−BおよびVAD−Cを特定する。
【0125】
その後、PC100はHMD300に備えられた加速度センサからのセンサ信号に基づいて当該HMD300を装着したユーザの頭部の傾きを算出する。図29(A)の例の場合、ユーザの頭部の傾きが垂直方向よりも上向きと算出される。
【0126】
この場合、PC100は、当該ユーザが頭部を表示画面501に対して略平行にして表示画面501を視認しているものとして、頭部を概ね垂直方向にした状態で正面から視認可能な位置を表示画面501の下方と判断する。そして、この場合、PC100は、表示画面501の下方にある表示位置VAD−Bの順位を表示位置VAD−AおよびVAD−Cの順位よりも高く特定する。
【0127】
このように順位が特定されることにより、HMD300を装着したユーザが頭部を概ね垂直方向にした状態でHMD300による画面を正面から視認可能な位置にHMD300からの画面が表示されることになる。そのため、HMD300を装着したユーザはより自然な姿勢でHMD300からの画面を視認することが可能となり、作業性を向上させることができる。
【0128】
なお、上の説明ではHMD300に加速度センサが備えられ、その検出結果に基づいてPC100がHMD300を装着したユーザの頭部の傾きを算出するものとしている。しかしながら、必ずしも加速度センサは必須ではなく、その他の方法でPC100がHMD300を装着したユーザの頭部の傾きを算出してもよい。他の例としては、上述のように第1カメラ画像から予め記憶しているマーカ画像を検出し、その基本形状からの変化量に基づいてHMD300を装着したユーザの頭部の傾きを算出する方法が挙げられる。
【0129】
<実施例8>
なお、以上の例では、HMD300に設置されたカメラ400からの一つの撮影画像である第1カメラ画像を解析することで表示候補位置を設定し、さらに、それらの順位を決定して、より順位の高い表示候補位置を実際の表示位置と決定するとしている。
【0130】
さらに他の例として、第8の実施例において、HMD300にセンサとしてステレオカメラであるカメラ400が備えられた場合を説明する。この場合、PC100はステレオカメラであるカメラ400からの第1カメラ画像として2つの画像を取得し、これらを解析することで、HMD300からディスプレイ500までの距離および傾きを算出する。
【0131】
さらに、PC100は、上述のようにディスプレイ500の周囲に表示候補位置を設定した上で、検出されたディスプレイ500の周囲にオブジェクトを検出し、HMD300からオブジェクトまでの距離を算出する。
【0132】
ここでの距離の算出方法は特定の方法に限定されるものではない。一例としてPC100は、たとえば国際公開WO01/039513号パンフレットや特開平5−50390号公報、特開平11−66319号公報、などに開示されている、ステレオカメラのカメラ間の視差情報を用いた三角測量の原理を利用して算出することができる。
【0133】
図30は、第8の実施例での、第1カメラ画像の具体例を示す図である。このような撮影画像の入力を受け付けると、PC100は上述と同様にしてディスプレイ500を特定し、その周囲に表示位置VAD−A、VAD−B、およびVAD−Cを特定する。
【0134】
さらに、PC100はディスプレイ500の周囲のオブジェクトとして、ディスプレイ500の上辺、開いている書籍、積まれている書籍群、およびキーボードを検出する。そして、PC100は、それぞれのオブジェクトまでのHMD300からの距離D1,D2,D3,D4を上記方法などを利用して算出する。
【0135】
ここで、図30の例においては、ディスプレイ500の上辺までの距離D1が3463mm、開いている書籍までの距離D2が3281mm、積まれている書籍群までの距離D3が6045mm、およびキーボードまでの距離D4が2850mmと算出されたものとする。この場合、PC100は、HMD300からの距離が予め規定されたしきい値以上であるオブジェクトの属する表示候補位置の順位をそうでない表示候補位置の順位より高く設定する。たとえば、上記しきい値として4000mmが設定されているとすると、この例の場合、積まれている書籍群までの距離D3が上記しきい値よりも大きく、他のオブジェクトまでの距離は上記しきい値よりも小さい。そのため、PC100はしきい値よりも大きいオブジェクトの属する表示位置VAD−Aの順位を、他の表示位置VAD−BおよびVAD−Cの順位よりも高く特定する。これにより、図31に示されるように、順位の高い表示位置VAD−Aが表示位置として決定されることになる。
【0136】
このように順位が特定されることにより、ディスプレイ500の周囲の空間的にスペースの空いている位置にHMD300からの画面が表示されることになる。そのため、HMD300からの画面が背後のオブジェクトと重なって視認し難くなることを抑え、HMD300からの画面の視認性を高めることができる。
【0137】
他の例として、PC100はステレオカメラからの画像を用いてディスプレイ500周辺の平面性を算出し、検出された平面部分の属する表示候補位置の順位を他の表示候補位置の順位よりも高く特定するようにしてもよい。
【0138】
なお、上の説明ではHMD300にセンサとしてステレオカメラが設けられ、PC100が当該ステレオカメラでの撮影画像を用いてオブジェクトまでの距離を算出するものとしているが、必ずしもステレオカメラは必須ではなく、その他の方法でPC100がオブジェクトまでの距離を算出してもよい。他の例としては、HMD300にセンサとして赤外線センサなどの距離を測定するためのセンサが設けられ、当該センサでの検出結果に基づいてPC100がオブジェクトまでの距離を算出する方法が挙げられる。
【0139】
<他の例>
なお、以上の例では、第1の実施例〜第8の実施例がそれぞれ説明されているが、説明された動作が組み合わされてもよい。
【0140】
さらに、上述のPC100での動作を実行させるためのプログラムを提供することもできる。このようなプログラムは、コンピュータに付属するフレキシブルディスク、CD−ROM(Compact Disk-Read Only Memory)、ROM(Read Only Memory)、RAM(Random Access Memory)およびメモリカードなどのコンピュータ読取り可能な記録媒体にて記録させて、プログラム製品として提供することもできる。あるいは、コンピュータに内蔵するハードディスクなどの記録媒体にて記録させて、プログラムを提供することもできる。また、ネットワークを介したダウンロードによって、プログラムを提供することもできる。
【0141】
なお、本発明にかかるプログラムは、コンピュータのオペレーティングシステム(OS)の一部として提供されるプログラムモジュールのうち、必要なモジュールを所定の配列で所定のタイミングで呼出して処理を実行させるものであってもよい。その場合、プログラム自体には上記モジュールが含まれずOSと協働して処理が実行される。このようなモジュールを含まないプログラムも、本発明にかかるプログラムに含まれ得る。
【0142】
また、本発明にかかるプログラムは他のプログラムの一部に組込まれて提供されるものであってもよい。その場合にも、プログラム自体には上記他のプログラムに含まれるモジュールが含まれず、他のプログラムと協働して処理が実行される。このような他のプログラムに組込まれたプログラムも、本発明にかかるプログラムに含まれ得る。
【0143】
提供されるプログラム製品は、ハードディスクなどのプログラム格納部にインストールされて実行される。なお、プログラム製品は、プログラム自体と、プログラムが記録された記録媒体とを含む。
【0144】
今回開示された実施の形態はすべての点で例示であって制限的なものではないと考えられるべきである。本発明の範囲は上記した説明ではなくて特許請求の範囲によって示され、特許請求の範囲と均等の意味および範囲内でのすべての変更が含まれることが意図される。
【符号の説明】
【0145】
1,1A,1B 投影システム、11 メモリ、12,22,32,42 通信I/F、23 入力装置、33 投影部、43 第1撮影部、44 第2撮影部、101,201 データ受信部、102,202 データ解析部、103 PC・HMD用データマネージメント部、104 モニタ検出部、105,107 カメラ管理部、106 視線検出部、108 ディスプレイ管理部、109 その他処理部、110,208 データ作成部、111,209 データ送信部、203 入力データ管理部、204 モニタ管理部、205 VAD描画管理部、206 データ保持部、207 その他管理部、400 カメラ、500 ディスプレイ、501,601,602 表示画面。
【特許請求の範囲】
【請求項1】
ディスプレイから規定される位置に画面を投影するための投影システムであって、
投影装置と、
前記ディスプレイと、
前記投影装置から所定位置に設置され、前記投影装置に接続されたカメラと、
前記投影装置に接続されたセンサと、
前記投影装置での投影と前記ディスプレイでの表示とを制御するための制御装置とを備え、
前記制御装置は、
前記投影装置の投影する画面データを生成して前記投影装置に対して送信する処理と、
前記カメラでの撮影画像から前記ディスプレイを検出し、その位置に応じて前記ディスプレイの周囲に前記投影装置からの投影位置の候補を特定する処理と、
前記投影位置の候補に対して前記センサでの検出結果を用いて優先順位を設定する処理と、
前記優先順位に応じて前記投影位置の候補の中から前記投影装置からの投影位置を決定し、前記投影装置に前記投影位置に前記画面データに基づく画面を投影させる処理とを実行する、投影システム。
【請求項2】
前記制御装置は、前記撮影画像における前記ディスプレイの位置の偏りに応じて、前記ディスプレイの周囲に前記投影装置からの投影位置の候補を特定する、請求項1に記載の投影システム。
【請求項3】
前記センサはユーザの視線を検出するためのセンサであって、
前記制御装置は、前記撮影画像における前記ユーザの視線の位置に応じて前記投影位置の候補に対して前記優先順位を設定する、請求項1または2に記載の投影システム。
【請求項4】
前記制御装置に対して情報を入力するための入力装置をさらに備え、
前記制御装置は前記カメラを前記センサとして用い、前記入力装置からの入力を受け付けている場合に、前記撮影画像から検出された前記入力装置の位置に応じて前記投影位置の候補に対して前記優先順位を設定する、請求項1または2に記載の投影システム。
【請求項5】
前記制御装置は前記カメラを前記センサとして用い、前記撮影画像から検出された前記ディスプレイとは異なるディスプレイの位置に応じて前記投影位置の候補に対して前記優先順位を設定する、請求項1または2に記載の投影システム。
【請求項6】
前記制御装置は前記カメラを前記センサとして用い、前記撮影画像から検出された人の顔の画像の位置に応じて前記投影位置の候補に対して前記優先順位を設定する、請求項1または2に記載の投影システム。
【請求項7】
前記制御装置は前記カメラを前記センサとして用い、前記撮影画像から検出された文字の位置に応じて前記投影位置の候補に対して前記優先順位を設定する、請求項1または2に記載の投影システム。
【請求項8】
前記制御装置は前記カメラを前記センサとして用い、前記撮影画像から検出された前記ディスプレイ周囲の画像のコントラスト比を算出し、前記コントラスト比がしきい値以上である領域を含む前記投影位置の候補ほど低い優先順位を設定する、請求項1または2に記載の投影システム。
【請求項9】
前記投影装置はユーザの頭部に装着可能であり、
前記センサは加速度センサであって、
前記制御装置は、前記加速度センサからのセンサ信号に基づき、前記投影装置から前記投影位置の候補へ向かう方向の水平方向からの傾きが小さくなる前記投影位置の候補ほど高い優先順位を設定する、請求項1または2に記載の投影システム。
【請求項10】
前記センサは前記ディスプレイ周囲のオブジェクトまでの距離を検出するためのセンサであって、
前記制御装置は、前記投影位置の候補のうち、前記投影装置からの距離がしきい値より小さいオブジェクトを含む投影位置の候補ほど低い優先順位を設定する、請求項1または2に記載の投影システム。
【請求項11】
所定位置に画面を投影するための投影装置であって、
当該投影装置から所定位置に設置されたカメラから撮影画像の入力を受け付けるための第1の入力手段と、
当該投影装置に接続されたセンサから検出結果の入力を受け付けるための第2の入力手段と、
画面データに基づく画面を所定位置に投影させるための制御手段とを備え、
前記制御手段は、
前記撮影画像からディスプレイを検出し、その位置に応じて前記ディスプレイの周囲に投影位置の候補を特定する処理と、
前記投影位置の候補に対して前記センサでの検出結果を用いて優先順位を設定する処理と、
前記優先順位に応じて前記投影位置の候補の中から投影位置を決定し、前記投影位置に前記画面データに基づく画面を投影させる処理とを実行する、投影装置。
【請求項12】
ディスプレイから規定される位置に投影装置によって画面を投影させるための投影方法であって、
前記投影装置の投影する画面データを生成するステップと、
前記投影装置から所定位置に設置され、前記投影装置に接続されたカメラから、撮影画像の入力を受け付けるステップと、
前記撮影画像から前記ディスプレイを検出し、その位置に応じて前記ディスプレイの周囲に前記投影装置からの投影位置の候補を特定するステップと、
前記投影位置の候補に対して前記投影装置に接続されたセンサでの検出結果を用いて優先順位を設定するステップと、
前記優先順位に応じて前記投影位置の候補の中から前記投影装置からの投影位置を決定し、前記投影装置に前記投影位置に前記画面データに基づく画面を投影させるステップとを備える、投影方法。
【請求項13】
ディスプレイから規定される位置に投影装置によって画面を投影させる制御をコンピュータに実行させるためのプログラムあって、
前記投影装置の投影する画面データを生成するステップと、
前記投影装置から所定位置に設置され、前記投影装置に接続されたカメラから、撮影画像の入力を受け付けるステップと、
前記撮影画像から前記ディスプレイを検出し、その位置に応じて前記ディスプレイの周囲に前記投影装置からの投影位置の候補を特定するステップと、
前記投影位置の候補に対して前記投影装置に接続されたセンサでの検出結果を用いて優先順位を設定するステップと、
前記優先順位に応じて前記投影位置の候補の中から前記投影装置からの投影位置を決定し、前記投影装置に前記投影位置に前記画面データに基づく画面を投影させるステップとを前記コンピュータに実行させる、制御プログラム。
【請求項1】
ディスプレイから規定される位置に画面を投影するための投影システムであって、
投影装置と、
前記ディスプレイと、
前記投影装置から所定位置に設置され、前記投影装置に接続されたカメラと、
前記投影装置に接続されたセンサと、
前記投影装置での投影と前記ディスプレイでの表示とを制御するための制御装置とを備え、
前記制御装置は、
前記投影装置の投影する画面データを生成して前記投影装置に対して送信する処理と、
前記カメラでの撮影画像から前記ディスプレイを検出し、その位置に応じて前記ディスプレイの周囲に前記投影装置からの投影位置の候補を特定する処理と、
前記投影位置の候補に対して前記センサでの検出結果を用いて優先順位を設定する処理と、
前記優先順位に応じて前記投影位置の候補の中から前記投影装置からの投影位置を決定し、前記投影装置に前記投影位置に前記画面データに基づく画面を投影させる処理とを実行する、投影システム。
【請求項2】
前記制御装置は、前記撮影画像における前記ディスプレイの位置の偏りに応じて、前記ディスプレイの周囲に前記投影装置からの投影位置の候補を特定する、請求項1に記載の投影システム。
【請求項3】
前記センサはユーザの視線を検出するためのセンサであって、
前記制御装置は、前記撮影画像における前記ユーザの視線の位置に応じて前記投影位置の候補に対して前記優先順位を設定する、請求項1または2に記載の投影システム。
【請求項4】
前記制御装置に対して情報を入力するための入力装置をさらに備え、
前記制御装置は前記カメラを前記センサとして用い、前記入力装置からの入力を受け付けている場合に、前記撮影画像から検出された前記入力装置の位置に応じて前記投影位置の候補に対して前記優先順位を設定する、請求項1または2に記載の投影システム。
【請求項5】
前記制御装置は前記カメラを前記センサとして用い、前記撮影画像から検出された前記ディスプレイとは異なるディスプレイの位置に応じて前記投影位置の候補に対して前記優先順位を設定する、請求項1または2に記載の投影システム。
【請求項6】
前記制御装置は前記カメラを前記センサとして用い、前記撮影画像から検出された人の顔の画像の位置に応じて前記投影位置の候補に対して前記優先順位を設定する、請求項1または2に記載の投影システム。
【請求項7】
前記制御装置は前記カメラを前記センサとして用い、前記撮影画像から検出された文字の位置に応じて前記投影位置の候補に対して前記優先順位を設定する、請求項1または2に記載の投影システム。
【請求項8】
前記制御装置は前記カメラを前記センサとして用い、前記撮影画像から検出された前記ディスプレイ周囲の画像のコントラスト比を算出し、前記コントラスト比がしきい値以上である領域を含む前記投影位置の候補ほど低い優先順位を設定する、請求項1または2に記載の投影システム。
【請求項9】
前記投影装置はユーザの頭部に装着可能であり、
前記センサは加速度センサであって、
前記制御装置は、前記加速度センサからのセンサ信号に基づき、前記投影装置から前記投影位置の候補へ向かう方向の水平方向からの傾きが小さくなる前記投影位置の候補ほど高い優先順位を設定する、請求項1または2に記載の投影システム。
【請求項10】
前記センサは前記ディスプレイ周囲のオブジェクトまでの距離を検出するためのセンサであって、
前記制御装置は、前記投影位置の候補のうち、前記投影装置からの距離がしきい値より小さいオブジェクトを含む投影位置の候補ほど低い優先順位を設定する、請求項1または2に記載の投影システム。
【請求項11】
所定位置に画面を投影するための投影装置であって、
当該投影装置から所定位置に設置されたカメラから撮影画像の入力を受け付けるための第1の入力手段と、
当該投影装置に接続されたセンサから検出結果の入力を受け付けるための第2の入力手段と、
画面データに基づく画面を所定位置に投影させるための制御手段とを備え、
前記制御手段は、
前記撮影画像からディスプレイを検出し、その位置に応じて前記ディスプレイの周囲に投影位置の候補を特定する処理と、
前記投影位置の候補に対して前記センサでの検出結果を用いて優先順位を設定する処理と、
前記優先順位に応じて前記投影位置の候補の中から投影位置を決定し、前記投影位置に前記画面データに基づく画面を投影させる処理とを実行する、投影装置。
【請求項12】
ディスプレイから規定される位置に投影装置によって画面を投影させるための投影方法であって、
前記投影装置の投影する画面データを生成するステップと、
前記投影装置から所定位置に設置され、前記投影装置に接続されたカメラから、撮影画像の入力を受け付けるステップと、
前記撮影画像から前記ディスプレイを検出し、その位置に応じて前記ディスプレイの周囲に前記投影装置からの投影位置の候補を特定するステップと、
前記投影位置の候補に対して前記投影装置に接続されたセンサでの検出結果を用いて優先順位を設定するステップと、
前記優先順位に応じて前記投影位置の候補の中から前記投影装置からの投影位置を決定し、前記投影装置に前記投影位置に前記画面データに基づく画面を投影させるステップとを備える、投影方法。
【請求項13】
ディスプレイから規定される位置に投影装置によって画面を投影させる制御をコンピュータに実行させるためのプログラムあって、
前記投影装置の投影する画面データを生成するステップと、
前記投影装置から所定位置に設置され、前記投影装置に接続されたカメラから、撮影画像の入力を受け付けるステップと、
前記撮影画像から前記ディスプレイを検出し、その位置に応じて前記ディスプレイの周囲に前記投影装置からの投影位置の候補を特定するステップと、
前記投影位置の候補に対して前記投影装置に接続されたセンサでの検出結果を用いて優先順位を設定するステップと、
前記優先順位に応じて前記投影位置の候補の中から前記投影装置からの投影位置を決定し、前記投影装置に前記投影位置に前記画面データに基づく画面を投影させるステップとを前記コンピュータに実行させる、制御プログラム。
【図1】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図12】
【図13】
【図14】
【図15】
【図16】
【図17】
【図18】
【図19】
【図20】
【図21】
【図22】
【図23】
【図24】
【図25】
【図26】
【図27】
【図28】
【図29】
【図30】
【図31】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図12】
【図13】
【図14】
【図15】
【図16】
【図17】
【図18】
【図19】
【図20】
【図21】
【図22】
【図23】
【図24】
【図25】
【図26】
【図27】
【図28】
【図29】
【図30】
【図31】
【公開番号】特開2012−233963(P2012−233963A)
【公開日】平成24年11月29日(2012.11.29)
【国際特許分類】
【出願番号】特願2011−100977(P2011−100977)
【出願日】平成23年4月28日(2011.4.28)
【出願人】(000001270)コニカミノルタホールディングス株式会社 (4,463)
【Fターム(参考)】
【公開日】平成24年11月29日(2012.11.29)
【国際特許分類】
【出願日】平成23年4月28日(2011.4.28)
【出願人】(000001270)コニカミノルタホールディングス株式会社 (4,463)
【Fターム(参考)】
[ Back to top ]