以下、本発明の実施の形態(以下実施形態という)である地物検出システムについて、図面に基づいて説明する。本システムは、対象空間における地物表面から抽出された点群の三次元座標データに基づいて、地表から立ち上がった目的地物を検出する地物検出装置である。点群のデータは例えば、上述のモービルマッピングシステムのように地上を走行する車両に搭載されたレーザスキャナにより取得される。また、レーザスキャナを地上に設置して計測を行っても良い。点群データが地物表面の三次元形状を表すには、地物表面の凹凸のスケールに応じた点密度でレーザスキャンが行われる必要がある。この点、車両や三脚を用いて道路等の地上から行うレーザスキャンは、例えば、道路の近傍に建つ建物、塀、看板、標識、電柱などの形状を捉えることができる程度の走査密度を実現できる。
図1は、地物検出システム2の概略の構成を示すブロック図である。本システムは、演算処理装置4、記憶装置6、入力装置8及び出力装置10を含んで構成される。演算処理装置4として、本システムの各種演算処理を行う専用のハードウェアを作ることも可能であるが、本実施形態では演算処理装置4は、コンピュータ及び、当該コンピュータ上で実行されるプログラムを用いて構築される。
当該コンピュータのCPU(Central Processing Unit)が演算処理装置4を構成し、後述する層状空間設定手段20、エッジ検出手段22、オブジェクト生成手段24及び目的地物検出手段26として機能する。
記憶装置6はコンピュータに内蔵されるハードディスクなどで構成される。記憶装置6は演算処理装置4を層状空間設定手段20、エッジ検出手段22、オブジェクト生成手段24及び目的地物検出手段26として機能させるためのプログラム及びその他のプログラムや、本システムの処理に必要な各種データを記憶する。例えば、記憶装置6は、処理対象データとして解析の対象空間の点群データ30を格納する。例えば、道路に沿った地域が解析の対象空間とされる。また、記憶装置6は、検出対象とする地物である目的地物の典型的な形状、標準的な形状又はその条件を記述した地物モデル32を予め記憶するモデル記憶手段である。
入力装置8は、キーボード、マウスなどであり、ユーザが本システムへの操作を行うために用いる。
出力装置10は、ディスプレイ、プリンタなどであり、例えば、本システムにより生成されたオブジェクトや検出された目的地物の対象空間内での位置を画面表示、印刷等によりユーザに示す等に用いられる。
層状空間設定手段20は対象空間を水平な複数の層状空間に分割する。高さ方向の上向きを正とする軸をZ軸とし水平面を定義する2軸をX軸及びY軸とするXYZ直交座標系で対象空間を定義すると、層状空間設定手段20は複数のZ値に設定した水平面(XY平面)を分割面として対象空間を分割する。各層状空間の高さ方向の寸法、つまり厚みは同一にすることが好適であり、これにより処理の単純化、処理効率の確保を図ることができる。例えば、各層状空間の厚みHLは50センチメートル[cm]に設定することができる。なお、層状空間設定手段20を構成するプログラムでは、HLはパラメータ化されており、例えば、ユーザが入力装置8を用いて変更することができる。また、後述するように層状空間設定手段20は、エッジ検出の処理上、各層状空間をさらにメッシュ状に分割する。
エッジ検出手段22は各層状空間にて、当該層状空間内に存在する点群を水平面に射影し、射影された点群が予め設定した基準以上に近傍に集まる線を地物表面の位置であるエッジとして検出する。
オブジェクト生成手段24は各エッジを、三次元空間における予め定められた形状特徴を有する複数種類の要素図形のうち当該エッジの形状に対応する射影を生じるものに分類し、当該エッジと当該分類とを対応付けた層別オブジェクトを生成する。
目的地物検出手段26は、複数の層別オブジェクトからなるグループであって、それぞれの層別オブジェクトにおけるエッジが高さ方向に沿って並ぶグループを求める。そして目的地物検出手段26は、記憶装置6から地物モデル32を読み出し、当該グループにおける高さ方向に沿った層別オブジェクトの分類の並び方を地物モデル32と照合して目的地物を検出する。
地物モデル32は、上述したように、1つ又は高さ方向に沿って並ぶ複数の要素図形で表された目的地物の標準形状又は当該形状を規定する条件である。要素図形は三次元空間における予め定められた特徴を有する形状である。例えば、要素図形は、水平断面にて非円形の形状を有する略垂直面、及び水平断面が円形である円柱を含む。さらに、要素図形をサイズに応じて区分することができる。例えば、本実施形態では、略垂直面を予め定めた閾値長さLTH1(例えば、1.5メートル[m])以上の長さを有する第1の略垂直面と、閾値長さLTH1未満の長さを有する第2の略垂直面とに区分する。また、円柱を水平断面が予め定めた閾値半径RTH(例えば0.1m)以上の半径を有する円形である第1の円柱と、水平断面が閾値半径RTH未満の半径を有する円形である第2の円柱とに区分する。
図2〜図4は、地物検出システム2の層状空間設定手段20、エッジ検出手段22及びオブジェクト生成手段24の処理の概略のフロー図である。
地物検出システム2は層状空間設定手段20により、対象空間をZ軸方向に間隔HLで分割して層状空間を設定し、各層状空間に存在するエッジを検出する処理を行う。本実施形態では層状空間をさらに二次元メッシュ状に分割したブロック空間のうちエッジが存在するものを探し、エッジが存在するブロック空間が見つかると、当該エッジの層状空間内での連続性を調べる。例えば、対象空間をX軸方向及びY軸方向に沿ってメッシュ状に分割する。ここで、メッシュのX軸方向の間隔を幅W、Y軸方向の間隔を奥行きDとすると、W,DはHLと同様、パラメータとして設定される。本実施形態ではW,Dは50cmに設定する。対象空間をメッシュ状に分割すると、対象空間は柱状の空間に分割される。当該柱状の空間を部分空間と称する。部分空間は層状空間の層ごとのブロック空間が縦に積み重なった構造となる。対象空間のサイズ、並びに幅W及び奥行きDの値に応じて部分空間のX,Y各方向の配列個数が定まり、当該配列個数により、X,Y各方向の部分空間の位置を示すインデックスの範囲が決定される。エッジ検出手段22は、部分空間の二次元メッシュ状の配置を表すインデックスを所定の順番で変更し、設定されたインデックスに応じた位置(X,Y各方向の座標範囲)で定義される部分空間を処理対象として選択する(ステップS2)。
インデックス指定されたメッシュの部分空間が未処理のものであれば(ステップS4にて「No」の場合)、層状空間設定手段20は当該部分空間内の点群を例えば、ハードディスク等の記憶装置6からRAM(Random Access Memory)等の作業領域に取り込む(ステップS6)。部分空間に取り込んだ点群内に所定閾値Th1以上の高低差がある場合(ステップS8にて「Yes」の場合)には、層状空間設定手段20は当該部分空間を注目部分空間と判断して、当該注目部分空間内におけるエッジの探索等の処理が開始される(図3のノードBへ処理が進む)。例えば、閾値Th1は道路等の地表の略平坦な部分のみを含む部分空間を排除できる程度に小さく設定することができる。
設定した部分空間から取り込んだ点群の高低差が閾値Th1未満である場合(S8にて「No」の場合)には、当該部分空間におけるエッジ検出処理は行わない。この場合は、層状空間設定手段20が次の部分空間を選択する(ノードAへ処理が戻る)。
全てのメッシュについて処理が終わっている場合は(S4にて「Yes」の場合)、演算処理装置4はエッジ検出処理及びオブジェクト生成処理を終える(ステップS10)。
対象空間に設定される層状空間の層数をnとし、各層状空間をインデックスIを用いて下から順に第I層(I=1,2,…,n)と表す。
層状空間設定手段20は選択された部分空間に含まれるn段のブロック空間を順番に選択する。例えば、層状空間設定手段20はインデックスIを1ずつ増加させて、エッジの存在を調べるブロック空間を選択する(ステップS20,S22)。ここで、Iがnを越えた場合には、図2のノードAに戻り、次の注目部分空間を選択する(ステップS24)。エッジ検出手段22は選択された第I層のブロック空間に含まれる点群を読み込み(ステップS26)、当該ブロック空間にエッジが存在するかを調べる(ステップS28)。エッジ検出手段22は、選択した第I層のブロック空間にエッジが存在しない場合には(ステップS30にて「No」の場合)、次のブロック空間を選択する(S22)。なお、ステップS28にてブロック空間に属する点群の個数が所定の閾値以下の場合はエッジ検出処理を省略して、ステップS30にてエッジが存在しないと判断することができる。
図5はブロック空間でのエッジの探索処理S28を説明する模式図である。図5は、ブロック空間を上面から見た図であり、ブロック空間の幅W及び奥行きDで定義される矩形40と、ブロック空間内の点群のXY面内での配置の一例が示されている。エッジ検出手段22は、ブロック空間内の点群から任意の2つのデータ点PA,PBを選択し、それら2点を両端とするXY面内での線分L0をエッジの候補線として設定すると共に、線分L0を中心としてその両側にそれぞれ幅w(合計幅2w)の帯状領域EAを設定する。エッジ検出手段22は点群のうちXY平面での座標が当該領域EA内に位置するデータ点の個数をカウントする。データ点が領域EA内であるか否かは例えば、XY平面上での当該データ点から線分L0への垂線の長さがw以下であるか否かによって判定可能である。また、エッジの条件として、領域EA内の点群が表す三次元形状が平坦でないことを課す。具体的には、エッジ検出手段22は、領域EA内に包含されるデータ点の高低差(最大標高と最小標高との差)ΔZが予め設定した段差閾値γ以上であれば平坦ではないと判定する。
ここで、幅wはパラメータであり、目的地物の表面に対応するデータ点のエッジに直交する方向の位置のばらつきを吸収する。例えば、wは3cm程度とすることができる。また、高低差の閾値γは例えば2cm程度に設定できる。
エッジ検出手段22は、ブロック空間内の2つのデータ点の全ての組み合わせについて候補線を設定して上述の判定を行い、領域EA内に最もデータ点が多く集まり、かつΔZが閾値γ以上である線分L0をブロック空間にて見つけられたエッジとする。エッジが存在した場合には(S30にて「Yes」の場合)、当該エッジが新規に検出されたものであるか判定される(ステップS32)。具体的には、当該エッジが同じ層の層状空間の別のブロック空間にて検出されたエッジに連続するものとして既に検知されたエッジではなければ新規エッジと判定される。当該判定は、以前に検出されたエッジを検索して、処理S28で見つけられたエッジと同一のものが存在するか否かに基づいて行われる。リストに同一のものが存在しなければ新規なエッジと判定し(S32にて「No」の場合)、リストにエッジの両端PA,PBの座標(ax,ay),(bx,by)を登録すると共に、エッジの長さとして線分L0(線分PA−PB)の長さLEを求める(ステップS34)。
一方、処理S28にて見つけられたエッジと同一のエッジが既に登録されている場合は(S32にて「Yes」の場合)、当該エッジについての登録は省略され、演算処理装置4は次のブロック空間について処理を行う(ノードCへ処理が戻る)。
エッジ検出手段22は新規検出エッジが、LEが閾値LTH2(LTH2<LTH1)以下である短いエッジである場合には(S40にて「Yes」の場合)、後述する短いエッジに関する処理(短エッジ処理)を行う(ステップS42)。
一方、新規検出エッジのLEが閾値LTH2より大きい場合には(S40にて「No」の場合)、エッジ検出手段22は当該エッジが壁面などの目的地物である可能性があるか、または本実施形態では目的地物とはしない植栽(樹木の葉)などであるかを調べる(ステップS44)。植栽ではなく目的地物とする人工構造物である場合は(ステップS46にて「No」の場合)、エッジ検出手段22は後述する連続エッジ探索処理を行う(ステップS48)。
エッジが植栽であると判定された場合(S46にて「Yes」の場合)、並びに短エッジ処理S42及び連続エッジ探索処理S48が完了した場合は、演算処理装置4は次のブロック空間についての処理に移行する(ノードCへ処理が戻る)。
図6及び図7はエッジが目的地物の可能性があるか否かを調べるステップS44の処理を説明する模式的な平面図である。エッジ検出手段22は図6に示す空間SA、図7に示す空間SB1,SB2を、処理対象としているブロック空間と同じ層状空間内に設定し、エッジ近傍の点群の分布を調べる。そして当該点群がエッジの位置に好適に集中している場合、人工的な面であると判定し、エッジの位置に対する点群のばらつきが大きい場合、植栽であると判定する。具体的には、図6に示す空間SAは水平断面が線分L0を中心線とする矩形42である直方体である。当該直方体の高さはHLであり、エッジ方向のサイズはLEであり、エッジに直交する方向のサイズは線分L0を中心としてその両側にそれぞれ幅wA(合計幅2wA)とする。幅wAはパラメータであり、例えば、20cm程度とすることができる。図7に示す空間SB1,SB2は線分L0を間に挟んで線分L0に直交する方向に並び、それぞれ線分から距離gBの位置に置かれた直方体である。当該直方体の高さはHLであり、エッジ方向のサイズはLEであり、エッジに直交する方向のサイズはwBとする。gB,wBはそれぞれパラメータであり、例えば、gBは3cm程度とすることができる。
エッジ検出手段22は以下の(A1)〜(A3)のいずれかの場合に、エッジが人工的な面によるものであり植栽ではないと判定する。
(A1)空間SA内の点群のうち線分L0への垂線の長さが閾値(例えば、3cm)内である点が予め定めた個数(例えば10個)より多い場合。
(A2)空間SA内の点群から線分L0への垂線の長さの平均値が閾値(例えば、3cm)内である場合。
(A3)空間SB1,SB2内に点群が存在しない場合。
図8及び図9は連続エッジ探索処理S48の概略のフロー図である。エッジ検出手段22は、エッジの情報をバッファするための線形リストを生成する。連続エッジ探索処理では、ステップS28にて検出されたエッジを基点としてこれにつながるエッジを追尾する処理が行われる。エッジの追尾処理では、基点となるエッジをブロック空間内にて探索したのと同様に、直方体の空間を設定し当該空間内にてエッジを探索する。以降、基点となるエッジの抽出を行ったブロック空間を基点空間とし、追尾処理で設定される直方体の空間を追尾空間と呼ぶことにする。
追尾処理はエッジの両端PA,PBから互いに反対方向に行われることに対応して線形リストを2つ作成する。ここではエッジの一方端PAからの追尾をA方向の追尾、エッジの他方端PBからの追尾をB方向の追尾と称する。エッジ検出手段22はA方向に追尾するための線形リストと、B方向に追尾するための線形リストとを作成する(S60)。ステップS28にて得られた追尾の基点となるエッジの図形データは、例えば、A方向の線形リストに格納することができる(S62)。しかる後、エッジ検出手段22は、A方向の連続追尾処理S64とB方向の連続追尾処理S66とを行う。
A方向及びB方向それぞれの連続追尾処理で得られたエッジの情報は、A方向及びB方向の線形リストに格納される。エッジ検出手段22は或る基点空間にて得られたエッジについての2方向の追尾が終了すると、A方向の線形リスト及びB方向の線形リストに格納されているエッジの端点を追尾順序に従ってつなぎ合わせて連続線分を作成する(S68)。なお、連続線分は直線とは限らず、折れ線であり得る。
処理は図9のノードEへ続き、オブジェクト生成手段24は連続線分の長さLCが閾値長さLTH1以上である場合(ステップS80にて「Yes」の場合)、当該連続線分を第1の略垂直面に分類し、作成された連続線分と当該分類とを対応付けて層別オブジェクトを生成し、記憶装置6に登録する(ステップS82)。この場合、連続エッジ探索処理は、分類が決定されたことを意味する“TRUE”を戻り値に設定されて終了し(ステップS84)、連続エッジ探索処理をサブルーチンとして呼び出した呼び出し元に処理が戻る。層別オブジェクトは連続線分の形状の情報及び位置の情報を含む。
なお、本実施形態では、第1の略垂直面を当該層別オブジェクトが存在する層状空間の高さに応じて「建物壁面」及び「塀・柵」の2種類に分類する。具体的には、塀・柵の高さ程度に設定された閾値(例えば路面から3m)を用い、当該閾値未満であるオブジェクトは「塀・柵」に分類し、当該閾値以上であるオブジェクトは「建物壁面」に分類する。但し、この「建物壁面」か「塀・柵」かの分類は便宜的・暫定的なものであり、必ずしもそのオブジェクトが当該分類と同じ地物であることを意味しない。ここで層別オブジェクトに対応付けられた要素図形の分類を表すコードを図形コードとし、「建物壁面」は図形コード201、「塀・柵」は図形コード202と定義する。
連続線分の長さLCが閾値長さLTH1未満である場合(ステップS80にて「No」の場合)、オブジェクト生成手段24はさらに長さLCが閾値長さLTH3より大きいかを調べる(ステップS86)。閾値長さLTH3は例えば、目的地物のうち最も小さいもののサイズに応じて設定でき、本実施形態では0.2mとする。
長さLCが閾値長さLTH3以下である場合(S86にて「No」の場合)、オブジェクト生成手段24は当該連続線分に対する分類を行わず、連続エッジ探索処理は分類が決定されなかったことを意味する“FALSE”を戻り値に設定されて終了し(ステップS88)、処理は呼び出し元に戻る。
一方、長さLCが閾値長さLTH3より大きい場合、つまりLTH3<LC<LTH1である場合(S86にて「Yes」の場合)、オブジェクト生成手段24は層状空間における連続線分に対応する略垂直面が円柱形状であるかを調べる円柱探索処理を行う(ステップS90)。具体的には、連続線分の形状が円であるかを調べる。
円柱形状である場合(ステップS92にて「Yes」の場合)、オブジェクト生成手段24は当該連続線分を第1の円柱(図形コード2005)に分類し、作成された連続線分と当該分類とを対応付けて層別オブジェクトを生成し、記憶装置6に登録する(ステップS94)。この場合、連続エッジ探索処理は“TRUE”を戻り値に設定されて終了し(ステップS96)、処理は呼び出し元に戻る。
円柱形状でない場合(S92にて「No」の場合)、オブジェクト生成手段24は当該連続線分をそれを構成する個々のエッジに分解し、当該個々のエッジを第2の略垂直面(図形コード2003)に分類して層別オブジェクトを生成し、記憶装置6に登録する(ステップS98)。当該分類は「短い線分で円の要素を持たない」という属性を有する。例えば、道路標識や看板などの目的地物がこの分類に該当し得る。この場合、連続エッジ探索処理は“TRUE”を戻り値に設定されて終了し(ステップS100)、処理は呼び出し元に戻る。
図10及び図11はエッジ検出手段22による連続追尾処理S64,S66の概略のフロー図である。エッジ検出手段22は、基点空間又は先行して設定された追尾空間にてエッジが検出されると、それら先行してエッジ検出が行われた空間(解析単位空間と呼ぶ)に隣接する追尾空間を設定する(ステップS120)。新たな追尾空間は切断平面における断面である矩形の中心線を、先行する解析単位空間にて検出されているエッジの向きに合わせて配置される。また、先行して設定された追尾空間にてエッジが検出された場合には、当該追尾空間を求めた方向と同一方向上に、当該エッジの方向線を延長して、さらに追尾が行われる。
エッジ検出手段22は追尾空間を設定すると、当該追尾空間内の点群を記憶装置6からRAM等の作業領域に取り込み(ステップS122)、先行する解析単位空間のエッジの延長線に沿って設定した追尾空間にエッジが存在するかを調べる(ステップS124)。延長線に沿って設定した追尾空間内に基準以上の点群が集まっており、その高低差が閾値γ以上であれば、当該追尾空間にエッジが存在すると判定する(ステップS126にて「Yes」の場合)。
エッジ検出手段22は抽出したエッジ(エッジ候補)が線形リスト上に格納されているエッジと交差するか否かを調べる(ステップS128)。ここで、線形リストに登録されているエッジは新たに追尾空間から抽出されたエッジと同じ基点空間に端を発するものである。トンネルの横断面のようにエッジが閉じた図形を形成する場合、或る1つの基点空間からの連続追尾処理で当該閉じた図形が抽出される可能性がある。そこで、ステップS128にて、新たに抽出されたエッジと線形リスト上のエッジとの交差(一致を含む)の有無を判定し、交差が検出された場合(ステップS130にて「Yes」の場合)、自己ループ又は無限ループを回避するために、新たに抽出されたエッジは線形リストに追加せずに連続追尾処理を終了する(ステップS132)。
交差が検出されなかった場合(S130にて「No」の場合)、さらにエッジ検出手段22は、新たに抽出されたエッジがすでに図形登録されているかを調べる(ステップS134)。図形登録されている場合(ステップS136にて「Yes」の場合)、新たに抽出されたエッジは線形リストに追加せずに連続追尾処理を終了し(S138)、当該処理をサブルーチンとして呼び出した図8のステップS64,S66に戻る。
一方、図形登録されていなければ(S136にて「No」の場合)、エッジ検出手段22は、現在の追尾空間についてのエッジの情報を線形リストに追加して(ステップS140)、図10のノードFに戻り、現在の追尾空間に続く新たな追尾空間を設定する。このようにしてエッジ検出手段22は追尾空間を順次設定してエッジを追尾する。
エッジ検出手段22は既検出エッジの延長線に沿って設定した追尾空間内にてエッジを検出できない場合(S126にて「No」の場合)、図11のノードGに進み、既検出エッジの延長線からずれた方向における探索処理が行われる。当該探索処理では、追尾空間をその中心軸を切断平面内にて当該延長線の位置から時計回り方向と反時計回り方向とに変化させて設定する。例えば、延長線の向きからの中心軸の向きの変化範囲(±θ)とその分割数kを設定し、θ/kずつ切断平面内での角度が異なる複数の追尾空間を設定し、各追尾空間にてエッジを探し、そして角度を変えて設定した複数の追尾空間にて得られたエッジのうち最も点群が集まるものを抽出する(ステップS160)。
これによりエッジが抽出された場合(ステップS162にて「Yes」の場合)、エッジ検出手段22はステップS128〜S140と同様の処理を行う。すなわち、抽出したエッジと線形リスト上のエッジとの交差の有無を調べ(ステップS166)、また、抽出したエッジがすでに図形登録されているものの中にあるかを調べる(ステップS172)。そして、交差が検出された場合(ステップS168にて「Yes」の場合)及び図形登録されている場合(ステップS174にて「Yes」の場合)は、新たに抽出されたエッジは線形リストに追加せずに連続追尾処理を終了し(ステップS170及びS176)、当該処理をサブルーチンとして呼び出した図8のステップS64,S66に戻る。一方、交差が検出されず(S168にて「No」の場合)、かつ図形登録されていなければ(S174にて「No」の場合)、エッジ検出手段22は、抽出したエッジの情報を線形リストに追加して(ステップS178)、図10のノードFに戻り、現在の追尾空間に続く新たな追尾空間を設定する。なお、エッジが抽出されなかった場合(S162にて「No」の場合)は連続追尾処理をサブルーチンとして呼び出した図8のステップS64,S66に戻る(S164)。
次に図9の円柱探索処理S90について説明する。図12は円柱探索処理S90の概略のフロー図である。図13は図8のステップS68で生成された連続線分の一例を示す模式的な平面図であり、円柱50に対応して検出される連続線分52を示している。複数の垂直平面が折れ曲がって接続された地物表面からは当然に連続線分52のような複数の直線(線分)がつながった折れ線のエッジが生じ得るが、上述したようにブロック空間などにてエッジを検出する処理は基本的に直線近似であるので、滑らかに曲がる円柱側面からも連続線分52のようなエッジが検出され得る。そこで、エッジ検出手段22は、比較的大きな基点空間(ブロック空間)や追尾空間にて検出されたエッジを地物の概略のエッジであると位置づけ、円柱探索処理S90では、概略エッジである線分に基づいてより詳細な地物表面のエッジを表す折線を求めるエッジの微調整処理を行う(ステップS200)。
図14はエッジの微調整処理S200の概略のフロー図であり、図15はエッジの微調整処理を説明する模式的な平面図である。図14及び図15を用いて微調整処理S200を説明する。図15は、連続線分52を構成する1つの概略エッジL0に対応して生成される詳細エッジLfの例を示している。エッジ検出手段22は概略エッジを示す線分L0を一方端から一定の長さずつ区切り(ステップS220)、これにより生成された各区間にて詳細エッジが通る点(代表点)を探索し、XY面内にてPA,PBを結ぶ概略エッジを示す線分L0に代えて、各区間にて求めた代表点をつなぐ折線Lfをエッジとする。ここでは区間数をNとする。演算処理装置4は、図14のエッジ微調整処理のS224〜S232のループ処理において、選択した区間Kから代表点PKが得られると、当該代表点PKのXY面内の座標(XK,YK)を代表点情報として求める。
エッジ検出手段22は、エッジ微調整処理において、区間番号Kを1ずつ増加させて、区間を選択し(ステップS222,S224)、各区間にて代表点を探索する(ステップS228)。探索は、エッジ周辺空間60を区間ごとに分割したコンパートメント62内で行われる。エッジ周辺空間60はXY面に射影した形状が概略エッジの近傍領域であり、Z方向に層状空間の高さHLを有する空間に設定することができる。具体的にはエッジ周辺空間60のXY面上の形状は、対向する2辺の中点に概略エッジの両端PA,PBが位置した矩形である。当該矩形の概略エッジに直交する方向の寸法は、検出対象とする円柱地物の断面形状に想定される曲率や凹凸の大きさを考慮して設定することができる。本実施形態における検出対象の円柱地物は電柱とし、エッジ周辺空間60の概略エッジに直交する方向の寸法は、電柱の切断平面でのエッジを正確に捉えることができる程度に大きくする必要がある。一方、当該寸法は、電柱のエッジに起因しない点群が代表点として誤検出されにくいようにする観点からは小さくすることが好適であり、例えば部分空間の幅Wや奥行きDより小さく設定される。コンパートメント62は、概略エッジを区切った区間の境界点を通り概略エッジに直交する面でエッジ周辺空間60を区切って生成される。エッジ検出手段22は区間ごとに当該区間に対応するコンパートメント62内に点群データを取り込んで、当該コンパートメント62のXY面内における最も点群が密集する位置を求める。密集位置は、当該点群の任意の点を中心とする円内に包含される点群の数で判断される。例えば、円の半径は2cmとすることができる。そして当該位置に密集する点の数が予め定めた個数以上であれば(ステップS230にて「Yes」の場合)、当該位置を代表点としてエッジ代表点リストに追加し(ステップS232)、次の区間の処理に進む(ステップS224)。一方、当該位置に密集する点の数が予め定めた個数未満であれば(S230にて「No」の場合)、当該区間にエッジの代表点が存在しないとしてエッジ代表点リストに追加せずに次の区間の処理に進む(S224)。全ての区間について処理が終わると(ステップS226にて「Yes」の場合)、エッジ形状の微調整処理を終了する。
図15に示す例では、概略エッジを示す線分L0は例えば4つの区間に分割されており、L0を中心線とする点線の矩形で表されるエッジ周辺空間60も区間に対応して4つのコンパートメント62a〜62dに区画される。例えば、コンパートメント62a,62b,62dにて代表点Pk,Pk+1,Pk+2が抽出され、それらをコンパートメントの並び順につないだ折線PkPk+1Pk+2が詳細エッジLfとなる。ちなみに、図15に示す例では、エッジ周辺空間60の分割はPA側から一定間隔ごとに行われており、その結果、最後の区間が他の区間より小さくなり得ることが示されている。
上述の微調整処理は、図13に示す連続線分52を構成する複数の概略エッジについて行われ、それが完了するとエッジ検出手段22は図12の処理に戻り、円柱か否かを推定する(ステップS202)。図16は連続線分52に対する微調整処理により得られた代表点70を示しており、この図を用いてステップS202の処理を説明する。
エッジ検出手段22は連続線分52に沿って並ぶ代表点70のうち両端のもの(代表点70a,70b)を結ぶ直線72に対して、代表点70a,70b以外の代表点が全て同じ側にあるか否かを調べる。同じ側にない場合は連続線分52は円柱ではないと判定する(ステップS204にて「No」の場合)。
図16のように代表点70a,70b以外の代表点が全て直線72に対して同じ側にある場合には、各代表点70から直線72への垂線の長さを求める。そして、最大の垂線74の長さが所定の基準長以上である場合は、円柱であると判定し(ステップS204にて「Yes」の場合)、その垂線の足を円柱の仮の中心点Cαに定める(ステップS206)。一方、最大の垂線長が基準長未満である場合は円柱ではないと判定する(ステップS204にて「No」の場合)。所定の基準長は例えば、代表点70a,70b間の距離の所定割合(例えば、3〜4割程度)に設定することができる。
円柱と判定した場合には、再探索空間を設定し、当該空間内に存在する点群のデータを記憶装置6から読み込む(ステップS208)。図17は再探索空間の一例を示す模式図である。図17は、対象空間を上から見た図であり、再探索空間の配置(矩形80)、及び電柱の円柱面から得られる点群82の分布が示されている。再探索空間は、水平断面の中心を円柱の仮の中心点Cαに一致させて設定される。また矩形80の一辺はブロック空間より大きく設定することができる。例えば、本実施形態ではブロック空間のW,Dを50cmとしており、矩形80の一辺はそれより10cm大きい60cmに設定される。このように再探索空間の大きさに余裕を持たせることにより、円柱面から生じる点群が漏れなく再探索空間に処理対象点群として取り込まれ得る。
エッジ検出手段22は再探索空間内の処理対象点群の広がりが目的地物のサイズに基づいて設定された上限以下であるかを調べる(ステップS210)。本実施形態では、処理対象点群のX軸方向の広がり、及びY軸方向の広がりがそれぞれ50cm以下であるか調べる。そして上限以下でない場合は(S210にて「No」の場合)、目的地物の円柱、具体的には電柱ではないと判定され、円柱探索処理S90のサブルーチンの呼び出し元に戻る。
一方、上限以下である場合は(S210にて「Yes」の場合)、エッジ検出手段22は再探索空間内の処理対象点群に基づいて円柱面の中心及び半径を求める処理を行う(ステップS212)。具体的には、処理対象点群から選択された4点を通る円を探索する処理を、処理対象点群における4点の全ての組み合わせについて行う。そして探索された円のうちその円の近傍に存在する処理対象点の数が最も多いものを選択する。例えば、探索された円(中心C、半径R)のうち、中心がCで半径が[R−δ,R+δ]であるドーナツ状の領域内に存在する点が最も多くなる円(中心Cβ、半径Rβ)を選択する。ここでδは予め定められた値であり、検出対象の円柱地物に応じて設定することができ、例えば、電柱については2〜3cmとすることができる。
そして、上述の処理で求めた円の中心Cβ、半径Rβを用い、中心がCβで半径が[Rβ−δ,Rβ+δ]であるドーナツ状の領域内に存在する点を抽出し、当該抽出した点群に適合する円の中心Cγ、半径Rγを最小二乗法により算出する。円柱探索処理は当該円(中心Cγ、半径Rγ)を探索結果とし、呼び出し元に処理を戻す。図9の連続エッジ探索処理では円柱探索処理S90にて探索結果として円(中心Cγ、半径Rγ)が得られると、連続線分52に対し、分類が第1の円柱である層別オブジェクト(図形コード2005)を生成する。オブジェクト生成手段24は当該層別オブジェクトに、図16に示す連続線分52の形状特徴を表す情報として中心Cγ、半径Rγを対応付けることができる。
図18は図4のステップS42の短エッジ処理の概略のフロー図である。オブジェクト生成手段24は検出された短エッジが細いポールであるかを調べ(ステップS240)、細いポールと判定した場合(ステップS242にて「Yes」の場合)、当該エッジについて第2の円柱を分類として設定された層別オブジェクトを生成し記憶装置6に登録する(ステップS244)。本実施形態では具体的には当該層別オブジェクトは第2の円柱の1つの種類である「細いポール」(図形コード1001)に分類される。
図19は細いポールを判定する処理S240を説明する模式的な平面図である。短エッジ90を内包する水平断面を有する空間SCを設定し、当該空間SC内の点群データを処理対象点群として取り込む。空間SCの水平断面は短エッジ90に沿った方向(ζ軸とする)の辺と直交する方向(η軸とする)の辺とを有する矩形とすることができる。当該矩形はζ軸方向に関しては、エッジ90の両端から当該矩形の辺までそれぞれ距離dCとし、空間SCのζ軸方向のサイズを(LE+2dC)とすることができる。一方、η軸方向に関しては、エッジ90を中心としてサイズ2wCとすることができる。また、空間SCのZ軸方向の範囲はエッジ90が検出された層状空間と同じとすることができる。オブジェクト生成手段24は空間SC内の処理対象点群の水平面内での広がりが目的地物である細いポールのサイズに基づいて設定された上限以下であるかを調べる。本実施形態では、処理対象点群のX軸方向の広がり、及びY軸方向の広がりがそれぞれ20cm以下であるか調べる。
そして上限以下である場合は空間SC内の点群は細いポールであると判定され(ステップS242にて「Yes」の場合)、オブジェクト生成手段24は、エッジ90に対し、分類が第2の円柱「細いポール」である層別オブジェクトを生成する(ステップS244)。オブジェクト生成手段24は当該層別オブジェクトに、細いポールの中心点として処理対象点群の分布の中心を対応付け、また細いポールの半径として例えば0を対応付けることができる。なお、当該層別オブジェクトを生成すると、処理は短エッジ処理S42のサブルーチンの呼び出し元に戻る。
一方、処理対象点群の分布が上限より広い場合は空間SC内の点群は細いポールではないと判定される(ステップS242にて「No」の場合)。この場合は、エッジ検出手段22が図4のステップS44と同様の処理を行い、当該エッジが植栽(樹木の葉)などであるかを調べる(ステップS246)。植栽ではなく目的地物とする人工構造物である場合は(ステップS248にて「No」の場合)、エッジ検出手段22は図4のステップS48と同様に図8、図9等を用いて説明した連続エッジ探索処理を行う(ステップS250)。その後、図4の短エッジ処理S42のサブルーチンの呼び出し元に戻る。
以上説明した、層状空間設定手段20、エッジ検出手段22及びオブジェクト生成手段24の処理により、地物検出システム2は対象空間をZ軸方向に積み重なる層状空間に分け、各層状空間内の点群から、予め定められた形状特徴を有する複数種類の要素図形のオブジェクトを抽出し、記憶装置6に登録する。
目的地物検出手段26は層別オブジェクトを垂直方向に組み合わせ、それが地表から立ち上がった目的地物であるかを調べる。具体的には、目的地物検出手段26は、層別オブジェクトのうちエッジが高さ方向に沿って並ぶものを組み合わせる。ここで、地表から立ち上がった1つの目的地物の各層状空間における断面は、理想的には、隣接する層状空間では共通部分を有したり交差したりするものかもしれないが、点群から生成したエッジで表される地物表面はそうならないことも多い。そこで、目的地物検出手段26は、互いに異なる層状空間に存在する第1のエッジと第2のエッジの水平面内での位置が或る程度近ければ高さ方向に並んでいると扱う。図20は異なる層状空間のエッジの重なりを説明する模式的な平面図である。目的地物検出手段26は、互いに異なる層状空間に属する第1のエッジ100及び第2のエッジ102について、第1のエッジ100を中心線とし所定幅wMを有するエッジ近傍領域104と第2のエッジ102とが重なりを有する場合にエッジ100,102が高さ方向に並んでいると判断する。wMは例えば、5cm程度に設定することができる。
目的地物検出手段26は層別オブジェクトの垂直方向の並びが図1の地物モデル32に記述されている目的地物の特徴を有するかどうかを調べ、有している場合、その垂直方向に並ぶ層別オブジェクトが当該目的地物であると判断する。簡単な例としては、目的地物「道路脇の道路標識」は支柱に相当する円柱とその上の標識に相当する垂直面とからなり、その地物モデル32として、高さが0〜3mの範囲に要素図形として「細いポール」のような第2の円柱が縦に並ぶ部分を有し、その上部に要素図形として標識に想定される大きさに対応した第2の略垂直面が存在するといった特徴が記憶装置6に格納される。また、目的地物「道路上の案内標識」の地物モデル32として、比較的高い位置の複数の連続する層状空間に要素図形として第1の略垂直面が縦に並び、その下は要素図形が存在しないといった特徴が記憶装置6に格納される。このように地物モデル32が要素図形の簡単な配列パターンで表現される場合には、目的地物検出手段26は層別オブジェクトの垂直方向の並びを当該配列パターンと照合する比較的簡単な処理で目的地物を判別することができる。しかし、地物モデル32は要素図形に関するより複雑な条件を定めるものであってもよく、当該条件を満たすか否かを判別するプログラムが実質的に地物モデル32として記憶装置6に格納されるものであってもよい。
目的地物検出手段26のより詳細な処理の例を説明する。図21は道路標識などポールを含む目的地物についての目的地物検出手段26の処理例を示す概略のフロー図であり、当該処理を記述したプログラムを上述したように地物モデル32として記憶装置6に予め格納しておくことができる。オブジェクト生成手段24により対象空間に生成された層別オブジェクトには1から順番に自然数の番号Indexが付される。目的地物検出手段26はIndexを処理開始時に設定される初期値0(ステップS280)から順番にインクリメントして処理対象の層別オブジェクトを選択し(ステップS282)、Indexが層別オブジェクトの総数NTOTを超えると処理を終了する(ステップS284にて「No」の場合)。
層別オブジェクトを選択すると(ステップS284にて「Yes」の場合)、目的地物検出手段26は当該層別オブジェクトの図形コードCodeが“1001”で、かつ当該層別オブジェクトが地物の構成に既に使用されているか否かを示す図形マークMarkが、未使用であることを示す値“0”であり(ステップS286にて「Yes」の場合)、さらに当該層別オブジェクトに高さ方向に並ぶ他の層別オブジェクトの個数NVが予め定めた基準値NVTH以上であれば(ステップS288にて「Yes」の場合)、高さ方向に並ぶ位置関係にある複数の層別オブジェクトを標高の低い順にソートする(ステップS290)。NVTHは例えば2又は3とすることができる。
なお、選択した層別オブジェクトのCodeが“1001”でない場合及び当該層別オブジェクトのMarkが既使用を示す値“1”である場合(ステップS286にて「No」の場合)、並びに高さ方向に並ぶ層別オブジェクトの個数NVが基準値未満である場合(ステップS288にて「No」の場合)は、処理はノードAに戻り、次の層別オブジェクトを選択する(ステップS282)。
ステップS290のソート処理後、目的地物検出手段26は後述するポール判別処理S292を行う。ポール判別処理のサブルーチンからの戻り値が“1”であれば、ポールが検出されたことになり(ステップS294にて「Yes」の場合)、目的地物検出手段26はその水平断面の中心と半径を計算する(ステップS296)。そして、その計算結果等に基づいて、当該ポールがすでに検出済みの地物として記憶装置6に登録されているか否かを調べる。既登録でなければ(ステップS298にて「No」の場合)、ポールの半径と中心点からポールの下側及び上側の標高を求め(ステップS300)、当該ポールを検出済みの地物として記憶装置6に新規登録する(ステップS302)。さらに、現在、ステップS282にて設定されたIndexを有しCode=“1001”である層別オブジェクト及び、当該層別オブジェクトと高さ方向に並ぶCode=“1001”である層別オブジェクトをMark=“1”とし既使用として(ステップS304)、処理はノードAに戻り、次の層別オブジェクトを選択する(ステップS282)。
また、ポール判別処理S292の結果、ポールでないと判断された場合(ステップS294にて「No」の場合)、及び検出されたポールが既登録であった場合(ステップS298にて「Yes」の場合)も、処理はノードAに戻り、次の層別オブジェクトを選択する(ステップS282)。
図22及び図23はポール判別処理S292の概略のフロー図である。ポール判別処理S292は高さ方向に並ぶ層別オブジェクトからなるオブジェクトグループに対応する地物がポールを含むものであるかを判別する。目的地物検出手段26は入力装置8からの入力又は記憶装置6に設定されたパラメータを読み込むことにより、ポールと判断するのに必要とする「細いポール」オブジェクトの最低積層数CMIN1001を設定する(ステップS320)。また、処理対象とするオブジェクトグループにおける各層別オブジェクトを識別するインデックスCI、ポールである確からしさを示す値PL、Code=“1001”である層別オブジェクトのカウント数FC1001、Code=“2001”である層別オブジェクトのカウント数FC2001、Code=“2003”である層別オブジェクトのカウント数FC2003、Code=“2005”である層別オブジェクトのカウント数FC2005をそれぞれ0に初期化する(ステップS322)。
目的地物検出手段26はCIを初期値0から順番にインクリメントして処理対象の層別オブジェクトを選択し(ステップS324)、CIが処理対象のオブジェクトグループを構成する層別オブジェクトの個数NVを超えると処理はノードDに移る(ステップS326にて「No」の場合)。
また、カウントFC1001がCMIN1001以上であれば(ステップS328にて「Yes」の場合)、オブジェクトグループがポールを含む地物であると判断し、PLの値を当該判断結果を示す値“1”に設定して(ステップS330)、処理はノードDに移る。
FC1001<CMIN1001である場合(ステップS328にて「No」の場合)には、目的地物検出手段26は選択した層別オブジェクトがCode=“1001”であれば(ステップS332にて「Yes」の場合)カウント数FC1001を1増やし(ステップS334)、Code=“2001”であれば(ステップS336にて「Yes」の場合)カウント数FC2001を1増やし(ステップS338)、Code=“2003”であれば(ステップS340にて「Yes」の場合)カウント数FC2003を1増やし(ステップS342)、Code=“2005”であれば(ステップS344にて「Yes」の場合)カウント数FC2005を1増やし(ステップS346)、ノードBに戻る。
一方、FC1001<CMIN1001である場合(ステップS328にて「No」の場合)において、選択した層別オブジェクトがCode=“1001”,“2001”,“2003”,“2005”のいずれでもない場合は、選択した層別オブジェクトが下から2番目以上のものであるか判断する(ステップS364)。当該層別オブジェクトが処理対象オブジェクトグループ中、一番下のものである場合は(ステップS364にて「No」の場合)、処理はノードBに戻る。
2番目以上である場合は(ステップS364にて「Yes」の場合)、当該層別オブジェクトが「建物壁面」を示すCode=“201”であり、かつ当該層別オブジェクトの高さZ(CI)とその下の層別オブジェクトの高さZ(CI−1)との差が1.5m未満であるかを調べる(ステップS366)。これらの条件が満たされる場合(ステップS366にて「Yes」の場合)、目的地物検出手段26はオブジェクトグループが「建物壁面」を含む地物でありポールを含む地物である可能性は低いと判断し、PLの値を当該判断結果を示す値“−1”に設定し(ステップS368)、処理はノードDに移る。ちなみに、Z(CI)−Z(CI−1)が1.5m以上である場合については、例えば、道路標識の上方に離れて高架橋の壁面が存在するような状況が可能性として存在するため、PLは0のままとする。
PL=1である場合は(ステップS370にて「Yes」の場合)、戻り値が“1”に設定され(ステップS372)、処理はポール判別処理のサブルーチンの呼び出し元に戻る。
PL=−1である場合は(ステップS374にて「Yes」の場合)、戻り値が“0”に設定され(ステップS376)、処理はポール判別処理のサブルーチンの呼び出し元に戻る。
FC1001が1、つまり「細いポール」のオブジェクトの高さ方向への積み重なりが確認されない場合には(ステップS378にて「No」の場合)、戻り値が“0”に設定され(ステップS380)、処理はポール判別処理のサブルーチンの呼び出し元に戻る。
PLが0であり、かつFC1001が2以上である場合(ステップS370及びS374にて「No」、かつステップS378にて「Yes」の場合)、処理対象オブジェクトグループがポールと標識とが組み合わさったポール標識であるかを判別する(ステップS382)。具体的にはCode=“1001の「細いポール」にCode=“2003”の層別オブジェクトが組み合わさっている場合、ポール標識と判断される(ステップS382にて「Yes」の場合)。この場合、戻り値が“1”に設定され(ステップS384)、処理はポール判別処理のサブルーチンの呼び出し元に戻る。一方、ポール標識でないと判断された場合は(ステップS382にて「No」の場合)、戻り値が“0”に設定され(ステップS386)、処理はポール判別処理のサブルーチンの呼び出し元に戻る。
以上、目的地物検出手段26の処理の一例を説明した。当該処理では基本的に、点群データそのものではなく、高さ方向に沿って並ぶ複数の層別オブジェクトからなるグループが処理対象となる。地物検出システム2は、当該グループにおける高さ方向に沿った層別オブジェクトの分類の並び方を、例えば、図21〜図23を用いて説明したような処理で、地物モデル32として記述される条件と照合して目的地物を検出する。目的地物検出手段26における処理では、層別オブジェクトはいわば地物を構成する部品として、各種の目的地物の検出に共通に利用される。つまり、目的地物ごとに点群データから当該目的地物の形状の特徴を探索・抽出するという処理が省略され処理効率が向上する。また、部品化されたオブジェクトの組み合わせに基づいて目的地物の形状の特徴を探索・抽出する処理は、点群データから目的地物の形状の特徴を探索・抽出するという処理よりもより少ない工数で作成でき、ひいては目的地物の追加・変更に柔軟に対応できる。