以下、図面を参照して本発明の実施の形態を詳細に説明する。
<本発明の実施の形態に係る点群解析処理装置の原理>
まず、本発明の実施の形態に係る点群解析処理装置の原理について説明する。
任意の射影形状を押し出して形成されるような3次元形状(以下、スイープ形状と呼ぶ)の物体は、最小曲率方向には共通の断面形状(当該断面形状が射影形状に相当する)を有しているという特徴がある。
また、本実施の形態に係る点群解析処理装置においては、局所領域ごとに、最小曲率方向における射影形状特徴の自己相関値の期待値を算出し、この自己相関の期待値が高いほどスイープ形状であると判定する。そのため、木の枝や葉っぱのような不規則な形状の場合、自己相関値は非常に低くなる傾向があるため、事前にスイープ形状とは適さない領域として判定することが可能である。
さらに、最小曲率方向が同じ方向であり、かつ類似した射影形状を有する3次元点群が、同一のスイープ形状に属している3次元点群であると考え、本実施の形態に係る点群解析処理装置においては、射影形状の類似性および最小曲率方向の類似性を用いて3次元点群を統合する。平面形状については、任意の2つのベクトルが張る平面方向に直線形状がスイープしたものであると判断し、本実施の形態に係る点群解析処理装置においては、射影形状の類似性および最小曲率方向の類似性を用いて3次元点群を統合する。これにより、スイープ形状を有する多様な3次元形状を同一のフレームワークで検出することが可能となる。
本実施の形態に係る点群解析処理装置においては、レーザースキャナ等で計測された3次元点群を入力としてスイープ形状を検出する。本実施の形態においては、電柱、ケーブル、建造物の壁面、ガードレール等をスイープ形状物体の一例として示すが、それ以外のスイープ形状を検出することも可能である。ここで、「スイープ形状を検出する」ことの物理的な意味について次のように定義する。
スイープ形状を検出するとは、入力された3次元点群からスイープ形状の表面に存在する3次元点群を見つけること、もしくはスイープ形状を規定する3次元モデルのパラメータを推定することを意味する。上記スイープ形状表面上の3次元点群で表現される3次元空間や3次元モデルのパラメータを、本実施の形態においては、スイープ形状領域と記載する。
また、3次元情報(位置情報)とは、緯度、経度、海抜(高さ)情報でもよいし、ユーザーが設定した特定の位置を原点とした3次元ユークリッド座標系でも極座標系でもよい。本実施の形態においては、ユーザーが設定した原点における3次元ユークリッド座標系(各方向をX,Y,Z座標とする)を想定する。
各座標の単位はメートル(m)やセンチメートル(cm)、ミリメートル(mm)で表現するが、他の単位でもよい。3次元点とは、上記の3次元座標に、その点が撮影された時刻、レーザーの反射強度、赤・青・緑などの色情報等が付与された点である。3次元点に付与される情報に制限はないが、少なくとも位置情報(X,Y,Z座標)は付与されたものであり、3次元点群とは、少なくとも1点の3次元点からなる集合である。
また、本実施の形態においては、ユークリッド座標系のZ軸の方向は鉛直(高さ)方向を意味し、X軸とY軸の張る二次元平面は水平面を意味するものとする。また、3次元点群はレーザースキャナ以外にも、距離情報を取得できるセンサであればよく、例えばステレオカメラにより取得した奥行き情報から求めた3次元点群でもよい。
<第1の実施の形態に係る点群解析処理装置について>
スイープ形状の場合、ある特定の方向についてのみ共通の断面を持っており、その方向が最小曲率方向である。3次元点群の密度が非常に高い場合には、従来技術である曲面当てはめの推定により、領域cの各点での位置での最小曲率方向は推定することができる。
しかしながら、MMSのように車載に搭載されたレーザーで計測した3次元点群では、走行速度が速いときにはレーザースキャンの間隔が広くなるため、3次元点群が疎になりやすい。そのため、計測ノイズの影響が大きくなり、局所領域での最小曲率方向の推定精度は低くなる傾向がある。
第1の実施の形態においては、計測ノイズに頑健に推定するために、領域cの重心位置からある一定の大きさの周辺領域に含まれる3次元点群を用いて最小曲率方向を推定する。スイープ形状は、最小曲率方向に垂直な射影形状は類似した形状であるため、最小曲率方向に射影したときには3次元点群の面積、又は画素数が最も小さくなるという特徴がある。
そこで、第1の実施の形態では、様々な方向に射影後の3次元点群の面積、又は画素数を評価し、図1に示すように、最も小さいときの方向を最小曲率方向として算出する。
また、工学分野において、自己相関関数というものがある。これは、音声認識などの波形解析の手段として幅広く利用されており、波形を時間方向にずらしたときに相関の高低を算出する関数である。第1の実施の形態においては、この概念を拡張し、3次元点群に適用する。時間の代わりに、最小曲率方向について3次元点群形状をずらして相関が高いか調べる。しかし、MMSで計測した3次元点群そのものは計測が疎である(密でない)ため、最小曲率方向に微小にずらして相関を計算しても、相関値が正確に計算できない。そこで、第1の実施の形態においては、スキャンラインの間隔以上の大きさで最小曲率方向に分割した部分領域ごとに、形状の特徴(以下、分割領域特徴とも称する)を推定し、部分領域間の形状の特徴の相関を計算する。これにより、計測点が疎であっても頑健に相関値を推定することが可能となる。
<第1の実施の形態に係る点群解析処理装置の構成>
次に、本発明の第1の実施の形態に係る点群解析処理装置の構成について説明する。図2に示すように、第1の実施の形態に係る点群解析処理装置100は、CPUと、RAMと、後述する点群解析処理ルーチンを実行するためのプログラムや各種データを記憶したROMと、を含むコンピュータで構成することが出来る。この点群解析処理装置100は、機能的には、被写体計測部10と、入力部12と、演算部20と、出力部90とを含んで構成されている。
被写体計測部10は、3次元点群を計測するものであり、レーザーレンジファインダや、赤外線センサ、または超音波センサなど、被写体とセンサとの距離を測定可能な装置である。例えば、レーザーレンジファインダをGPS(Global Positioning System)が搭載された車の上、もしくはGPSの搭載された飛行機に搭載し、移動しながら計測することで、屋外の環境の地物を被写体とし、例えばケーブル、建物、ガードレール、道路地面などであり、これら被写体表面の3次元位置を計測するシステムである。第1の実施の形態においては、被写体計測部10として、車上にGPSとレーザーレンジファインダとが搭載されているMMS(Mobile Mapping System)を用い、被写体の物体の表面上の位置を計測した計測結果である複数の位置を表す3次元点群を取得する。なお、被写体計測部10は、ある特定の位置(交差点など)1箇所からの計測部であってもよい。
入力部12は、マウスやキーボードなどのユーザーインターフェースであり、点群解析処理装置100で使用するパラメータを入力するものである。また、パラメータを記憶したUSBメモリなどの外部記憶媒体でもよく、記憶部30にパラメータを供給する。例えば、地図上の柱状構造物の位置情報などが登録されている。また、第1の実施の形態においては、パラメータとして、半径Rcutの値、閾値th_Pointの値、繰り返し処理の回数Tの値、Δdの値、閾値th_Eautоの値、閾値th_Planeの値、εの値、kの値、距離Rnearの値、閾値th_νの値、閾値th_Ecrоssの値、閾値th_Ecostの値、閾値th_Lengの値、及び閾値th_Areaの値が入力されるものとする。
演算部20は、記憶部30と、スイープ形状検出部40と、を含んで構成されている。
記憶部30は、3次元点群記憶部32と、演算処理用パラメータ記憶部34と、スイープ形状領域情報記憶部36と、を含んで構成されている。また、記憶部30は、例えば、HDD(Hard Disk Drive)や、SSD(Solid State Drive)等のハードウェアによる記憶装置である。
3次元点群記憶部32には、被写体計測部10から入力された3次元点群が記憶されている。
演算処理用パラメータ記憶部34には、入力部12により受け付けた半径Rcutの値、閾値th_Pointの値、繰り返し処理の回数Tの値、Δdの値、閾値th_Eautоの値、閾値th_Planeの値、εの値、kの値、距離Rnearの値、閾値th_νの値、閾値th_Ecrоssの値、閾値th_Ecostの値、閾値th_Lengの値、及び閾値th_Areaの値、が記憶されている。このようなパラメータは、実験的に決めるパラメータである。
スイープ形状領域情報記憶部36には、スイープ形状検出部40において検出されたスイープ形状が存在する3次元位置や、3次元空間の領域、若しくは検出したスイープ形状が存在する3次元点群の番号などの情報が記憶されている。
スイープ形状検出部40は、初期領域決定部42と、最小曲率方向推定部44と、自己相関値算出部46と、スイープ形状候補領域判定部48と、領域統合処理部50と、スイープ形状判定部52とを含んで構成されている。
初期領域決定部42は、3次元点群記憶部32に記憶されている3次元点群をクラスタリングし、クラスタリングされた点群(クラスタを意味する)を領域とする。なお、各領域を区別する番号をc(∈1,2,3,...,C)、入力3次元点群Ppоintsの点の各々を区別する番号をi、入力3次元点群の総数をNi、各点の3次元位置を下記(1)で表現するものとする。ただし、[xi,yi,zi]Tは、X軸、Y軸、及びZ軸の座標成分を意味し、右上の添え字の記号「T」は転置を意味する。また、領域cに属する点は、下記(2)式のように、右上の添え字に領域の番号を示すことで陽に表記することもある。また、点そのものも1つの点からなる3次元点群と考え、第1の実施の形態においては、点そのものであっても3次元点群と称する場合もある。第1の実施の形態においては、領域cに属する点は1点のみからなる3次元点群とし、初期領域決定部42において作成される領域数はNi、つまり入力点群の総数と等しいとする。
最小曲率方向推定部44は、初期領域決定部42により取得した各領域cについて周辺3次元点群Qc pоintsを取得すると共に、ノイズとなる領域cを判定し、ノイズとなる領域を、以後の処理の処理対象として除外する。具体的には、領域cの各々について、入力3次元点群Ppоintsから、下記(3)式を満たす、当該領域cに属する3次元点群の重心位置から、演算処理用パラメータ記憶部34に記憶されている半径Rcut以内に含まれる3次元点群を、周辺3次元点群Qc pоintsとして取得する。そして、領域cの各々について、当該領域cの周辺3次元点群Qc pоintsに含まれる点の数が演算処理用パラメータ記憶部34に記憶されている閾値th_Pointの値以下か否かを判定し、閾値th_Point(例えば、第1の実施の形態においてはth_Point=10(点)とする。)の値以下である領域cをノイズとして判定し、当該領域cを、以後の処理の処理対象としないとする。なお、第1の実施の形態においては、Rcut=0.5(m)とする。
ここで、上記(3)式は、
を満たす点pi(∈Ppоints)からなる集合を周辺点qc j(∈Qc pоints)とすることを意味する。また、
はベクトルの2ノルムを意味し、
は領域cに属する3次元点群の重心ベクトルであり、下記(4)式に従って、領域cに属する3次元点群の3次元位置の平均値として求まる。
ただし、Njcは領域cに属する点の数とする。第1の実施の形態においては、領域に属する点の数の初期値は1点なので、重心ベクトルは所属している点のベクトルそのものとなる。
また、最小曲率方向推定部44は、領域cの各々について、当該領域cの周辺3次元点群Qc pоintsを用いて、繰り返し処理により最小曲率方向を推定する。具体的には、まず、領域cの周辺3次元点群Qc pоintsから、ランダムサンプリングにより2点(q1 c及びq2 c)を取得する。次に、取得した2点に基づいて、下記(5)式に従って、仮最小曲率方向
を推定する。
ただし、右上の添え字(t)は、繰り返し処理がt回目であることを意味する。なお、演算処理用パラメータ記憶部34に記憶されている、繰り返し処理の回数であるTの値は実験で定める。Tの値は大きければ大きいほど精度は向上するが、全ての領域について計算するため計算時間に影響する。第1の実施の形態において、T=100(回)としたが、オフライン処理で計算時間が長くても問題ない場合はTの値はこれ以上でも問題ない。また、ランダムサンプリングした際には、3次元点群を射影して生成する画像(射影形状画像)の初期値は、全画素について0とする。
次に、推定した仮最小曲率方向
のベクトルに垂直な平面の基底ベクトルを、
とすると、周辺点qj cを射影した射影形状の位置は、射影形状画像の位置
として、下記(6)式に従って求まる。
ただし、rоund()は、入力した実数値の小数点を四捨五入することを意味し、Δdは画像座標を求める際の量子化の幅であり、演算処理用パラメータ記憶部34に記憶されている。第1の実施の形態においては、Δd=0.02(m)とする。
次に、繰り返し処理t回目の射影形状画像Is (t)について、周辺点qj cの射影後の画素の位置
の画素値について下記(7)式に従って、値を更新する。なお、下記(7)式による画素値の更新は、周辺点qj cの全てを射影するまで行う。なお、記号「←」は、代入して値を更新することを意味する。
次に、上記ランダムサンプリングによる仮最小曲率方向の算出、及び作成された射影形状画像の対象となる画素の各々の画素値の更新の処理を、T回繰り返す。そして、下記(8)式を満たす方向を、当該領域cの最小曲率方向として推定する。
自己相関値算出部46は、図3に示すように、領域cの各々について、最小曲率方向推定部44において取得した当該領域cの最小曲率方向における、当該領域cの部分領域毎の部分領域特徴の自己相関値の期待値を算出する。具体的には、まず、領域cにおいて、領域cの周辺3次元点群をNs個の部分領域に属するように分割する。次に、分割した部分領域毎に、特徴量として部分特徴ベクトル
を抽出する。次に、それぞれの部分特徴ベクトル
の相関値を算出することにより、当該領域cの自己相関値を算出する。第1の実施の形態においては、部分領域毎の部分特徴ベクトルを取得するために、まず、部分領域に属する周辺点qj cを、最小曲率方向推定部44と同様に、当該部分領域の領域cについて取得した最小曲率方向に射影し、下記(9)式に従って、対象となる画素の画素値を更新しながら、射影形状画像Isを作成する。
次に、作成された射影形状画像Isを、図4に示すようにラスタースキャンして作成される部分領域特徴ベクトル
を取得する。なお、第1の実施の形態においては、3次元点群が疎な場合でも頑健になるように、射影形状画像から算出した部分領域特徴ベクトルを用いる。
また、第1の実施の形態においては、領域c毎に、当該領域cの部分領域毎に取得した部分領域特徴ベクトル
に基づいて、下記(10)式に従って、自己相関値Eautоを算出する。
ただし、部分領域特徴ベクトル
は、sとは異なる位置での部分領域特徴ベクトルを示し、記号「→」はベクトルのノルムが1.0に正規化されていることを示し、関数Num(s)は部分領域特徴ベクトルの組み合わせの数を意味する。分割した部分領域の数がNs個の場合、Num(s)は下記(11)式に従って算出される。
なお、ノルムは下記(12)式により1.0に正規化できる。
スイープ形状候補領域判定部48は、各領域cについて、当該領域cがスイープ形状候補領域か否かの判定を行う。具体的には、下記(13)式に示すように、領域cについて、自己相関値算出部46において取得した当該領域cの自己相関値が、演算処理用パラメータ記憶部34に記憶されている閾値th_Eautоの値より大きい場合にスイープ形状候補領域と判定する。なお、第1の実施の形態においては、閾値th_Eautо=0.2とする。
また、スイープ形状候補領域判定部48は、スイープ形状候補領域と判定された領域cの各々について、1方向のスイープ形状候補領域及び2軸方向のスイープ形状候補領域(平面)の何れであるかの判定を行う。第1の実施の形態においては、スイープ形状候補領域と判定された領域cに含まれる3次元点群形状を推定し、平面度合いが、演算処理用パラメータ記憶部34に記憶されている閾値th_Planeの値より小さいものを2軸方向のスイープ形状候補領域c(平面)と判定し、平面度合いが、閾値th_Planeの値以上のものを1方向のスイープ形状候補領域cと判定する。具体的には、スイープ形状候補領域と判定された領域cについて、当該領域cに属する3次元点群の重心と、当該領域cの周辺3次元点群Qc pоintsと基づいて、下記(14)式に従って、共分散行列PQcоrrを算出し、算出された共分散行列PQcоrrを固有値分解して算出される固有値λ0 c,λ1 c,λ2 c(λ0 c>λ1 c>λ2 c)に基づいて、下記(15)式に従って、判定する。
なお、第1の実施の形態においては、閾値th_Plane=0.02とし、εは演算処理用パラメータ記憶部34に記憶されており、0割りを防ぐための微小値であり、第1の実施の形態においては、例えば、ε=0.00001とする。
また、スイープ形状候補領域判定部48は、スイープ形状候補領域と判定された領域cの各々について、統合特徴方向νcを取得する。具体的には、1方向のスイープ形状候補領域と判定された領域cについては、最小曲率方向推定部44において取得した当該領域cの最小曲率方向mcを、統合特徴方向νcとして取得する。一方、2軸方向のスイープ形状候補領域と判定された領域cについては、当該スイープ形状候補領域について取得した固有値の最小固有値λ2 cに対応する固有ベクトル方向を、統合特徴方向νcとして取得する。
領域統合処理部50は、スイープ形状候補領域判定部48において取得した、1方向のスイープ形状候補領域cの各々、及び2軸方向のスイープ形状候補領域cの各々について、領域統合処理を行う。具体的には、まず、スイープ形状候補領域判定部48において取得した、1方向のスイープ形状候補領域cの各々について、自己相関値算出部46において取得した自己相関値が大きい順に並べる。次に、処理対象となる1方向のスイープ形状候補領域cを、自己相関値が大きい順番に未処理の1方向のスイープ形状候補領域cの各々のうちから1つ選択する。次に、処理対象となる1方向のスイープ形状候補領域cにおける周辺領域を検出する。ここで、周辺領域を区別する番号をb(∈1,2,3,4,...,B)、処理対象となる1方向のスイープ形状候補領域cに対する周辺領域の数をBで表現する。第1の実施の形態においては、処理対象となる1方向のスイープ形状候補領域cに属する点から、演算処理用パラメータ記憶部34に記憶されている距離Rnearに存在する、1方向のスイープ候補領域cを周辺領域bとする。つまり、距離Rnearに3次元点群が存在する領域であり、かつ当該領域が1方向のスイープ形状候補領域cの場合、周辺領域bとする。なお、第1の実施の形態においては、距離Rnear=1.0(m)とする。
次に、取得した周辺領域bの各々について、自己相関値算出部46において取得した自己相関値が大きい順に並べる。次に、処理対象となる1方向のスイープ候補領域cの領域特徴ベクトルを算出する。ここで、処理対象となる1方向のスイープ候補領域cの領域特徴ベクトルとは、下記(16)式に従って算出される、最小曲率方向推定部44において取得した1方向のスイープ候補領域cについて取得した当該領域の部分領域毎の部分特徴ベクトルの平均ベクトル
である。
次に、処理対象となる周辺領域bを、自己相関値が大きい順番に未処理の周辺領域bの各々のうちから1つ選択する。
次に、処理対象となる周辺領域bの領域特徴ベクトルを算出する。第1の実施の形態においては、領域の領域特徴ベクトルとして、射影形状特徴ベクトルを用いているため、スイープ方向に垂直なX´軸及びY´軸の作成方法によって、処理対象となる1方向のスイープ候補領域cと処理対象となる周辺領域bとで射影形状特徴ベクトルが異なるために、相関値が低くなる。そのため、処理対象となる周辺領域bの領域特徴ベクトルは、以下のように作成される。
まず、図5に示すように、処理対象となる1方向のスイープ候補領域cで用いた射影画像を作成するときに使用した
をX´軸、及びY´軸として、処理対象となる周辺領域bの部分領域毎の部分特徴ベクトルを再度生成する。そして、生成された処理対象となる周辺領域bの部分領域毎の部分特徴ベクトルに基づいて、上記(16)式に従って、平均ベクトルを算出し、処理対象となる周辺領域bの領域特徴ベクトル
とする。なお、上述の処理対象となる1方向のスイープ候補領域cと同様に、上記(16)式に従って算出される、最小曲率方向推定部44において取得した処理対象となる周辺領域bについて取得した当該領域の部分領域毎の部分特徴ベクトルの平均ベクトルを算出し、処理対象となる1方向のスイープ候補領域cで用いた射影画像を作成するときに使用した
と、処理対象となる周辺領域bで用いた射影画像を作成するときに使用した
とに基づいて、算出した平均ベクトルを変換して、処理対象となる周辺領域bの領域特徴ベクトル
を作成するようにしてもよい。
そして、領域統合処理部50は、取得した処理対象となる1方向のスイープ候補領域cの領域特徴ベクトル、又は前回更新された処理対象となる1方向のスイープ形状候補領域cの領域特徴ベクトル、及び処理対象となる周辺領域bの領域特徴ベクトルに基づいて、下記(17)式に従って、内積計算により両領域間の相互相関値を算出する。
次に、領域統合処理部50は、処理対象となる1方向のスイープ候補領域cに、処理対象となる周辺領域bを統合するか否かを判定する。具体的には、算出した両領域間の相互相関値と、スイープ形状候補領域判定部48において取得した処理対象となる1方向のスイープ候補領域cの統合特徴方向νc、又は前回更新された処理対象となる1方向のスイープ候補領域cの統合特徴方向νcと、スイープ形状候補領域判定部48において取得した処理対象となる周辺領域bの統合特徴方向νbとの内積として求められる統合特徴方向の類似度を用いて、下記(18)式、及び下記(19)式に従って、下記(18)式、及び下記(19)式の条件を満たす場合には、処理対象となる1方向のスイープ候補領域cに、処理対象となる周辺領域bを統合すると判定する。第1の実施の形態においては、閾値th_ν=0.99、閾値th_Ecrоss=0.6とし、閾値th_ν、及び閾値th_Ecrоssは、演算処理用パラメータ記憶部34に記憶されている。
上記(18)式、及び上記(19)式の条件を満たすと判定され、処理対象となる1方向のスイープ候補領域cに処理対象となる周辺領域bを統合する場合には、周辺領域bに属する3次元点群の全てを領域cに属する3次元点群として変更する。統合時における領域特徴ベクトルの更新は、更新パラメータをαとし、下記(20)式、及び下記(21)式に従って算出される。
なお、第1の実施の形態においては、例えば、更新パラメータαは、処理対象となる1方向のスイープ候補領域cと統合する周辺領域bとの3次元点群数の比率から、下記(22)式に従って、算出される。各領域に含まれる3次元点群数をNumber(c)、Number(b)と表記する。
次に、処理対象となる1方向のスイープ候補領域cについて、上記統合処理を全ての処理対象となる周辺領域bについて終了するまで繰り返す。そして、上記統合処理を、全ての処理対象となる1方向のスイープ候補領域cについて終了するまで繰り返す。
また、2軸方向のスイープ候補領域の統合についても、1方向のスイープ候補領域と同様に行う。すなわち、処理対象となる2軸方向のスイープ候補領域cについて、1方向のスイープ候補領域と同様の統合処理を、2軸方向のスイープ候補領域である全ての処理対象となる周辺領域bについて終了するまで繰り返す。そして、同様の統合処理を、全ての処理対象となる2軸方向のスイープ候補領域cについて終了するまで繰り返す。
なお、処理対象となる領域が領域Aであり、統合される周辺領域が領域Bとなる処理後に、処理対象となる領域が領域Bとなり、統合される周辺領域が領域Cとなった場合、最終的に、領域Aに領域Bと領域Cとが統合されることになる。また、他の領域に統合すると判定された領域についても処理対象となる1方向のスイープ候補領域c、又は2軸方向のスイープ候補領域cとなる。
スイープ形状判定部52は、領域統合処理部50において統合された1方向のスイープ候補領域cの各々について、1方向のスイープ形状であるか否かの判定を行う。これは、領域統合処理部50において統合された1方向のスイープ候補領域cには、図6に示すような、段差のある平面に挟まれた3次元点群領域も1方向のスイープ形状候補領域と判定されているためである。以下、このような3次元点群領域を疑似スイープ形状と定義する。例えば、道路と歩道との間の段差部分や建造物の壁面の交差したコーナー等が該当する。
まず、1方向のスイープ形状か疑似スイープ形状かを判定する処理について説明する。具体的には、統合された1方向のスイープ候補領域cの各々について、まず、当該1方向のスイープ候補領域cに属する3次元点群pj cの各々について、全ての3次元点群から、k近傍の3次元点群を周辺3次元点群として取得する。周辺3次元点群には、1方向のスイープ候補領域cに属する3次元点群、及びそれ以外の領域の3次元点群が含まれる。次に、当該1方向のスイープ候補領域cに属する3次元点群pj cの各々についての周辺3次元点群を用いて、下記(23)式〜下記(25)式に従って、当該1方向のスイープ候補領域cが周辺領域と切り離した場合のコストを評価する関数Ecоstを算出する。ここで、1方向のスイープ候補領域cに属するpj cについて、1方向のスイープ候補領域cに属していないk近傍の周辺点を有する点をpf cとし、点pj cのk近傍の点について、1方向のスイープ候補領域cに属している点をpf (k)とし、1方向のスイープ候補領域cに属していない点をph (k)と表記する。第1の実施の形態においては、k=20とし、kの値は、演算処理用パラメータ記憶部34に記憶されている。
ここで、上記(23)式により求まる関数Ecоst(c)は、1方向のスイープ候補領域cの境界上(周辺領域に近い場所)に存在する3次元点群について、1方向のスイープ候補領域c以外に含まれる3次元点群と密に接している場合には、上記(25)式により求まるEcоst_NotRegion(c)が大きな値になりやすい。
次に、1方向のスイープ候補領域cのスイープ方向における長さLeng(c)を下記(26)式に従って、算出する。ここで、スイープ方向における長さは、1方向のスイープ候補領域cに属する3次元点群を最小曲率方向に射影したとき(つまり、最小曲率方向のベクトルとの内積)の最大値と最小値の差分である。
次に、算出したEcоst(c)、及びLeng(c)に基づいて、下記(27)式及び下記(28)式に従って、当該1方向のスイープ候補領域cが1方向のスイープ形状か否かを判定する。下記(27)式及び下記(28)式の条件を満たす場合には、当該1方向のスイープ候補領域cは1方向のスイープ形状と判定する。一方、下記(27)式及び下記(28)式の条件を満たさない場合は、当該1方向のスイープ候補領域cは疑似スイープ形状と判定する。そして、1方向のスイープ形状と判定された場合には、当該1方向のスイープ候補領域cに属する3次元点群の3次元位置や3次元空間の領域を1方向のスイープ形状と対応付けてスイープ形状領域情報記憶部36に記憶すると共に、出力部90に出力する。
次に、2軸方向のスイープ形状であるか否かを判定する処理について説明する。具体的には、統合された2軸方向のスイープ形状候補領域cの各々について、まず、当該2軸方向のスイープ形状候補領域cに属する3次元点群pj cの各々に基づいて、下記(29)式〜下記(31)式に従って、当該2軸方向のスイープ形状候補領域cの平面領域の大きさArea(c)を算出する。
ここで、Area(c)は、スイープ形状候補領域判定部48において、2軸方向のスイープ形状候補領域cの平面度を計算した際に取得した第1固有ベクトル、及び第2固有ベクトル上に、当該2軸方向のスイープ形状候補領域cに属する3次元点群を最小曲率方向に射影したときの最大値と最小値との差分が縦幅Leng(c)、横幅Width(c)として算出される。ただし、ベクトル
は平面度を算出する際に取得した、固有値λ0 c,λ1 c,λ2 cの第二固有値λ1 cに対応する固有ベクトルとする。
次に、算出したArea(c)に基づいて、下記(32)式に従って、当該2軸方向のスイープ形状候補領域cが2軸方向のスイープ形状か否かを判定する。下記(32)式の条件を満たす場合には、当該2軸方向のスイープ形状候補領域cは2軸方向のスイープ形状と判定する。一方、下記(32)式の条件を満たさない場合は、当該2軸方向のスイープ形状候補領域cは2軸方向のスイープ形状でないと判定する。そして、2軸方向のスイープ形状と判定された場合には、当該2軸方向のスイープ形状候補領域cに属する3次元点群の3次元位置や3次元空間の領域を2軸方向のスイープ形状と対応付けてスイープ形状領域情報記憶部36に記憶すると共に、出力部90に出力する。第1の実施の形態においては、閾値th_Ecost=0.3、閾値th_Leng=1.0(m)、閾値th_Area=0.4とし、閾値th_Ecost、閾値th_Leng、及び閾値th_Areaは、演算処理用パラメータ記憶部34に記憶されている。
<第1の実施の形態に係る点群解析処理装置の作用>
次に、第1の実施の形態に係る点群解析処理装置100の作用について説明する。まず、被写体計測部10により被写体の物体の表面上の位置を計測した計測結果である複数の位置を表す3次元点群を取得し、3次元点群記憶部32に記憶する。次に、入力部12により、演算処理用パラメータの各々を受け付け、演算処理用パラメータ記憶部34に記憶する。そして、スイープ形状検出部40により、3次元点群記憶部32に記憶されている3次元点群と、演算処理用パラメータ記憶部34に記憶されている演算処理用パラメータの各々とを読み込むと、点群解析処理装置100によって、図7に示す点群解析処理ルーチンが実行される。
まず、ステップS100では、読み込んだ3次元点群をクラスタリングし、クラスタリングされた各クラスタを各領域cとする。
次に、ステップS102では、ステップS100において取得した領域cの各々について、繰り返し処理により最小曲率方向を推定する。
上記ステップS102は、図8に示す最小曲率方向の推定処理ルーチンにおいて詳細に説明する。
図8のステップS200では、ステップS100において取得した各領域cのうち、処理対象となる領域cを決定する。
次に、ステップS202では、処理対象となる領域cについて、読み込んだ3次元点群、及び半径Rcutの値に基づいて、上記(3)式に従って、当該領域cの周辺3次元点群Qc pоintsを取得する。
次に、ステップS204では、処理対象となる領域cについて、ステップS202において取得した当該領域cの周辺3次元点群Qc pоintsに含まれる点の数が、読み込んだ閾値th_Pоintの値以下であるか否か判定する。点の数が閾値th_Pоint以下である場合には、ステップS206へ移行する。一方、点の数が閾値th_Pоintより大きい場合には、ステップS208へ移行する。
ステップS206では、処理対象となる領域cを削除し、以後の処理において当該領域cを処理対象としない領域として決定する。
ステップS208では、処理対象となる全ての領域cについてステップS200〜ステップS204までの処理を終了したか否かを判定する。処理対象となる全ての領域cについてステップS200〜ステップS204までの処理を終了している場合には、ステップS210へ移行する。一方、処理対象となる全ての領域cについてステップS200〜ステップS204までの処理を終了していない場合には、ステップS200へ移行し、処理対象となる領域cを変更して、ステップS202〜ステップS208までの処理を繰り返す。
次に、ステップS210では、処理対象となる領域cを決定する。
次に、ステップS212では、tの値を1に設定する。
次に、ステップS214では、処理対象となる領域cのステップS202において取得した周辺3次元点群Qc pоintsからランダムサンプリングにより2点(q1 c及びq2 c)を取得する。
次に、ステップS216では、処理対象となる領域cについて、ステップS214において取得した2点に基づいて、上記(5)式に従って、仮最小曲率方向を推定する。
次に、ステップS218では、処理対象となる領域cについて、ステップS216において取得した仮最小曲率方向に基づいて、当該仮最小曲率方向のベクトルに垂直な平面の基底ベクトルを取得する。
次に、ステップS220では、処理対象となる領域cについて、ステップS202において取得した当該領域cの周辺3次元点群Qc pоintsのうち、処理対象となる周辺点qj cを決定する。
次に、ステップS222では、ステップS220において取得した処理対象となる周辺点qj cを、ステップS216において取得した仮最小曲率方向に射影した射影形状の位置を、処理対象となる周辺点qj cと、処理対象となる領域cに属する3次元点群と、ステップS218において取得した基底ベクトルと、読み込んだΔdの値とに基づいて、上記(6)式に従って算出する。
次に、ステップS224では、処理対象となる周辺点qj cについて、ステップS222において取得した射影形状画像の位置に基づいて、上記(7)式に従って、当該射影形状画像Isの画素の画素値を更新する。
次に、ステップS226では、処理対象となる領域cの、ステップS202において取得した周辺3次元点群Qc pоintsに含まれる全ての周辺点qj cについて、ステップS220〜ステップS224までの処理を終了したか否かを判定する。全ての周辺点qj cについてステップS220〜ステップS224までの処理を終了している場合には、ステップS228へ移行する。一方、全ての周辺点qj cについて処理を終了していない場合には、ステップS220へ移行し、処理対象となる周辺点qj cを変更して、ステップS222〜ステップS226までの処理を繰り返す。
次に、ステップS228では、tの値が、読み込んだ繰り返しの数T(T=100)の値であるか否かを判定する。tの値が繰り返しの数Tの値である場合には、ステップS232へ移行する。一方、tの値が繰り返しの数Tの値でない場合には、ステップS230へ移行する。
ステップS230では、tの値をt+1と設定する。
ステップS232では、処理対象となる領域cについて、ステップS224において取得した繰り返し回数t毎の周辺点の各々に対応する射影形状画像の画素の画素値に基づいて、上記(8)式に従って、当該領域cの最小曲率方向を推定する。
次に、ステップS234では、処理対象となる全ての領域cについてステップS210〜ステップS232までの処理を終了したか否かを判定する。処理対象となる全ての領域cについてステップS210〜ステップS232までの処理を終了した場合には、最小曲率方向の推定処理ルーチンを終了する。一方、処理対象となる全ての領域cについてステップS210〜ステップS232までの処理を終了していない場合には、ステップS210へ移行し、処理対象となる領域cを変更して、ステップS212〜ステップS234までの処理を繰り返す。
図7のステップS104では、処理対象となる領域cの各々について、ステップS102において取得した当該領域cの最小曲率方向における、当該領域cの部分領域毎の部分領域特徴の自己相関値を算出する。
上記ステップS104は、図9に示す自己相関値の算出処理ルーチンにおいて詳細に説明する。
図9のステップS300では、処理対象となる領域cを決定する。
次に、ステップS302では、処理対象となる領域cの、ステップS202において取得した周辺3次元点群Qc pоintsをNs個の部分領域に分割する。
次に、ステップS304では、ステップS302において取得した部分領域の各々のうち、処理対象となる部分領域を決定する。
次に、ステップS306では、処理対象となる部分領域に属する、周辺点qj cのうち、処理対象となる周辺点qj cを決定する。
次に、ステップS308では、処理対象となる周辺点qj cを、ステップS102において取得した、処理対象となる領域cの最小曲率方向に射影して、射影形状の位置を、処理対象となる周辺点qj cと、処理対象となる領域cに属する3次元点群と、ステップS218において取得した基底ベクトルと、読み込んだΔdの値とに基づいて、上記(6)式に従って算出する。
次に、ステップS309では、ステップS308において取得した射影形状の位置に基づいて、上記(9)式に従って、当該周辺点qj cに対応する画素の画素値を更新する。
次に、ステップS310では、処理対象となる部分領域に含まれる全ての周辺点qj cについてステップS306〜ステップS309までの処理を終了したか否かを判定する。全ての周辺点qj cについてステップS306〜ステップS309までの処理を終了している場合には、ステップS312へ移行する。一方、全ての周辺点qj cについてステップS306〜ステップS309までの処理を終了していない場合には、ステップS306へ移行し、処理対象となる周辺点qj cを変更し、ステップS308〜ステップS310までの処理を繰り返す。
次に、ステップS312では、処理対象となる部分領域について、ステップS309において取得した画素値が更新されている当該部分領域に対応する射影形状画像をラスタースキャンし、当該部分領域の部分領域特徴ベクトルを作成する。
次に、ステップS314では、処理対象となる領域cの全ての部分領域についてステップS304〜ステップS312までの処理を終了したか否かを判定する。全ての部分領域についてステップS304〜ステップS312までの処理を終了している場合には、ステップS316へ移行する。一方、全ての部分領域についてステップS304〜ステップS312までの処理を終了していない場合には、ステップS304へ移行し、処理対象となる部分領域を変更して、ステップS306〜ステップS314までの処理を繰り返す。
次に、ステップS316では、処理対象となる領域cについて、ステップS312において取得した、当該領域cの部分領域の各々についての部分領域特徴ベクトルに基づいて、上記(10)式に従って、当該領域cの自己相関値を算出する。
次に、ステップS318では、処理対象となる全ての領域cについてステップS300〜ステップS316までの処理を終了したか否かを判定する。処理対象となる全ての領域cについてステップS300〜ステップS316までの処理を終了している場合には、自己相関値の算出処理ルーチンを終了し、処理対象となる全ての領域cについてステップS300〜ステップS316までの処理を終了していない場合には、ステップS300へ移行し、処理対象となる領域cを変更して、ステップS302〜ステップS318までの処理を繰り返す。
図7のステップS106は、領域cの各々について、ステップS104において取得した当該領域cの自己相関値と、読み込んだ閾値th=Eautоの値とに基づいて、当該領域cがスイープ形状候補領域か否かの判定を行う。
上記ステップS106は、図10のスイープ形状候補領域の判定処理ルーチンにおいて詳細に説明する。
図10のステップS400では、処理対象となる領域cを決定する。
次に、ステップS402では、処理対象となる領域cについて、ステップS104において取得した、当該領域cの自己相関値が、読み込んだ閾値th_Eautоの値より大きいか否かを判定する。自己相関値が閾値th_Eautоの値より大きい場合には、ステップS406へ移行する。一方、自己相関値が閾値th_Eautоの値以下の場合には、ステップS404へ移行する。
ステップS404では、処理対象となる領域cをスイープ形状候補領域以外の領域cと判定する。
ステップS406では、処理対象となる領域cをスイープ形状候補領域cと判定する。
次に、ステップS408では、処理対象となる領域cについて、当該領域cに属する3次元点群の重心と、ステップS202において取得した、当該領域cについての周辺3次元点群Qc pоintsと基づいて、上記(14)式に従って、共分散行列PQcоrrを算出する。
次に、ステップS410では、処理対象となる領域cについて、ステップS408において取得した当該領域cの共分散行列PQcоrrを固有値分解し、固有値λ0 c,λ1 c,λ2 c(λ0 c>λ1 c>λ2 c)を取得する。
次に、ステップS412では、処理対象となる領域cについて、ステップS410において取得した固有値λ1 c、及びλ2 cと、読み込んだεの値とに基づいて、上記(15)式に従って、平面度を算出する。
次に、ステップS414では、処理対象となる領域cについて、ステップS412において取得した当該領域cの平面度が、読み込んだ閾値th_Planeの値よりも小さいか否かを判定する。当該領域cの平面度が、読み込んだ閾値th_Planeの値よりも小さい場合には、ステップS416へ移行する。一方、当該領域cの平面度が、読み込んだ閾値th_Planeの値以上である場合には、ステップS420へ移行する。
ステップS416では、処理対象となる領域cを、2軸方向のスイープ形状候補領域cと判定する。
次に、ステップS418では、処理対象となる領域cについて、当該領域cの統合特徴方向νcを、ステップS410において取得した固有値λ2 cに対応する固有ベクトル方向とする。
ステップS420では、処理対象となる領域cを、1方向のスイープ形状候補領域cと判定する。
次に、ステップS422では、処理対象となる領域cについて、当該領域cの統合特徴方向νcを、ステップS102において取得した当該領域cの最小曲率方向mcとする。
次に、ステップS424では、処理対象となる全ての領域cについてステップS400〜ステップS418又はステップS422までの処理を終了したか否かを判定する。処理対象となる全ての領域cについてステップS400〜ステップS418又はステップS422までの処理を終了している場合には、スイープ形状候補領域の判定処理ルーチンを終了する。一方、処理対象となる全ての領域cについてステップS400〜ステップS418又はステップS422までの処理を終了していない場合には、ステップS400へ移行し、処理対象となる領域cを変更し、ステップS402〜ステップS424までの処理を繰り返す。
図7のステップS108では、ステップS106において取得した、1方向のスイープ形状候補領域c、及び2軸方向のスイープ形状候補領域cの各々について、領域統合処理を行う。
上記ステップS108は、図11の領域の統合処理ルーチンにおいて詳細に説明する。
図11のステップS500では、ステップS106において取得した、1方向のスイープ形状候補領域cの各々を、ステップS104において取得した当該1方向のスイープ形状候補領域cの自己相関値が大きい順に並べる。また、ステップS106において取得した、2軸方向のスイープ形状候補領域cの各々を、ステップS104において取得した当該2軸方向のスイープ形状候補領域cの自己相関値が大きい順に並べる。
次に、ステップS502では、ステップS500において取得した、自己相関値の大きい順に並べた1方向のスイープ形状候補領域cの各々と、自己相関値の大きい順に並べた2軸方向の形状候補領域cの各々と、から処理対象となる領域を取得する。なお、第1の実施の形態においては、まず、1方向のスイープ形状候補領域cの各々から、自己相関値の大きい順に処理対象となる1方向のスイープ形状候補領域cとして決定される。そして、1方向のスイープ形状候補領域cの全てについて、処理が終了した後に、2軸方向のスイープ形状候補cの各々から、自己相関値の大きい順に処理対象となる2軸方向のスイープ形状候補cとして決定される。
次に、ステップS504では、処理対象となる領域cについて、読み込んだ距離Rnearの値と、当該領域cに属する点とに基づいて、周辺領域bの各々を取得する。なお、処理対象となる領域cが1方向のスイープ形状候補領域cの場合には、処理対象となる領域cに属する点から距離Rnearに存在する、1方向のスイープ候補領域を周辺領域bとして取得する。一方、処理対象となる領域cが2軸方向のスイープ形状候補領域cの場合には、処理対象となる領域cに属する点から距離Rnearに存在する、2軸方向のスイープ候補領域を周辺領域bとして取得する。
次に、ステップS505では、ステップS504において取得した処理対象となる領域cの周辺領域bの各々について、ステップS104において取得した当該周辺領域の自己相関値が大きい順に並べる。
次に、ステップS506では、ステップS505において並べ替えられた周辺領域を、自己相関値が大きい順に処理対象となる周辺領域として決定する。
次に、ステップS508では、処理対象となる領域cについて、ステップS312において取得した当該領域cの部分領域毎の部分領域特徴ベクトルの各々の平均ベクトルを、上記(16)式に従って、領域特徴ベクトルとして算出する。
次に、ステップS510では、ステップS506において取得した自己相関値が大きい順に並べ替えられた周辺領域bの各々から、自己相関値が大きい順に、処理対象となる周辺領域bとして決定する。
次に、ステップS512では、処理対象となる周辺領域bについて、ステップS218において取得した処理対象となる領域c及び周辺領域bの基底ベクトルの各々と、ステップS312において取得した当該周辺領域bの部分領域毎の部分領域特徴ベクトルの各々と、に基づいて、当該周辺領域bの領域特徴ベクトルを作成する。
次に、ステップS513では、ステップS508において取得した、又は、前回のステップS518の処理において取得した処理対象となる領域cの領域特徴ベクトルと、ステップS512において取得した、処理対象となる周辺領域bの領域特徴ベクトルとに基づいて、上記(17)式に従って、処理対象となる領域cと、処理対象となる周辺領域bとの相互相関値を算出する。
次に、ステップS514では、読み込んだ閾値th_Ecrossの値、及び閾値th_νの値と、ステップS513において取得した処理対象となる領域cと、処理対象となる周辺領域bとの相互相関値と、ステップS418又はステップS420において取得した、若しくは、前回のステップS520の処理において更新された処理対象となる領域cの統合特徴方向と、ステップS418又はステップS420において取得した処理対象となる周辺領域bの統合特徴方向とに基づいて、上記(18)式及び上記(19)式に従って、処理対象となる領域cに、処理対象となる周辺領域bを統合するか否かを判定する。処理対象となる領域cに、処理対象となる周辺領域bを統合すると判定された場合には、ステップS516へ移行する。一方、処理対象となる領域cに、処理対象となる周辺領域bを統合しないと判定した場合には、ステップS522へ移行する。
ステップS516では、処理対象となる領域cの属する3次元点群と、処理対象となる周辺領域bに属する3次元点群とに基づいて、上記(22)式に従って、αを算出する。
次に、ステップS518では、ステップS508において取得した、又は前回のステップS518の処理において取得した処理対象となる領域cの領域特徴ベクトルと、ステップS512において取得した、処理対象となる周辺領域bの領域特徴ベクトルと、ステップS516において取得したαとに基づいて、上記(20)式に従って、処理対象となる領域cの領域特徴ベクトルを更新する。
次に、ステップS520では、ステップS418又はステップS420において取得した、若しくは、前回のステップS520の処理において更新された処理対象となる領域cの統合特徴方向と、ステップS418又はステップS420において取得した処理対象となる周辺領域bの統合特徴方向と、ステップS516において取得したαとに基づいて、上記(21)式に従って、処理対象となる領域cの統合特徴方向νcを更新する。
次に、ステップS521では、処理対象となる領域cに、処理対象となる周辺領域bに属する3次元点群の全てを当該領域cに属する3次元点群とするように統合する。
ステップS522では、処理対象となる領域cの、ステップS504において取得した周辺領域の全てについてステップS510〜ステップS514又はステップS521までの処理を終了したか否かを判定する。ステップS504において取得した周辺領域の全てについてステップS510〜ステップS514又はステップS521までの処理を終了している場合には、ステップS524へ移行する。一方、ステップS504において取得した周辺領域の全てについてステップS510〜ステップS514又はステップS521までの処理を終了していない場合には、ステップS510へ移行し、処理対象となる周辺領域bを変更し、ステップS512〜ステップS522までの処理を繰り返す。
次に、ステップS524では、処理対象となる全ての領域cについてステップS502〜ステップS522までの処理を終了したか否かを判定する。処理対象となる全ての領域cについてステップS502〜ステップS522までの処理を終了している場合には、領域の統合処理ルーチンを終了する。一方、処理対象となる全ての領域cについてステップS502〜ステップS522までの処理を終了していない場合には、ステップS502へ移行し、処理対象となる1方向のスイープ候補領域c、又は2軸方向のスイープ候補領域cを変更し、ステップS504〜ステップS524の処理を繰り返す。
図7のステップS110では、ステップS108において統合された1方向のスイープ候補領域cの各々について、1方向のスイープ形状であるか否かの判定を行う。また、ステップS108に統合された2軸方向のスイープ候補領域cの各々について、2軸方向のスイープ形状であるか否かの判定を行う。
上記ステップS110は、図12の1方向のスイープ形状の判定処理ルーチン、又は図13の2軸方向のスイープ形状の判定処理ルーチンにおいて詳細に説明する。なお、処理対象が統合された1方向のスイープ形状候補領域cである場合には、図12に示す1方向のスイープ形状の判定処理ルーチンによる処理を行う。一方、処理対象が統合された2軸方向のスイープ形状候補領域cである場合には、図13に示す2軸方向のスイープ形状の判定処理ルーチンによる処理を行う。
図12のステップS600では、ステップS108において統合された1方向のスイープ候補領域cの各々から、処理対象となる1方向のスイープ候補領域cを決定する。
次に、ステップS602では、処理対象となる1方向のスイープ候補領域cについて、当該1方向のスイープ候補領域cに属する3次元点群の各々について、全ての3次元点群から、k近傍の3次元点群を周辺3次元点群として取得する。
次に、ステップS604では、処理対象となる1方向のスイープ候補領域cについて、当該1方向のスイープ候補領域cに属する3次元点群と、ステップS602において取得した当該1方向のスイープ候補領域cの周辺3次元点群とに基づいて、上記(23)式〜上記(25)式に従って、Ecost(c)を算出する。
次に、ステップS606では、処理対象となる1方向のスイープ候補領域cについて、ステップS102において当該1方向のスイープ候補領域cについて取得した最小曲率方向と、当該1方向のスイープ候補領域cに属する3次元点群とに基づいて、上記(26)式に従って、Leng(c)を算出する。
次に、ステップS608では、処理対象となる1方向のスイープ候補領域cについて、ステップS604において取得した当該1方向のスイープ候補領域cのEcost(c)が、読み込んだ閾値th_Ecostの値よりも小さく、かつ、ステップS606において取得した当該1方向のスイープ候補領域ccのLeng(c)が、読み込んだ閾値th_Lengの値よりも大きいか否かを判定する。ステップS604において取得した当該1方向のスイープ候補領域cのEcost(c)が、読み込んだ閾値th_Ecostの値よりも小さく、かつ、ステップS606において取得した当該1方向のスイープ候補領域cのLeng(c)が、読み込んだ閾値th_Lengの値よりも大きい場合には、ステップS610へ移行する。一方、ステップS604において取得した当該1方向のスイープ候補領域cのEcost(c)が、読み込んだ閾値th_Ecostの値以上、又は、ステップS606において取得した当該1方向のスイープ候補領域cのLeng(c)が、読み込んだ閾値th_Lengの値以下である場合には、ステップS612へ移行する。
ステップ610では、処理対象となる1方向のスイープ候補領域cを1方向のスイープ形状と判定する。
ステップS612では、処理対象となる1方向のスイープ候補領域cを疑似スイープ形状と判定する。
次に、ステップS614では、ステップS108において統合された1方向のスイープ候補領域cの全てについてステップS600〜ステップS610又はステップS612までの処理を終了したか否かを判定する。ステップS108において統合された1方向のスイープ候補領域cの全てについてステップS600〜ステップS610又はステップS612までの処理を終了している場合には、1方向のスイープ形状の判定処理ルーチンを終了する。一方、ステップS108において統合された1方向のスイープ候補領域cの全てについてステップS600〜ステップS610又はステップS612までの処理を終了していない場合には、ステップS600へ移行し、処理対象となる1方向のスイープ候補領域cを変更して、ステップS602〜ステップS614までの処理を繰り返す。
図13のステップS700では、ステップS108において統合された2軸方向のスイープ候補領域cの各々から、処理対象となる2軸方向のスイープ候補領域cを決定する。
次に、ステップS702では、処理対象となる2軸方向のスイープ候補領域cについて、当該2軸方向のスイープ候補領域cに属する3次元点群の各々について、全ての3次元点群から、k近傍の3次元点群を周辺3次元点群として取得する。
次に、ステップS704では、処理対象となる2軸方向のスイープ候補領域cについて、ステップS102において当該2軸方向のスイープ候補領域cについて取得した最小曲率方向と、当該2軸方向のスイープ候補領域cに属する3次元点群とに基づいて、上記(30)式に従って、Leng(c)を算出する。
次に、ステップS706では、処理対象となる2軸方向のスイープ候補領域cについて、ステップS410において取得した当該2軸方向のスイープ候補領域cの第二固有値λ1 cに対応する固有ベクトルと、処理対象となる2軸方向のスイープ候補領域cに属する3次元点群と、に基づいて、上記(31)式に従って、Width(c)を算出する。
次に、ステップS708では、処理対象となる2軸方向のスイープ候補領域cについて、ステップS704において取得した当該2軸方向のスイープ候補領域cのLeng(c)と、ステップS706において取得した当該2軸方向のスイープ候補領域cのWidth(c)とに基づいて、上記(29)式に従って、当該2軸方向のスイープ候補領域cのArea(c)を算出する。
次に、ステップS710では、処理対象となる2軸方向のスイープ候補領域cについて、ステップS708において取得したArea(c)の値が、読み込んだ閾値th_Areaの値より大きいか否かを判定する。Area(c)の値が、読み込んだ閾値th_Areaの値より大きい場合には、ステップS714へ移行する。一方、Area(c)の値が、読み込んだ閾値th_Areaの値以下である場合には、ステップS712へ移行する。
ステップS712では、処理対象となる2軸方向のスイープ候補領域cを、2軸方向のスイープ形状でないと判定する。
ステップS714では、処理対象となる2軸方向のスイープ候補領域cを、2軸方向のスイープ形状と判定する。
次に、ステップS716では、ステップS108において統合された2軸方向のスイープ候補領域cの全てについて、ステップS700〜ステップS712又はステップS714までの処理を終了したか否かを判定する。統合された2軸方向のスイープ候補領域cの全てについて、ステップS700〜ステップS712又はステップS714までの処理を終了している場合には、2軸方向のスイープ形状の判定処理ルーチンを終了する。一方、統合された2軸方向のスイープ候補領域cの全てについて、ステップS700〜ステップS712又はステップS714までの処理を終了していない場合には、ステップS700へ移行し、処理対象となる統合された2軸方向のスイープ候補領域cを変更し、ステップS702〜ステップS712又はステップS714までの処理を繰り返す。
図7のステップS112では、ステップS110において1方向のスイープ形状と判定された1方向のスイープ形状候補領域c、又は2軸方向のスイープ形状と判定された2軸方向のスイープ候補領域cに属する3次元点群の3次元位置や3次元空間の領域を、判定された1方向のスイープ形状、又は2軸方向のスイープ形状と対応付けてスイープ形状領域情報記憶部36に記憶すると共に、出力部90に出力し、点群解析処理ルーチンを終了する。
以上説明したように、本発明の第1の実施の形態に係る点群解析処理装置によれば、入力3次元点群を複数の領域に分類した領域の各々について、周辺3次元点群に基づいて、領域の最小曲率方向を推定し、領域の各々について、部分領域の特徴量の自己相関値を算出し、自己相関値が、予め定められた閾値より大きい値である領域の各々を、スイープ形状候補領域と判定し、スイープ形状候補領域と判定された領域の各々について、領域の平面度合いを示す値に基づいて、領域が、1方向のスイープ形状候補領域、及び2軸方向のスイープ形状候補領域の何れであるかを判定し、1方向のスイープ形状候補領域であると判定された領域を、特徴量に基づく相互相関値に基づいて統合し、2軸方向のスイープ形状候補領域であると判定された領域を、特徴量に基づく相互相関値に基づいて統合し、統合領域の最小曲率方向の長さ又は大きさに基づいて、統合領域が1方向のスイープ形状であるか否か、又は統合領域が2軸方向のスイープ形状であるか否かを判定することにより、計算量の増加を抑制しつつ、また事前に辞書データを、例えばCADモデルや点群形状データ、検出対象となる幾何形状を規定する方程式を、登録しなくても、入力3次元点群からスイープ形状を検出することができる。
また、検出対象である物体形状を規定する方程式やテンプレート画像を事前登録しなくても、スイープ形状物を検出することが可能である。また、検出したいスイープ形状の種類が増えても、計算量の増加を抑制できる。
また、ノイズが多い点群やレーザースキャンの間隔が広い点群において有効である。
なお、本発明は、上述した実施形態に限定されるものではなく、この発明の要旨を逸脱しない範囲内で様々な変形や応用が可能である。
例えば、第1の実施の形態においては、統合前の領域cに属する点は1点のみからなる3次元点群とする場合について説明したが、これに限定されるものではなく、領域cに属する点は複数の点からなる3次元点群としてもよい。この場合、第1の実施の形態において属する点を基準として処理を行った箇所については、当該領域cに属する3次元点群の重心を基準として処理を行うものとする。
また、第1の実施の形態においては、th_Pоintの値を10とする場合について説明したが、これに限定されるものではない。領域の最小曲率方向を推定する処理を行うためには、当該領域について周辺3次元点群の数が2点以上であればよい。つまり、th_Pointの値は2以上であればよい。
また、第1の実施の形態においては、更新パラメータを上記(22)式に基づいて、算出される場合について説明したが、これに限定されるものではない。例えば、実験的に決定してもよい。
また、第1の実施の形態においては、k近傍の点を用いてEcоst(c)を算出する場合について説明したが、これに限定されるものではない。例えば、半径ΔR以内の3次元点群を用いて評価してもよい。具体的には、領域cに属する点から半径ΔR以内の点について、Ecost(c)を算出してもよい。
本実施の形態においては、部分領域毎に取得した射影形状画像Isをラスタースキャンして作成される射影形状画像ベクトルを、当該部分領域の特徴量として取得する場合について説明したが、これに限定されるものではない。例えば、3次元形状から直接特徴量を算出する Point Feature Histograms(PFH)descriptorやRotational Projection Statistics feature (RoPs)などを用いてもよい。なお、これらの特徴量は3次元点群の位置関係や法線ベクトルの位置関係を統計的に記述するものであり、ノイズには頑健になる。ただし、統計的な値を算出しているため、3次元点群が疎な場合には周辺領域に含まれる点数が少なくなり、逆に精度が低下する恐れがある。なお、当該特徴量を用いる場合には、周辺領域bの領域特徴ベクトルを、変換する必要がないため、上記(17)式で算出されるEcross(c,b)は、下記(33)式に従って算出される。また、当該特徴量を用いる場合は、上記(20)式で更新される領域cの領域特徴ベクトルは、下記(34)式に従って更新されるものとする。
また、第1の実施の形態においては、統合された領域についてのみ、スイープ形状か否かの判定を行っているが、これに限定されるものではない。例えば、統合された領域と、統合されていない領域の全ての領域について、スイープ形状か否かの判定を行ってもよい。
次に、第2の実施の形態に係る点群解析処理装置について説明する。
第2の実施の形態においては、最小曲率方向を、領域の周辺3次元点群に含まれる周辺点の各々に対応する法線方向の自己相関行列を固有値分解して推定する点が第1の実施の形態と異なる。これは、スイープ形状の場合、最小曲率方向は、法線方向のベクトルの外積を累積して算出される自己相関行列を固有値分解した際の第2固有値ベクトルの方向と等しくなる特徴があることからである。なお、第1の実施の形態に係る点群解析処理装置100と同様の構成及び作用については、同一の符号を付して説明を省略する。
また、第2の実施の形態においては、領域cにおける周辺3次元点群に含まれる周辺点の各々に対応する法線の固有値展開を1度行えばよく、繰り返し処理がないため、第1の実施の形態に比べて計算量が小さい。ただし、第2の実施の形態においては、法線方向の推定精度が高いことが求められるため、計測ノイズの影響が大きい状況では、法線の推定精度が低くなるため、ノイズが多いことが見込まれる場合には、第1の実施の形態による最小曲率方向の推定方法を利用する方が望ましい。
<本発明の第2の実施の形態に係る点群解析処理装置の構成>
次に、本発明の第2の実施の形態に係る点群解析処理装置の構成について説明する。図13に示すように、本発明の第2の実施の形態に係る点群解析処理装置200は、CPUと、RAMと、後述する点群解析処理ルーチンを実行するためのプログラムや各種データを記憶したROMと、を含むコンピュータで構成することができる。この点群解析処理装置は、機能的には図14に示すように被写体計測部10と、入力部12と、演算部220と、出力部90とを含んで構成されている。
演算部220は、記憶部30と、スイープ形状検出部240と、を含んで構成されている。
スイープ形状検出部240は、初期領域決定部42と、最小曲率方向推定部244と、自己相関値算出部46と、スイープ形状候補領域判定部48と、領域統合処理部50と、スイープ形状判定部52と、を含んで構成されている。
最小曲率方向推定部244は、初期領域決定部42により取得した各領域cについて周辺3次元点群Qc pоintsを取得すると共に、ノイズとなる領域cを以後の処理の処理対象として除外する。また、最小曲率方向推定部244は、領域cの各々について、当該領域cの周辺点qj cの各々に対応する法線方向nj cの各々に基づいて、最小曲率方向を推定する。具体的には、まず、領域cに属する周辺点qj cの各々を含む平面の法線方向ベクトルnj cの各々に基づいて、自己相関行列NQcоrrelatiоnを下記(35)式に従って算出する。なお、周辺点qj cを含む平面の法線方向は、当該周辺点と、周辺に位置する何点かの点とにより決定される。
そして、算出した自己相関行列NQcоrrelatiоnを固有値分解し、固有値分解した結果取得した最小固有値m2に対応する固有値ベクトル方向を、当該領域cの最小曲率方向として推定する。
<第2の実施の形態に係る点群解析処理装置の作用>
次に、第2の実施の形態に係る点群解析処理装置200の作用について説明する。まず、被写体計測部10により被写体の物体の表面上の位置を計測した計測結果である複数の位置を表す3次元点群を取得し、3次元点群記憶部32に記憶する。次に、入力部12により、演算処理用パラメータの各々を受け付け、演算処理用パラメータ記憶部34に記憶する。そして、スイープ形状検出部240により、3次元点群記憶部32に記憶されている3次元点群と、演算処理用パラメータ記憶部34に記憶されている演算処理用パラメータの各々とを読み込むと、点群解析処理装置200によって、図15に示す点群解析処理ルーチンが実行される。
図15のステップS800では、ステップS100において取得した領域cの各々について、最小曲率方向を推定する。
上記ステップS800は、図16に示す最小曲率方向の推定処理ルーチンにおいて詳細に説明する。
図16のステップS900では、処理対象となる領域cについて、ステップS202において取得した周辺3次元点群Qc pоintsに含まれる周辺点qj cの各々に対応する法線方向nj cを取得する。
次に、ステップS902では、処理対象となる領域cについて、ステップS900において取得した、当該領域cの周辺3次元点群Qc pоintsに含まれる周辺点qj cの各々に対応する法線方向nj cに基づいて、上記(35)式に従って、自己相関行列NQcоrrelatiоnを算出する。
次に、ステップS904では、処理対象となる領域cについて、ステップS902において取得した自己相関行列NQcоrrelatiоnを固有値分解し、最小固有値に対応する固有値ベクトル方向を取得する。
次に、ステップS906では、処理対象となる領域cについて、ステップS904において取得した最小固有値に対応する固有値ベクトル方向を、当該領域cの最小曲率方向として推定する。
次に、ステップS908では、処理対象となる全ての領域cについて、ステップS210〜ステップS906までの処理を終了したか否かを判定する。処理対象となる全ての領域cについて、ステップS210〜ステップS906までの処理を終了した場合には、最小曲率方向の推定処理ルーチンを終了する。一方、処理対象となる全ての領域cについて、ステップS210〜ステップS906までの処理を終了していない場合には、ステップS210へ移行し、処理対象となる領域cを変更し、ステップS900〜ステップS908までの処理を繰り返す。
以上説明したように、本発明の第2の実施の形態に係る点群解析処理装置によれば、入力3次元点群を複数の領域に分類した領域の各々について、周辺3次元点群に基づいて、領域の最小曲率方向を推定し、領域の各々について、部分領域の特徴量の自己相関値を算出し、自己相関値が、予め定められた閾値より大きい値である領域の各々を、スイープ形状候補領域と判定し、スイープ形状候補領域と判定された領域の各々について、領域の平面度合いを示す値に基づいて、領域が、1方向のスイープ形状候補領域、及び2軸方向のスイープ形状候補領域の何れであるかを判定し、1方向のスイープ形状候補領域であると判定された領域を、特徴量に基づく相互相関値に基づいて統合し、2軸方向のスイープ形状候補領域であると判定された領域を、特徴量に基づく相互相関値に基づいて統合し、統合領域の最小曲率方向の長さ又は大きさに基づいて、統合領域が1方向のスイープ形状であるか否か、又は統合領域が2軸方向のスイープ形状であるか否かを判定することにより、計算量の増加を抑制しつつ、また事前に辞書データを登録しなくても、入力3次元点群からスイープ形状を検出することができる。
次に、第3の実施の形態に係る点群解析処理装置について説明する。
第3の実施の形態においては、スイープ形状検出部により検出したスイープ形状の領域について、当該スイープ形状の領域に属する3次元点群についてのみ強調表示処理を行い、出力部から出力する点が、第1及び第2の実施の形態と異なる。なお、第1及び第2の実施の形態に係る点群解析処理装置と同様の構成及び作用については、同一の符号を付して説明を省略する。
<本発明の第3の実施の形態に係る点群解析処理装置の構成>
次に、本発明の第3の実施の形態に係る点群解析処理装置の構成について説明する。図17に示すように、本発明の第3の実施の形態に係る点群解析処理装置300は、CPUと、RAMと、後述する点群解析処理ルーチンを実行するためのプログラムや各種データを記憶したROMと、を含むコンピュータで構成することができる。この点群解析処理装置は、機能的には図17に示すように被写体計測部10と、入力部12と、演算部320と、出力部390とを含んで構成されている。
演算部320は、記憶部30と、スイープ形状検出部40と、スイープ形状領域強調表示処理部350と、を含んで構成されている。
スイープ形状領域強調表示処理部350は、スイープ形状領域情報記憶部36に記憶されている、スイープ形状領域(1方向のスイープ形状、及び2軸方向のスイープ形状)と判定された領域に属する3次元点群について強調表示処理を行い、出力部390に出力する。強調表示処理として、例えば、3次元点群の色を人目につく色に変更する、3次元点群の表示の大きさを大きくする。3次元点群の形状を通常は球のところを直方体に変更する等、人間が見たときにスイープ形状領域とそれ以外の領域との違いを強調する処理とする。
出力部390は、スイープ形状領域強調表示処理部350から入力された3次元点群を表示する。なお、出力部390は、CRT(Cathode Ray Tube)、LCD(Liquid Crystal Display)、PDP(Plasma Display Panel)等のディスプレイやプリンタなどであり、スイープ形状検出部40により検出したスイープ形状領域を表示する機能を有するハードウェアである。
<第3の実施の形態に係る点群解析処理装置の作用>
次に、第3の実施の形態に係る点群解析処理装置300の作用について説明する。まず、被写体計測部10により被写体の物体の表面上の位置を計測した計測結果である複数の位置を表す3次元点群を取得し、3次元点群記憶部32に記憶する。次に、入力部12により、演算処理用パラメータの各々を受け付け、演算処理用パラメータ記憶部34に記憶する。そして、スイープ形状検出部40により、3次元点群記憶部32に記憶されている3次元点群と、演算処理用パラメータ記憶部34に記憶されている演算処理用パラメータの各々とを読み込むと、点群解析処理装置300によって、図18に示す点群解析処理ルーチンが実行される。
図18のステップS1000では、スイープ形状領域情報記憶部36に記憶されている、スイープ形状領域(1方向のスイープ形状、及び2軸方向のスイープ形状)と判定された領域に属する3次元点群を読み込み、当該スイープ形状領域と判定された領域に属する3次元点群について強調表示処理を行う。
次に、ステップS1002では、ステップS1000において強調表示処理済みの3次元点群を出力部390から出力して、点群解析処理ルーチンの処理を終了する。
以上説明したように、本発明の第3の実施の形態に係る点群解析処理装置によれば、入力3次元点群を複数の領域に分類した領域の各々について、周辺3次元点群に基づいて、領域の最小曲率方向を推定し、領域の各々について、部分領域の特徴量の自己相関値を算出し、自己相関値が、予め定められた閾値より大きい値である領域の各々を、スイープ形状候補領域と判定し、スイープ形状候補領域と判定された領域の各々について、領域の平面度合いを示す値に基づいて、領域が、1方向のスイープ形状候補領域、及び2軸方向のスイープ形状候補領域の何れであるかを判定し、1方向のスイープ形状候補領域であると判定された領域を、特徴量に基づく相互相関値に基づいて統合し、2軸方向のスイープ形状候補領域であると判定された領域を、特徴量に基づく相互相関値に基づいて統合し、統合領域の最小曲率方向の長さ又は大きさに基づいて、統合領域が1方向のスイープ形状であるか否か、又は統合領域が2軸方向のスイープ形状であるか否かを判定することにより、計算量の増加を抑制しつつ、また事前に辞書データを登録しなくても、入力3次元点群からスイープ形状を検出することができる。
また、本願明細書中において、プログラムが予めインストールされている実施形態として説明したが、当該プログラムを、コンピュータ読み取り可能な記録媒体に格納して提供することも可能であるし、ネットワークを介して提供することも可能である。