以下添付図面を参照して、本発明を好適な実施形態に従って詳細に説明する。
[第1の実施形態]
図1は、本実施形態に係るシステムの機能構成を示すブロック図である。同図に示す如く、本実施形態に係るシステムは、撮像装置101と画像処理装置102とで構成されている。
先ず、撮像装置101について説明する。本実施形態では、撮像装置101はビデオシースルー型HMDであるものとする。
撮像ユニット103は、ステレオ画像を生成するための右目用、左目用の二組の撮像素子と光学系および後段の画像処理を行うためのDSP(Digital Signal Processor)から構成されており、撮像装置101を頭部に装着した観察者の視点から見える現実空間の動画像を撮像する。撮像した各フレームの画像(現実空間画像)は、後段のスイッチ104と位置計測部106に転送される。
スイッチ104は、撮像ユニット103から順次送出される各フレームの画像をフレームバッファ105への送出を切り替える。この送出の切り替えについては後述する。
フレームバッファ105は、スイッチ104によってフレームバッファ105への送出が選択された場合にのみ、撮像ユニット103からスイッチ104を介して順次送出される各フレームの画像を順次受け、保持する。また、フレームバッファ105は、後述する合成画像生成処理の遅延を考慮して、数フレーム分の撮像画像が左右の撮像ユニット103に対応して格納される。
位置計測部106は、後述する処理により、自身の位置姿勢を計測する。なお、予め位置計測部106自身と観察者の視点との位置姿勢関係(バイアス)を求めておけば、位置計測部106が求めた結果にこのバイアスを加えることで、観察者の視点の位置姿勢を求めることができる。以下の説明ではこのバイアスを加える処理については説明を省略し、位置計測部106(後述する位置計測部116も同様)が求めるものは観察者の視点の位置姿勢であるとする。なお、位置計測部106による位置姿勢計測処理については後述する。
ネゴシエーション部107は、画像処理装置102とのネゴシエーションを行う。ネゴシエーション部107による処理については後述する。
機能選択部108は、撮像装置101と画像処理装置102との間のネゴシエーションの結果に基づいて、後述する様々な選択指示を行う。
I/F109は、撮像装置101と画像処理装置102との間のデータ通信を行う際に、インターフェースとして機能するものであり、これについては、画像処理装置102側に設けられているI/F113についても同様である。なお、何れのI/F109、113についても、リアルタイム性が求められ、かつ大容量の伝送が可能な通信規格を採用することが望ましい。有線系であれば、USBやIEEE1394のメタル線、GigabitEthernet(登録商標)等の光ファイバが使用される。無線系であれば、IEEE802.11のワイヤレスLAN、IEEE802.15のワイヤレスPAN規格等に準拠した高速無線通信が使用される。ここでは有線系であれば光ファイバ、無線系であればUWB(Ultra Wide Band)を想定している。光ファイバの伝送帯域は数Gbps、UWBは数百Mbpsである。
セレクタ110は、合成画像生成処理を撮像装置101側で行う場合には、I/F109を介して画像処理装置102から受けたCG画像(仮想空間の画像)を画像合成部111に転送する。一方、合成画像生成処理を画像処理装置102側で行う場合には、I/F109を介して画像処理装置102から受けた合成画像を表示ユニット112に転送する。
画像合成部111は、セレクタ110からCG画像を受けると、この受けたCG画像と、フレームバッファ105に保持されている現実空間の画像とを合成した合成画像(MR画像)を生成する。合成画像の生成方法については様々なものが考えられるが、ここでは、クロマキー処理とαチャネルによる合成処理を想定している。様々な画像合成処理については後述する。
表示ユニット112は、合成画像を表示するためのものであり、撮像ユニット103と同様に、右目用、左目用の二組の表示デバイスと光学系から構成される。表示ユニット112には、小型の液晶ディスプレイやMEMS(Micro Electro Mechanical Systems)による網膜スキャンタイプのデバイスが使用される。
次に、画像処理装置102について説明する。画像処理装置102には、一般のPC(パーソナルコンピュータ)やWS(ワークステーション)等の装置が適用可能である。
ネゴシエーション部114は、撮像装置101とのネゴシエーションを行う。ネゴシエーション部114による処理については後述する。
機能選択部115は、撮像装置101と画像処理装置102との間のネゴシエーションの結果に基づいて、後述する様々な選択指示を行う。
位置計測部116は、基本的には位置計測部106と同様の動作を行うものである。位置計測部116による位置姿勢計測処理については後述する。
コンテンツDB117は、仮想空間を構成する各仮想物体に係るデータを保持するDB(データベース)である。仮想物体に係るデータには、例えば、仮想物体の配置位置姿勢や、その動作則を示すデータ、仮想物体がポリゴンでもって構成されている場合には、各ポリゴンの法線ベクトルデータやその色データ、ポリゴン構成している各頂点の座標位置データ等が含まれている。また、仮想物体にテクスチャマッピングを施す場合には、テクスチャデータもまた含まれる。
CG描画部118は、コンテンツDB117に保持されているそれぞれの仮想物体に係るデータを用いて、それぞれの仮想物体を仮想空間中に配置し、仮想空間を形成する。そして、形成した仮想空間を、観察者の視点から見た場合に見える画像(CG画像)を生成する。所定の位置姿勢を有する視点から見える仮想空間の画像を生成する処理については周知であるので、これに関する詳細な説明は省略する。
画像合成部119は、I/F113を介して撮像装置101から受けた撮像画像と、CG描画部118が生成したCG画像とを合成した合成画像を生成する。
セレクタ120は、合成画像生成処理を画像処理装置102側で行う場合には、画像合成部119が生成した合成画像をI/F113を介して撮像装置101に転送する。一方、合成画像生成処理を撮像装置101側で行う場合には、CG描画部118が生成したCG画像をI/F113を介して撮像装置101に転送する。
図2は、撮像装置101が有する位置計測部106の詳細な構成を示すブロック図である。
201はセレクタである。セレクタ201は、撮像ユニット103から受けた現実空間画像を縮小処理部202、輝度変換部203、最終段の出力を選択するセレクタ209の何れかに送出する。
202は縮小処理部である。縮小処理部202は、セレクタ201を介して現実空間画像を受けた場合には、この受けた画像を縮小する処理を行う。一番単純な縮小処理は、ライン、画素とも周期的に間引く0次の解像度変換であるが、特にここではその次数については問わない。縮小するサイズについては、画像処理装置102とのネゴシエーションによって決定する。
203は輝度変換部である。輝度変換部203は、RGBのカラー画像を輝度信号のみを持つ画像に変換する。即ち、セレクタ201を介して現実空間画像を受けた場合には、この受けた画像の輝度画像を生成することになる。輝度変換部203が行う処理は、RGBのカラー信号のうち、G成分をそのまま選択出力する処理であっても良いし、色表現変換によってRGB画像をYUVまたはYCC等の輝度と色差の信号に変換し、そのうちの輝度信号を抽出する処理であっても良い。仮に一画素あたりRGB各8ビット、計24ビットのデータ量の場合は、輝度信号は8ビットとなり、データ量としては三分の一に削減される。
204は二値化処理部である、二値化処理部204は、多値の輝度信号を任意のしきい値によって0と1である二値の信号に変換する。仮に入力データである輝度データを8ビットとすると、出力信号である二値化データは1ビットとなり、データ量としては八分の一に削減される。RGBのカラー画像である現実空間画像のままで送信される場合と比べると、データ量は二十四分の一となる。
205は、マーカ抽出部である、マーカ抽出部205は、セレクタ201に入力された現実空間画像中にマーカが存在する場合には、このマーカを抽出する処理を行う。マーカ抽出部205が行う処理について、詳しくは後述する。
206は収束演算部である。収束演算部206は、マーカ抽出部205が1以上のマーカを抽出した場合には、その位置を精度よく算出するための繰り返し演算処理を行う。この演算処理の結果得られるのが、観察者の視点の位置姿勢である。なお、現実空間画像中にマーカが含まれない場合であっても、マーカを抽出した時点の位置姿勢を基準に、相対的な移動量である加速度や角速度を他のセンサ情報によって補うことで精度良く位置姿勢を算出することが可能となる。一般に、画像中に写っているマーカ(指標)を用いて、画像を撮像した撮像装置の位置姿勢を求める技術については周知の技術である。
207は、ジャイロセンサである。ジャイロセンサ207は、三軸の加速度、および三軸の角速度、場合によっては自身の絶対的な方位を把握する磁気方位センサであるコンパスを内蔵した、三次元位置姿勢検出センサである。ここではそれらを総称してジャイロセンサと言っている。ジャイロセンサ以外の磁気センサやRF−ID等を用いてHMD使用者の位置姿勢を相対的または絶対的に把握する構成でも構わない。
208は制御/データ補正部である。制御/データ補正部208は、三次元位置姿勢把握他のためのジャイロセンサ207の制御を行い、ジャイロセンサ207からの出力信号を補正する。なお、ジャイロセンサ207、及び制御/データ補正部208の機能は補足的なものであるので、位置計測部必須の機能ではないが、現実空間画像中のマーカや後述する自然特徴だけでは限界もあるため、搭載しておくことが望ましい。
209はセレクタである。セレクタ209は、セレクタ201に入力された現実空間画像、縮小処理部202による縮小画像、輝度変換部203による輝度画像、二値化処理部204による二値画像、マーカ抽出部205による抽出されたマーカに係るマーカ情報、収束演算部206により求めた観察者の視点の位置姿勢、のうち、画像処理装置102に送信する対象を選択し、I/F109を介して画像処理装置102に送信する。選択信号による選択指示は、上述の機能選択部108によって行われる。
図3は、画像処理装置102が有する位置計測部116の詳細な構成を示すブロック図である。
301は、セレクタである。セレクタ301は、I/F113を介して撮像装置101から受信したデータの種類、撮像装置101とのネゴシエーションの結果に基づいて、受けたデータの出力先を切り替える。セレクタ301は、撮像装置101から現実空間画像を受けると、これを輝度変換部303に転送する。縮小画像を受けた場合には、これを拡大処理部302に転送する。輝度画像を受けると、これを二値化処理部304に転送する。二値画像を受けると、これをマーカ抽出部305に転送する。マーカ情報を受けると、これを収束演算部306に転送する。位置姿勢が入力されると、これをセレクタ307に転送する。
302は拡大処理部である。拡大処理部302は、撮像装置101側で縮小された画像を拡大する処理を行う。一番単純な拡大処理方法は、ライン、画素とも同一の値で補間する0次の解像度変換である。これについても特にその次数は問わない。なお、拡大サイズは、合成画像を生成するために必要なサイズとなる。
303は輝度変換部、304は二値化処理部、305はマーカ抽出部、306は収束演算部である。輝度変換部303,二値化処理部304、マーカ抽出部305、収束演算部306のそれぞれは、撮像装置101側における輝度変換部203、二値化処理部204、マーカ抽出部205、収束演算部206と同様の動作を行う。また、輝度変換部303,二値化処理部304、マーカ抽出部305、収束演算部306のそれぞれにおける処理の内容は輝度変換部203、二値化処理部204、マーカ抽出部205、収束演算部206におけるそれぞれのものと同じであったとしても、最新の処理アルゴリズムを用いて処理時間の短縮や精度の向上を実現することは可能である。
307はセレクタである。セレクタ307は、撮像装置101側で算出された位置姿勢、若しくは収束演算部306によって算出された位置姿勢の何れかを選択して出力する。選択信号による選択指示は、上述の機能選択部115によって行われる。
図30は、画像処理装置102に適用可能なコンピュータのハードウェア構成を示すブロック図である。
3101はCPUで、RAM3102やROM3103に格納されているプログラムやデータを用いて、コンピュータ全体の制御を行うと共に、本コンピュータを適用した画像処理装置102が行う後述の各処理を実行する。
3102はRAMで、外部記憶装置3106からロードされたプログラムやデータ、I/F3107を介して外部(本実施形態の場合、撮像装置101)から受信したデータ等を一時的に記憶するためのエリアを有する。また、CPU3101が各種の処理を実行する際に用いるワークエリアも有する。即ち、RAM3102は、各種のエリアを適宜提供することができる。
3103はROMで、本コンピュータの設定データやブートプログラム等を格納する。
3104は操作部で、キーボードやマウスなどにより構成されており、本コンピュータの操作者が操作することで、各種の指示をCPU3101に対して入力することができる。
3105は表示部で、CRTや液晶画面等により構成されており、CPU3101による処理結果を画像や文字などでもって表示することができる。
外部記憶装置3106は、ハードディスクドライブ装置に代表される大容量情報記憶装置であり、ここにはOS(オペレーティングシステム)や、画像処理装置102が行う後述各処理をCPU3101に実行させるためのプログラムやデータが保存されている。これらのプログラムやデータは、CPU3101による制御に従って適宜RAM3102にロードされ、CPU3101による処理対象となる。
I/F3107は、図1に示したI/F113に相当するものであり、撮像装置101とのデータ通信を行うためのインターフェースとして機能する。
3108は上述の各部を繋ぐバスである。
図31は、撮像装置101のハードウェア構成を示すブロック図である。
3201は撮像ユニット103に相当するものである。3202は表示ユニット112に相当するものである。3203はRAMで、CPU3205が各種の処理を行うために用いるワークエリアや、I/F3206を介して外部(ここでは画像処理装置102)から受信したデータを一時的に記憶するためのエリア等を有する。
3204はROMで、撮像装置101が行う後述の各処理をCPU3205に実行させるためのプログラムやデータが格納されている。
3205はCPUで、撮像装置101が行う後述の各処理を実行する。
I/F3206は、図1に示したI/F109に相当するものである。
3207は上述の各部を繋ぐバスである。
図4は、撮像装置101により撮像された現実空間画像と画像処理装置102が生成したCG画像とを合成した合成画像を、撮像装置101が有する表示ユニット112に表示するために、それぞれの装置が行う処理のフローチャートである。
なお、同図のフローチャートにおいて、ステップS401〜ステップS411における処理は撮像装置101が行う処理のフローチャートであるが、ステップS401〜ステップS411における処理を撮像装置101のCPU3205に実行させるためのプログラムやデータはROM3204に格納されている。従ってCPU3205がこのプログラムやデータを用いて処理を実行することで、撮像装置101は、ステップS401〜ステップS411の処理を実行することになる。
また、同図のフローチャートにおいて、ステップS412〜ステップS419における処理は画像処理装置102が行う処理のフローチャートであるが、ステップS412〜ステップS419における処理を画像処理装置102のCPU3101に実行させるためのプログラムやデータは外部記憶装置3106に格納されている。そして、CPU3101がこのプログラムやデータをRAM3102にロードし、これを用いて処理を実行することで、画像処理装置102は、ステップS412〜ステップS419の処理を実行することになる。
先ず、ステップS401では、CPU3205は、画像処理装置102とのネゴシエーションを行う。一方、画像処理装置102側においてもステップS412で同様の処理を行う。
このネゴシエーションでは、最終的に表示ユニット3202の表示画面上に合成画像を表示させるために、撮像装置101に行わせる第1の処理、画像処理装置102に行わせる第2の処理を決定する。ここで、第1の処理、第2の処理とは、視点の位置姿勢を求めるための処理(視点位置姿勢計算処理)、現実空間画像とCG画像との合成画像を生成する処理(合成画像生成処理)のいずれかもしくはその両方である。すなわち、視点位置姿勢計算処理と合成画像生成処理の両方を撮像装置101もしくは画像処理装置102に行わせても良いし、一方を撮像装置101に行わせ、他方を画像処理装置102に行わせても良い。本ステップにおける処理の詳細については後述する。
次にステップS402では、撮像ユニット3201はCPU3205による制御に従って現実空間の画像を撮像する。撮像した画像はRAM3203上に取得される。
次にステップS403では、ステップS401におけるネゴシエーションの結果、合成画像の生成を撮像装置101が行うものと決定したのか否かを判断する。この判断の結果、合成画像の生成を画像処理装置102が行うものと決定した場合には処理をステップS405に進める。
一方、撮像装置101が行うものと決定したのであれば処理をステップS404に進める。ステップS404では、ステップS402でRAM3203上に取得した現実空間画像を、RAM3203上に設けられたフレームバッファ105に格納する。
ステップS405では、ステップS401におけるネゴシエーションの結果、視点の位置姿勢を求めるための処理を撮像装置101が行うものと決定したのか否かを判断する。この判断の結果、視点の位置姿勢を求めるための処理を画像処理装置102が行うものと決定した場合には、処理をステップS407に進める。
一方、撮像装置101が行うものと決定したのであれば処理をステップS406に進め、視点の位置姿勢を求めるための処理を行う。本ステップでは、視点の位置姿勢、そして場合によってはこの位置姿勢を求めるための補助データを求める。本ステップにおける処理ではこの他の処理をも行い、その詳細については後述する。
ステップS407では、画像処理装置102が上記第2の処理を行うために必要なデータを送信する。送信するデータは、ステップS406で求めた視点の位置姿勢(場合によっては更に補助データ)、上記ステップS402で取得した現実空間画像、現実空間画像に基づいて作成する縮小画像、二値画像、輝度画像、マーカ情報のうち何れかであるが、何れを送信するのかは、上記視点位置姿勢計算処理、合成画像生成処理のそれぞれを撮像装置101、画像処理装置102の何れで行うのかによって決まる。本ステップにおけるデータ送信処理について詳しくは後述する。
一方、ステップS413では、画像処理装置102のCPU3101は、上記ステップS407で送信されたデータをI/F3107を介して受信し、RAM3102に取得する。
そしてステップS414では、上記ネゴシエーションの結果、視点の位置姿勢を求めるための処理を画像処理装置102が行うものと決定したのか否かを判断する。この判断の結果、視点の位置姿勢を求めるための処理を撮像装置101が行うものと決定した場合には処理をステップS416に進める。一方、視点の位置姿勢を求めるための処理を画像処理装置102が行うものと決定した場合には、処理をステップS415に進める。
ステップS415では、ステップS413で撮像装置101から受信したデータを用いて、視点の位置姿勢を求めるための処理を行う。本ステップでは、視点の位置姿勢、そして場合によっては補助データを求める。本ステップにおける処理の詳細については後述する。
ステップS416では先ず、ステップS413で受信した位置姿勢(場合によっては更に補助データ)、若しくはステップS415で求めた位置姿勢(場合によっては更に補助データ)を用いて視点の位置姿勢を確定する。一方、外部記憶装置3106内におけるコンテンツDB117から、各仮装物体に係るデータを読み出し、仮想空間中に仮装物体を配置することで、仮想空間を形成する。そして形成した仮想空間を、確定した位置姿勢を有する視点から見た場合に見える画像、即ちCG画像を生成する。
次に、ステップS417では、上記ネゴシエーションの結果、合成画像の生成を画像処理装置102が行うものと決定したのか否かを判断する。この判断の結果、合成画像の生成を撮像装置101が行うものと決定した場合には処理をステップS419に進める。
一方、画像処理装置102が行うものと決定したのであれば処理をステップS418に進める。ステップS418では、上記ステップS413で受信した現実空間画像上に、上記ステップS416で生成したCG画像を重畳させることで、それぞれの画像を合成した合成画像をRAM3102上に生成する。なお、ステップS413で現実空間画像の縮小画像を受信した場合には、これを上述の通りCG画像のサイズに拡大し、拡大した縮小画像上にCG画像を重畳させることで合成画像を生成する。
そしてステップS419では、データを撮像装置101に送信する。送信するデータは、画像処理装置102が行った処理によって異なる。即ち、画像処理装置102側で合成画像生成処理を行った場合には、上記ステップS418で生成した合成画像を撮像装置101に送信する。画像処理装置102側で合成画像生成処理を行っていない場合には、上記ステップS416で生成したCG画像を撮像装置101に送信する。
撮像装置101側ではステップS408で、画像処理装置102から上記ステップS419で送信されたデータを受信し、RAM3203上に取得する。
そしてステップS409では、上記ネゴシエーションの結果、合成画像の生成を撮像装置101が行うものと決定したのか否かを判断する。この判断の結果、合成画像の生成を画像処理装置102が行うものと決定した場合には処理をステップS411に進める。そして、上記ステップS408で画像処理装置102から受信した合成画像を表示ユニット112の表示画面上に表示する為の処理を行う。
一方、撮像装置101が行うものと決定したのであれば処理をステップS410に進める。ステップS410では、上記ステップS404でフレームバッファ105上に格納した現実空間画像上に、上記ステップS410で生成したCG画像を重畳させることで、それぞれの画像を合成した合成画像を生成する。
そしてステップS411では、上記ステップS410で生成した合成画像を表示ユニット112の表示画面上に表示する為の処理を行う。
図5は、上記ステップS406における処理の詳細を示すフローチャートである。
先ずステップS501では、現実空間画像に対して解像度変換を行い、その結果、この現実空間画像の縮小画像を生成するか否かを判断する。生成しない場合には処理をステップS503に進める。一方、生成するのであれば処理をステップS502に進め、CPU3205は、上記縮小処理部202として機能し、上記ステップS402で取得した現実空間画像を縮小した縮小現実空間画像を生成する。
ステップS503では、CPU3205は輝度変換部203として機能し、上記ステップS402で取得した現実空間画像、またはステップS502で縮小した縮小現実空間画像の輝度画像を生成する。
ステップS504では、CPU3205は二値化処理部204として機能し、上記ステップS503で生成した輝度画像に対して二値化処理を行い、二値画像を生成する。
ステップS505では、CPU3205はマーカ抽出部205として機能し、上記ステップS504で生成した二値画像からマーカを抽出する。
ステップS506では、CPU3205は収束演算部206として機能し、上記ステップS505で抽出したマーカの位置を用いて、直接解法による収束演算で精度良く演算する。これにより、視点の位置姿勢、場合によってはその補助データを求める。
そして、以上の各ステップで求めた各データのうち、何れかが画像処理装置102に対して送信されることになる。
図6は、上記ステップS415における処理の詳細を示すフローチャートである。
先ずステップS601では、上記ネゴシエーションの結果、合成画像の生成を画像処理装置102側で行うと決定したのか否かを判断する。この判断の結果、合成画像の生成を撮像装置101側で行うと決定している場合には、処理をステップS604に進める。
一方、合成画像の生成を画像処理装置102側で行うと決定している場合には、処理をステップS602に進める。
ステップS602では、ステップS413で受信した画像が縮小画像であるか否かを先ず判断する。受信した画像が縮小画像である場合にはこの縮小画像に対して解像度変換を行い、この縮小画像を拡大することで、合成対象のCG画像とサイズを同じにする必要がある。従って、本ステップでは、受信した画像のサイズが、合成対象のCG画像のサイズよりも小さいのであれば、この受信した画像に対する拡大処理が必要であると判断する。
この判断の結果、拡大しないのであれば、処理をステップS604に進める。一方、拡大するのであれば、処理をステップS603に進める。ステップS603では、縮小画像を拡大することで、合成対象のCG画像とサイズを同じにする。この拡大処理については上述の通りである。
ステップS604では、ステップS603で拡大された画像、若しくはステップS413で受信した画像を用いて、視点の位置姿勢、場合によってはその補助データを求める。本ステップにおける処理は基本的には、上記ステップS503〜S506における処理と同様にして行う。
図7は、上記ステップS401,S412におけるネゴシエーションの処理における撮像装置101と画像処理装置102との通信状態を示す図である。
同図(a)は、視点の位置姿勢を求めるための処理を撮像装置101、画像処理装置102の何れ側で行うのかを判断すると共に、その判断結果に応じたモードを設定するためのネゴシエーションの流れを示している。なお、同図に示したネゴシエーションの流れは、画像処理装置102が主導権を有している。
先ず、画像処理装置102は、自身に接続されている装置を把握すべく、撮像装置101に対して、デバイスIDを要求する。撮像装置101はこの要求を受けると、自身のデバイスIDを画像処理装置102に対して送信する。ここで、デバイスIDを参照することで、このデバイスIDを有する能力が把握できるような対応表データを画像処理装置102が有している場合には、後述するモード設定処理を行う。
次に、画像処理装置102は、位置姿勢計測処理の為に必要な機能の能力について撮像装置101に問い合わせる。これにより、撮像装置101は、この機能に対する自身の能力についての詳細な情報を画像処理装置102に返信する。
以上の処理により、画像処理装置102は、位置姿勢計測処理を行うために必要な機能について撮像装置101の能力を把握することができる。把握する能力については、例えば、撮像装置101、画像処理装置102双方の位置計測機能、装置間のI/Fの伝送帯域や伝送媒体の種類、採用する位置計測アルゴリズムの種類や更新時期等がある。従って、画像処理装置102はこの把握した内容に基づいて、位置姿勢計測処理を撮像装置101、画像処理装置102の何れで行うのかを定めるモードを設定する。より具体的には、一連の位置姿勢計測処理において視点の位置姿勢を求めるための前処理、この前処理で用意された情報を用いて実際に視点の位置姿勢を求める処理のそれぞれを撮像装置101、画像処理装置102の何れが担当するのかを定めるモードを設定する。
従って、視点の位置姿勢を求めるための処理以外に、合成画像生成処理についても、撮像装置101、画像処理装置102の何れで行うのかを決定する処理とは、一方の装置で一方の処理全部を行い、他方の装置で他方の処理全部を行うことを決定する以外にも、一方の処理のうち、最終的に求める対象を得るために行う前処理と、この前処理で得られた情報を用いて最終的に対象を求める後処理とをそれぞれ、撮像装置101、画像処理装置102の何れかで行うのかを決定することも含む。
モードが設定されると、設定されたモードは撮像装置101にも通知されるので、撮像装置101、画像処理装置102はそれぞれ、設定されたモードに応じて割り当てられた処理を行う。
一方、図7(b)は、視点の位置姿勢を求めるための処理を撮像装置101、画像処理装置102の何れ側で行うのかを判断すると共に、その判断結果に応じたモードを設定するためのネゴシエーションの流れを示している。なお、同図に示したネゴシエーションの流れは、撮像装置101が主導権を有している。従って、同図に示した流れでは、デバイスID取得のタイミングは変わらないものの、以後の要求や設定は撮像装置101側が主体的に行う。なお、どちらが主導権を握って設定を行うかを含めてネゴシエーションを行う構成にしても構わない。
図8は、上記設定モードに応じて規定される、撮像装置101が画像処理装置102に送信するデータと、画像処理装置102が行う処理内容と、合成画像生成処理を行う装置と、の対応関係を示す表の構成例を示す図である。
同図の表によれば、上記ネゴシエーションによりモードとして「1」が設定されると、撮像装置101は、現実空間画像(撮像画像データ)を画像処理装置102に送信する。画像処理装置102はこの現実空間画像に基づいて輝度画像を生成し、この輝度画像に基づいて二値画像を生成し、この二値画像に基づいてマーカ情報を抽出し、抽出したマーカ情報を用いて、視点の位置姿勢を求める。そしてこの視点の位置姿勢に応じて見える仮想空間の画像(CG画像)を生成し、現実空間画像と合成することで合成画像を生成する。
また、モードとして「2」が設定されると、撮像装置101は、現実空間画像(撮像画像データ)と共に、補助データを画像処理装置102に送信する。画像処理装置102はこの現実空間画像に基づいて輝度画像を生成し、この輝度画像に基づいて二値画像を生成し、この二値画像に基づいてマーカ情報を抽出し、抽出したマーカ情報を用いて、視点の位置姿勢を求める。また、補助データを用いて求めた位置姿勢データを補正したりする。そしてこの視点の位置姿勢に応じて見える仮想空間の画像(CG画像)を生成し、現実空間画像と合成することで合成画像を生成する。
また、モードとして「3」が設定されると、撮像装置101は、現実空間画像の縮小画像を生成し、画像処理装置102に送信する。画像処理装置102はこの縮小画像を拡大し、拡大した画像を用いて、視点の位置姿勢を求めると共に、拡大した画像とCG画像との合成処理を行う。
また、モードとして「4」が設定されると、撮像装置101は、現実空間画像の縮小画像を生成し、補助データと共に画像処理装置102に送信する。画像処理装置102はこの縮小画像を拡大し、拡大した画像と補助データとを用いて、視点の位置姿勢を求めると共に、拡大した画像とCG画像との合成処理を行う。
モード「3」、「4」を設定すると、合成画像生成処理の際に、縮小画像を拡大した画像をCG画像との合成処理に用いるので、結果として得られる合成画像の画質はモード「1」、「2」を選択した場合と比べて劣ることになる。しかし、縮小画像は元の現実空間画像よりもデータ量が小さいことから、画像処理装置102への転送にかかる負担は、現実空間画像の転送にかかる負担よりは軽減される。
モード「5」〜「9」は、合成画像生成処理を撮像装置101側で行わせると共に、視点の位置姿勢を求めるための処理の一部若しくは全部を画像処理装置102に行わせるモードである。
モード「5」が設定されると、撮像装置101は現実空間画像の縮小画像を生成し、画像処理装置102に送信する。従って画像処理装置102はこの縮小画像を拡大した拡大画像を生成する。そしてこの拡大画像に基づいて輝度画像を生成し、この輝度画像に基づいて二値画像を生成し、この二値画像に基づいてマーカ情報を抽出し、抽出したマーカ情報を用いて、視点の位置姿勢を求める。
モード「6」が設定されると、撮像装置101は現実空間画像の輝度画像を生成する。そして生成した輝度画像を画像処理装置102に送信する。従って画像処理装置102はこの輝度画像に基づいて二値画像を生成し、この二値画像に基づいてマーカ情報を抽出し、抽出したマーカ情報を用いて、視点の位置姿勢を求める。
モード「7」が設定されると、撮像装置101は現実空間画像の二値画像を生成する。そして生成した二値画像を画像処理装置102に送信する。従って画像処理装置102は、この二値画像に基づいてマーカ情報を抽出し、抽出したマーカ情報を用いて、視点の位置姿勢を求める。
モード「8」が設定されると、撮像装置101は現実空間画像の二値画像に基づいてマーカ情報を抽出する。そして、抽出したマーカ情報を画像処理装置102に送信する。従って画像処理装置102は、この抽出したマーカ情報を用いて、視点の位置姿勢を求める。
モード「9」が設定されると、撮像装置101は現実空間画像に基づいて求めた視点の位置姿勢を画像処理装置102に送信する。
以上説明したモード「5」〜「8」を設定すると、視点の位置姿勢を求めるための最終的な処理は画像処理装置102に行わせるものの、その前段で行う処理は撮像装置101側で行っている。視点の位置姿勢を求めるためには上述の通り、現実空間画像(若しくはその縮小画像)から輝度画像を得、この輝度画像から二値画像を得、この二値画像からマーカ情報を得るという一連の処理を行う必要があるが、どこまでの処理を撮像装置101側で行うのかについては、モード「5」からモード「8」に向かうに従って、撮像装置101側で行う処理の量が増えている。
しかし、何れにせよ、モード「5」〜「9」が設定された場合に撮像装置101が画像処理装置102に送信するデータの量は、モード「1」〜「4」が設定された場合に送信する画像のデータ量と比べれば、十分に少ないので、データ転送にかかる負担を軽減させていることになる。
また、対応関係を示す表には示していないが、位置計測と画像合成の双方を画像処理装置102側で行う一般的なMRのシステムにおいて、位置計測の負荷を軽減させるために補助データを撮像装置101側で生成し、送付するモードを付け加えてもよい。その場合、撮像装置101は、縮小画像を含む現実空間画像と合わせて位置計測部106で得られた位置計測のための補助データを画像処理装置102に送信する。画像処理装置102は補助データを用いて、視点の位置姿勢を求めると共に、現実空間画像とCG画像との合成処理を行う。
図9は、上記ネゴシエーションによって設定モードを決定するための処理のフローチャートである。なお、同図のフローチャートに従った処理は、上記ステップS401、S412の何れで行っても良いが、本実施形態では、ステップS412で行うものとし、この処理の結果、決まったモードについては撮像装置101側にも通知するものとする。
先ず、ステップS901では、撮像装置101、画像処理装置102のそれぞれの位置姿勢計測機能について把握する。
ステップS902では、撮像装置101、画像処理装置102のそれぞれのI/Fにおける伝送帯域、または伝送媒体の種類等の通信条件を把握する。
ステップS903では、位置姿勢計測処理に使用するアルゴリズムの種類や更新時期を把握する。また、求められる位置精度や処理負荷も併せて把握する。
ステップS904では、撮像装置101のデータ処理能力を把握する。画像処理装置102のデータ処理能力は予め把握しているものとする。
ステップS905では、システムの運営において、画質を優先するか否かを判断する。画質を優先するか否かの設定は、予め画像処理装置102に設定しておいても良いし、処理の流れ上、適宜設定しても良い。
画質を優先しない場合には、処理をステップS907に進める。ステップS907では、設定モードとして、モード「3」、「4」のうち何れかを選択する。伝送帯域に関わらず最高性能で画像を表現する場合には処理負荷が大きくなるため、装置の処理能力内で遅延時間がある範囲に収まる程度に撮像画像の解像度を設定する。モード「3」、「4」の何れを選択するのかについては、予め設定しておいても良いし、特に限定するものではない。
一方、画質を優先する場合には、処理をステップS906に進める。ステップS906では、ステップS902で把握した伝送帯域が所定の閾値を越えているか否かを判断する。この判断の結果、伝送帯域が所定の閾値以上である場合、即ち、伝送帯域が予め定められた帯域よりも十分に広い場合には、処理をステップS908に進め、設定モードとして、モード「1」、「2」の何れかを設定する。本ステップは、伝送帯域が十分かつ画像処理装置102側の処理能力が十分なことを受けて、画像処理装置102で大容量の現実空間画像を受信し、その後の処理を行う一般的なシステムにおいて実行されるものである。一般的な構成では現実空間画像のみの伝送であるが、モード「2」では、現実空間画像と併せて、補助データを撮像装置101側で用意する点が異なる。システムとしては位置計測機能を撮像装置101側で持つ必要があるが、画像処理装置102側の処理負荷を軽減することができる。なお、モード「1」、「2」の何れを設定するのかについては、予め設定しておいても良いし、特に限定するものではない。
一方、伝送帯域が所定の閾値以上ではない場合には処理をステップS909に進め、設定モードとして、モード「5」〜「9」の何れかを設定する。本ステップでは、伝送帯域が不十分なことを受けて、画像合成を撮像装置101側で行うことを決定する。現実空間画像の伝送が不要なため、帯域を有効に活用することが可能となる。モード「5」〜「9」は、画像合成を撮像装置101で行う前提で、位置計測処理の内容が異なるモードである。なお、モード「5」〜「9」の何れを選択するのかについては、予め設定しておいても良いし、特に限定するものではない。
なお、本実施形態では、伝送帯域を重視してモードの選択を行ったが、アルゴリズムの種類や更新時期によって異なる位置計測精度や求められる最低限の遅延時間等、MRアプリケーションの内容や用途によってモードを選択する構成でも構わない。
図10は、画像中におけるマーカを用いて、視点の位置姿勢を求める処理を説明する図である。
マーカ1003は、予め撮像装置101と位置関係が対応付けられているものとする。現実空間画像1001にマーカ1003が表示されている場合、現実空間画像1001からマーカ1003を検出し、マーカ1003の大きさや形、塗りつぶしのパターンなどの情報から、マーカ1003と撮像装置101との相対的位置関係および撮像装置101の装着者がマーカ1003を観察している方向に関する三次元位置姿勢情報を算出することができる。図10では例として、マーカ1003の中心部を原点とする三次元座標系を想定しているが、座標系の原点はマーカ1003上に設定する必要はなく、座標系の原点とマーカ1003との相対的位置関係を対応付けることにより、任意の位置に設定することができる。
また、位置姿勢を求める処理で用いるマーカは単独ではなく、複数のマーカを同時に用いることも可能である。複数のマーカを同時に用いる場合、各マーカの位置関係を予め定義しておくことによって、それらの相対的位置関係から、マーカを観察している方向を算出することが可能となる。従って、図10に示したような内部の塗りつぶしパターンによって方向まで識別が可能なマーカではなく、例えば、カラーマーカや、LEDなどの発光素子のような方向性の情報を持たないマーカを利用することも可能となる。また、マーカではなく、テーブルの輪郭線1004のような画像中の特徴点や、画像中の特定の色などを抽出し、それらを用いて位置姿勢を算出することも可能である。同一種類のマーカを複数用いたり、数種類のマーカを同時に用いたり、マーカ情報と画像中の特徴点の情報を組み合わせて用いることによって、より高い精度の位置情報を生成できる。
さらには、複数のマーカや特徴点の位置関係が対応付けられているため、すべてのマーカや特徴点が画像内に表示されていなくても、それぞれのマーカや特徴点の位置を推定することも可能である。マーカ利用によるMR技術の実現は、Kato, H., Billinghurst, M.(1999) Marker Tracking and HMD Calibration for a video−based Augmented Reality Conferencing System. In Proceedings of the 2nd International Workshop on Augmented Reality(IWAR 99). October, SanFrancisco, USAにおいて公開されている。
なお、本実施形態では、撮像装置101と画像処理装置102の双方に位置姿勢計測機能と合成画像生成機能を備えたが、それぞれの機能を備えた別の装置と、撮像ユニットや表示ユニットを備えたHMDと、を分離する構成にしても同様の機能を実現することができる。
また、本実施形態では、撮像装置101に備えた位置計測部106の機能の実現をCPU3205によって行ったが、専用のハードウェア(ASICやFPGA)を用いてその機能の一部またはすべてを実現することも当然可能である。
このように、本実施形態では、相手の機能や自身の機能における能力をネゴシエーションによって把握し、CG画像と現実空間画像との合成画像を生成するために行う処理を撮像装置101と画像処理装置102とで、目的や用途およびシステム構成にあわせた最適な分担を行う構成を示した。従って、どのような処理をそのように分担するのかについては以上の構成に限定するものではない。
[第2の実施形態]
第1の実施形態では、撮像装置101から画像処理装置102に送信する現実空間画像のデータ量を削減するために、この現実空間画像の縮小画像を生成し、これを送信していた。本実施形態では、同様の目的を達成するために、現実空間画像を圧縮した圧縮画像を縮小画像の代わりに画像処理装置102に送信する。
以下の説明では、本実施形態が第1の実施形態と異なる点についてのみ説明する。即ち、本実施形態は、以下説明する点以外については、第1の実施形態と同様である。
図11は、撮像装置101が有する位置計測部106の機能構成を示すブロック図である。
1101はセレクタである。セレクタ1101は、スイッチ104を介して受けた現実空間画像を圧縮処理部1102、輝度変換部1103、最終段の出力を選択するセレクタ1109の何れかに送出する。
1102は圧縮処理部である。圧縮処理部1102は、セレクタ1101を介して現実空間画像を受けた場合には、この受けた画像を圧縮する処理を行う。圧縮処理方法については特に限定するものではなく、一般的な画像圧縮技術であるJPEGやMPEG等を用いる。MR技術では特にリアルタイム性が要求されるため、フレーム間の差分を用いるMPEG系の圧縮よりはMotion−JPEGのようなフレーム内圧縮の技術を採用する方が望ましい。JPEG2000規格ではロッシーだけでなく、ロスレスの圧縮方式も選択できるが、どちらの方式を選択するかは目的に応じてネゴシエーションを行う際に決定する。
1103は輝度変換部である。輝度変換部1103は第1の実施形態における輝度変換部203と同様のものである。なお、輝度変換部203による輝度画像を圧縮処理部1102によって圧縮しても良い。
1104は二値化処理部である、二値化処理部1104は第1の実施形態における二値化処理部204と同じものである。
1105は、マーカ抽出部である。マーカ抽出部1105は、セレクタ1101に入力された現実空間画像中にマーカが存在する場合には、このマーカを抽出する処理を行う。マーカ抽出部1105が行う処理については第1の実施形態と同様にして行う。
1106は収束演算部である。収束演算部1106は、マーカ抽出部1105が1以上のマーカを抽出した場合には、その位置を精度よく算出するための繰り返し演算処理を行う。この演算処理の結果得られるのが、観察者の視点の位置姿勢である。収束演算部1106が行う処理については、第1の実施形態と同様にして行う。
1107は、ジャイロセンサである。ジャイロセンサ1107は第1の実施形態におけるジャイロセンサ207と同じものである。
1108は制御/データ補正部である。制御/データ補正部1108は、第1の実施形態における制御/データ補正部208と同じものである。
1109はセレクタである。セレクタ1109は、セレクタ1101に入力された現実空間画像、圧縮処理部1102による圧縮画像、輝度変換部1103による輝度画像、二値化処理部1104による二値画像、マーカ抽出部1105による抽出されたマーカに係るマーカ情報、収束演算部1106により求めた観察者の視点の位置姿勢、のうち、画像処理装置102に送信する対象を選択し、I/F109を介して画像処理装置102に送信する。選択信号による選択指示は、上述の機能選択部108によって行われる。
図12は、画像処理装置102が有する位置計測部116の機能構成を示すブロック図である。
同図において1201はセレクタである。セレクタ1201は、I/F113を介して撮像装置101から受信したデータの種類、撮像装置101とのネゴシエーションの結果に基づいて、受けたデータの出力先を切り替える。セレクタ1201は、撮像装置101から現実空間画像を受けると、これを輝度変換部1204に転送する。圧縮画像を受けると、これを伸張処理部1202に転送する。輝度画像を受けると、これを二値化処理部1205に転送する。二値画像を受けると、これをマーカ抽出部1206に転送する。マーカ情報を受けると、これを収束演算部1207に転送する。位置姿勢が入力されると、これをセレクタ1208に転送する。
1202は伸張処理部である。伸張処理部1202は、上記圧縮処理部1102が行う処理の逆の処理を行うことで、圧縮画像を元の画像に展開する処理を行う。
1203はセレクタである。セレクタ1203は、伸張処理部1202によって伸張された画像が輝度画像である場合にはこれを二値化処理部1205に転送するし、伸張された画像が現実空間画像である場合には、これを輝度変換部1204に転送する。
1204は輝度変換部、1205は二値化処理部、1206はマーカ抽出部、1207は収束演算部である。それぞれは、撮像装置101側における輝度変換部1103、二値化処理部1104、マーカ抽出部1105、収束演算部1106と同様の動作を行う。
1208はセレクタである。セレクタ1208は、撮像装置101側で算出された位置姿勢、若しくは収束演算部306によって算出された位置姿勢の何れかを選択して出力する。また、合成処理が画像処理装置102側で行われる場合は、合成に用いる背景画像として、伸張処理後の現実空間画像を出力する。選択信号による選択指示は、上述の機能選択部115によって行われる。
図13は、第2の実施形態時の上記ステップS406における処理の詳細を示すフローチャートである。
先ずステップS1301では、現実空間画像に対して圧縮処理を行い、圧縮画像を生成するか否かを判断する。圧縮画像を生成するか否かについては、縮小画像を生成するか否かを判断した第1の実施形態と同様、設定モードに応じて決まる。
生成しない場合には処理をステップS1303に進める。一方、生成するのであれば処理をステップS1302に進め、CPU3205は、上記圧縮処理部1102として機能し、上記ステップS402で取得した現実空間画像を圧縮した圧縮画像を生成する。そして本処理を終了する。
ステップS1303では、CPU3205は輝度変換部1103として機能し、上記ステップS402で取得した現実空間画像の輝度画像を生成する。
ステップS1304では、この輝度画像に対して圧縮処理を行うか否かを判断する。この判断の結果、圧縮を行う場合には処理をステップS1305に進め、この輝度画像に対して圧縮処理を行うことで圧縮画像を生成する。そして本処理を終了する。
一方、圧縮を行わないのであれば処理をステップS1306に進め、CPU3205は二値化処理部1104として機能し、上記ステップS1303で生成した輝度画像に対して二値化処理を行い、二値画像を生成する。
ステップS1307では、CPU3205はマーカ抽出部1105として機能し、上記ステップS1306で生成した二値画像からマーカを抽出する。
ステップS1308では、CPU3205は収束演算部1106として機能し、上記ステップS1306で抽出したマーカの位置を用いて、直接解法による収束演算で精度良く演算する。これにより、視点の位置姿勢、場合によってはその補助データを求める。
そして、圧縮画像、非圧縮の輝度画像、二値画像、マーカ情報、位置姿勢のうち、何れかが画像処理装置102に対して送信されることになる。
図14は、第2の実施形態時の上記ステップS415における処理の詳細を示すフローチャートである。
先ずステップS1401では、上記ネゴシエーションの結果、合成画像の生成を画像処理装置102側で行うと決定したのか否かを判断する。この判断の結果、合成画像の生成を撮像装置101側で行うと決定している場合には、処理をステップS1404に進める。
一方、合成画像の生成を画像処理装置102側で行うと決定している場合には、処理をステップS1402に進める。
ステップS1402では、ステップS413で受信した画像が圧縮画像であるか否かを先ず判断する。本処理を含め、以下説明する各処理において、画像に対してどのような処理が施されているのかを判断する際には、この画像に対して付加されているヘッダ情報を参照すればよい。このような技術については周知のものであるので、別段説明はしない。
受信した画像が圧縮画像である場合にはこの圧縮画像を伸張する必要がある。この判断の結果、圧縮画像ではない場合には、処理をステップS1404に進める。一方、圧縮画像である場合には、処理をステップS1403に進める。ステップS1403では、この圧縮画像を伸張することで、元の画像を復元する。
ステップS1404では、ステップS1403で伸張された画像、若しくはステップS413で受信した画像を用いて、視点の位置姿勢、場合によってはその補助データを求める。
以上説明してきたように、本実施形態によれば大容量の現実空間画像の伝送量を圧縮処理で削減しつつ、第1の実施形態と同様に撮像装置と画像処理装置の双方に位置姿勢計測機能を持ち、事前にネゴシエーションをしてそれぞれの計測内容を決めることで、目的や用途およびシステム構成にあわせて最適な負荷分散を実現することが可能となる。
特に圧縮処理を用いた本実施形態では、解像度変換処理に比べて回路規模が大きくなることや処理時間がかかることによる遅延は考慮すべきであるが、データ量の削減規模を大きくできることがメリットである。
[第3の実施形態]
本実施形態では、現実空間画像の色表現や階調数を変換した変換画像を縮小画像の代わりに画像処理装置102に送信する点のみが第1の実施形態とは異なる。
図15は、撮像装置101が有する位置計測部106の機能構成を示すブロック図である。以下では、本実施形態に係る位置計測部106が第1の実施形態における位置計測部106とは異なる点についてのみ説明する。
1501はセレクタである。セレクタ1501は、スイッチ104を介して受けた現実空間画像を色表現変換部1502、最終段の出力を選択するセレクタ1511の何れかに送出する。
1502は色表現変換部である。色表現変換部1502は、セレクタ1511を介して現実空間画像を受けた場合には、この受けた画像の色表現の変換を行う。色表現変換方法については特に限定するものではないが、例えば、RGB24ビットの画像データから、YUV422、YUV420、YUV411やYCC等の各種色表現へと変換し、色差情報を圧縮する。
1503は輝度選択部である。輝度選択部1503は、色表現変換部1502が輝度信号と色差信号とに分離したため、これらの情報から輝度信号を選択する。
1504は二値化処理部である、二値化処理部1504は第1の実施形態における二値化処理部204と同じものである。
1505は、マーカ抽出部である。マーカ抽出部1505が行う処理については第1の実施形態と同様にして行う。
1506は収束演算部である。収束演算部1506は、マーカ抽出部1505が1以上のマーカを抽出した場合には、その位置を精度よく算出するための繰り返し演算処理を行う。この演算処理の結果得られるのが、観察者の視点の位置姿勢である。収束演算部1506が行う処理については、第1の実施形態と同様にして行う。
1507は、ジャイロセンサである。ジャイロセンサ1507は第1の実施形態におけるジャイロセンサ207と同じものである。
1508は制御/データ補正部である。制御/データ補正部1508は、第1の実施形態における制御/データ補正部208と同じものである。
1509は階調変換部である。階調変換部1509は、現実空間画像の階調数の変換を行う。階調数の変換は、各画素の色がそれぞれ8ビットの階調を予め持っている場合、これらを7ビットや6ビット等に圧縮し、情報量を落とすものである。色表現の変換では輝度情報はそのままに色差情報を圧縮したが、階調数の変換では階調性を犠牲にして情報の圧縮を実現する。また、色表現変換と階調変換の組み合わせによる更なる情報圧縮も可能である。
1510はセレクタである。セレクタ1510は、階調変換を行った画像、行っていない画像の何れかをセレクタ1511に出力する。
1511はセレクタである。セレクタ1511は、現実空間画像、階調変換及び/又は色表現変換を行った画像、輝度画像、二値画像、マーカ情報、視点の位置姿勢、のうち、画像処理装置102に送信する対象を選択し、I/F109を介して画像処理装置102に送信する。
図16は、画像処理装置102が有する位置計測部116の機能構成を示すブロック図である。以下では、本実施形態に係る位置計測部116が第1の実施形態における位置計測部116とは異なる点についてのみ説明する。
同図において1601はセレクタである。セレクタ1601は、I/F113を介して撮像装置101から受信したデータの種類、撮像装置101とのネゴシエーションの結果に基づいて、受けたデータの出力先を切り替える。セレクタ1601は、撮像装置101から現実空間画像を受けると、これを輝度変換部1605に転送する。階調変換若しくは階調変換と色表現変換の両方が施された画像を受けると、これを階調逆変換部1602に転送する。色表現変換が施された画像を受けると、これを色表現逆変換部1604に転送する。輝度画像を受けると、これを二値化処理部1606に転送する。二値画像を受けると、これをマーカ抽出部1607に転送する。マーカ情報を受けると、これを収束演算部1608に転送する。位置姿勢が入力されると、これをセレクタ1609に転送する。
1602は階調逆変換部である。階調逆変換部1602は、階調変換部1509が行った処理と逆の処理を行うことにより、画像の階調を元の階調に戻す処理を行う。
1603はセレクタである、セレクタ1603は、階調逆変換部1602から受けた画像が色表現変換を施されたものであるのか否かを判断する。色表現変換が施された画像は色表現逆変換部1604に転送するし、色表現変換が施されていない画像については輝度変換部1605に転送する。
1604は色表現逆変換部である。色表現逆変換部1604は、色表現変換部1502が行った処理と逆の処理を行うことにより、画像の色表現を元の色表現に戻す処理を行う。
1605は輝度変換部、1606は二値化処理部、1607はマーカ抽出部、1608は収束演算部であり、第2の実施形態と同様である。
1609はセレクタである。セレクタ1609は、撮像装置101側で算出された位置姿勢、若しくは収束演算部1608によって算出された位置姿勢の何れかを選択して出力する。また、合成処理が画像処理装置102側で行われる場合は、合成に用いる背景画像として、階調表現や色表現を元に戻した画像を出力する。選択信号による選択指示は、上述の機能選択部115によって行われる。
図17は、第3の実施形態時の上記ステップS406における処理の詳細を示すフローチャートである。
先ずステップS1701では、現実空間画像に対して色表現変換を行うか否かを判断する。色表現変換を行うか否かについては、縮小画像を生成するか否かを判断した第1の実施形態と同様、設定モードに応じて決まる。
色表現変換を行わない場合には処理をステップS1703に進める。一方、色表現変換を行う場合には処理をステップS1702に進め、CPU3205は、上記色表現変換部1502として機能し、上記ステップS402で取得した現実空間画像に対して色表現変換処理を行う。
ステップS1703では、輝度信号を選択するのか否かを判断する。輝度信号を選択する場合には処理をステップS1704に進め、選択しない場合には、処理をステップS1705に進める。ステップS1704では、CPU3205は、輝度選択部1503として機能し、色表現変換された画像から輝度信号を選択し、輝度画像を生成する。
そしてステップS1707では、CPU3205は二値化処理部1504として機能し、上記ステップS1704で生成した輝度画像に対して二値化処理を行い、二値画像を生成する。
ステップS1708では、CPU3205はマーカ抽出部1505として機能し、上記ステップS1707で生成した二値画像からマーカを抽出する。
ステップS1709では、CPU3205は収束演算部1506として機能し、上記ステップS1708で抽出したマーカの位置を用いて、直接解法による収束演算で精度良く演算する。これにより、視点の位置姿勢、場合によってはその補助データを求める。
一方、上記ステップS1703における選択処理の結果、輝度信号を選択しないのであれば、処理をステップS1705に進める。ステップS1705では、上記ステップS402で取得した現実空間画像に対して、若しくは上記ステップS1702で色表現変換された画像に対して階調変換を行うか否かを判断する。行わない場合には本処理を終了するのであるが、行うのであれば、処理をステップS1706に進め、CPU3205は、上記階調変換部1509として機能し、上記ステップS402で取得した現実空間画像に対して、若しくは上記ステップS1702で色表現変換された画像に対して階調変換処理を行う。
そして、階調変換及び/又は色表現変換された画像、現実空間画像、二値画像、マーカ情報、位置姿勢のうち、何れかが画像処理装置102に対して送信されることになる。
図18は、第3の実施形態時の上記ステップS415における処理の詳細を示すフローチャートである。
先ずステップS1801では、上記ネゴシエーションの結果、合成画像の生成を画像処理装置102側で行うと決定したのか否かを判断する。この判断の結果、合成画像の生成を撮像装置101側で行うと決定している場合には、処理をステップS1806に進める。
一方、合成画像の生成を画像処理装置102側で行うと決定している場合には、処理をステップS1802に進める。
ステップS1802では、ステップS413で受信した画像が階調変換されたものであるのか否かを判断する。受信した画像が階調変換されたものではない場合には処理をステップS1804に進める。一方、受信した画像が階調変換されたものである場合には処理をステップS1803に進める。ステップS1803では、CPU3205は、上記階調逆変換部1602として機能し、受信した画像に対して階調逆変換処理を行う。
ステップS1804では、ステップS413で受信した画像が色表現変換されたものであるのか否かを判断する。受信した画像が色表現変換されたものではない場合には処理をステップS1806に進める。一方、受信した画像が色表現変換されたものである場合には処理をステップS1805に進める。ステップS1805では、CPU3205は、上記色表現逆変換部1604として機能し、受信した画像に対して色表現逆変換処理を行う。
ステップS1806では、現実空間画像、若しくはステップS1803で得られた画像、若しくはステップS1805で得られた画像の何れかを用いて、視点の位置姿勢、場合によってはその補助データを求める。
以上説明してきたように、本実施形態によれば大容量の現実空間画像の伝送量を色表現や階調表現による変換処理で削減しつつ、第1の実施形態や第2の実施形態と同様に撮像装置と画像処理装置の双方に位置姿勢計測機能を持ち、事前にネゴシエーションをしてそれぞれの計測内容を決めることで、目的や用途およびシステム構成にあわせて最適な負荷分散を実現することが可能となる。
特に色表現や階調数の変換処理を用いた本実施形態では、解像度変換処理や圧縮処理に比べてデータ量の削減規模は小さくなるが、比較的構成が簡単なこと、かつデータ量削減による画質劣化の弊害が少ないことがメリットである。
[第4の実施形態]
本実施形態では、視点の位置姿勢を計測するための構成、及び合成画像を生成するための構成を撮像装置のみに対して備える。
図19は、本実施形態に係るシステムの機能構成を示すブロック図である。
同図に示す如く、本実施形態に係るシステムは、撮像装置1901と画像処理装置1902とで構成されている。
先ず、撮像装置1901について説明する。本実施形態では、撮像装置1901はビデオシースルー型HMDであるものとする。
撮像ユニット1903は、図1に示した撮像ユニット103と同じものである。撮像した各フレームの画像(現実空間画像)は、フレームバッファ1906と位置計測部1905とに転送される。フレームバッファ1906は、図1に示したフレームバッファ105と同じものである。三次元位置姿勢センサ1904は、視点の位置姿勢を求めるための補助的な情報を計測するものである。本実施形態では、計測補助用に三次元位置姿勢センサ1904を使用するが、センサの使用および実装は必須ではなく、画像に含まれるマーカの識別によって計測する構成で構わない。
位置計測部1905は、基本的には図1に示した位置計測部106と同じものである。即ち、三次元位置姿勢センサ1904から受ける補助情報と、撮像ユニット1903から受ける現実空間画像と、を用いて視点の位置姿勢を求めるための処理を行う。I/F1907は、図1に示したI/F109と同じものである。
画像合成部1908は、I/F1907を介して画像処理装置1902からCG画像を受けると、この受けたCG画像と、フレームバッファ1906に保持されている現実空間の画像とを合成した合成画像(MR画像)を生成する。表示ユニット1909は、図1に示した表示ユニット112と同じものである。
次に、画像処理装置1902について説明する。
コンテンツDB1911は、図1に示したコンテンツDB117と同じものである。CG描画部1912は、図1に示したCG描画部118と同じものである。
I/F1910は、図1に示したI/F113と同じものである。
撮像ユニット1903によって撮像された現実空間画像は、フレームバッファ1906に格納されると共に、位置計測部1905にも入力される。位置計測部1905は、三次元位置姿勢センサ1904より得られた補助情報と、撮像ユニット1903から得られる現実空間画像とを用いて、視点の位置姿勢を求める。求めた位置姿勢はI/F1907を介して画像処理装置1902に送出される。
画像処理装置1902側では、CG描画部1912が、I/F1910を介して受信した位置姿勢を用いて、この位置姿勢を有する視点から見える仮想空間の画像を生成する。仮想空間の画像を生成する処理については上記各実施形態と同じである。そしてCG描画部1912は、生成した仮想空間の画像をCG画像としてI/F1910を介して撮像装置1901に送出する。
撮像装置1901側では、I/F1907を介して画像処理装置1902から受信したCG画像を受信すると、画像合成部1908は、このCG画像と、フレームバッファ1906に格納されている現実空間画像とを合成した合成画像を生成する。
この合成画像の生成をクロマキー処理で行う場合は、CG描画時に使用していないクロマキー合成のために使用する特定色を併せて情報として送付する。特定色の指定が1フレーム毎に行われない場合には、予め撮像装置1901側との間でネゴシエーションを行い、一定の期間内は同じ特定色を使用する。
そして撮像装置1901は、受け取ったCG画像とフレームバッファ1906に格納されている現実空間画像とを、特定色を元にクロマキー合成する。なお、CG画像と対応づけられる現実空間画像は、CG画像の生成に用いた位置情報を得るのに使用した画像である。
また、αチャネルを使用して画像合成を行う場合には、各画素のα値(マット値)による二次元データであるαチャネルをCG画像と併せて画像処理装置1902が送信する。クロマキー合成処理とαチャネルによる半透明画像合成処理の内容については後述する。
そして画像合成部1908が生成した合成画像は表示ユニット1909に送出するので、表示ユニット1909の表示画面上には、この合成画像が表示されることになる。
以上のような構成では、現実空間画像を撮像装置1901側から画像処理装置1902側に送信する必要がなくなるため、仮に現実空間画像とCG画像の解像度、階調表現、フレームレートが同一の場合には、従来技術として示した一般的なMRのシステム構成と比べて送信するデータ量は半分程度になる。実際にはCG画像と併せてクロマキー色またはαチャネルが送信されるため、半分よりは多くなる。
また、合成の際に採用する現実空間画像は、CG画像の生成を行う際に計測した位置姿勢情報を算出するのに用いた画像であるため、現実空間画像とCG画像との間の遅れが生じず、違和感のないMR画像を提供することができる。
本実施形態では基本的な構成を示したが、CG画像の送信前に解像度変換による縮小処理や圧縮処理、または階調や色表現変換等を施すことによって、RGBの生データを送信するよりはデータ量を削減することも可能である。
以上の構成および処理のプロセスにより、MR画像表示のために撮像画像の伝送が不要となり、かつ同等の表示品質を維持することが可能となる。
図20は、撮像装置1901により撮像された現実空間画像と画像処理装置1902が生成したCG画像とを合成した合成画像を、撮像装置1901が有する表示ユニット1909に表示するために、それぞれの装置が行う処理のフローチャートである。
なお、同図のフローチャートにおいて、ステップS2001〜ステップS2008における処理は撮像装置1901が行う処理のフローチャートであるが、ステップS2001〜ステップS2008における処理を撮像装置1901のCPU3205に実行させるためのプログラムやデータはROM3204に格納されている。従ってCPU3205がこのプログラムやデータを用いて処理を実行することで、撮像装置1901は、ステップS2001〜ステップS2008の処理を実行することになる。
また、同図のフローチャートにおいて、ステップS2051〜ステップS2053における処理は画像処理装置1902が行う処理のフローチャートであるが、ステップS2051〜ステップS2053における処理を画像処理装置1902のCPU3101に実行させるためのプログラムやデータは外部記憶装置3106に格納されている。そして、CPU3101がこのプログラムやデータをRAM3102にロードし、これを用いて処理を実行することで、画像処理装置1902は、ステップS2051〜ステップS2053の処理を実行することになる。
先ず、ステップS2001では、撮像ユニット3201(1903)はCPU3205による制御に従って現実空間の画像を撮像するので、ステップS2002では、この現実空間画像を、RAM3203上に設けられたフレームバッファ1906に格納する。
次に、ステップS2003では、この現実空間画像と、三次元位置姿勢センサ1904とを用いて、視点の位置姿勢を求めるための処理を行う。もちろん、三次元位置姿勢センサ1904は必須なものではなく、適宜用いればよい。
そしてステップS2004では、求めた位置姿勢を画像処理装置1902に送信する。一方、ステップS2051では、画像処理装置1902のCPU3101は、上記ステップS2005で送信されたデータをI/F3107を介して受信し、RAM3102に取得する。
そしてステップS2052では先ず、ステップS2051で受信した位置姿勢を用いて視点の位置姿勢を確定する。一方、外部記憶装置3106内におけるコンテンツDB1911から、各仮装物体に係るデータを読み出し、仮想空間中に仮装物体を配置することで、仮想空間を形成する。そして形成した仮想空間を、確定した位置姿勢を有する視点から見た場合に見える画像、即ちCG画像を生成する。
そして、ステップS2053では、この生成したCG画像を撮像装置1901に送信する。撮像装置1901側ではステップS2005で、画像処理装置1902から上記ステップS2053で送信されたCG画像を受信し、RAM3203上に取得する。
そしてステップS2006では、位置計測部1905が位置姿勢を計算した際に撮像ユニット1903が取得した現実空間画像を特定する。そしてステップS2007では、この特定した現実空間画像と、ステップS2005で受信したCG画像とを合成した合成画像を生成する。そしてステップS2008では、この合成画像を表示ユニット1909の表示画面上に表示する為の処理を行う。
図21は、クロマキー処理を用いて画像合成を行う場合の処理を示したフローチャートである。同図のフローチャートに従った処理は、上記ステップS2007において行われるものであり、この処理により、合成画像が生成される。
現実空間画像にCG画像を重畳する一般的な手法としては、現実空間画像の切り出し方によってクロマキー法、ロートスコーピング法、ディファレンスマッチング法等がある。ここでは自動かつMRに適した手法であるクロマキー法について説明する。クロマキー法は、ブルーバック撮影(均一な青色あるいは緑一色の壁からなる背景の前で対象物を撮像)した後、背景色以外の領域を自動的に切り出す手法であり、MRではCG画像の描画時に、CGで使用していない特定色を使って、CG描画以外の領域を塗り潰し、切り出しの判断が画素毎に特定色との比較によって行われる。
先ず、ステップS2101では、CG画像の色とクロマキー処理を行うための特定色とを画素単位で比較する。
次にステップS2102では、CG画像における各画素を参照し、参照している画素の色と特定色とが一致するか否かを判断する。一致する場合には処理をステップS2103に進め、一致していない場合には処理をステップS2104に進める。
ステップS2103では、参照画素が背景部を構成している画素と判断するので、ステップS2105では、この背景部を構成している画素を、現実空間画像において対応する位置の画素に置き換える。一方、ステップS2104では、参照画素がCG部を構成している画素であると判断するので、ステップS2106では、このCG部を構成している画素をそのまま用いる。
こうした処理をCG画像を構成している全ての画素について行うことで、撮像装置1901によって撮像された現実空間画像と画像処理装置1902において生成されたCG画像とを比較的簡単な構成で合成することが可能となる。
なお、クロマキー合成の一般的な処理については、特開平5−244630号公報、特開平7−154819号公報に開示されている。
図22は、αチャネルを用いて半透明画像合成を行う場合の処理を示したフローチャートである。同図のフローチャートに従った処理は、上記ステップS2007において行われるものであり、この処理により、合成画像が生成される。
上記クロマキー合成処理では、現実空間画像である背景部とCG画像であるCG部とが透過した半透明の合成画像を生成することができない。半透明画像を生成するには、α値と呼ばれる0と1の中間の値を取り得る寄与比率を用いる。以下にそのプロセスを説明する。
ステップS2201では、合成画像の任意の画素の値をCと設定する。この設定は予め行っておいても良い。
ステップS2202では、現実空間画像の対応する画素値を取得する。ここでは取得した画素値をBとする。
ステップS2203では、CG画像の対応する画素値を取得する。ここでは取得した画素値をFとする。
ステップS2204では、αチャネルの対応する画素の値が画像処理装置1902から送信されるので、この値を取得する。ここではこの値をαとする。
ステップS2205では、半透明処理が必要か否かを画素単位で判断する。半透明処理が必要な場合は処理をステップS2207に進め、必要のない場合、すなわち現実空間画像かCG画像の何れかの画素で上記値Cを置き換える場合には処理をステップS2206に進める。
ステップS2206では、前景がCG画像であるか否かを判断する。CG画像の場合は処理をステップS2208に進め、前景が現実空間画像である場合には処理をステップS2209に進める。
ステップS2207では、合成後の画素値Cを、以下の式で求める。
C=α×F+(1―α)×B
ステップS2208では、画素値CをCG画像の画素値Fとする。
ステップS2209では、画素値Cを撮像画像の画素値Bとする。
なお、αチャネルによる画像合成の一般的な処理については、T.Porter and T.Duff, “Compositing Digital Images”, Computer Graphics Vol.18,No.3(1984)に開示されている。
以上説明してきたように、本実施形態によれば、大容量の現実空間画像の伝送の代わりに、CG画像の生成に必要な撮像装置の位置姿勢情報を撮像装置側で計測し、その情報を伝送することによって、伝送帯域をCG画像の伝送にほぼ使用することができるため、狭い伝送帯域でも高精細なMR画像を提供することができる。
また、従来のMRシステムでは、位置姿勢計測、CG画像生成、合成画像生成のすべての処理を画像処理装置で行っていたのに対して、撮像機能を持つ撮像装置側に位置姿勢計測機能と合成画像生成機能とを持たせることで、画像処理装置の処理負荷を低減する効果もある。
その結果、本来であれば高速かつ複雑な演算処理を行うのに必要な機能を持つワークステーションやデスクトップPCではなく、携帯電話やPDAまたはノートPCなど処理能力の低いデバイスを使用してMR画像を提供することが可能となる。
本実施形態の説明では、撮像装置内に位置姿勢計測機能と合成画像生成機能とを備えたが、それぞれの機能を備えた別の装置と撮像ユニットや表示ユニットを備えたHMDとを分離する構成にしても同様の機能を実現することができる。
[第5の実施形態]
本実施形態では、システムの構成については第4の実施形態と同様に、視点の位置姿勢を計測するための構成、及び合成画像を生成するための構成を撮像装置のみに対して備える。しかし本実施形態が第4の実施形態に係るシステムと異なる点は、フレームバッファを用いず、最新の現実空間画像と、最新の仮想空間画像とを合成する点にある。
図23は、本実施形態に係るシステムの機能構成を示すブロック図である。同図に示す如く、本実施形態に係るシステムは、画像処理装置2302と撮像装置2301とで構成されている。画像処理装置2302は、図19に示した画像処理装置1902に位置姿勢情報補正部2310を加えた構成を有する。また、撮像装置2301は、図19に示した撮像装置1901からフレームバッファ1906を省いた構成を有する。
位置姿勢情報補正部2310は、撮像装置2301から受信した位置姿勢を、画像合成時のタイミングに合わせて補正処理する。より具体的には、時系列的に取得した過去の位置姿勢から、画像合成時の位置姿勢への補正処理を行う。処理は一般的な予測手法で構わず、良く知られた手法ではカルマンフィルタを用いたものがある。ここでは画像合成時のタイミングと合わせたが、合成画像表示時のタイミングに合わせる構成でも構わない。その場合、現実空間画像に関しては、取得から表示まで若干のタイムラグが生じるが、CG画像に関しては予測が大幅にずれない限りリアルタイム性を保証しているように見せることができる。
撮像ユニット2303によって撮像された現実空間画像は、位置計測部2305と共に、画像合成部2307に入力される。位置計測部2305は、この入力された現実空間画像と、三次元位置姿勢センサ2304より得られた補助情報とを用いて、視点の位置姿勢を求める。なお、本実施形態においても第4の実施形態と同様、三次元位置勢センサ2304は構成上必須ではない。求めた位置姿勢は、I/F2306を介して画像処理装置2302に送出する。
画像処理装置2302側では、CG描画部2312が、I/F2309を介して受信した位置姿勢を用いて、この位置姿勢を有する視点から見える仮想空間の画像を生成する。仮想空間の画像を生成する処理については上記各実施形態と同じである。そしてCG描画部2312は、生成した仮想空間の画像をCG画像としてI/F2309を介して撮像装置2301に送出する。
撮像装置1901側では、I/F2306を介して画像処理装置2302から受信したCG画像を受信すると、画像合成部2307は、このCG画像と、撮像ユニット2303から入力された現実空間画像とを合成した合成画像を生成する。
この合成画像の生成をクロマキー処理で行う場合は、CG描画時に使用していないクロマキー合成のために使用する特定色を併せて情報として送付する。また、αチャネルを使用して画像合成を行う場合には、各画素のα値(マット値)による二次元データであるαチャネルをCG画像と併せて画像処理装置2302が送信する。何れの画像合成処理についても、第4の実施形態で説明したとおりである。
そして画像合成部2307が生成した合成画像は表示ユニット2308に送出するので、表示ユニット2308の表示画面上には、この合成画像が表示されることになる。
ここで、合成の際に用いる現実空間画像は最新のものであるため、現実空間画像とCG画像の生成タイミングを吸収するためのフレームバッファを撮像装置2301内に設ける必要がない点が特徴的であり、回路構成を小さく抑えることが可能になる。
本実施形態では、位置姿勢情報補正部2310による予測処理は、現実空間画像が撮像されてから合成されるまでの時間を基に演算処理される。撮像ユニット2303と画像合成部2307とを同一の装置内に持つ構成のため、撮像されてから画像合成後に表示されるまでの遅延時間は内部タイマを用いることにより容易に把握することができる。把握した遅延時間はI/F2306を介して画像処理装置2302に送信される。
以上の構成および処理のプロセスにより、MR画像表示のために撮像画像の伝送が不要となり、かつ同等の表示品質を維持することが可能となる。
図24は、撮像装置2301により撮像された現実空間画像と画像処理装置2302が生成したCG画像とを合成した合成画像を、撮像装置2301が有する表示ユニット2308に表示するために、それぞれの装置が行う処理のフローチャートである。
なお、同図のフローチャートにおいて、ステップS2401〜ステップS2407における処理は撮像装置2301が行う処理のフローチャートであるが、ステップS2401〜ステップS2407における処理を撮像装置2301のCPU3205に実行させるためのプログラムやデータはROM3204に格納されている。従ってCPU3205がこのプログラムやデータを用いて処理を実行することで、撮像装置2301は、ステップS2401〜ステップS2407の処理を実行することになる。
また、同図のフローチャートにおいて、ステップS2451〜ステップS2454における処理は画像処理装置2302が行う処理のフローチャートであるが、ステップS2451〜ステップS2454における処理を画像処理装置2302のCPU3101に実行させるためのプログラムやデータは外部記憶装置3106に格納されている。そして、CPU3101がこのプログラムやデータをRAM3102にロードし、これを用いて処理を実行することで、画像処理装置2302は、ステップS2451〜ステップS2454の処理を実行することになる。
先ず、ステップS2401では、撮像ユニット3201(2303)はCPU3205による制御に従って現実空間の画像を撮像するので、この現実空間画像をRAM3203内に格納する。
次に、ステップS2402では、この現実空間画像と、三次元位置姿勢センサ2304とを用いて、視点の位置姿勢を求めるための処理を行う。もちろん、三次元位置姿勢センサ2304は必須なものではなく、適宜用いればよい。
そしてステップS2403では、求めた位置姿勢を画像処理装置2302に送信する。一方、ステップS2451では、画像処理装置2302のCPU3101は、上記ステップS2403で送信されたデータをI/F3107を介して受信し、RAM3102に取得する。
そしてステップS2452では、ステップS2451で受信した位置姿勢を、後述する画像合成のタイミングに合わせて補正する。この補正処理は、位置姿勢情報補正部2310により行われる処理である。そして、ステップS2453では、外部記憶装置3106内におけるコンテンツDB2311から、各仮装物体に係るデータを読み出し、仮想空間中に仮装物体を配置することで、仮想空間を形成する。そして形成した仮想空間を、補正した位置姿勢を有する視点から見た場合に見える画像、即ちCG画像を生成する。
そして、ステップS2454では、この生成したCG画像を撮像装置2301に送信する。撮像装置2301側ではステップS2404で、画像処理装置2302から上記ステップS2454で送信されたCG画像を受信し、RAM3203上に取得する。
そしてステップS2405では、RAM3203に保持されている現実空間画像のうち、最新のものを取得する。そしてステップS2406では、この取得した現実空間画像と、ステップS2404で受信したCG画像とを合成した合成画像を生成する。そしてステップS2407では、この合成画像を表示ユニット2308の表示画面上に表示する為の処理を行う。
以上説明してきたように、本実施形態によれば大容量の現実空間画像の伝送の代わりに、CG画像の生成に必要な撮像装置の位置姿勢情報を撮像装置側で計測し、その情報を伝送することによって、伝送帯域をCG画像の伝送にほぼ使用することができるため、狭い伝送帯域でも高精細なMR画像を提供することができる。また、第4の実施形態との相違点であるフレームバッファを設けないことで、撮像装置側の構成を小さくすることができる。さらには、画像合成時または合成画像表示時のタイミングに合わせてCG画像の位置姿勢を補正することで、現実空間画像との時間ズレを解消することができる。
本実施形態の説明では撮像装置内に位置計測機能と画像合成機能を備えたが、位置計測機能と画像合成機能を備えた別の装置と撮像ユニットや表示ユニットを備えたHMDとを分離する構成にしても同様の機能を実現することができる。
[第6の実施形態]
本実施形態では、画像処理装置側で画像合成処理を行うことを前提とし、撮像装置に転送する現実空間画像の伝送量を削減しつつ高精細な現実空間画像を撮像装置側で保持させることによってデータ伝送量の削減と高精細な現実空間画像によるMR画像の提供を可能にする。また、半透明画像の生成に必要なαチャネルの送付なしに半透明画像を再現する点にもある。
図25は、本実施形態に係るシステムの機能構成を示すブロック図である。同図に示す如く、本実施形態に係るシステムは、画像処理装置2502と撮像装置2501とで構成されている。
先ず、撮像装置2501について説明する。本実施形態では、撮像装置2501はビデオシースルー型HMDであるものとする。
撮像ユニット2503は、図1に示した撮像ユニット103と同じものである。撮像した各フレームの画像(現実空間画像)は、フレームバッファ2505とデータ削減部2504とに転送される。フレームバッファ2505は、図1に示したフレームバッファ105と同じものであるが、その使用方法が若干異なる。。
データ削減部2504は、撮像ユニット2503から受けた現実空間画像の縮小画像を作成することで、データ量を削減する処理を行う。尚、上記実施形態で説明したように、同様の目的を達成するのであれば、縮小画像を作成する代わりに、現実空間画像の圧縮画像を作成しても良いし、現実空間画像の色表現や階調数を変換した画像を作成しても良い。
I/F2506は、図1に示したI/F109と同じものである。比較処理部2507は、低解像度の現実空間画像と高解像度のCG画像とを合成した合成画像を、特定のエリア単位で比較する処理を行う。
置換処理部2508は、比較処理部2507による比較の結果、特定のエリアが低解像度の現実空間画像であると判断された場合には、この特定のエリアを、フレームバッファ2505に格納された元となる現実空間画像においてこの特定のエリアに相当する部分で置き換える処理を行う。一方、特定のエリアが低解像度の現実空間画像ではない、即ち、CG画像若しくはCG画像と現実空間画像低解像度の現実空間画像とが透過処理された領域であると判断された場合には、このような置き換え処理は行わない。
表示ユニット2509は、図1に示した表示ユニット112と同じものである。
次に、画像処理装置2502について説明する。
I/F2510は、図1に示したI/F113と同じものである。
位置計測部2511は、図1に示した位置計測部116と同じものである。なお、本実施形態においても、上記実施形態のように、補助情報を用いて更に計測精度を上げるようにしても良い。
データ復元部2512は、解像度変換による拡大処理を行う。より具体的には、データ削減部2504によって低解像度の画像サイズに変換された現実空間画像を、CG画像のサイズと一致するように拡大する処理を行う。拡大のための解像度変換の次数は特に限定するものではないが、データ削減部2504が行う解像度変換に対応するアルゴリズムを用いる必要がある。
尚、撮像装置側で解像度変換による縮小処理以外のデータ削減手段、すなわち圧縮画像を作成した場合は伸長処理を、色表現や階調数を変換した画像を作成した場合はその逆変換を適用することで、画像の復元を行うことができる。
コンテンツDB2513は、図1に示したコンテンツDB117と同じものである。CG描画合成部2514は、図1に示したCG描画部118が行うCG画像生成処理を行い、低解像度の現実空間画像を拡大した画像と合成することで、合成画像を生成する。この合成画像はI/F2510を介して撮像装置2501に送出され、上記比較処理と置換処理とを経て、表示ユニット2509の表示画面上に表示される。
撮像ユニット2503によって撮像された現実空間画像は、フレームバッファ2505に格納されると共に、データ削減部2504にも入力される。データ削減部2504は、この入力された現実空間画像に対して解像度変換を行い、現実空間画像の縮小画像を生成する。そして生成した縮小画像は、I/F2506を介して画像処理装置2502に送出される。
画像処理装置2502側では、位置姿勢計測部2511が、I/F2510を介して受信した縮小画像中に写っているマーカや自然特徴などを用いて、上記実施形態と同様にして視点の位置姿勢を求める。また、この縮小画像はデータ復元部2512にも入力される。データ復元部2512は、この縮小画像を以降の処理で生成するCG画像のサイズと同じサイズに拡大する。
CG描画合成部2514は、位置計測部2511が求めた位置姿勢を用いて、この位置姿勢を有する視点から見える仮想空間の画像を生成する。仮想空間の画像を生成する処理については上記実施形態と同じである。そしてCG描画合成部2514は、生成した仮想空間の画像と、上記データ復元部2512による拡大画像とを合成して、合成画像を生成する。そして生成した合成画像をI/F2510を介して撮像装置2501に送出する。
撮像装置2501側では先ず、比較処理部2507が、データ削減部2504によって生成された縮小画像を拡大した第2の拡大画像を作成する。そして、I/F2506を介して画像処理装置2502から合成画像を受信すると、合成画像上における特定の領域と、第2の拡大画像において対応する領域とを比較する。この比較の結果、一致している場合、即ち、合成画像における特定の領域が、第2の拡大画像上における領域である場合には、置換処理部2508は、合成画像における特定の領域を、データ削減部2504が第2の拡大画像を生成するために用いた現実空間画像において対応する領域に置き換える処理を行う。これにより、処理後の合成画像は、背景(現実空間画像)に相当する部分のみが元の高解像度の現実空間画像に変換される。
そして置換処理部2508が生成した合成画像、若しくは画像処理装置2502から受信した合成画像は表示ユニット2509に送出するので、表示ユニット2509の表示画面上には、この合成画像が表示されることになる。
以上の構成および処理のプロセスにより、大容量の撮像画像の伝送量を削減しつつ、クロマキー合成と比べて容易かつ簡便に不透明画像を含んだ合成画像における現実空間画像の高精細化を実現できる。
図26は、撮像装置2501により撮像された現実空間画像と画像処理装置2502が生成したCG画像とを合成した合成画像を、撮像装置2501が有する表示ユニット2509に表示するために、それぞれの装置が行う処理のフローチャートである。
なお、同図のフローチャートにおいて、ステップS2601〜ステップS2608における処理は撮像装置2501が行う処理のフローチャートであるが、ステップS2601〜ステップS2608における処理を撮像装置2501のCPU3205に実行させるためのプログラムやデータはROM3204に格納されている。従ってCPU3205がこのプログラムやデータを用いて処理を実行することで、撮像装置2501は、ステップS2601〜ステップS2608の処理を実行することになる。
また、同図のフローチャートにおいて、ステップS2651〜ステップS2656における処理は画像処理装置2502が行う処理のフローチャートであるが、ステップS2651〜ステップS2656における処理を画像処理装置2502のCPU3101に実行させるためのプログラムやデータは外部記憶装置3106に格納されている。そして、CPU3101がこのプログラムやデータをRAM3102にロードし、これを用いて処理を実行することで、画像処理装置2502は、ステップS2651〜ステップS2656の処理を実行することになる。
先ず、ステップS2601では、撮像ユニット3201(2503)はCPU3205による制御に従って現実空間の画像を撮像するので、この現実空間画像をRAM3203内に設けられたフレームバッファ2505に格納する。
次に、ステップS2602では、この現実空間画像に対して解像度変換処理を行い、縮小画像を生成する。そしてステップS2603では、この生成した縮小画像を画像処理装置2502に送信する。
一方、ステップS2651では、画像処理装置2302のCPU3101は、上記ステップS2603で送信されたデータをI/F3107を介して受信し、RAM3102に取得する。
ステップS2652では、この縮小画像を用いて、視点の位置姿勢を求める。この処理については上記実施形態と同様にして行う。
次に、ステップS2653では、この受信した縮小画像を、後段の処理で求める仮想空間画像のサイズと同じサイズに拡大し、拡大画像を生成する。
ステップS2654では先ず、外部記憶装置3106内におけるコンテンツDB2311から、各仮装物体に係るデータを読み出し、仮想空間中に仮装物体を配置することで、仮想空間を形成する。そして形成した仮想空間を、ステップS2652で求めた位置姿勢を有する視点から見た場合に見える画像、即ちCG画像を生成する。
ステップS2655では、ステップS2653で生成した拡大画像と、ステップS2654で生成したCG画像とを合成することで、合成画像を生成する。
そしてステップS2656では、この生成した合成画像を撮像装置2501に送信する。撮像装置2501側ではステップS2604で、画像処理装置2502から上記ステップS2656で送信された合成画像を受信し、RAM3203上に取得する。
ステップS2605では、上記ステップS2602で縮小画像を生成する際に用いた現実空間画像を一端縮小し、その後、この縮小した画像を拡大した画像(第2の拡大画像)を生成する。
そしてステップS2406では、ステップS2604で受信した合成画像上における特定の領域と、第2の拡大画像において対応する領域とを比較する。この比較の結果、一致していない場合には処理をステップS2608に進め、ステップS2604で受信した合成画像を表示ユニット2308の表示画面上に表示する為の処理を行う。
一方、一致している場合、即ち、合成画像における特定の領域が、第2の拡大画像上における領域である場合には、処理をステップS2607に進め、合成画像における特定の領域を、上記ステップS2602で縮小画像を生成する際に用いた現実空間画像において対応する領域に置き換える処理を行う。
そしてステップS2608では、ステップS2607における処理で得られる合成画像を表示ユニット2308の表示画面上に表示する為の処理を行う。
図27は、合成画像生成を説明する概念図である。
同図上部に示されているのは、フレームバッファ2505に保持されている現実空間画像の一部を切り出したものである。このうち、A、B、C、Dの4画素に注目して説明を進める。話を単純化するために、縦横それぞれを二分の一、面積的には四分の一となる縮小処理を考える。
A、B、C、Dの4画素を解像度変換による縮小処理で1画素へと変換する。変換の手法として、ここでは各画素の相加平均で置き換える1次の線形処理を想定している。4画素の平均値の値が与えられた縮小後の画素Eは、そのあとの拡大処理によって再び4画素へと変換される。ここでいう値とは画素が持つ色情報であり、以下の説明ではRGB各色8ビットの情報を持つものとする。
拡大処理は1次の補間によって行う。その場合の各画素の値をそれぞれE1、E2、E3、E4とする。現実空間画像を背景画像として、その上にCG画像が重畳される場合に想定されるパターンは以下の3通りである。
一つめは背景画像にCG画像が重畳されない場合で、各画素の値は変わらない。二つめは背景画像にCG画像が重畳され、重畳された画素の値が変わる場合である。ここではE2の画素にCGが重畳され、別の値を持つ画素Fに変更されたものとする。三つ目は同じく背景画像にCG画像が重畳される場合であるが、たまたま重畳されたCG画像の画素Fの値と元の画素E2の値が一致している場合である。なお、ここでの説明では縮小処理、拡大処理とも1次としたが、特に解像度変換の次数は限定するものではない。
図28は、上記ステップS2606における比較処理、及びステップS2607における置換処理についての説明図である。
同図最上部に示されているのは、現実空間画像(撮像画像)を構成する画素の集まりである。置換処理によって置き換えられる元となる画素でもある。二段目に示されているのは、比較対象となる画素の集まりで、第2の拡大画像を構成する画素の集まりである。第2の拡大画像を構成する画素の集まりは背景画像として生成された画素の集まりと同一である。三段目に示されているは、CG画像が重畳された画素の集まりで、図27を用いて説明した上記3パターンからなる。
ここで各CG画像重畳後の画素の集まりと第2の拡大画像を構成している画素の集まりの比較について説明する。CG画像が重畳されない場合は、合成画像を構成する各画素と第2の拡大画像を構成する各画素とは一致するため、この合成画像は背景画像と見なされる。置換処理によって各画素の値は、フレームバッファ2505に保持されている現実空間画像の画素の値に置き換えることができる(E1→A、E2→B、E3→C、E4→D)。
また、CG画像が重畳され、かつ重畳された画素の値が背景画像の画素の値と異なる場合は、比較と置換の対象となる領域によって処理結果が異なる。画素単位で比較と置換が行われる場合は、E2の画素のみがCG画素と見なされるため、それ以外の画素が置換される(E1→A、F→F、E3→C、E4→D)。比較と置換の領域が4画素を一まとまりにした範囲で行われる場合は、領域の一部にCG画像が重畳されていると見なされるため、置換処理は行わない。
また、CG画像が重畳され、かつ重畳された画素の値が背景画像の画素の値と同一の場合は、CG画像が重畳されていない場合と同じであるため、置換処理が行われる(E1→A、E2→B、E3→C、E4→D)。
ここで、置換処理による効果と弊害について説明する。一部でもCG画像が重畳され、画素の値が異なる場合は、確実にCG領域か背景画像領域かを判別することができるため、背景画像の復元が可能となる。その際、比較と置換の対象となる領域を画素単位にする場合では、より多くの背景画像領域の復元が可能となる一方、置換処理の回数が増えることになる。比較と置換の対象となる領域を複数の画素の集まりにする場合では、復元できない画素が増える一方、置換の処理回数が減ることになる。
比較や置換の処理の実装方法にもよるが、比較と置換の処理時間が領域のサイズによらず同程度であれば、回数が増えることは処理時間の増大を意味する。ハードウェアによるパイプライン処理等、処理による遅延が問題にならない場合は、回路規模と復元される画像の品質によって対象となる領域のサイズを決定することができる。クロマキー合成においてマット値が必要であった半透明画像の生成については、解像感が落ちた背景画像と高解像のCG画像とがそれぞれの比率で合成されることになる。背景画像は撮像画像より解像感や階調性などが落ちるが、半透明のCG画像の背景として存在するため、単なる背景画像に比べて現実感が損なわれることは少ない。
最後に、比較処理の結果が一致する場合について説明する。まずは全くCG画像を含まない場合である。この場合は置換処理による画像の復元を行っても何ら問題はない。問題であると考えられるのは、CG画像が重畳されたにも関わらず、重畳されたCG画像の画素の値が二度の解像度変換を経た背景画像の画素の値と一致している場合である。このことを二つの観点から検証する。
一点目はCG画像と背景画像の画素の値(すなわち色)が一致する確率である。一般にディスプレイ等の表示パネルに出力する際にはRGB各色8ビット、合計で24ビットの色で表現され、色の出現確率は撮像された外界の画像の種類や光源の違い、また生成されるCGによっても変わってくるが、ここではどの色の出現確率も同じと仮定する。24ビットで表現できる色の種類は約1677万色で、SXGAの解像度を持つディスプレイの画素数は約131万画素である。すなわち背景画像とCG画像が偶然一致するのは動画フレームにして13枚に1枚程度で、さらに1フレームの画像中の1画素だけとなる。無論条件によってはこの数倍から数十倍の確率で出現する可能性も否定はできないが、もう一つの見方により、見かけ上問題のないレベルに収まることを次に説明する。
二点目は、二度の解像度変換を経て得られた背景画像と、元の高精細な現実空間画像との差違についてである。置換によって問題となるのは、置換された画素や領域の明るさや色味が置換前の画素や領域と大きく変わることである。人間の目は明るさ情報(輝度)には敏感であるものの、色の差(色度)についてはそれほど敏感ではない。このことを利用して画像のデータを削減する手法が色表現変換であり、RGB24ビットの情報を半分のYUV411(輝度情報はそのまま、色差情報を四分の一に圧縮)にしても人の目にはほとんどわからないことが知られている。
解像度変換後の背景画像と高精細な現実空間画像とは解像感は異なるものの、明るさや色味については余り変わらない。仮にCG領域が背景領域と判定され、置換処理が行われたとしても、見え方にそれほど大きな違いが認められることはない。また、撮像された自然画像は、一般に階調が滑らかであるため、周辺の画素で明るさや色味が急激に変わることは少ない。
これらを考慮すると、仮にCG領域を背景領域と判断したとしても、人の目には問題とはならないレベルに収まることが予想される。さらには、上述した比較と置換の領域を画素単位よりも大きくし、置換の行われる画素の総数を減らすことで、トータルとして誤った変換を少なくするといった対応をとることもできる。
以上説明してきたように、本実施形態によれば大容量の現実空間画像の伝送量を解像度変換による縮小処理で削減しつつ、クロマキー合成と比べて容易かつ簡便に不透明画像を含むMR合成画像における現実空間画像領域を高精細化に復元することが可能となる。本実施形態の説明では、撮像装置内に位置計測機能と画像合成機能を備えたが、位置計測機能と画像合成機能を備えた別の装置と撮像ユニットや表示ユニットを備えたHMDとを分離する構成にしても同様の機能を実現することもできる。
[第7の実施形態]
図32は、本実施形態に係るシステムの構成を示すブロック図である。同図に示す如く、本実施形態に係わるシステムは、撮像装置3301(撮像装置3301aと撮像装置3301bとで共通の説明においてはまとめて撮像装置3301とする場合がある)と無線アクセスポイント3302と画像処理装置3303とで構成されている。
先ず、撮像装置3301について説明する。本実施形態では、撮像装置3301はビデオシースルー型HMDであるものとする。撮像装置3301が持つ機能は、I/Fが無線通信に限定される点を除いて、図1に示した撮像装置101と同じである。同図に示したように、ひとつの無線AP(アクセスポイント)3302に対して複数の撮像装置3301が接続する。
次に、無線AP3302について説明する。無線AP3302は、撮像装置3301との間で撮像画像、仮想画像、合成画像および位置姿勢情報のやりとりを無線で行う。本実施形態では画像処理装置3303と分離する形態をとっているが、画像処理装置3303に内蔵する構成でも構わない。
次に、画像処理装置3303について説明する。画像処理装置3303が持つ機能は、ネゴシエーションによる設定モードの決定プロセスを除いて、図1に示した画像処理装置102と同じである。
図33は、ネゴシエーション処理およびその後の画像処理における撮像装置3301と無線AP3302と画像処理装置3303との通信状態を示す図である。
二つの撮像装置(HMD)と無線APおよび画像処理装置からなるシステムにおいて、撮像装置1(以下HMD1とし、撮像装置3301aに対応)と無線通信している状態に対して、同じ無線アクセスポイントとの無線通信を別の撮像装置(HMD2とし、撮像装置3301bに対応)が開始するまでの処理の大まかな流れを示している。
ステップS3401では、HMD1からリンク状態である無線AP3302に対して取得した撮像画像と三次元位置姿勢計測センサからの出力情報を無線で送信する。なお、HMDは周期的に撮像画像およびセンサ出力情報を得るため、他の装置の処理とは非同期にこれらのデータを無線AP3302に対して送信する(ステップS3401aからステップS3401cが該当)。
ステップS3402では、受信した撮像画像とセンサ情報を画像処理装置3303に対して送信する。
ステップS3403では、撮像画像中のマーカやマーカの代わりとなる特徴点を抽出して位置姿勢情報を生成する。センサ情報をもとに位置姿勢を算出する構成でも、センサ情報を補助的に使用する構成でも構わない。
ステップS3404では、得られた位置姿勢情報を用いて仮想画像であるCG画像を生成する。
ステップS3405では、受信した撮像画像上にステップS3404で生成したCG画像を重畳し、合成画像である複合現実画像(MR画像)を得る。
ステップS3406では、得られた合成画像を無線AP3302に送信する。
ステップS3407では、受信した合成画像をHMD1に対して無線で送信する。HMD側では得られた合成画像を表示する。ここまでの処理は、図1の説明の最後に示した画像処理装置側で位置姿勢計測と画像合成を行う内容と同じである。相対的に高い演算処理能力を持つ画像処理装置側で処理を行うため、帯域は多く使用するものの高画質のMR画像を表示することができる。
ステップS3408では、新たに無線AP3302との接続を期待するHMD2から、接続要求が送信される。
ステップS3409では、HMD2からの接続要求を受け、無線AP3302は画像処理装置3303へ接続要求を送信する。
ステップS3410では、HMD2に対して無線AP3302のIDを送付し、リンクを確立する。ただしこの時点では、無線通信は行えても、画像の伝送は行わない。
ステップS3411では、本実施形態の特徴である、HMDと画像処理装置による画像形成処理内容の変更が必要かどうか把握するため、ネゴシエーションを開始する。
ステップS3412では、現在接続を行っているHMD1およびこれから接続が期待されるHMD2の位置姿勢計測機能および画像合成機能の有無や内容を把握するため、無線AP3302に対して機能把握の要求を行う。
ステップS3413では、HMD2に対して機能把握の要求を行う。
ステップS3414では、HMD1に対して機能把握の要求を行う。
ステップS3415では、HMD2で持つ位置姿勢計測機能および画像合成機能の内容を無線AP3302に送信する。
ステップS3416では、同じくHMD1で持つ位置姿勢計測と画像合成機能の内容を無線AP3302に送信する。
ステップS3417では、接続している二つのHMDの機能を画像処理装置3303に対して送信する。
ステップS3418では、それぞれのHMDが持つ機能を把握し、かつ伝送帯域と接続されているHMDの台数から、帯域削減のために位置姿勢計測と画像合成をHMD側で行う必要があるかどうかを判断する。詳細については別のフローチャートを用いて後述する。判断の結果に従ってモードを設定する。設定可能なモードについても別の表を用いて後述する。この例では、HMD1、HMD2ともそれぞれ位置姿勢計測と画像合成の機能を保有していることを把握し、かつ十分な帯域が確保できないと判断した結果、双方のHMDともHMD側で位置姿勢計測と画像合成を行うようネゴシエーションするものとする。
ステップS3419では、画像処理装置3303側で判断したモードを設定するよう無線AP3302に対して送信する。
ステップS3420では、モード設定の要求を受け、HMD2に対して設定の要求を送信する。
ステップS3421では、同じくHMD1に対してモード設定の要求を送信する。
ステップS3422では、モード設定の要求を受け、HMD2内部で機能選択を実施した後、設定が完了した旨送信する。
ステップS3423では、HMD2のモード設定が完了したことを画像処理装置3303へ通知する。
ステップS3424では、動作モードの設定とネゴシエーションの終了を受け、画像形成を開始する。具体的にはHMD2内部で位置姿勢情報を生成し、その情報を送信する。
ステップS3425では、HMD2が送信した位置姿勢情報を画像処理装置3303へ送信する。
ステップS3426では、受信した位置姿勢情報をもとに仮想画像であるCG画像をHMD2用に生成する。
ステップS3427では、生成した仮想画像を無線AP3302に送信する。
ステップS3428では、受信した仮想画像をHMD2に対して無線で送信する。
ステップS3429では、HMD1でもモード設定の要求を受け、HMD1内部で機能選択を実施した後、設定が完了した旨送信する。
ステップS3430では、HMD1のモード設定が完了したことを画像処理装置3303へ通知する。
ステップS3431では、動作モードの設定とネゴシエーションの終了を受け、画像形成を開始する。具体的にはHMD1内部で位置姿勢情報を生成し、その情報を送信する。
ステップS3432では、HMD1が送信した位置姿勢情報を画像処理装置3303へ送信する。
ステップS3433では、HMD2において、受信した仮想画像と撮像画像を合成する。
ステップS3434では、合成された表示画像を表示する。
ステップS3435では、受信した位置姿勢情報をもとに仮想画像であるCG画像をHMD1用に生成する。
ステップS3436では、生成した仮想画像を無線AP3302に送信する。
ステップS3437では、受信した仮想画像をHMD1に対して無線で送信する。
ステップS3438では、HMD1において、受信した仮想画像と撮像画像を合成する。
ステップS3439では、合成された表示画像を表示する。
図34は、各装置の送信内容および位置姿勢計測と画像合成の対応関係を示す表である。
画像合成を画像処理装置で行うか、それとも撮像装置で行うか、位置姿勢計測を画像処理装置で行うか、それとも撮像装置で行うかで大きく4つのカテゴリに分かれる。ここでは6つのモードを示しているが、最低でも第1または第2のモード(画像処理装置側ですべての位置姿勢計測処理を行う構成)と第5のモード(撮像装置側ですべての位置姿勢計測処理を行う構成)の二つのモードは選択できるものとする。位置姿勢計測をさらに細かく段階分けをしてモードを増やした構成にしても構わない。
モード1とモード2は、解像度変換を行わない撮像画像をもとに画像処理装置で画像合成を行う構成である。撮像装置から送信するデータとして、位置姿勢計測のための補助データを併せて送信するかどうかが1と2の違いである。
モード3は、基本的な構成はモード1、モード2と変わらず、撮像画像の送信前にデータ削減部によるデータ削減処理が入っているかどうかが相違点である。ここでは、解像度変換による縮小処理を想定している。縮小画像をもとに画像の合成が行われるため、モード1および2の場合と比べて画質面では劣ることになる。ただし送信するデータ量が削減されること、トータルのデータ量が減ることによって画像処理装置の処理負荷を軽減する効果が期待できる。
モード4は、画像合成を撮像装置側で行うことと、仮想画像生成の際に必要となる位置姿勢情報の算出を撮像装置から送られる撮像画像、またはデータ削減された撮像画像および付加されたセンサ出力によって行われる点が特徴である。
モード5とモード6は、撮像装置側で位置姿勢計測と画像合成を行う構成である。画像合成のためのデータとして画像処理装置から受信するデータの内容が異なる。撮像画像の送信が行われないため、3つのカテゴリの中ではもっとも伝送容量を抑えることができる。
以上説明したように、大きく4つのカテゴリに分類されており、細かくは装置の処理能力、および無線アクセスポイントに接続する撮像装置の台数や伝送帯域によって判断され、選択される。モード選択の処理については次の図を用いて説明する。
図35は、上記ネゴシエーションによって設定モードを決定するための処理のフローチャートである。ここでは処理の主体を画像処理装置側に仮定して説明を行っている。撮像装置側が主導的な役割を果たしても構わない。なお、撮像装置、画像処理装置とも位置姿勢計測と画像合成の機能を有していることを前提に説明する。
ステップS3601では、撮像装置3301と画像処理装置3303それぞれの位置姿勢計測機能を把握する。
ステップS3602では、撮像装置3301と画像処理装置3303それぞれの画像合成機能を把握する。
ステップS3603では、装置間をつなぐ無線通信I/Fの伝送帯域、または伝送媒体の種類等の通信条件を把握する。
ステップS3604では、無線アクセスポイント3302に接続する撮像装置3301の台数を把握する。
ステップS3605では、システムの運営において画質を優先するかどうかを判断する。画質を優先する場合はステップS3606へ、優先しない場合はステップS3607へそれぞれ進む。
ステップS3606では、接続する撮像装置3301の台数に対して伝送の帯域が十分かどうかを判断する。伝送帯域が十分な場合はステップS3608へ、そうでない場合はステップS3609へそれぞれ進む。なお、優先の判断処理であるステップS3605とステップS3606は入れ替えてもよい。
ステップS3607では、画質を優先しないことを受けて、接続する撮像装置3301の台数に対して伝送の帯域が十分かどうかを判断する。伝送帯域が十分な場合はステップS3610へ、そうでない場合はステップS3611へそれぞれ進む。
ステップS3608では、伝送帯域が十分であることを受けて、画像処理装置3303で大容量の撮像画像を受信し、モード1,2の何れかを選択する。このモード1では撮像画像のみの伝送であるが、モード2では撮像画像と併せて位置姿勢計測情報または算出のための補助データを撮像装置3301側で用意する点が異なる。モード1、2の何れを設定するのかについては、予め設定しておいても良いし、特に限定するものではない。
ステップS3609では、伝送帯域が不十分なことを受けて、位置姿勢計測および画像合成を撮像装置3301側で行うことを決定する。撮像画像の伝送が不要なため、帯域を有効に活用することが可能となり、モード5を選択する。
ステップS3610では、伝送帯域が十分であることを受けて、位置姿勢計測および画像合成を撮像装置3301側で行うことを決定し、モード6を選択する。モード6では、半透明画像の合成が可能なようにαチャネルの伝送を合わせて行うため、モード5に比べて帯域を多く使用する。
ステップS3611では、画質が優先されずかつ伝送帯域が不十分なことを受けて、モード3または4を選択する。モード3、4の何れを設定するのかについては、予め設定しておいても良いし、特に限定するものではない。
本実施形態では画質面、伝送帯域を重視してモードの選択を行ったが、位置姿勢計測精度や求められる最低限の遅延時間などアプリケーションの内容や用途によってモードを選択する構成でも構わない。また、それぞれの撮像装置3301に位置姿勢計測と画像合成の機能を有していることを前提としたが、どちらかの機能だけを有している場合や、無線アクセスポイント3302と接続する複数の撮像装置3301の一部がその機能を有している場合などは判断のプロセスが複雑化する。そうした場合は、選択できるモードの少ない装置を優先するか、または、画像形成を優先する撮像装置3301を明示しても構わない。
図36は、上記ネゴシエーションによって設定モードを決定するための処理であって、図35に示したものとは別の処理のフローチャートである。
ステップS3701からステップS3704までは図35のステップS3601からステップS3604までと同じであるため、説明は省略する。
ステップS3705では、撮像装置3301のデータ処理能力を把握する。画像処理装置3303のデータ処理能力は予め把握しているものとする。
ステップS3706では、システムの運営において画質を優先するかどうかを判断する。画質を優先する場合はステップS3707へ、優先しない場合はステップS3708へそれぞれ進む。
ステップS3707では、撮像装置3301および画像処理装置3303の処理負荷が大きいかどうかを判断する。処理負荷が大きい場合はステップS3709へ、そうでない場合はステップS3710へそれぞれ進む。
ステップS3708では、画質を優先しないことを受けて、撮像装置3301および画像処理装置3303の処理負荷が大きいかどうかを判断する。処理負荷が大きい場合はステップS3711へ、そうでない場合はステップ3712へそれぞれ進む。
ステップS3709では、処理負荷が大きいことを受けて、モード5または6を選択する。モード5、6の何れを設定するのかについては、予め設定しておいても良いし、特に限定するものではない。
ステップS3710では、処理負荷が軽いことを受けて、モード1または2を選択する。モード1、2の何れを設定するのかについては、予め設定しておいても良いし、特に限定するものではない。
ステップS3711では、処理負荷が大きいことを受けて、モード4を選択する。
ステップS3712では、画質が優先されずかつ処理負荷が軽いことを受けて、モード3を選択する。
このように、判断プロセスが変わることで、選択するモードも変わることになる。どの判断プロセスを採用するかは予め決めておくこともできるし、条件によって選択する構成にすることもできる。
以上説明してきたように、複数の無線撮像装置が一つの画像処理装置または無線アクセスポイントと接続される際、画像形成処理の分業の度合いを切り替えることで、帯域を有効活用することが可能となる。
[第8の実施形態]
上記実施形態では、データ量を削減する方法として、解像度変換による縮小処理、圧縮処理、色表現変換処理や階調数変換を採用する場合について説明してきた。今まで説明してきたように、どれか一つのデータ削減手法によっても効果は十分達成できるが、それらの組み合わせによってさらなるデータ量の削減が図れることは言うまでもない。複数の処理を実装するためには回路規模や処理時間が増大することも予想されるが、システムのバランスとして伝送するデータ量の削減の意義が大きい場合には有効な手段となる。その場合の組み合わせについては特に制限を受けるものではない。
また、上記各実施形態における様々な技術を適宜組み合わせて新たなシステムを構成することは当業者であれば容易に相当し得るものであるので、このような様々な組み合わせによるシステムもまた、本発明の範疇に属するものである。
また、上記実施形態では、様々な機能を何れの装置が行うかをネゴシエーションによって決定しているが、何れか1つのみを決定するようにしても良い。
[その他の実施形態]
また、本発明の目的は、以下のようにすることによって達成されることはいうまでもない。即ち、前述した実施形態の機能を実現するソフトウェアのプログラムコードを記録した記録媒体(または記憶媒体)を、システムあるいは装置に供給する。そして、そのシステムあるいは装置のコンピュータ(またはCPUやMPU)が記録媒体に格納されたプログラムコードを読み出し実行する。この場合、記録媒体から読み出されたプログラムコード自体が前述した実施形態の機能を実現することになり、そのプログラムコードを記録した記録媒体は本発明を構成することになる。
また、コンピュータが読み出したプログラムコードを実行することにより、そのプログラムコードの指示に基づき、コンピュータ上で稼働しているオペレーティングシステム(OS)などが実際の処理の一部または全部を行う。その処理によって前述した実施形態の機能が実現される場合も含まれることは言うまでもない。
さらに、記録媒体から読み出されたプログラムコードが、コンピュータに挿入された機能拡張カードやコンピュータに接続された機能拡張ユニットに備わるメモリに書込まれたとする。その後、そのプログラムコードの指示に基づき、その機能拡張カードや機能拡張ユニットに備わるCPUなどが実際の処理の一部または全部を行い、その処理によって前述した実施形態の機能が実現される場合も含まれることは言うまでもない。
本発明を上記記録媒体に適用する場合、その記録媒体には、先に説明したフローチャートに対応するプログラムコードが格納されることになる。