以下に図面を参照して、本発明にかかる情報処理プログラム、情報処理方法、および情報処理装置の実施の形態を詳細に説明する。
図1は、情報処理装置による一動作例を示す説明図である。情報処理装置100は、複数の測定位置の各々の測定位置について3D測定によって得られた3D点群データを合成することを支援するコンピュータである。本実施の形態では、異なる測定位置として、第1測定位置101と第2測定位置102とを例に挙げて説明する。第1測定位置101について取得された3D点群データを第1点群データ111とする。第2測定位置102について取得された3D点群データを第2点群データ112とする。
従来、物体に向けてレーザを照射し、反射光が返ってくるまでの時間を測定することにより、物体までの距離を測定するセンサがある。また、センサ内で光学系を回転させて水平方向のスキャニングを行いながら物体までの距離を測定する、いわゆる2Dセンサがある。2Dセンサを駆動装置によって回転させることにより3D測定を行うことができる。
3次元点群データ(以下3D点群データ)は、例えば、各種シミュレータやCAD(Computer Aided Design)などのアプリケーションに利用される。3D点群データは、点データの集合である。点データによって点が特定可能である。ここでの点とは、2Dセンサによってレーザが照射された物体の点である。具体的には、点データは、少なくとも情報処理装置100から点までの距離に基づく位置情報を含む。情報処理装置100は、x軸、y軸、z軸などのローカルな直交座標系を用いて各点の位置を表す。より詳細に説明すると、点データは、情報処理装置100で用いる座標系Cにおける各点の位置を示す座標値であるベクトルデータを含む。座標値はx座標値、y座標値、z座標値である。また、点群と、点データの一例については、図9を用いて説明する。また、CADなどのアプリケーションは、例えば、3D点群データに基づいてコンピュータ空間上に測定対象の空間を模擬することができる。
ここで、複数の測定位置によって3D測定が行われる場合における3D測定からモデルデータの生成までの一連の処理について簡単に説明する。例えば、(1)3D測定、(2)フィルタリング、(3)レジストレーション、(4)メッシュモデル化というような手順によってCADなどで用いることが可能なモデルデータが生成される。情報処理装置100は、異なる測定位置で3D測定が実施されることにより複数の3D点群データを取得する(1)。そして、情報処理装置100は、3D点群データごとにフィルタリングを行うことによりノイズとなる点群を除去する(2)。例えば、3D点群データによって特定される点ごとに当該点から近い順から所定数の各点との間で分散を算出する。このとき、点が物品等を形成する要素である場合、近傍の点も密集するので、ノイズとなる孤立点よりも分散が小さくなり、ノイズとなる孤立点であれば、近傍に点が存在してもまばらとなるので、物品の構成要素である点よりも分散が大きくなる。このことから、一例として、情報処理装置100は、分散が閾値以上である点をノイズとみなして除去する。
そして、情報処理装置100は、ノイズ除去後に、複数の3D点群データの位置合わせ処理を行うことにより、1つの3D点群データとして統合する(3)。情報処理装置100は、1つに統合された3D点群データをメッシュ化処理により、3次元の面データであるモデルデータに変換する(4)。なお、メッシュ化処理については、CADなどによって行われる。
異なる測定位置で測定された3D点群の位置合わせをするレジストレーションの方法として、3D点群の位置合わせにターゲットを用いる方法がある。具体的には、既知の形状のターゲットを測定対象の空間に設置しておき、各測定位置において測定された3D点群データからターゲット(基準点)を検出することにより複数の3D点群データを一つに合わせる方法がある。しかし、この方法では、ターゲットを設置する手間が発生し、どの地点にターゲットを設置するのがよいかといった判断が現場の作業員に委ねられることから使用時の手軽さが損なわれる。
このため、ターゲットを用いずに、3D点群データにより表現される環境の形状から位置合わせを自動的に行う方法が求められる。しかし、複数の3D点群データごとに点、線や面などの特徴を複数抽出し、RANSAC(RANDOM Sample Consensus)などのアルゴリズムにしたがって複数の3D点群データ間の対応点を求めたのでは、計算時間が増大する場合がある。
このことから、3D点群をそのまま処理するのではなく、それぞれの3D点群を一定の高さで水平方向にスライスし、そこに含まれる点群を2次元でマッチングすることにより、計算効率を高める技術がある。
このような技術の場合、複数の3D点群を測定対象の空間に対して同じ高さで水平方向にスライスできることが条件となる。このとき、すべての3D測定を同じ高さで行えればよいが、測定対象の空間を死角なく測定しようとすると情報処理装置100の脚の長さを変えて測定したい場合や、机や台に情報処理装置100を置いて測定したい場合が出てくる。このような背景から、事前に各3D点群データの高さの基準を合わせる方法が求められる。
3D点群を高さ方向においてスライスする前に各3D点群データの高さの基準を合わせる方式として、多くの測定位置で観測可能な床面を検出し、その床面を基準とする方法がある。例えば、法線が鉛直上向きの点群により形成される平面を全て抽出して高さが最も低い面を基準面とする方法1と、法線が鉛直上向きの点群により形成される平面を全て抽出して面積が最も大きい面を基準面とする方法2との2つの方法がある。
しかしながら、上記2つの方法のいずれを採用したとしても、オクルージョンの問題で位置合わせする2つの測定位置で得られた点群データにおいて異なる平面を基準として選択してしまう状況が想定されるので、適用範囲に制約が生じる。測定の現場例については図3に示し、オクルージョン例については、図4および図5に示す。
そこで、情報処理装置100では、例えば、異なる測定位置で測定される3D点群の間で測定対象の空間において平面間の相対的な位置関係、すなわち平面間の高度差が一致するオフセット量を算出して高さの基準を合わせる。そして、情報処理装置100では、2次元のレジストレーションを実行する。これにより、情報処理装置100は、オクルージョンのある環境下における3D点群データの合成精度を高めることができる。
ここで、3D点群データから抽出される互いに平行な複数の水平面領域(以下、平面と省略する。)の高さの値に関する2つの集合データは、集合データ間で3D測定が行われた際の高さが異なる。このため、同一の平面に関する高さを表していてもその高さの値は異なる。すなわち、座標系Cの位置が異なる。同一の平面に関する高さの差が求めたいオフセット量である。ここで、オフセット量はΔhと表す。このとき、同一の平面であってもデータ間で高さの値は同じにならない。例えば床面と机上の平面との距離、机上の平面と天井面との距離、床面と天井面との距離などといったように同じ平面の組み合わせで距離が計算されれば3D点群データ間で多少の測定誤差はあっても略同一の値が得られる可能性が高い。よって、平面間の距離を特徴として異なる3D点群データ間で対応する面を探索することが可能である。3D点群データの間で対応する平面間の距離が同じであれば、正しい高さ方向の補正量であるオフセット量Δhを求めて各平面の高さの値を変換すると、3D点群データの間で同じ高さの値が複数得られることになる。
しかし、測定対象の空間が階段のように、同じような平面が等間隔で繰り返されるような空間である場合、誤ったオフセット量Δhにおいて異なる3D点群データの間で平面の高さが同じとなる数が多くなることがある。なお、誤ったオフセット量Δhにおいて平面の高さが同じとなる数が多くなる例については、図6に示す。
そこで、情報処理装置100は、第1点群データから得る第1平面群の1面に合わせて、異なる位置での第2点群データから得る第2面群の高さを補正した第2面群の面と高さが同じ第1面間の距離のうち、第1面群の面間の特徴的な距離と同じ距離の数からオフセット量を特定する。これにより、異なる位置での3D測定結果の合成精度を挙げることができる。
図1において、第1点群データ111から抽出される複数の第1平面の高さの集合をH1とし、第2点群データ112から抽出される複数の第2平面の高さの集合をH2とする。また、集合H2をオフセット量Δhによって補正した補正後の集合は、H’2とする。
情報処理装置100は、第1測定位置101と第2測定位置102の各々について、各々の測定位置から物体までの距離に基づく3次元の点群情報(第1点群データ111および第2点群データ112)を取得する。ここで、情報処理装置100は、各測定位置の点群データごとに点群データに含まれる各点データの座標をz軸の正方向が抽出される水平面の法線方向となるように変換しておく。
情報処理装置100は、各々の測定位置について、取得した点群データから、平面領域に属する点群情報を抽出する。具体的には、情報処理装置100は、各々の測定位置について、取得した点群データによって特定される3D点群に基づいて、互いに平行な複数の平面を抽出する。第1点群データ111から抽出される互いに平行な複数の平面を、複数の第1平面とする。第2点群データ112から抽出される互いに平行な複数の平面を、複数の第2平面とする。ここで、平面の抽出の詳細な処理については後述する。
図1において、第1測定位置101と第2測定位置102は、図2に示すように階段の踊り場である。第1測定位置101は、例えば、図2に示すような上り階段側を測定可能である。第2測定位置102は、例えば、図2に示すような下り階段側を測定可能である。第1点群データ111から抽出される複数の第1平面は、例えば、天井面、上り階段の踏み面、踊り場の床面などが含まれる。第2点群データ112から抽出される複数の第2平面は、例えば、天井面、下り階段の踏み面、踊り場の床面などが含まれる。
ここで、情報処理装置100は、複数の測定位置で測定された3D点群データごとに当該3D点群データから水平面を抽出することもできる。
第1点群データ111から抽出される複数の第1平面の高さの値に関する集合は、H1とする。第2点群データ112から抽出される複数の第2平面の高さの値に関する集合は、H2とする。例えば、複数の第1平面の高さを実線で示し、複数の第2平面の高さを点線で示す。
情報処理装置100は、複数の測定位置の間で、抽出した点群情報が属する平面領域の間の垂直方向の差分が一致するオフセット量を算出する。
具体的には、情報処理装置100は、第1測定位置101について、複数の第1平面の各々の第1平面の間の各距離のうちの他の距離との差分が所定値以上である距離を特定する。複数の第1平面は、取得した第1点群データ111から抽出した複数の点群データの各々に属する互いに平行な第1平面群である。複数の第1平面の各々の第1平面の間の各距離は、例えば、d11,d12,d13,d14,d15,d16である。所定値は、例えば、利用者によって設定されればよい。後述例では所定値をαと表す。ここでは、情報処理装置100は、他の距離と比較して特徴的な距離を特定する。距離d15と距離d16とは、階段の床面間の距離であり、ほぼ同じである。情報処理装置100は、距離d15と距離d16を特定しない。ここでは、情報処理装置100は、距離d11,d12,d13,d14を特定する。特定された距離は、特徴的な距離とも称する。
情報処理装置100は、第2測定位置102について、複数の第2平面に含まれる第2平面と、複数の第1平面に含まれる第1平面と、の組み合わせを生成する。複数の第2平面は、取得した第2点群データ112から抽出した複数の点群データの各々に属する互いに平行な第2平面群である。情報処理装置100は、生成した組み合わせの各々について、組み合わせに含まれる平面の間の垂直方向(z軸方向)の位置を一致させるように、複数の第2平面に含まれる第2平面の垂直方向の位置を補正する。すなわち、情報処理装置100は、組み合わせに含まれる平面の間の高さを一致させるように、複数の第2平面の高さを補正する。
図1では、2つの組み合わせによる補正例を挙げる。1つ目は、複数の第1平面のうちの天井面と、複数の第2平面のうちの天井面との組み合わせにより補正した例(図1の正しい対応例)である。2つ目は、複数の第1平面のうちの上り階段の上段の床面と、複数の第2平面のうちの踊り場の床面との高さを一致させるように補正した例(図1の誤対応例)である。補正した後の複数の第2平面の高さの値に関する集合は、H’2とする。
次に、情報処理装置100は、組み合わせの各々について、複数の第1平面の各々の第1平面の垂直方向の位置のうち、補正後の各々の第2平面領域の垂直方向の位置と一致する位置を特定する。換言すると、情報処理装置100は、組み合わせの各々について、複数の第1平面の各々の第1平面の高さのうち、補正後の複数の第2平面の各々の第2平面の高さと一致する高さを特定する。
正しい対応例の場合、複数の第1平面に含まれる天井面の高さと、複数の第1平面に含まれる踊り場の床面の高さとが特定される。誤対応例の場合、複数の第1平面に含まれる上り階段の2つの床面の高さと、複数の第1平面に含まれる踊り場の床面の高さとが特定される。
情報処理装置100は、組み合わせの各々について、特定した位置(高さ)の2つの組み合わせのうち、位置(高さ)の組み合わせに含まれる位置(高さ)間の差分が、特徴的な距離と一致する組み合わせの数を特定する。
正しい対応例の場合、天井面の高さと、踊り場の床面の高さと組み合わせについての差分が距離d13であり、情報処理装置100は、この差分が特徴的な距離に含まれると判断する。そして、正しい対応例の場合、情報処理装置100は、組み合わせの数として1を特定する。
また、誤対応例の場合、上り階段の上段の床面の高さと上り階段の下段の床面の高さとの組み合わせについての差分が距離d15であり、情報処理装置100は、この差分が特徴的な距離に含まれないと判断する。上り階段の上段の床面の高さと踊り場の床面の高さとの組み合わせについての差分が距離d14であり、情報処理装置100は、この差分が特徴的な距離に含まれると判断する。上り階段の下段の床面の高さと踊り場の床面の高さとの組み合わせについての差分が距離d16であり、情報処理装置100は、この差分が特徴的な距離に含まれると判断する。したがって、誤対応例の場合、情報処理装置100は、組み合わせの数として1を特定する。
次に、情報処理装置100は、組み合わせの各々について特定した数に基づいて、オフセット量を特定する。具体的には、情報処理装置100は、特定した数が最も大きい組み合わせについてのオフセット量を特定する。図1の例では、正しい対応と誤対応とのいずれの組み合わせについても特定した数が同じであるため、オフセット量として両方の組み合わせについてのオフセット量が特定されてもよいし、他の評価値を導入することによりオフセット量が特定されてもよい。
そして、情報処理装置100は、特定したオフセット量にしたがって補正された点群情報を用いて位置合わせを行う。具体的には、情報処理装置100は、第2点群データ112が、特定したオフセット量にしたがって補正された第2点群データ112と、第1点群データ111と、を用いて位置合わせを行う。情報処理装置100は、第2点群データ112に含まれる各点データのz座標値に、特定したオフセット量を加算する。これにより、補正された第2点群データ112が得られる。なお、位置合わせについては、従来技術を用いればよい。
また、図2や図6を用いて後述するように、複数の第1平面のうち、補正後の複数の第2平面と高さが一致する平面の数を評価値とする場合、誤対応の方が正しい対応よりも高い評価となってしまう。これに対して、図1の例では、誤対応と正しい対応との評価が同じになるため、誤対応についてのオフセット量が選ばれるのを抑制することができる。ひいては、複数の3D点群データの合成精度の向上を図ることができる。
図2は、階段を3D測定した場合の平面例を示す説明図である。図2(1)には、階段の踊り場における第1測定位置101と、同じ踊り場における第2測定位置102とを示す。情報処理装置100は、第1測定位置101から上りの階段を測定する。情報処理装置100は、第2測定位置102から下りの階段を測定する。
図2(2)には、第1測定位置101によって測定された第1点群データ111から抽出される複数の第1平面と、第2測定位置102によって測定された第2点群データ112から抽出される複数の第2平面と、を示す(点のハッチングの部分)。複数の第1平面は、例えばP11〜P15である。複数の第2平面はP21〜P26である。
図2において、第1平面P11と第2平面P21は、踊り場の天井面である。第1平面P15と第2平面P22は、踊り場の床面である。第1平面P12から第1平面P14は、それぞれ上り階段の踏み面である。第2平面P23から第2平面P25は、それぞれ下り階段の踏み面である。第2平面P26は、下り階段を下った先にある踊り場の床面である。このように、第1平面P12から第1平面P14と、第2平面P23から第2平面P25とは、異なる階段の各踏み面である。
ここで、第1測定位置101についての複数の第1平面と、第2測定位置102についての高さを補正後の複数の第2平面と、の高さが一致する数を評価値とした場合について説明する。なお、この評価値の算出方法の詳細については、図6を用いて説明する。第1平面P11と第2平面P21との高さを一致させるよう複数の第2平面を補正した場合より第1平面P15と第2平面P25との高さを一致させるよう複数の第2平面を補正した場合の方が、第1平面と補正後の第2平面との高さが一致する数が多くなる。このように、階段のように同じような平面が等間隔で連続すると、誤った対応の方が正しい対応よりも評価が高くなってしまう場合がある。そして、誤ったオフセット量が最適なオフセット量として特定されてしまう。
図1で説明したように、本実施の形態にかかる情報処理装置100は、階段のように同様の平面が等間隔で連続するような空間を測定対象として位置合わせを行う場合に精度のよいオフセット量を特定することができる。
ここで、図3を用いて、測定の現場例を示し、図4および図5を用いて、オクルージョン例を示す。
図3は、情報処理装置100の使用例を示す説明図である。図3には、作業が行われる区画の一例として、現場300A〜現場300Nが例示されている。なお、以下では、現場300A〜現場300Nを総称する場合に「現場300」と記載する場合がある。
情報処理装置100は、例えば、作業者301がハンドキャリーを行うポータブル型の装置として実装される。作業者301が現場300A〜現場300Nで作業を行う場合、1つの現場300につき1台の情報処理装置100を設置せずともかまわず、1台の情報処理装置100を各現場300で持ち回って使用することができる。すなわち、作業者301は、現場300で作業が終了する度に、次の現場300へハンドキャリー等で情報処理装置100を持ち込み、次の現場300の任意の位置に載置することにより、支援データの提供を受けることができる。
このように、情報処理装置100は、現場300A〜現場300Nに持ち込むことにより、簡単な操作で周囲の環境をくまなく測定してデジタイズ化することができる。さらに、情報処理装置100は、環境中の人の測定を行いデジタイズ化した環境情報と紐づけることで、環境中の人の行動を記録したり、人の状態に応じた情報を提供したりするなど、様々な情報支援を可能とする。
図4は、オクルージョン例1を示す説明図である。図4には、上記の法線が鉛直上向きの点群により形成される平面を全て抽出して高さが最も低い面を基準面とする方法1でオクルージョンにより高さの基準合わせが失敗する場面の一例が示される。図4には、情報処理装置100が測定位置M1に載置された状態で3D点群データの測定が実施されると共に、情報処理装置100が測定位置M2に載置された状態で3D点群データの測定が実施される場合が示される。さらに、図4には、測定位置M1で測定された3D点群データから抽出される平面のうち高さが最も低い面が太線の実線で示される一方で、測定位置M2で測定された3D点群データから抽出される平面のうち高さが最も低い面が太線の破線で示される。図4に示す現場300Aには、床面よりも低い位置に階段の踊り場が存在する。かかる階段の踊り場は、測定位置M2からはレーザが届く一方で、測定位置M1からは階段が死角となってレーザが届かない。このオクルージョンによって、測定位置M1で測定された3D点群データからは床面が最低面として抽出される一方で、測定位置M2で測定された3D点群データからは階段の踊り場が最低面として抽出される。この結果、測定位置M1および測定位置M2の間で基準面にずれが生じるので、高さの位置合わせに失敗する。
図5は、オクルージョン例2を示す説明図である。図5には、法線が鉛直上向きの点群により形成される平面を全て抽出して面積が最も大きい面を基準面とする方法2でオクルージョンにより高さの基準合わせが失敗する場面の一例が示される。図5には、情報処理装置100が測定位置M3に載置された状態で3D点群データの測定が実施されると共に、情報処理装置100が測定位置M4に載置された状態で3D点群データの測定が実施される場合が示される。さらに、図5には、測定位置M3で測定された3D点群データから抽出される平面のうち面積が最も大きい面が太線の実線で示される一方で、測定位置M4で測定された3D点群データから抽出される平面のうち面積が最も大きい面が太線の破線で示される。
図5に示す現場300Bは、会議室に大きめの会議卓が置かれており、測定位置M3では、床面に情報処理装置100が載置される一方で、測定位置M4では、会議卓の机上に情報処理装置100が載置される場合が示される。この場合、測定位置M3からは床面を広く走査できる一方で、会議卓の机上に載置される測定位置M4からは会議卓に隠れて床面が一部しか走査できない。かかるオクルージョンによって、測定位置M3で測定された3D点群データからは床面が最も面積の大きい面として抽出される一方で、測定位置M4で測定された3D点群データからは会議卓の机上の面が最も面積の大きい面として抽出される。この結果、測定位置M3および測定位置M4の間で基準面にずれが生じるので、高さの位置合わせに失敗する。
これら図4および図5に示した通り、床面に限らず環境中の特定の場所を検出して基準にする方法では、測定位置によってオクルージョンで基準とする場所が一部または全部隠される状況に弱い。情報処理装置100では、床面などの特定の面に基準に求める高さの基準合わせは実施しない。上述したように、情報処理装置100は、点群データ111から抽出した複数の第1平面に含まれる第1平面と、点群データ112から抽出した複数の第2平面に含まれる第2平面と、の高さが合うようなオフセット量を算出して、高さ方向の位置合わせを行う。そして、情報処理装置100は、2次元の位置合わせを行う。
図6は、複数通りの平面の組み合わせについて高さが一致する平面の数で評価した例を示す説明図である。図6では、集合H1に含まれる高さと集合H2に含まれる高さと、の組み合わせごとに、組み合わせに含まれる高さに基づいてオフセット量Δhの候補が算出される。すなわち、組み合わせに含まれる集合H1の高さに対応する平面と、組み合わせに含まれる集合H2の高さに対応する平面と、の高さが一致するようなオフセット量Δhの候補が算出される。オフセット量Δhの候補は、例えば、組み合わせに含まれる集合H1の高さから、組み合わせに含まれる集合H2の高さを減算した値である。
そして、組み合わせの各々について、集合H2を補正した補正後の集合H’2が算出される。組み合わせの各々について、集合H1の高さと、補正後の集合H’2の高さとの差分が所定の範囲に収まる個数が評価値として算出される。そして、算出された評価値が最大となる組み合わせについてのオフセット量Δhの候補がオフセット量Δhとして特定される。
図6には、第1測定位置101における天井面と、第2測定位置102における天井面との位置が合うように補正した正しい対応例を示す。また、図6には、第1測定位置101における上り階段の床面と第2測定位置102における踊り場の床面との位置が合うように補正した誤対応例を示す。正しい対応例よりも誤対応例の方が評価値が大きくなり、誤対応についてのオフセット量Δhの候補が正しいオフセット量として特定されてしまう。
測定対象の空間が階段のような場所でなければ、高さが一致する数によってオフセット量を特定するとよい。しかしながら、階段のように同様の平面が等間隔で連続するような空間が測定対象であると、例えば異なる階段の踏み面同士を一致させた場合に第1平面と補正後の第2平面との高さが一致する数が多くなる場合がある。このような場合、誤ったオフセット量が最適なオフセット量として特定されてしまうことがある。
そこで、情報処理装置100は、第1平面及び第2平面の組み合わせごとに、各第1平面のうち、組み合わせの高さが合うように補正した各第2平面の面と高さが一致する第1平面間の距離のうち、各第1平面間の特徴的な距離と一致する距離の数を求める。そして、情報処理装置100は、第1平面及び第2平面の組み合わせごとに求めた一致数に基づいて、オフセット量を特定する。これにより、階段のように同様の平面が等間隔で連続する際に、特徴的な水平面間の距離が一致するか否かを判定することができる。異なる位置で3D測定した複数の点群データの合成精度の向上を図ることができる。
図7は、3D測定を行うための情報処理装置100の一例を示す説明図である。図7において、情報処理装置100は、駆動装置701と、測定装置702と、制御装置703と、を有する。情報処理装置100は、例えば、水平床面に設置されて使用される。図7において、情報処理装置100の筐体の形状については、例えば、いずれの方向から情報処理装置100を見ても外形が略同一となる形状となっているが、これに限らない。
また、情報処理装置100の3脚部分は、例えば伸縮することができる。情報処理装置100の3脚部分の伸縮により情報処理装置100の高さを変更することができる。情報処理装置100は、3脚部分により、例えば、30cmから130cmまでの高さを変更することができる。
駆動装置701は、回転軸710(図7中、z軸に対応)を中心にパン方向d1に回転するモータである。以下の説明では、パン方向d1の回転角(図7中、x軸に対する角度)を「回転角θh(θh=0〜360°(度))」と表記する場合がある。ただし、駆動装置701が初期位置のときの正面方向とx軸方向とが一致するものとする。
測定装置702は、チルト方向d2に走査しながら光を物体に向けて照射し、反射光を受光するまでの時間を用いて自装置から物体までの距離を測定する2Dセンサである。ここでの光とは、例えば、赤外線などのレーザである。測定装置702は、光が赤外線であれば、自装置から物体までの距離に限らず、赤外線の反射強度や色情報も同時に得ることができる。チルト方向d2は、チルト軸720を中心に回転する方向である。すなわち、測定装置702は、チルト軸720を中心に光学系(例えば、後述の図8に示す発光部811、受光部812等)を回転させながら、図7中の太線矢印で示す方向(照射方向)に光を照射する。
情報処理装置100において、測定装置702は、パン方向d1に対してチルト方向d2が垂直となるように駆動装置701に取り付けられる。そして、測定装置702は、回転軸710を中心として円軌道に沿って移動される状態で、チルト方向d2に走査しながら光(以下、「レーザ」という)を物体に向けて照射して物体までの距離を測定する。
この際、測定装置702は、チルト方向d2に「0〜360°」の範囲でレーザを照射する。チルト角θvは、回転軸710に対するチルト方向d2の角度である。より詳細に説明すると、例えば、測定装置702は、チルト方向d2に0°から360°まで所定の角度ずつ移動される度に、この測定を行う。例えば、所定角度が0.25°の場合、測定装置702は、1周当たり25[msec]で約1440点の測定を行う。また、測定装置702は、例えば、駆動装置701によってパン方向d1に、「0〜360°」まで所定の角度ずつ移動される度に、この測定を行う。ただし、チルト方向とパン方向の両方について0°から360°まで測定しなくてもよい。チルト方向とパン方向のどちらか一方が0から180°の測定を実施すれば、全方位の測定を行うことができる。また、全方位に限らず、角度を指定して測定範囲を制限してもよい。これにより、2Dセンサである測定装置702を利用して3D測定を行うことができる。
また、制御装置703は、例えば、表示部704を有する。表示部は、プロジェクタであってもよいし、ディスプレイなどであってもよい。
(情報処理装置100のハードウェア構成例)
図8は、情報処理装置100のハードウェア構成例を示すブロック図である。情報処理装置100は、CPU(Central Processing Unit)801と、メモリ802と、I/F(Interface)803と、プロジェクタ804と、スピーカ805と、駆動装置701と、測定装置702と、を有する。また、各構成部は、バス800によってそれぞれ接続される。
ここで、CPU801は、情報処理装置100の全体の制御を司る。メモリ802は、例えば、ROM(Read Only Memory)、RAM(Random Access Memory)およびフラッシュROMなどを有する。具体的には、例えば、フラッシュROMやROMが各種プログラムを記憶し、RAMがCPU801のワークエリアとして使用される。メモリ802に記憶されるプログラムは、CPU801にロードされることで、コーディングされた処理をCPU801に実行させる。
I/F803は、有線または無線のネットワークに接続され、ネットワーク810を介して他のコンピュータ(例えば、利用者のパーソナル・コンピュータ)に接続される。そして、I/F803は、ネットワーク810と自装置内部とのインターフェースを司り、他のコンピュータからのデータの入出力を制御する。プロジェクタ804は、例えば、表示部704である。プロジェクタ804は、画像や映像を大型スクリーンなどに投影することにより表示する装置である。プロジェクタ804は、例えば、モデルデータが示すモデルをスクリーンに投影してもよい。スピーカ805は、電気によって音を出す。具体的には、スピーカ805は、例えば、音楽や音声などの音を生成する。なお、図8に示した制御装置703は、例えば、CPU801と、メモリ802と、I/F803と、プロジェクタ804と、スピーカ805と、を含む。
駆動装置701は、回転軸710を中心にパン方向d1に回転するモータである。測定装置702は、発光部811と、受光部812と、駆動部813と、センサ制御部814と、を含む。発光部811は、レーザを照射する光源であり、例えば、半導体レーザである。受光部812は、反射光を受光する。駆動部813は、チルト軸720を中心にチルト方向d2に発光部811を回転させる。センサ制御部814は、チルト方向d2に走査しながらレーザを物体に向けて照射し、反射光を受光するまでの時間を用いて自装置から物体までの距離を測定する。センサ制御部814は、距離に基づいて座標系Cにおける物体の座標値を点の座標データとしてメモリ802などに出力する。
なお、情報処理装置100は、上述した構成部のほかに、例えば、ディスクドライブ、ディスク、SSD(Solid State Drive)などを有することにしてもよい。また、情報処理装置100は、例えば、作業者301などによる操作入力を受け付けることが可能な入力装置、プロジェクタ804と異なるディスプレイなどを有することにしてもよい。
図9は、平面上の点群および点データ例を示す説明図である。まず、平面について説明する。平面P1上の点群は、{p11,p12,…,p1M1}である。平面Pu上の点群は、{pu1,pu2,…,puMu}である。
点puvの点データは、{xuv,nuv,cuv,Iuv}である。xuvは、点puvの位置ベクトルである。xuvは、x座標値,y座標値,z座標値を含む。nuvは、点puvの法線方向ベクトルである。cuvは、点puvの色情報ベクトルである。cuvは、R値,G値,B値を含む。Iuvは、点puvの赤外線反射光強度情報である。なお、点群データとは点データの集合である。例えば、各平面Pの面積は、各平面P上の点群数Muによって近似される。例えば、xuv,nuvに基づいて、水平方向の位置合わせや最近傍点、点間の距離が計算される。
(情報処理装置100の機能的構成例)
図10は、情報処理装置100の機能的構成例を示すブロック図である。情報処理装置100は、取得部1001と、制御部1002と、を有する。取得部1001は、駆動装置701と測定装置702によって実現される。また、制御部1002は、抽出部1011と、距離算出部1012と、オフセット量算出部1013と、第1算出部1014と、第2算出部1015と、特定部1016と、位置合わせ部1017と、を有する。
抽出部1011から位置合わせ部1017までの制御部1002の処理は、例えば、メモリ802などによって実現される。図8に示すCPU801がアクセス可能なメモリ802などに記憶されたプログラムにコーディングされる。そして、CPU801がメモリ802などから該プログラムを読み出して、プログラムにコーディングされた処理を実行する。これにより、制御部1002の処理が実現される。また、制御部1002の処理結果は、例えば、メモリ802などに記憶される。
取得部1001は、複数の測定位置の各々の測定位置について、各々の測定位置から物体までの距離に基づく3D点群データを取得する。具体的には、取得部1001は、例えば、各々の測定位置について、光を照射しながら走査すると共に物体から反射される反射光を用いて、自情報処理装置100から物体までの距離に基づく3D点群データを取得する。
本実施の形態では、取得部1001は、3D点群データとして、第1測定位置101についての第1点群データ111と、第2測定位置102についての第2点群データ112と、を取得する。なお、測定位置が3つ以上ある場合、3つの測定位置のうちの2つの測定位置における3D点群データを合成した後の3D点群データを、第1点群データ111としてもよい。そして、3つの測定位置のうちの残余の測定位置における3D点群データを第2点群データ112としてもよい。これにより3つ以上の測定位置において測定された3D点群データを精度よく合成することができる。
抽出部1011は、例えば、各々の測定位置について、各々の測定位置についての3D点群データから、測定対象の空間における平面を抽出する。具体的には、抽出部1011は、例えば、RANSACなどのアルゴリズムにしたがって、取得部1001により取得された3D点群データによって特定される3D点群が形成する平面を抽出する。
RANSACなどのアルゴリズムに基づいて平面を抽出する方法について、より詳細に説明する。抽出部1011は、例えば、3D点群データによって特定される3D点群をサンプルとする。そして、抽出部1011は、サンプルから3つの点をランダムに抽出する。続いて、抽出部1011は、3D点群データによって特定される3D点群のうち、サンプルからランダムに抽出された3点により定まる平面モデルから所定の距離以内にある点群をさらに抽出する。所定の距離については、予め定められてあればよく、特に限定しない。同一平面モデル上の点同士であっても、情報処理装置100からの距離が遠ければ、点間の距離は遠くなる。このため、所定の距離については、例えば、サンプルとして選択された点pの点データに含まれる位置ベクトルによって設定されてもよい。
ここで、平面モデルから所定の距離以内にある点群を平面モデル上に存在する点群とみなし、以降の処理を説明することとする。抽出部1011は、平面モデル上に存在する点群の数が所定の閾値以上であるか否かを判定する。抽出部1011は、平面モデル上の点群が閾値以上である場合、平面モデルを定義するパラメータと、この平面モデルに含まれる点群とが対応付けられた平面データをメモリ802に保存する。パラメータとしては、例えば3点の座標または平面の方程式等が挙げられる。一方、抽出部1011は、平面モデル上に存在する点群の数が閾値未満である場合、平面モデルに関する平面データを保存しない。その後、抽出部1011は、サンプルからの3点のランダムサンプリングおよびそれに伴う平面データの保存を所定の試行回数にわたって繰り返し実行する。このような平面抽出方法によって、一定数以上の点群が平面モデルからの法線方向へ向けて一定距離以内にある平面モデルを求めることができる。なお、一定距離は、互いに平行な複数の平面モデル間の最小の距離となる。一定距離は、平面モデルの法線方向において異なる平面モデルとして抽出されるための最小の距離である。換言すると、例えば、互いに平行な複数の平面モデル間の距離は、一定距離以上である。以下では、平面モデルにより規定される平面上で3D点群が所定の密度以上で存在する部分のことを「平面」と記載する場合がある。
ここで、抽出部1011は、複数の測定位置で測定された3D点群データごとに当該3D点群データから平面を抽出することもできる。この場合、抽出部1011は、各測定位置の3D点群データの間で平面の方向を算出する。そして、抽出部1011は、各測定位置の3D点群データごとに当該3D点群データに含まれる各点が持つ座標をz軸の正方向が平面の法線方向となるように変換する。その上で、抽出部1011は、上述の通り、RANSACなどのアルゴリズムにしたがって、各測定位置の3D点群データごとに当該3D点群データから平面を抽出する。
さらに、抽出部1011は、次のような基準にしたがって2つ以上の任意の数の3D点群データをレジストレーションの実行対象としてグループ化できる。例えば、抽出部1011は、取得部1001により3D点群データが取得される度に、3D点群データをそれまでに取得された3D点群データとグループ化することにより、レジストレーションの実行対象とすることができる。さらに、抽出部1011は、過去に取得された3D点群データの中でも所定の期間(例えば10分間以内)に取得された3D点群データに絞ってグループ化してもよい。また、抽出部1011は、グループ化を行う3D点群データの組み合わせを入力装置(図示省略)を介して受け付けてもよい。
このように、各測定位置の3D点群データごとに3D点群データから平面が抽出されると、抽出部1011は、座標系Cの原点に基づいて各平面の高さ(z座標)を算出する。
ここで、図1で説明したように、第1測定位置101で測定された第1点群データ111から抽出される複数の第1平面の高さの集合をH1とし、第2測定位置102で測定された第2点群データ112から抽出される複数の第2平面の高さの集合をH2とする。そして、集合H1と集合H2とは以下のように表す。MとNは正の整数である。Mは複数の第1平面の数である。Nは複数の第2平面の数である。
H1={h11,h12,・・・,h1M}
H2={h21,h22,・・・,h2N}
また、後述するように、オフセット量Δhまたはオフセット量Δhの候補によって補正した平面の高さの集合をH’2とする。集合H’2は以下のように表す。
H’2={h’21,h’22,…,h’2N}
={h21+Δh,h22+Δh,・・・,h2N+Δh}
図11は、平面間の距離例を示す説明図である。図11には、複数の第1平面の高さの集合H1と、複数の第2平面の高さの集合H2とを示す。
集合H1として、H1{h11,h12,h13,h14}が得られる。また、集合H2として、H2{h21,h22,h23,h24}が得られる。図11において、集合H1に含まれる高さは、実線の太線で示される。集合H2に含まれる高さは、点線の太線で示される。
次に、距離算出部1012は、第1測定位置101について、互いに平行な複数の第1平面の各々の第1平面の間の各距離のうちの他の距離との差分が所定値以上である距離を特定する。また、距離算出部1012は、第2測定位置102について、互いに平行な複数の第2平面の間の各距離のうちの他の距離との差分が所定値以上である第2距離を特定する。
具体的には、距離算出部1012は、例えば、第1測定位置101について、複数の第1平面に含まれる2つの第1平面の組み合わせごとに、組み合わせに含まれる2つの第1水平面間の距離を算出する。具体的には、距離算出部1012は、例えば、第1水平面の高さの差分を第1平面間の距離として算出する。第1平面間の差分は、例えば、2つの第1平面のうち高い方の第1平面の高さから低い方の第1平面の高さを減算することにより得られる。
また、具体的には、距離算出部1012は、例えば、第2測定位置102について、複数の第2平面に含まれる2つの第2平面の組み合わせごとに、組み合わせに含まれる2つの第2平面間の距離を算出する。具体的には、距離算出部1012は、例えば、第2水平面の高さの差分を第2平面間の距離として算出する。第2平面間の差分は、例えば、2つの第2平面のうち高い方の第2平面の高さから低い方の第2平面の高さを減算することにより得られる。
第1測定位置101において、高さh11と高さh12の差分が距離d11である。高さh11と高さh13との差分が距離d12である。高さh11と高さh14との差分が距離d13である。高さh12と高さh13との差分が距離d15である。高さh12と高さh14との差分が距離d14である。高さh13と高さh14との差分が距離d16である。
第2測定位置102において、高さh21と高さh22の差分が距離d21である。高さh21と高さh13との差分が距離d22である。高さh21と高さh14との差分が距離d23である。高さh22と高さh13との差分が距離d25である。高さh22と高さh14との差分が距離d24である。高さh23と高さh24との差分が距離d26である。
次に、距離算出部1012は、例えば、各々の測定位置について、平面間の距離のうち、距離の差が閾値以下となる距離が存在しない距離を抽出する。すなわち、距離算出部1012は、似たような距離が存在しないような特徴的な距離を抽出する。
距離算出部1012は、第1測定位置101について、特徴的な距離として以下集合D1を抽出する。なお、εが閾値である。εは0に限りなく近い値である。
D1:|d11−d1j|≦ε(i≠j)となるd1jが存在しないd1iを要素とする集合
第1測定位置101において、距離d15と距離d16との差は0に近いため、D1は{d11,d12,d13,d14}となる。
また、距離算出部1012は、第2測定位置102については、特徴的な距離として以下集合D2を抽出する。
D2:|d21−d2j|≦ε(i≠j)となるd2jが存在しないd2iを要素とする集合
第2測定位置102において、距離d25と距離d26との差は0に近いため、D2は{d21,d22,d23,d24}となる。
次に、オフセット量算出部1013は、複数の第1平面に含まれる第1平面と、複数の第2平面に含まれる第2平面と、の組み合わせを生成する。オフセット量算出部1013は、組み合わせの各々について、組み合わせに含まれる平面間の垂直方向の位置を一致させるように、複数の第2平面の垂直方向の位置を補正する。ここで、垂直方向とは、z軸方向や高さ方向である。
具体的には、オフセット量算出部1013は、組み合わせの各々について、組み合わせに含まれる平面間の距離をオフセット量Δhとして算出する。具体的には、オフセット量算出部1013は、集合H1に含まれる複数の高さh1と、集合H2に含まれる複数の高さh2との組み合わせについて、組み合わせに含まれる高さh1と高さh2との差分値をオフセット量Δhの候補として算出する。例えば、差分値とは、組み合わせに含まれる高さh1から高さh2を減算した値である。
そして、オフセット量算出部1013は、組み合わせの各々について、複数の第2平面の高さに、算出したオフセット量Δhの候補を加算する。これにより、組み合わせに含まれる平面間の垂直方向の位置が一致するように、複数の第2平面の垂直方向の位置が補正される。
次に、第1算出部1014は、平面の組み合わせの各々について、各々の第1平面の垂直方向の位置のうち、補正後の記各々の第2平面領域の垂直方向の位置と一致する位置を特定する。換言すると、第1算出部1014は、平面の組み合わせの各々について、オフセット量Δhの候補ごとに、集合H1とオフセット量Δhの候補に基づき補正した集合H’2とで一致する高さが存在する平面の高さの集合を特定する。図11における集合H2をオフセット量Δhの候補に基づき補正した集合H’2は、{h’21,h’22,h’23,h’24}である。第1測定位置101についての一致する高さが存在する平面の高さの集合は、G1と表す。第2測定位置102についての一致する高さが存在する平面の高さの集合は、G2と表す。具体的には、第1算出部1014は、以下のように集合G1および集合G2を特定する。
G1:|h1i−h’2j|≦αとなるh’2jが存在するh1iを要素とする集合
G2:|h1i−h’2j|≦αとなるh’1jが存在するh’2jを要素とする集合
所定値αは、予め設定された値であり、特に限定しない。ここでは、所定値αは、例えば、水平面の抽出時に異なる水平面として抽出する水平面間の最低間隔の1/2より小さい値とする。
次に、第1算出部1014は、組み合わせの各々について、第1測定位置101について特定した位置の2つの組み合わせのうち、位置の2つの組み合わせに含まれる位置間の距離が、集合D1に含まれる距離と一致する組み合わせの数を特定する。ここでの位置は、高さ方向の位置である。このため、具体的には、第1算出部1014は、平面の組み合わせの各々について、集合G1に含まれる高さの2つの組み合わせのうち、この組み合わせに含まれる高さの差分が集合D1に含まれる組み合わせの数を特定する。第1測定位置101について特定される数はf1と表す。
また、第1算出部1014は、平面の組み合わせの各々について、第2測定位置102について特定した位置の2つの組み合わせのうち、位置の2つの組み合わせに含まれる位置間の距離が、集合D2に含まれる距離と一致する組み合わせの数を特定する。具体的には、第1算出部1014は、平面の組み合わせの各々について、集合G2に含まれる高さの2つの組み合わせのうち、この組み合わせに含まれる高さの差分が集合D2に含まれる組み合わせの個数を特定する。第2測定位置102について特定される数はf2と表す。
第1算出部1014は、平面の組み合わせの各々について、各々の測定位置について算出した組み合わせの個数のうち値が小さい方を評価値とする。評価値が大きい値であるほど、評価が高いこととする。
ここで、図11および図12を用いて、2つのオフセット量Δhの候補について、集合G1および集合G2と数f1および数f2とを特定する例を説明する。
図12は、オフセット量Δhの候補についての評価例1を示す説明図である。図12には、オフセット量Δhの候補がh11−h21の場合を例に挙げて説明する。まず、第1測定位置101について集合G1および数f1を求める例について説明する。第1算出部1014は、高さh11と高さh’22との差がα以下であるため、高さh11を集合G1に入れる。第1算出部1014は、高さh12と集合H’2に含まれる各高さとの差がαより大きいため、高さh12を集合G1に入れない。第1算出部1014は、高さh13と集合H’2に含まれる各高さとの差がαより大きいため、高さh13を集合G1に入れない。第1算出部1014は、高さh14と高さh’24との差がα以下であるため、高さh14を集合G1に入れる。集合G1は以下のようになる。
G1={h11,h14}
そして、第1算出部1014は、集合G1に含まれる高さの組み合わせのうち、組み合わせの高さの差分が集合D1に含まれる組み合わせの数を数f1とする。
集合G1に含まれる高さの組み合わせは1通りである。高さh11と高さh14との差はd13であり、集合D1に含まれる。このため、第1算出部1014は、数f1を1とする。
次に、第2測定位置102について集合G2および数f2を求める例について説明する。第1算出部1014は、例えば、高さh’21と高さh11との差がα以下であるため、高さh’21を集合G2に入れる。第1算出部1014は、高さh’22と高さh14との差がα以下であるため、高さh’22を集合G2に入れる。第1算出部1014は、高さh’23と集合H1に含まれる各高さとの差がαより大きいため、高さh’23を集合G2に入れない。第1算出部1014は、高さh’24と集合H1に含まれる各高さとの差がαより大きいため、高さh’24を集合G2に入れない。集合G2は以下のようになる。
G2={h’21,h’22}
そして、第1算出部1014は、集合G2に含まれる高さの組み合わせのうち、組み合わせの高さの差分が集合D2に含まれる組み合わせの数をf2とする。
集合G2に含まれる高さの組み合わせは1通りである。高さの組み合わせに含まれる高さh’21と高さh’22との差はd21であり、集合D2に含まれる。このため、第1算出部1014は、数f2を1とする。
第1算出部1014は、オフセット量の候補について、数f1と数f2とのうち小さい方を評価値として算出する。ここで、オフセット量Δhの候補がh11−h21の場合の評価値は、1である。
図13は、オフセット量Δhの候補についての評価例2を示す説明図である。図13には、オフセット量Δhの候補がh12−h22の場合を例に挙げて説明する。第2測定位置102について説明する。第1算出部1014は、高さh11と集合H’2に含まれる各高さとの差が所定値αより大きいため、高さh11を集合G1に入れない。第1算出部1014は、高さh12と高さh’22との差がα以下であるため、高さh12を集合G1に入れる。第1算出部1014は、高さh13と高さh’23との差がα以下であるため、高さh13を集合G1に入れる。第1算出部1014は、高さh14と高さh’24との差が所定値α以下であるため、高さh14を集合G1に入れる。
G1={h12,h13,h14}
そして、第1算出部1014は、集合G1に含まれる高さの組み合わせのうち、組み合わせの高さの差分が集合D1に含まれる組み合わせの数f1を特定する。
集合G1に含まれる高さの組み合わせは3つある。まず、高さh12と高さh13との差はd15であり、集合D1に含まれない。高さh12と高さh14との差はd14であり、集合D1に含まれる。高さh13と高さh14との差はd16であり、集合D1に含まれない。このため、第1算出部1014は、数f1を1とする。
第2測定位置102について説明する。第1算出部1014は、高さh’21と集合H1に含まれる各高さとの差がαより大きいため、高さh’21を集合G2に入れない。第1算出部1014は、高さh’22と高さh12との差がα以下であるため、高さh’22を集合G2に入れる。第1算出部1014は、高さh’23と高さh13との差が所定値α以下であるため、高さh’23を集合G2に入れる。第1算出部1014は、高さh’24と高さh14との差がα以下であるため、高さh’24を集合G2に入れる。
G2={h’22,h’23,h’24}
そして、第1算出部1014は、集合G2に含まれる高さの組み合わせのうち、組み合わせの高さの差分が集合D2に含まれる組み合わせの数f2を特定する。
集合D2に含まれる高さの組み合わせは3通りである。高さh’22と高さh’23との差はd25であり、集合D2に含まれない。高さh’22と高さh’24との差はd24であり、集合D2に含まれる。高さh’23と高さh’24との差はd26であり、集合D2に含まれない。このため、第1算出部1014は、数f2を1とする。
第1算出部1014は、オフセット量の候補について、数f1と数f2とのうち小さい方を評価値として算出する。ここで、オフセット量Δhの候補がh12−h22の場合の評価値は、1である。
次に、特定部1016は、組み合わせの各々について特定した数に基づいて、オフセット量Δhを特定する。具体的には、特定部1016は、平面の組み合わせのうち、評価値が最も大きい組み合わせについてのオフセット量Δhの候補をオフセット量Δhとして特定する。ここでは、評価値が大きいほど、評価が高い。
上述したように、図12に示すオフセット量Δhの候補がh11−h21である平面の組み合わせと、図13に示すオフセット量Δhの候補がh12−h22である平面の組み合わせ場合とは、評価値が同じとなる。このように、図6に示した例と異なり、評価値が同じとなる。このため、誤対応についてのオフセット量Δhの候補が特定されることを抑制することができる。
図14は、数f1と数f2とが異なる例を示す説明図である。図14において集合H1は{h11,h12}であり、集合H’2は{h’21,h’22,h’23}である。集合D1は、高さh11と高さh12の距離が含まれる。高さh’21と高さh’22との間の距離と、高さh’22と高さh’23との間の距離と、が同じである場合、集合D2には、何も含まれない。なお、高さh11と高さh12の距離は、高さh’21と高さh’22との間の距離および高さh’22と高さh’23との間の距離と同じである。
図14に示すような場合において、オフセット量Δhの候補をh11とh21とした場合に、集合G1は、{h11,h12}であり、集合G2は、{h’21,h’22}である。高さh11と高さh12との距離は、集合D1に含まれるため、数f1は1である。高さh’21と高さh’22との距離は、集合D2に含まれないため、数f2は0である。このように、数f1と数f2とは必ずしも同じとならないため、第1算出部1014は、数f1と数f2とのうちいずれか小さい方の数を評価値とする。図14の例において評価値は0となる。
また、第1算出部1014によって算出された評価値が最も大きいオフセット量の候補が複数ある場合がある。このような場合、第2算出部1015は、第1算出部1014によって算出された評価値と異なる評価値によってオフセット量を特定する。
具体的には、第2算出部1015は、第1算出部1014によって算出された評価値が最も大きいオフセット量の候補ごとに、異なる評価値を算出する。異なる評価値の算出方法として、特に限定しないが、ここでは3つの方法を例に挙げる。
まず、異なる評価値の算出方法の1つ目の方法について説明する。
第2算出部1015は、各々の測定位置について、抽出した各平面に含まれる点群の数を求める。各平面に含まれる点群の数は、階段の踏み面のような比較的狭い平面と、床面や天井面などの広い平面とを区別するのに利用することができる。
そして、第2算出部1015は、第1算出部1014によって算出された評価値が最も大きいオフセット量Δhの候補について、2つの3D測定位置群間で高さが一致する平面に含まれる点群の数の相関値を評価値として算出する。
例えば、第1点群データ111における各平面の点の数を以下とする。
平面P11(高さh11の平面):300
平面P12(高さh12の平面):100
平面P13(高さh13の平面):80
平面P14(高さh14の平面):280
例えば、第2点群データ112における各平面の点の数を以下とする。
平面P21(高さh21の平面):280
平面P22(高さh22の平面):300
平面P23(高さh23の平面):90
平面P24(高さh24の平面):70
第1算出部1014によって算出された評価値が最も大きいオフセット量Δhの候補が、h11−h21と、h12−h22とする。
オフセット量Δhの候補がh11−h21の場合、平面P11−平面P21と、平面P14−平面P22と、のように平面が対応する。この場合、相関値は−1となる。
また、オフセット量Δhの候補がh12−h22の場合、平面P12−平面P22と、平面P13−平面P23と、平面P14−平面P24と、のように平面が対応する。この場合、相関値は−0.48となる。相関値は、絶対値が1に近いほど、相関関係が強いため、特定部1016は、h12−h22であるオフセット量Δhの候補をオフセット量Δhとして特定する。
次に、異なる評価値の算出方法の2つ目の方法について説明する。
図9に示したように、測定時に、各点群について赤外線の反射強度や色情報が同時に得られる場合がある。そこで、2つ目の方法では、これらの情報が、高さが一致する平面間で似ているか否かに基づいてオフセット量Δhを特定する。
第2算出部1015は、オフセット量Δhの候補の各々について、2つの3D測定位置群間で高さが一致する平面について反射強度や色情報のヒストグラムの相関値を評価値として算出する。
上述したように、オフセット量Δhの候補がh11−h21の場合、平面P11−平面P21と、平面P14−平面P22と、のように平面間の高さが一致する。第2算出部1015は、例えば、平面P11と平面P14との反射強度や色情報のヒストグラムを算出する。第2算出部1015は、例えば、平面P21と平面P22の反射強度や色情報のヒストグラムを算出する。そして、第2算出部1015は、オフセット量Δhの候補がh11−h21についてのヒストグラムの相関値を算出する。
上述したように、オフセット量Δhの候補がh12−h22の場合、平面P12−平面P22と、平面P13−平面P23と、平面P14−平面P24と、のように平面間の高さが一致する。第2算出部1015は、例えば、平面P12と平面P13と平面P14についての反射強度や色情報のヒストグラムを算出する。第2算出部1015は、例えば、平面P22と平面P23と平面P24についての反射強度や色情報のヒストグラムを算出する。
次に、第2算出部1015は、平面P12のヒストグラムと平面P22のヒストグラムとの相関値を算出する。そして、第2算出部1015は、平面P13のヒストグラムと平面P23のヒストグラムとの相関値を算出する。そして、第2算出部1015は、平面P14のヒストグラムと平面P24のヒストグラムとの相関値を算出する。第2算出部1015は、算出した各相関値の平均値を評価値として算出する。
相関値は、絶対値が1に近いほど、相関関係が強いため、特定部1016は、評価値が最も大きいオフセット量Δhの候補をオフセット量Δhとして特定する。
次に、異なる評価値の算出方法の3つ目の方法について説明する。
3つ目の方法では、オフセット量Δhの候補の各々について、2Dの位置合わせを行うことにより得られる位置合わせ結果を評価する。位置合わせ結果がよいか否かの評価としては、2つの3D点群間で対応する点の数が多いほど高評価とする。なお、位置合わせ部1017による位置合わせの方法については、後述する。
位置合わせ部1017は、オフセット量Δhの候補の各々について、オフセット量Δhの候補によって補正された第2の点群データを補正する。そして、位置合わせ部1017は、オフセット量Δhの候補の各々について、第1点群データ111と、補正された第2点群データ112とで位置合わせを行う。
第2算出部1015は、位置合わせ後の3D点群データのうち、第1点群データ111によって特定される点群(第1点群)と、位置合わせ後の第2点群データ112によって特定される点群(第2点群)と、の間で対応する点の数を算出する。なお、評価値は、オフセット量Δhの候補の各々(第1平面と第2平面との組み合わせの各々)について算出される。具体的には、第2算出部1015は、第1点群の各々の点について、各々の点から最近傍にある第2点群に含まれるまでの距離が一定距離以内であるか否かを判定する。第2算出部1015は、一定距離以内であると判定された点の数を評価値とする。この評価値は、大きいほど、評価が高い。第2算出部1015は、最も評価が高いオフセット量Δhの候補をオフセット量Δhとする。
ここでは、他の評価値の算出方法として3つの方法を挙げたが、これに限らない。また、例えば、3つの方法のうちいずれか一つの方法により算出された評価値によってオフセット量が特定されてもよい。または、複数の方法により算出された各評価値によってオフセット量が特定されてもよい。または、オフセット量が一意に特定されるまで3つの方法が順に行われてもよい。
次に、位置合わせ部1017は、特定部1016によって特定されたオフセット量Δhにしたがって各測定位置の3D点群データの間で高さの基準を合わせる。すなわち、位置合わせ部1017は、異なる測定位置で測定された3D点群データのうち集合H2が割り当てられた方の3D点群データ、すなわち第2点群データ112に含まれる各点にオフセット量Δhを加算する。その後、位置合わせ部1017は、下記の関連文献1に記載があるように、位置合わせの対象とする3D点群データそれぞれについて所定の高さの区間に含まれる3D点群を所定の面、例えば床面に投影することにより2次元の水平方向のスライスデータを抽出する。そして、位置合わせ部1017は、これらのスライスデータに対して、2次元でレジストレーションを行う。
[関連文献1]“大規模環境の統合点群モデルの自動生成(第三報)、点群ペア位置合せとマッチ判定による複数点群の完全自動位置合せ”、松山雄介、伊達宏昭、金井理、2014年度精密工学会春季大会、セッションID: E45
このほか、位置合わせ部1017は、下記の関連文献2に記載された方法で、同じ高さで各3D点群をスライスして抽出した2次元点群について平面内で位置合わせすることとしてもよい。
[関連文献2]友納正裕,“ユークリッド変換に不変な特徴量を用いた二次元大域スキャンマッチング方式,日本ロボット学会誌,Vol. 25,No. 3,pp390〜401(2007)”
これを説明すると、2次元点群は、各点の法線を周囲の点の位置から計算することができ、位置合わせ部1017は、方向付き点群を得ることができる。データ間で方向付き点の対応が1つ決まると2次元の場合、位置合わせのための座標変換パラメータ(x,y,θ)が求まる。そこで、位置合わせ部1017は、方向付き点の対応候補を他の点の位置関係から評価して所定数に絞り込む。これにより、位置合わせ部1017は、座標変換の候補が絞り込まれるので、各候補について位置合わせの誤差を最小化する詳細位置合わせ処理を行った上で残差を評価し、最も残差が少なかった位置合わせ結果を採用する。これによって、位置合わせ部1017は、2次元のレジストレーションを実現できる。
情報処理装置100は、このように1つに統合された3D点群データにメッシュ化処理を行うことにより、3次元の面データに変換することもできる。これら1つに統合された3D点群データまたは3次元の面データを用いることにより、作業者301を支援する支援データを作成し、プロジェクションにより投影することもできる。また、情報処理装置100は、3次元の面データが示す3次元のモデルをプロジェクタ804などによって表示してもよい。
(情報処理装置100が行う処理手順例)
図15は、情報処理装置100が行う処理手順例を示すフローチャートである。情報処理装置100は、各々の測定位置について、3D点群データを取得する(ステップS1501)。情報処理装置100は、各々の測定位置の3D点群データについて、水平面の方向を算出する(ステップS1502)。
情報処理装置100は、各々の測定位置について、z軸正方向が水平面の法線方向になる座標変換を実行する(ステップS1503)。情報処理装置100は、各々の測定位置について、3D点群データから平面を抽出する(ステップS1504)。情報処理装置100は、各平面の高さ(z座標)を算出する(ステップS1505)。
情報処理装置100は、オフセット量および評価値の算出処理を行う(ステップS1506)。情報処理装置100は、評価が最も高い平面の組み合わせの数が1つか否かを判断する(ステップS1507)。評価が最も高い平面の組み合わせの数が1つであると判断された場合(ステップS1507:Yes)、情報処理装置100は、ステップS1509へ移行する。
評価が最も高い平面の組み合わせの数が1つでないと判断された場合(ステップS1507:No)、情報処理装置100は、評価が最も高い平面の組み合わせについて他の評価値を算出する(ステップS1508)。次に、情報処理装置100は、評価が最も高い平面の組み合わせに基づきオフセット量Δhを特定する(ステップS1509)。
次に、情報処理装置100は、評価が最も高い平面の組み合わせについてのオフセット量に基づき一方の3D点群の位置を補正する(ステップS1510)。そして、情報処理装置100は、水平方向に同じ高さでスライスした2D点群データを抽出する(ステップS1511)。情報処理装置100は、レジストレーション処理を行い(ステップS1512)、一連の処理を終了する。
図16および図17は、図15で示したオフセット量および評価値の算出処理の詳細な説明を示すフローチャートである。まず、情報処理装置100は、第1測定位置101についての複数の第1平面間の距離を算出する(ステップS1601)。次に、情報処理装置100は、算出した各距離から特徴的な距離の集合D1を抽出する(ステップS1602)。
そして、情報処理装置100は、第2測定位置102についての複数の第2平面間の距離を算出する(ステップS1603)。情報処理装置100は、算出した各距離から特徴的な距離の集合D2を抽出する(ステップS1604)。情報処理装置100は、第1測定位置101の複数の第1平面に含まれる第1平面と第2測定位置102の複数の第2平面に含まれる第2平面とのすべての組み合わせを生成する(ステップS1605)。情報処理装置100は、未評価の組み合わせがあるか否かを判断する(ステップS1606)。
未評価の組み合わせがないと判断された場合(ステップS1606:No)、情報処理装置100は、未評価の組み合わせから1つの組み合わせを評価対象として選択する(ステップS1701)。情報処理装置100は、選択した組み合わせについて、組み合わせに含まれる平面の高さを一致させるオフセット量Δhの候補を算出する(ステップS1702)。情報処理装置100は、算出したオフセット量Δhの候補によって第2測定位置102についての複数の第2平面の高さを補正する(ステップS1703)。
そして、情報処理装置100は、複数の第1平面のうち補正後の複数の第2平面と高さが一致する第1平面の高さの集合G1を特定する(ステップS1704)。
情報処理装置100は、複数の第1平面のうち補正後の第2平面と高さが一致する第2平面の高さの集合G2を特定する(ステップS1705)。情報処理装置100は、集合G1に含まれる2つの高さの組み合わせごとに高さの差(距離)が集合D1に含まれる数f1を算出する(ステップS1706)。そして、情報処理装置100は、集合G2に含まれる2つの高さの組み合わせごとに高さの差(距離)が集合D2に含まれる数f2を算出し(ステップS1707)、ステップS1606へ移行する。
また、ステップS1606において、未評価の組み合わせがあると判断された場合(ステップS1606:Yes)、情報処理装置100は、一連の処理を終了する。
図18は、図15で示したレジストレーション処理の詳細な説明を示すフローチャートである。情報処理装置100は、補正した一方の3D点群データによって特定される一方の3D点群(補正点群)と補正していない他方の3D点群データによって特定される3D点群(基準点群)の各点について法線方向を算出する(ステップS1801)。次に、情報処理装置100は、基準点群と補正点群の間の点対応候補を複数抽出する(ステップS1802)。情報処理装置100は、各点対応候補ごとに座標変換パラメータを算出する(ステップS1803)。
情報処理装置100は、複数の座標変換パラメータをクラスタリングする(ステップS1804)。情報処理装置100は、要素数が多いクラスタの重心の座標変換パラメータを算出する(ステップS1805)。情報処理装置100は、各パラメータで変換後の点群の位置関係を初期位置とし、ICPアルゴリズムにより位置合わせをクラスタごとに実行する(ステップS1806)。情報処理装置100は、各位置合わせ結果の残差を評価して最もマッチした位置合わせ結果を選択し(ステップS1807)、一連の処理を終了する。
図19は、システム例を示す説明図である。本実施の形態では、情報処理装置100は、測定機器そのものである場合を例に説明したが、これに限らない。図10に示した情報処理装置100の機能部のうちの一部の機能部を他の装置に実現させてもよい。
システム1900は、測定機器である情報処理装置100と、装置1901と、装置1902と、を有する。情報処理装置100と、装置1901と、装置1902とは、例えば、ネットワーク810を介して接続される。図19の例では、装置1901は、PCであり、装置1902は、携帯型の端末装置であるが、これに限らない。装置1901と装置1902としては、例えば、PC、サーバ、携帯型の端末装置などが挙げられる。例えば、取得部1001を測定機器である情報処理装置100によって実現させ、制御部1002を装置1901によって実現させてもよい。また、制御部1002の一部の機能を情報処理装置100によって実現させ、制御部1002の残余の機能を装置1901によって実現させてもよい。
また、例えば装置1902は、利用者による操作入力によって受け付けた測定の開始指示を測定機器である情報処理装置100に通知してもよい。これにより、作業者301は、直接測定機器を操作することなく、3D測定を行うことができる。また、装置1901は、3次元の面データが示す3次元のモデルをディスプレイなどに表示してもよい。
装置1901や装置1902は、CPU、ディスク、メモリ、I/F、入力装置、ディスプレイなどの出力装置などのようなハードウェア構成を有していればよく、特に限定しない。また、各種の3D点群データや各種のモデル情報については、データベースサーバ(図示省略)などに記憶および管理されてもよい。
以上説明したように、情報処理装置100は、異なる測定位置で測定された点群データの間で基準となる平面同士の高さが合うようなオフセット量にしたがって点群データを補正して2次元の位置合わせを行う。これにより、情報処理装置100は、オクルージョンのある環境下で3D点群データの合成精度を高めることができる。
情報処理装置100は、第1点群データから得る第1平面群の1面に合わせて、第2点群データから得る第2平面群の高さを補正した第2平面群の面と高さが同じ第1平面間の距離のうち、第1平面群の面間の特徴的な距離と同じ距離の数からオフセット量を特定する。これにより、情報処理装置100は、複数の第1平面の中で、補正後の複数の第2平面と高さが一致している第1平面の数によってオフセット量を特定する場合と比較して、高さ方向の位置合わせの精度の向上を図ることができる。
また、情報処理装置100は、補正後の複数の第2平面の中で、複数の第1平面と高さが一致する補正後の第2平面間の距離のうち、第2平面間の特徴的な距離に含まれる距離の第2数と特定した第1数とに基づいてオフセット量を特定する。これにより、第1数と第2数とは異なる場合があるため、2つの種類の数のうちの小さい方の数を評価値として用いることができる。これにより、情報処理装置100は、より精度のよい評価値によって高さ方向の補正を行うことができる。
なお、本実施の形態で説明した情報処理方法は、予め用意された情報処理プログラムをパーソナル・コンピュータやワークステーション等のコンピュータで実行することにより実現することができる。本情報処理プログラムは、磁気ディスク、光ディスク、USB(Universal Serial Bus)フラッシュメモリなどのコンピュータで読み取り可能な記録媒体に記録され、コンピュータによって記録媒体から読み出されることによって実行される。また、情報処理プログラムは、インターネット等のネットワークを介して配布してもよい。
また、本実施の形態で説明した情報処理装置100は、スタンダードセルやストラクチャードASIC(Application Specific Integrated Circuit)などの特定用途向けIC(以下、単に「ASIC」と称す。)やFPGA(Field Programmable Gate Array)などのPLD(Programmable Logic Device)によっても実現することができる。具体的には、例えば、上述した情報処理装置100の制御部1002の機能をHDL記述によって機能定義し、そのHDL(Hardware Description Language)記述を論理合成してASICやPLDに与えることにより、情報処理装置100の制御部1002を製造することができる。