【実施例1】
【0017】
以下、本発明の実施例について、地図の地表面についてメッシュ単位でフィルタ処理を施したうえで表示するための地図表示処理装置としての画像処理装置の例を説明する。この装置は、地表面について各メッシュの属性が記憶された地図データベースに対し、メッシュ単位でフィルタ処理を施し、地図を表示する装置である。
本実施例では、メッシュに付されたインデックスに応じて適用されるテクスチャ画像を地表面テクスチャパターンと呼ぶ。
この地図表示処理装置は、経路探索システム、その他の地図を表示する種々の地図出力システムに利用可能である。
【0018】
A.システム構成:
図1は、実施例における地図表示処理装置100の構成を示す説明図である。地図表示処理装置100は、CPU、RAM、ROMを備えるコンピュータに、図示する種々の機能ブロックを実現するためのコンピュータプログラムをインストールすることによって実現される。本実施例では、3次元地図データ生成システム100は、スタンドアロンで稼働する装置例を示したが、複数のサーバ等をネットワークで接続した分散システムによって実現してもよい。また、各機能ブロックは、ハードウェア的に構成することも可能である。
【0019】
地図データベース130は、フィルタ処理を施す前の原地図における地表面データ131と、それと関連する地表面テクスチャパターン132を格納したデータベースである。地表面データ131は、個別のメッシュを識別するためのメッシュID、地表面テクスチャパターンとの関連付けをするインデックス、標高データなどを格納する(
図2)。
地図データベース130は、原地図に関するデータを格納しているのであって、フィルタ処理を施した後のデータは格納していない。地図データベース130は、原地図に関するデータとして、上記のほか建物や橋といった建造物、樹木といった自然物などの地物の3次元形状を表す地物データ133及び地名や道路名などの文字データ134も格納している。
地表面テクスチャパターン132には、田畑、山林、河川など地表面の種別に応じた外観のパターンを表す図柄が地表面テクスチャパターンとして格納されている。そして、それらの地表面テクスチャパターンがインデックスを与えられて管理されている。
【0020】
コマンド入力部110は、オペレータからのコマンドを入力する。コマンドとしては、地図の表示範囲の指定、フィルタ処理の実行の有無、実行の範囲の指定などに関するものが含まれる。
フィルタ処理部120は、メッシュ単位でのフィルタ処理を行う。フィルタ処理部120における周辺メッシュ設定部121は、フィルタ処理を施す対象となるメッシュ、即ち対象メッシュに対し、フィルタ処理に引用する周辺メッシュを設定する。画素値演算部122は、着目ピクセル及び周辺ピクセルの画素値を引用したうえで、一定の演算方法により、処理対象ピクセルの画素値を決定することでフィルタ処理を実行する。
【0021】
表示制御部140は、入力されたコマンドにより、フィルタ処理が施された地表面、地物、文字などをディスプレイに表示するための制御を行う。
地表面生成部141は、地図データベース130に格納されている地表面データ131に関してフィルタ処理部120によりフィルタ処理を施したあとの地表面データを生成する。
地物モデル配置部142は、地表面生成部141によって生成された地表面上に地物データ133に格納されている地物を配置する。
投影部143は、仮想3次元空間内に配置された地物データ133を、透視投影などの方法で投影して地図の表示画像を生成する。
文字表示部144は、文字データ134に格納されている文字を、地図に表示させる。
【0022】
図2は、メッシュとピクセル及びそれらとテクスチャデータとの対応関係を示す説明図である。
図の左側には地表面データ131によって表される地表面の状態を模式的に示した。地図データは、図中に実線で示すように所定サイズの矩形領域に分けて整備されている。地表面データ131は、地表面を、図中に破線で示すように、さらに細かな矩形領域に分け(これをメッシュと呼ぶ)、メッシュごとにその代表点の座標および標高データを記憶したデータである。メッシュの幅Lx、Lyは、任意に設定可能である。
図の中央に、地表面データ131のデータ構造を示した。地表面データ131では、メッシュごとに図示する情報が格納されている。メッシュIDは、メッシュの識別情報である。インデックスは、メッシュ属性であり、本実施例では、田畑、山林、河川などメッシュがどのような領域なのかを示す情報である。標高データは、メッシュの代表点の標高である。その他、代表点の座標値を含め、種々の情報を格納することができる。
図の右側には、地表面テクスチャパターン132の構造を示した。ここには、図示するように、地表面の様子を表現する種々のテクスチャTEX1、TEX2、TEX3等が格納されている。それぞれ所定サイズの画像データである。テクスチャTEX1〜TEX3のサイズは、メッシュと同じとしてもよいし、異なっていても良い。
各テクスチャTEX1〜TEX3には、それぞれ100、200、1100などのインデックスが付されている。こうすることにより、地表面データ131のインデックスに応じてテクスチャを使い分けることができる。例えば、地表面データ131において、あるメッシュにインデックス「100」が付されているときは、それに対応するテクスチャTEX1が適用され、インデックス「200」が付されているときは、それに対応するテクスチャTEX2が適用されるのである。
【0023】
メッシュ属性を表すインデックスは、任意に設定可能であるが、例えば、国土交通省が提供している都市地域土地利用細分メッシュデータに付されたコードを用いても良い。コードと種別との対応関係の一例を示せば次の通りである。
(コード、種別)=(100、田)、(200、その他の農用地)、(500、森林)、(600、荒地)、(701、高層建物)等
国土交通省が提供するデータを用いれば、全国の多様な土地に対して、容易にテクスチャの使い分けを実現することができる利点がある。
【0024】
B.地図表示処理:
図3は、地図表示処理装置100における地図表示処理のフローチャートである。
地図表示処理装置100は、まずオペレータの指示に従って画面に表示すべき地図の範囲の設定を行う(ステップS10)。
【0025】
地図表示処理装置100は、次に、設定された表示範囲の地表面に関するデータを地図データベース130における地表面データ131及び地表面テクスチャパターン132より読み込む(ステップS11)。
読み込まれた地表面データをもとにフィルタ処理部120によりフィルタ処理を実行する(ステップS12)。フィルタ処理とは、地表面テクスチャパターンが施されたメッシュ間の境界を目立たなくする処理である。処理内容の詳細は、後で説明する。
フィルタ処理を施した後、地図表示処理装置100は、仮想3次元空間内に、地表面データ131に基づいてフィルタ処理が施された地表面テクスチャパターンを適用した地表面を生成し、地物モデル配置部142により、地物データ133から読み込まれた地物を配置する(ステップS13)。
そして、地物を配置させた地図を、投影部143により投影処理を行ったあと(ステップS14)、文字表示部144により、文字データ134より読み込みを行った文字を表示させる(ステップS15)。投影処理は、本実施例では、オペレータによって指定された視点および視線方向からの透視投影を行う。透視投影に代えて、平行投影を行っても良い。
地図表示処理装置100は、以上の処理を、表示する範囲についてその都度実行する。
【0026】
C.フィルタ処理:
図4〜
図7は、
図3におけるフィルタ処理(ステップS12)に関してさらに詳細に図示したフローチャートである。
この処理を開始すると、まず、周辺メッシュ設定部121は地表面データ130の中から処理対象となる対象メッシュを選択する(
図4、ステップS30)。対象メッシュは、オペレータが指示するようにしてもよいが、自動的に選択するようにしてもよい。図中には、自動的に選択する際の選択順序を例示した。図示するように、周辺メッシュ設定部121は、矢印a1の方向に順次、対象メッシュを選択し、端まで処理を終えると、次の行に移動し、さらに矢印a2、a3のように対象メッシュを選択することができる。選択の方法は、他にも任意に設定可能である。
【0027】
次に、周辺メッシュ設定部121は対象メッシュのインデックスに基づき周辺メッシュを設定する(
図4、ステップS31)。このとき、周辺メッシュ設定部121は、対象メッシュのメッシュ属性によって、周辺メッシュの広狭や位置を設定することもできる。
図中に周辺メッシュを設定する例を模式的に示した。図の中央のハッチングを付したメッシュが対象メッシュであるとする。図の下側には、インデックスと範囲との対応関係を表すテーブルを示した。この例では、図示するようにインデックス100、200等に対しては範囲2、インデックス901、1100等に対しては範囲1というように設定されている。このテーブルは、周辺メッシュ設定部121内に組み込むようにしてもよいし、別途、データベースとして備えるようにしてもよい。
図の例では、範囲1は、対象メッシュに隣接する範囲を示している。即ち、範囲1が指定される場合には、対象メッシュに隣接する8つのメッシュを周辺メッシュとするのである。範囲2は、範囲1のさらに外側に隣接するメッシュが含まれる。即ち、範囲2が指定される場合には、対象メッシュの周囲に位置する24個のメッシュが周辺メッシュとされる。
このように、インデックスに応じて周辺メッシュの範囲を変更することにより、対象メッシュのフィルタ処理に影響を与えるメッシュの範囲を変更させることができる。例えば、河川と陸地のように比較的境界を明確に表現したい領域にはメッシュの範囲を狭くし、山林と田畑のように境界を目立たないようにした方が好ましい領域にはメッシュの範囲を広くするなどの態様をとることができ、柔軟な表現を実現することが可能となる。
【0028】
周辺メッシュは、必ずしも対象メッシュの周囲に均等に設定する必要はない。例えば、範囲3に示すように、対象メッシュを角に据えた状態で周辺メッシュの範囲を設定してもよい。また、範囲1、範囲2においても、これらの領域内にあるメッシュを全て周辺メッシュとする必要はなく、例えば、対象メッシュの上下左右の4方向のみを用いるなど、これらの範囲の一部のみを周辺メッシュとして利用するようにしてもよい。
【0029】
そして、周辺メッシュが決定すると、フィルタ処理部120は、対象メッシュ及び周辺メッシュの少なくとも一方の属性により各ピクセルの画素値に乗じる重み値を決定する(
図5、ステップS32)。
図中に、各メッシュに付されたインデックスに基づき予め対応付けされた重み値を決定する方法を例示した。図の上側に示すように、インデックスに対して重み値を与えるテーブルを予め用意しておく。この例では、インデックス100、200、901、1100に対して、それぞれ重み値0.4、0.5、0.8、0.9が設定されている。これに基づいて各メッシュの重み値が決定される。
図の下側に示すように、例えば、周辺メッシュ1、2は、それぞれインデックス=100であるから、その重み値W1、W2は0.4と設定される。周辺メッシュ3は、インデックス=200であるから、その重み値W3は0.5と設定される。周辺メッシュ4、対象メッシュ、周辺メッシュ5は、それぞれインデックス=901であるから、重み値W4、WP、W5は0.8と設定される。このように、各メッシュのインデックス値に応じて重み値を決定するのである。
図5では、全メッシュについて各メッシュの属性に基づき重み値を決定しているが、周辺メッシュまたは対象メッシュのいずれか一方のみに重み値を設定するようにしてもよい。
対象メッシュ及び周辺メッシュの少なくとも一方の属性によって重み値を決定することにより、例えば、より色柄を強調したいテクスチャパターンにはあらかじめ大きな値の重み値を設定するなどして、より地図のリアリティを向上させることができる。
【0030】
上記態様では、対象メッシュ、周辺メッシュのそれぞれのインデックスに応じて重み値を決定する方法を示したが、これに代えて、対象メッシュのインデックスによって重み値を与えるようにしてもよい。例えば、対象メッシュのインデックスに応じて、その周囲に位置する周辺メッシュのそれぞれに対して、対象メッシュとの位置関係に基づいて重み値を与えるテーブルを用意しておく方法をとることができる。こうすることにより、周辺メッシュがどのような属性を有するかに関わらず、対象メッシュの属性によってフィルタの効果を調整することができる。
【0031】
次に、フィルタ処理部120は、対象メッシュ内から着目ピクセルを選択する(
図6、ステップS33)。この実施例において、フィルタ処理を施す着目ピクセルを特に着目ピクセルPPと呼ぶこととする。着目ピクセルは、種々の方法で選択可能であるが、例えば、図中に示すように規則的な順序で設定するようにしてもよい。即ち、対象メッシュの左上から矢印b1の方向に順次、着目ピクセルPPを選択し、それが終了した後、矢印b2、b3に示すように順次、行をずらして選択するのである。
【0032】
着目ピクセルPPが選択されれば、その対象メッシュ内での位置座標に基づき、周辺メッシュ内の周辺ピクセルを特定する(
図6、ステップS34)。この実施例において、着目ピクセルPPの位置座標に基づき特定される周辺ピクセルを周辺ピクセルAPnと呼ぶこととする。
図中に周辺ピクセルを選択する方法を例示した。本実施例においては、着目ピクセルPPの対象メッシュ内での位置座標(xr,yr)と周辺メッシュ内での周辺ピクセルAPnの位置座標(xr,yr)が同一となるように周辺ピクセルAPnを設定している。例えば、図示するように、着目ピクセルPPの対象メッシュ内での相対座標が、xr、yrで表されるとする。このとき、周辺メッシュ1においては、このメッシュ内での座標xr、yrにあるピクセルが周辺ピクセルAP1となる。その他の周辺メッシュについても、同様に、相対位置座用xr、yrにあるピクセルを周辺ピクセルAPnとするのである。
周辺ピクセルの設定は、必ずしも相対的な位置座標が同じものとする必要はなく、種々の方法で設定可能である。例えば、着目ピクセルPPの相対座標xr、yrを入れ替え、周辺メッシュ内で相対座標yr、xrにあるピクセルを周辺ピクセルと設定してもよい。周辺ピクセルAPnは、着目ピクセルPPの対象メッシュ内での位置座標により、一定の規則性のもと特定されるが、一つの周辺メッシュにつき一つの周辺ピクセルAPnが特定される。フィルタ処理を対象メッシュ内の全ピクセルにつき施すにあたり、対象メッシュ内において、着目ピクセルがm個選択される場合には、各着目ピクセルに応じて周辺ピクセルもm個特定されるが、同一の周辺ピクセルAPnが二度以上特定されることはない。周辺ピクセルAPnは、着目ピクセルPPの対象メッシュ内での位置座標により一定の規則性のもと特定されれば足り、必ずしもメッシュ内での相対位置が同一である必要はない。すなわち着目ピクセルPPの対象メッシュ内での位置座標と周辺ピクセルAPnの周辺メッシュ内での位置座標とが同一である必要はない。
【0033】
周辺ピクセルAPが特定されれば、画素値演算部122は、着目ピクセルPP及び周辺ピクセルAPnの各画素値を読み込む(
図7、ステップS35)。この実施例においては、着目ピクセルPPの画素値をVPP、周辺ピクセルAPnの画素値をVAPnと呼ぶこととする。
そして、画素値演算部122は、各ピクセルの画素値と、ステップS32で予め決定された重み係数を用いて、着目ピクセルPP(処理対象ピクセル)の画素値VPPnを算出する(
図7、ステップS36)。演算は、種々の方法で行うことができるが、本実施例では、各画素値の重み平均、即ち、着目ピクセルPPの画素値VPPに固有の重み係数WPを乗じたもの、及び、各周辺ピクセルAPnの画素値VAPnに固有の重み係数Wnを乗じたものの総和を求め、これを着目ピクセルPPの固有の重み係数WPと各周辺ピクセルAPnの固有の重み係数Wnの総和で除する方法による。すなわち、画素値に重み係数を乗じて平均を求めるのである。
ここで、着目ピクセルPPの画素値VPPを処理対象ピクセルの画素値VPPnに大きく反映させ、もとの画素値VPPから大きく乖離しないように、着目ピクセルPPの重み係数WPに一定の係数をさらに乗ずることも考えられる。実施例では、着目ピクセルPPの重み係数WPに対してさらに「2」を乗じている。このとき、除する側のWPに対しても同じ「2」を乗ずることとなる。
【0034】
画素値演算部122は、ステップS36で得られた処理対象ピクセルの画素値VPPnをデータとして記憶させる(
図7、ステップS37)。記憶させる場所は、フィルタ処理部120あるいは表示制御部140のいずれでもよい。
画素値演算部122は、ステップS30〜ステップS37の処理過程を対象メッシュ内の全ピクセルにつき繰り返し実施する(
図7、ステップS38)。これにより、対象メッシュ内の全ピクセルにつきフィルタ処理が施されたこととなる。
【0035】
特定の対象メッシュ内の全ピクセルにつきフィルタ処理が終了すれば、次に、あらかじめフィルタ処理を施す範囲を設定した範囲における全メッシュについて、ステップ30〜ステップ38の処理過程を繰り返し実施する(
図7、ステップS39)。これにより、フィルタ処理を施すべき範囲の全ピクセルにつきフィルタ処理が施されたこととなる。
【0036】
以上のステップS30〜ステップS39の処理過程により、フィルタ処理部120あるいは表示制御部140に記憶された処理対象ピクセルの画素値VPPnを用いて、画像を表示する。
【0037】
D.出力例:
図8は、フィルタ処理が施されていない地図の出力例である。いわば地図データベース130に記憶された原地図の地表面データをそのまま画像として表示させたものである。地表面の山林部分、都市の平野部分などが、領域に応じて地表面テクスチャパターンを使い分けて描かれている。また、領域MA1では、これらの領域の境界が比較的シャープに描かれている印象を与えることが分かる。
図9は、既存の方法としてのフィルタ処理であるガウス処理を施した地図の出力例である。領域MA2は、
図8の領域MA1よりも滑らかさが加わっていることがわかる。これがフィルタ処理の効果である。
図10は、メッシュ単位でのフィルタ処理を施した地図の出力例であり、実施例を実施した結果である。
図10内の領域MA3は、
図8の領域MA1よりも滑らかさが加わっていることがわかる。一方、
図9の領域MA2と比較すると、各領域が明瞭に描かれている印象を与えることが分かる。
本実施例におけるフィルタ処理の効果は、領域を拡大してみると、さらに顕著である。
【0038】
図11〜
図13は、それぞれ
図8〜
図10の領域MB1〜MB3の拡大図である。
【0039】
フィルタ処理を全く施していない地図を拡大したもの(
図11)は、メッシュ同士の境界線が明瞭に視認でき、地図のリアリティの面で不自然であることが分かる。ただし、メッシュの色柄がそのまま表示されているため、
図11中のV1で示す楕円形で囲われた部分のようにテクスチャパターンの色柄は残存している。
既存の方法としてのフィルタ処理であるガウス処理を施した地図を拡大したもの(
図12)は、フィルタ処理を全く施していない地図を拡大したもの(
図11)と異なり、メッシュ同士の境界がフィルタ処理により、ぼやけた状態となっている。しかし、ガウス処理では、
図12中の領域V3で示す楕円形で囲われた部分を観察するとわかるように、メッシュのもともとのパターンまでも消失してしまっている。よって、この点で、ガウス処理を施した地図は、リアリティが低下してしまっている。
メッシュ単位でのフィルタ処理を施した地図を拡大したもの(
図13)は、メッシュ同士の境界は、フィルタ処理によって滑らかになっていることが分かる。また、
図13中のV2で示す楕円形で囲われた部分のようにテクスチャパターンの色柄も残存している。
【0040】
これらを比較して明らかなように、メッシュ単位でのフィルタ処理を施すことにより、従来同時に実現することができなかった、メッシュ同士の境界線を滑らかにすることとメッシュの色柄を残存させることを、同時に実現することができるようになり、地図としてのリアリティが向上する。