【実施例1】
【0017】
A.システム構成:
図2は、立体視地図表示システムの構成を示す説明図である。ここでは、地図を平行投影によって3次元的、かつ立体視可能に表示した上で、そこに描かれる文字等についても立体視可能に表示するシステムを例示する。単に3次元的に描いた地図ではなく立体視可能な地図という意味で、以下では、実施例で表示される地図のことを立体視地図と称する。
地図が3次元的に表示されるのに対し、表示深さの調整対象となる文字等(本発明の表示深さ調整オブジェクトに相当するもの)は2次元のデータであることから、以下の実施例で扱う表示深さ調整オブジェクトを2次元オブジェクトと呼ぶこともある。
【0018】
図1には、サーバ200からネットワークNE2等を介して提供される地図データに基づいて、端末300のディスプレイ300dに地図を表示する構成例を示した。端末300としては、スマートフォンを用いるものとしたが、携帯電話、パーソナルコンピュータ、ナビゲーション装置などを用いてもよい。また、3次元立体視地図表示システムは、端末300とサーバ200とからなるシステムの他、スタンドアロンで稼働するシステムとして構成してもよい。
図中には、地図データを生成するデータ生成装置100も併せて示した。
端末300のディスプレイ300dは、右眼用画像と左眼用画像を、それぞれ右眼、左眼で視認できるように表示可能な立体視の機能を有している。本実施例では、いわゆる裸眼での立体視が可能なディスプレイ300dを用いるものとしているが、立体視用の眼鏡等を用いて立体視するデバイスを用いても良い。
【0019】
端末300には、主制御部304の下で稼働する種々の機能ブロックが構成されている。本実施例では、主制御部304および各機能ブロックは、それぞれの機能を実現するソフトウェアをインストールすることによって構成したが、その一部または全部をハードウェア的に構成してもよい。
送受信部301は、サーバ200とのネットワークNE2を介した通信を行う。本実施例では、立体視地図を表示するための地図データおよびコマンドの送受信が主として行われる。
コマンド入力部302は、ボタンやタッチパネルの操作等を通じて、ユーザからの指示を入力する。本実施例における指示としては、3次元地図の表示範囲、拡大・縮小の指定、経路案内を行う際の出発地、目的地の設定などが揚げられる。
GPS入力部303は、GPS(Global Positioning System)の信号に基づいて緯度経度の座標値を得る。また、経路案内では、緯度経度の変化に基づいて進行方向を算出する。
地図情報記憶部305は、サーバ200から提供された地図データを一時的に記憶しておくバッファである。経路案内時のように表示すべき地図が時々刻々と移動していく場合、地図情報記憶部305では不足する範囲の地図データをサーバ200から受信して地図を表示する。
表示深さ設定部307は、地図に表示される2次元オブジェクトについて、その表示深さを設定する。表示深さの設定方法については後述する。
表示制御部306は、地図情報記憶部305に格納されている地図データおよび表示深さ設定部307の設定結果に基づいて、端末300のディスプレイ300dに立体視地図を表示する。
【0020】
サーバ200には、図示する機能ブロックが構成されている。本実施例では、これらの機能ブロックは、それぞれの機能を実現するソフトウェアをインストールすることによって構成したが、その一部または全部をハードウェア的に構成してもよい。
地図データベース210は、立体視地図を表示するためのデータベースである。本実施例では、地物データ211、2次元オブジェクト212、ネットワークデータ213を含む地図データを格納する。ネットワークデータ213は省略することもできる。
地物データ211は、道路、建物などの地物を3次元的、かつ立体視可能に表示するためのデータであり、地物の3次元モデルを右眼用/左眼用に投影条件を変えてそれぞれ平行投影することで得られた2次元のポリゴンデータである。即ち、地図データ211としては、同一の地図領域に対し、右眼用の条件で平行投影された2次元の画像データとしての右眼用画像と、左眼用の条件で平行投影された2次元の画像データとしての左眼用画像が格納されている。
2次元オブジェクト212は、地物以外に地図に表示すべき地物名称・地名・案内情報等を表す文字、地図記号・通行規制標識、経路案内における現在位置を表すシンボルデータや経路などを構成する矢印のポリゴンデータ等である。現在位置や経路のように表示位置が不定のものを除き、2次元オブジェクト212には、表示すべき文字や記号などのデータ、および表示位置が対応づけて格納されている。表示位置は、3次元空間上の位置としてもよいし、平行投影された投影画像上の位置座標としてもよい。また、地物名称のように、特定の地物と関連づけられた2次元オブジェクト212については、地物との関連付けを表すデータも併せて格納されている。
本実施例では、2次元オブジェクト212は、表示時に視差を与えるものとしているが、変形例として、予め決まった視差で立体視可能な構成とすることもできる。かかる場合には、2次元オブジェクト212としては、立体視可能な右眼用画像と左眼用画像の形式で格納しておいてもよい。また、地物データ211と2次元オブジェクト212とを重畳した状態の画像データを、地物データ211として格納しておくこともできる。
ネットワークデータ213は、道路をノード、リンクの集まりで表現したデータである。ノードとは、道路同士の交点や道路の端点に相当するデータである。リンクはノードとノードとを結ぶ線分であり、道路に相当するデータである。本実施例では、ネットワークデータ213を構成するノード、リンクの位置は、緯度経度および高さの3次元データで定められている。
送受信部201は、ネットワークNE2を介して端末300とのデータの送受信を行う。本実施例では、3次元地図を表示するための地図データおよびコマンドの送受信が主として行われる。また、送受信部201は、ネットワークNE1を介してデータ生成装置100との通信も行う。本実施例では、生成された地図データの授受が主として行われる。
データベース管理部202は、地図データベース210からのデータの読み出し、書き込みを制御する。
経路探索部203は、地図データベース210内のネットワークデータ213を用いて、経路探索を行う。経路探索には、ダイクストラ法などを用いることができる。上述の通り、経路探索によって得られた経路を表す矢印等も、2次元オブジェクトに該当する。
【0021】
データ生成装置100には、図示する機能ブロックが構成されている。本実施例では、これらの機能ブロックは、パーソナルコンピュータに、それぞれの機能を実現するソフトウェアをインストールすることによって構成したが、その一部または全部をハードウェア的に構成してもよい。
送受信部105は、ネットワークNE1を介してサーバ200とデータの授受を行う。
コマンド入力部101は、キーボード等を介してオペレータの指示を入力する。本実施例では、地図データを生成すべき領域の指定、平行投影パラメータの指定等が含まれる。平行投影パラメータとは、平行投影する際の投影角度、投影方位を言う。投影角度とは、鉛直方向からどれだけ傾けて投影するかを意味する。
3D地図データベース104は、地図データを生成するために用いられる3次元モデルを格納するデータベースである。道路、建物などの地物については、3次元形状を表す電子データが格納されている。また、地図中に表示すべき文字、記号などの2次元オブジェクトも、格納されている。
平行投影部102は、3D地図データベース104に基づいて平行投影による描画を行って地物データを生成する。描画された投影図は、平行投影データ103として格納され、送受信部105を介してサーバ200の地図データベース210の地物データ211に格納される。投影パラメータ修正部106は、平行投影を行う際に、指定された平行投影パラメータを修正し、右眼用/左眼用の平行投影パラメータを設定する。修正方法については後述するが、平行投影時の投影方向を右眼用/左眼用で異ならせるのである。こうすることで、立体視するための右眼用画像、左眼用画像をそれぞれ生成することができる。
【0022】
B.平行投影パラメータの設定:
図3は、平行投影パラメータの設定方法を示す説明図である。平行投影パラメータには、鉛直方向からの傾きを示す投影角度、投影方位が含まれる。
まず
図3(a)に示すように3軸を定義する。即ち水平面内にx軸、z軸を定義し、鉛直下方向にy軸を定義する。x軸、y軸、z軸は右手座標系である。図示する通り地物の鉛直上方にカメラを置いて平行投影すると2次元地図が描かれることになる。本実施例に言う平行投影は、この状態から傾けた状態で投影することを言う。
この場合、x軸周りにカメラを回転させると、鉛直方向から斜めに傾けて平行投影することになるので、x軸周りの回転は投影角度を表すことになる。また、y軸方向にカメラを回転させると、水平方向で平行投影の方位が変化することになるので、y軸周りの回転は投影方位を表すことになる。そして、z軸周りにカメラを回転させると、以下に示す通り視差を与えることができる。
図3(b)に視差が生じる理由を示した。
図3(b)はz軸方向に地物を見た状態、つまり、z軸が紙面に垂直な状態となっている。視差は、この地物を鉛直上方からy軸方向に見た時に、右眼、左眼の位置の違いによって生じる視線方向の相違である。従って、図中における基準のカメラ位置CCに対して、右眼から見た状態に相当するカメラ位置CR、左眼から見た状態に相当するカメラ位置CLで投影することによって、視差を与えた右眼用/左眼用の画像を生成することができる。視差、即ちz軸周りの回転角δは、任意に設定可能であるが、違和感のない視差を与え得る角度としては、例えば、約20度程度とすることができる。
このように、投影角度、投影方位に加えて、
図3(b)で示した視差を考慮して平行投影を行うことにより、平行投影であっても、立体視可能な右眼用/左眼用画像を生成することができる。
【0023】
C.地物データ生成処理:
次に、地物データ211、即ち地物の3次元モデルを右眼用/左眼用に投影条件を変えてそれぞれ平行投影した2次元のポリゴンデータを生成するための処理について説明する。この処理は、データ生成装置100の平行投影部102が主として実行する処理であり、ハードウェア的には、データ生成装置100のCPUが実行する処理である。
図4は、地物データ生成処理のフローチャートである。
処理を開始すると、CPUは、処理対象となるメッシュの指定、および平行投影パラメータを入力する(ステップS10)。メッシュとは、地図データの作成対象となる全領域を、所定の大きさの矩形領域に区切った一つ一つを言う。指定方法は、メッシュ固有のインデックス、メッシュの座標などを用いることができる。地図上でオペレータが指定した点の座標値を含むメッシュをデータ生成装置100が解析し、これを処理対象のメッシュとして設定する方法をとってもよい。
平行投影パラメータは、投影方位と投影角度である。この段階では、視差は0度としておく。投影方位および投影角度は、地物データを生成する度にオペレータが指定するものとしてもよいし、デフォルト値を用いるようにしてもよい。
投影方位は、いずれか単一の方位としてもよいが、本実施例では、方位を45度ずつずらした8方位について、それぞれ平行投影を行い、地物データを生成するものとした。このように多方位で地物データを用意しておけば、いずれかの投影方位で建物の陰になるなどの死角が生じた場合でも、他の投影方位を利用することにより、死角を回避した表示を実現できる利点がある。
【0024】
次に、CPUは、対象メッシュおよびその周辺の所定範囲のメッシュについて、3D地図データベースを読み込む(ステップS11)。周辺の所定範囲のメッシュも読み込む理由は、次の通りである。
本実施例では、3D地図データベースに含まれる3次元の地物データを鉛直方向に対して所定の投影角度だけ傾けた斜め方向から平行投影することによって地物データを生成する。このように斜め方向からの平行投影を行う場合、処理対象となるメッシュの周辺のメッシュに存在する地物の一部が投影されることもある。逆に、単に対象メッシュだけの3D地図データベースを利用して平行投影を行ったのでは、他のメッシュに存在する地物の投影図が欠けてしまい、適切な地物データを得ることができない。これを回避するため、本実施例では、対象メッシュの周辺のメッシュも読み込むこととしている。読み込む範囲は、任意に設定可能であるが、本実施例では、対象メッシュから2区画以内のメッシュに属する3D地図データを読み込むものとした。
【0025】
次に、CPUは、左眼用視差、右眼用視差を設定する(ステップS12)。先に
図3(b)で示したように、投影方位および投影角度で定まる平行投影の方向を、さらにz軸周りに±δ度だけ回転させるのである。この処理は、投影パラメータ修正部106の処理に相当する。
そして、CPUは、こうして設定された左眼用視差を用いて平行投影を行うことにより左眼用画像を生成し(ステップS13)、右眼用視差を用いて平行投影を行うことにより右眼用画像を生成する(ステップS14)。それぞれ生成される画像は、平行投影によって地物を3次元的に表現した2次元画像データとなる。平行投影によって生成された左眼用/右眼用画像を、左眼用/右眼用平行投影データと呼ぶこともある。
CPUは、こうして得られた左右眼用画像から、それぞれ対象メッシュに相当する領域を切り出し(ステップS15)、左眼用画像データ、右眼用画像データからなる地物データとして格納する(ステップS16)。これらの画像データは、2次元のポリゴンデータとして格納するものとしたが、ラスタデータとして格納してもよい。また、左眼用/右眼用画像データの切出しおよび格納の際には、各ポリゴンに名称、位置、形状などの属性を併せて整備してもよい。
以上の処理を全投影方位、全メッシュについて実行することによって、データ生成装置100は、本実施例の地物データ211を整備することができる。
【0026】
図5は、右眼用/左眼用平行投影データの例を示す説明図である。
図5(a)には右眼用平行投影データを示し、
図5(b)には左眼用平行投影データを示した。それぞれの画像においては、平行投影によって、地物が3次元的に表示されている。例えば、領域A1と領域B1、領域A2と領域B2をそれぞれ比較すると、建物の側壁の描かれ方などから、右眼用/左眼用の視差の相違を認識することができる。このように用意された右眼用/左眼用平行投影データを用いることによって、3次元地図を立体視することが可能となる。
【0027】
D.地図表示処理:
図6は、地図表示処理のフローチャートである。ここでは、ユーザから指定された地点、方位に従って、背景となる地図を立体視可能に表示するとともに、文字等の2次元オブジェクトをその手前に立体視可能に表示する処理の例を示す。この処理は、経路探索と併せて用いることにより、経路案内表示として利用することもできる。
地図表示処理は、端末300の主制御部304および表示制御部306が実行する処理であり、ハードウェア的には端末300のCPUが実行する処理である。
【0028】
この処理では、まず端末300は、ユーザから指定された表示位置、方位、範囲を入力する(ステップS100)。表示位置は、例えば、GPSで得られる現在位置を用いるものとしてもよい。
端末300は、指定に従って、地図情報記憶部305から左右眼用平行投影データを読み込む(ステップS101)。地図情報記憶部305に蓄積されていない領域のデータが必要な場合には、端末300は、サーバ200から当該データをダウンロードする。
次に、端末300は、同じく地図情報記憶部305から、2次元オブジェクト(文字、記号(地図記号・通行規制標識を含む)、現在位置、経路表示等)のデータを読み込む(ステップS101)。2次元オブジェクトは、地図の機能等に基づき、必要なもののみを読み込むようにしてもよい。
【0029】
2次元オブジェクトには、3次元空間内で表示位置が指定されているから、端末300は、読み込んだ2次元オブジェクトに対して座標変換処理を施し、表示画面上の表示位置を求める(ステップS300)。ここで一旦、座標変換の方法について説明する。
図7は、座標変換処理のフローチャートである。
処理を開始すると、端末300は、平行投影パラメータとして投影角度、投影方位を入力し、座標変換行列を作成する(ステップS301、302)。ここでは、2次元オブジェクトの基準となる表示位置(
図1(b)の中心基準画像に相当する位置)を求めるための座標変換なので、視差は用いない。
座標変換行列は、3次元の位置情報を、y軸周りに投影方位(β度とする)だけ回転させた後、x軸周りに投影角度(α度とする)だけ回転させる行列となる。
端末300は、2次元オブジェクトのデータを入力し(ステップS303)、上述の方法で得られる座標変換行列によって、座標変換することによって(ステップS304)、表示画面上での2次元オブジェクトの位置を求めることができる。
【0030】
図6の地図表示処理に戻り、次に、端末300は、2次元オブジェクト表示深さ設定処理を行う(ステップS400)。これは、各2次元オブジェクトに対して、いかなる表示深さで立体視を行うかを設定するための処理である。この処理によって、例えば、文字情報を他の記号等よりも手前に表示したり、文字同士が重なっている場合に、一方を他方よりも手前に表示するなどの態様での立体視が可能となる。
【0031】
ここで一旦、
図8により、表示深さ設定処理の内容について説明する。
図8は、2次元オブジェクト表示深さ設定処理のフローチャートである。
端末300は、まず2次元オブジェクトの種別による優先度設定を行う(ステップS400)。図中に示す通り、本実施例では、デフォルト設定の他、ユーザによる任意の設定も可能とした。デフォルト設定では、文字、記号、経路表示の順に優先度が設定される。これは、文字が最も手前に表示され、次に現在位置や通行規制を表す記号、経路表示の順に奥に表示されることを意味している。デフォルト設定における優先度は、これに限らず、任意の設定が可能である。
次に、端末300は、重複する文字の有無を判定する(ステップS401)。図中に判定方法を示した。各文字列には、代表点と文字の表示領域があり、これに基づいて、図中に示すように、「文字1」「文字2」が表示されている範囲として、矩形の表示領域を求めることができる。文字の重複の有無は、この文字の表示領域と代表点の位置関係に基づいて判定する。図の例で言えば、文字2の代表点2は、文字1の文字列表示領域1に属している。一方、文字1の代表点1は、文字2の文字列表示領域2に属してはいない。従って、かかる位置関係においては、文字2が、文字1によって隠される位置関係にあると判定することができる。図の例では、代表点を文字列表示領域の左下に設定しているが、代表点の位置は、文字列表示領域の重心位置など任意に設定可能である。
端末300は、重複する文字列がある場合、文字間の表示深さの設定を行う(ステップS402)。表示深さの設定は、以下に示す種々の基準に基づいて行うことができる。
例えば、図中に示すように、文字列が建物の名称に該当する場合には、文字列に関連づけられた建物の属性を参照し、その高さに応じて文字列の表示深さを設定してもよい。高い建物の文字列ほど、手前に表示されるようにするのである。
また、地物の優先度に基づく設定をしてもよい。例えば、地物の種別に応じてランドマーク>一般のビル>家屋>道路などのように優先度を設定しておき、優先度の高い地物に関連づけられている文字列ほど、手前に表示されるようにするのである。
文字列の表示領域サイズに基づく設定をしてもよい。表示領域サイズが大きい文字列ほど重要性が高いと考えて、手前に表示されるようにしてもよいし、逆に、表示領域サイズが大きい文字列は多少隠れても判読可能と考え、奥に表示されるように設定してもよい。
代表点包含関係による設定をしてもよい。代表点が他の文字列表示領域に属する側を、隠れている側と判定し、奥に表示されるよう設定するのである。それぞれの代表点が相互に文字列表示領域に包含されている場合には、その他の基準によって表示深さを設定するようにすればよい。
上述した方法は、自動的に表示深さを設定するものであるが、これとは別に、ユーザが個別に表示深さを指定可能としてもよい。こうすることにより、例えば、一旦表示された地図上で、隠れている文字を手前にするよう指定して再度、地図を表示させることが可能となる。
ここで説明した表示深さ設定方法(ステップS400〜S402)は、いずれか一つのみを選択して使用するようにしてもよいし、複数の設定方法を、所定の優先度で順次適用するようにしてもよい。
図8の例では、重複する文字を対象として表示深さを設定する例を示したが、他の2次元オブジェクトについても、同様の方法を適用可能である。
図8で示した処理によって設定される表示深さは、任意の値を取り得るようにしてもよいし、表示深さ「深い」「中間」「浅い」のように予め量子化された値のいずれかを選択するものとしてもよい。
【0032】
こうして表示深さを設定すると、端末300は、設定された表示深さに基づき2次元オブジェクトの左右眼用画像を生成する(ステップS500)。これは、
図1に示すように、2次元オブジェクトの表示位置を座標変換(ステップS300)で得られた位置から左右(x方向)にオフセットすることによって得られる。オフセット量は次の考え方で求めることができる。
即ち、2次元オブジェクトを設定された表示深さhに応じた3次元位置に設定し、視差δによる回転行列を作用させて得られるx座標の変位が右眼用/左眼用の2次元オブジェクトのオフセット量となる。視差δは規定値(本実施例では20度)を用い可変値ではないから、この回転行列を作用させた場合の座標のオフセット量は表示深さhの関数となり、「オフセット量=h・tanδ」で与えられる。従って、この関数を予め記憶させておくことにより、表示深さに応じたオフセット量を容易に得ることができる。
【0033】
最後に、端末300は、左右眼用平行投影データおよび2次元オブジェクトを重畳して表示し(ステップS501)、地図表示処理を終了する。こうして表示された右眼用画像を右眼で、左眼用画像を左眼で認識することにより、ユーザは背景の地図および2次元オブジェクトを立体視することができる。
左右眼用平行投影データは、既に平行投影された後の2次元のポリゴンデータに過ぎないから、ステップS501の処理においては、取得したデータに従ってポリゴンを描画するだけで投影処理を行うまでなく軽い負荷で立体視を実現することができる。
【0034】
以上で説明した本実施例の立体視地図表示システムによれば、表示深さを変えた立体視によって2次元オブジェクトを表示することができるため、2次元オブジェクト同士が重複している場合でも、その判別が可能となる利点がある。
また、かかる立体視を実現する際に、背景となる地図の立体視用の画像とは別に、2次元オブジェクトについてはオフセットすることによって立体視画像を作成することができるため、比較的軽い負荷、かつ柔軟に2次元オブジェクトの立体視を実現することができる。
さらに、本実施例では、地図については平行投影データを用いて立体視を実現している。平行投影データは視点位置に関わらず全領域で共通して用いることができるため、立体視用の画像データも予め全領域で生成しておくことができ、非常に軽い負荷で立体視を実現できる利点がある。
【0035】
以上、本発明の実施例について説明した。立体視地図表示システムは、必ずしも上述した実施例の全ての機能を備えている必要はなく、一部のみを実現するようにしてもよい。また、上述した内容に追加の機能を設けてもよい。
実施例では、2次元オブジェクトに対して表示時に視差を与えるものとしているが、変形例として、2次元オブジェクトを予め決まった視差で立体視可能な構成とすることもできる。かかる場合には、2次元オブジェクト212のデータは、2次元オブジェクトに対してオフセットを与え(
図8のステップS500)、立体視可能な右眼用画像と左眼用画像の形式で格納しておいてもよい。また、地物データ211と2次元オブジェクト212とを重畳した状態の画像データを、地物データ211として格納しておくこともできる。
またそれぞれの2次元オブジェクトに対して、予めデフォルトのオフセット量、または表示深さを対応づけて格納しておいてもよい。こうすることにより、表示深さ設定処理(
図8)を省略して2次元オブジェクトの立体視を実現することもできる。
2次元オブジェクトの表示深さやオフセット量は、必ずしも2次元オブジェクトに対応づけて記憶させておく必要はなく、例えば、地物データに記憶させておくようにしてもよい。この態様では、座標変換(
図6のステップS300)によって、2次元オブジェクトの表示位置を得た後、その座標値に対応する地物データを参照することで、表示深さまたはオフセット量を得ればよい。
このように2次元オブジェクトに対して、表示深さやオフセット量を対応づけておく方法は、他にも多様な方法を採ることができる。
本発明は上述の実施例に限定されず、その趣旨を逸脱しない範囲で種々の構成を採ることができることはいうまでもない。例えば、実施例においてハードウェア的に構成されている部分は、ソフトウェア的に構成することもでき、その逆も可能である。