(57)【特許請求の範囲】
【請求項１】
１または２以上の物体の表面形状を表す１組の点群データを、前記物体の形状を表す三次元表面表示データに変換する装置であって、
前記物体の１組によって占有される空間を複数のボリュームに分割する手段と、
各ボリューム内の点がほぼ同一面内に共存しているかどうか、を決定する手段と、
ここで、これらボリュームは表面ボリュームとして指定され、前記点が共存している前記表面は前記表面ボリュームの前記表面として指定される、
ほぼ同一面内に沿って存在している複数の隣接する表面ボリュームを、より大きな表面として識別される表面ボリュームセットとして結合させる手段と、
前記表面ボリュームセットの表面境界ボリュームセットを識別する手段と、
ここで、前記表面境界ボリュームセットは、前記より大きな表面と交差される空きのボリュームに隣接している前記表面ボリュームセット内のボリュームを有する、
を備える装置。
【請求項２】
前記物体の１組の点群データを生成する手段を備える、請求項１に記載の装置。
【請求項３】
前記点群データを生成する手段は、光検出および測距するＬＩＤＡＲスキャナーである、請求項２に記載の装置。
【請求項４】
前記点群データを生成する手段は、
物体の１組の１または２以上の画像をキャプチャーするように構成されたカメラと、
前記画像に画像技法を行うように構成されたプロセッサと、を備えるスキャナーである、請求項２に記載の装置。
【請求項５】
前記スキャナーは、経路に沿って移動するように構成されており、前記経路にそった複数のスキャニング点から点群データを生成する、請求項３または４に記載の装置。
【請求項６】
前記表面境界ボリュームセット内の各ボリュームの各端部に対して群境界点を推定する手段と、
ここで、端部は前記表面境界ボリュームセット内のボリュームと空きのボリュームとの間の境界を有する前記表面ボリュームセットの前記より大きな表面の交差によって定義される、
を備える、請求項１から５のいずれか一項に記載の装置。
【請求項７】
前記群境界点が前記より大きな表面の交差によって形成された曲線に近接してどこに存在するかを識別する手段と、
交差曲線に前記群境界点の前記位置を移動させる手段と、を備える、請求項６に記載の装置。
【請求項８】
各ボリューム内の点がほぼ同一曲面に存在しているかどうかを決定する手段と、
ここで、そのようなボリュームは曲面ボリュームとして識別され、点がほぼ同一曲面に存在している前記曲面は前記曲面ボリュームの前記曲面として識別される、
同様な曲面によって曲面ボリュームセット内で交差される最初の複数の隣接する曲線ボリュームを結合させる手段と、
ここで、交差する曲面はより大きな曲面として識別される、
曲線区画を定義する終点を識別する手段と、
を備える、請求項１から７のいずれか一項に記載の装置。
【請求項９】
１または２以上の物体の表面形状を表す１組の点群データを、前記物体の形状を表す三次元表面表示データに変換する、コンピュータが実行する方法であって、
前記物体の１組によって占有される空間を複数のボリュームに分割するステップと、
各ボリューム内の点がほぼ同一面内に存在いるかどうかを決定するステップと、ここで、そのようなボリュームが表面ボリュームとして指定され、前記点がほぼ同一面内に存在している前記表面が前記表面ボリュームの前記表面として指定され、
表面ボリュームセット内のより大きな表面として識別される同様な表面に沿ってほぼ同一面内に存在している複数の隣接する表面ボリュームを結合させるステップと、
前記表面ボリュームセットの表面境界ボリュームセットを識別するステップと、
ここで、前記表面境界ボリュームセットは、前記表面ボリュームセットと異なる表面ボリュームセットのボリュームに隣接しているボリュームを前記表面境界ボリュームセット内に有している、
を備えることを特徴とする画像処理方法。
【請求項１０】
表面境界ボリュームセット内の各ボリュームの各端部に対して群境界点を推定し、ここで、端部は表面境界ボリュームセット内のボリュームと空きのボリュームとの間の境界を有する表面ボリュームセットのより大きな表面の交差によって定義される、請求項９に記載の方法。
【請求項１１】
群境界点が前記より大きな表面の交差によって形成された曲線に近接してどこに存在するかを識別し、
交差曲線に群境界点の前記位置を移動させる、請求項１０に記載の方法。  
【請求項１２】
各ボリューム内の点がほぼ同一曲面に存在しているかどうかを決定し、
ここで、そのようなボリュームは曲面ボリュームとして識別され、ほぼ同一曲面に存在している点が前記曲面ボリュームの曲線として識別され、
同様な曲面によって曲面ボリュームセット内で交差されている最初の複数の隣接する曲線ボリュームを曲面ボリュームセットに結合させ、
ここで、交差している曲面がより大きな曲面として識別され、
曲面区画を定義する終点を識別する、請求項１０または１１に記載の方法。
【請求項１３】
点がほぼ同一面内に存在している前記表面が平面である、請求項９から１２のいずれか一項に記載の方法。
【請求項１４】
前記ボリュームは、重なり合わないキューブであり、隣接するキューブが１または２以上の共通面、共通端部、または、共通頂点を有する、請求項９から１２のいずれか一項に記載の方法。
【請求項１５】
前記ボリュームは、重なり合わない、空間充填４面体または他の空間充填モザイク状形状であり、重なり合わないキューブを含まず、隣接するボリュームが１または２以上の共通面、共通端部、または、共通頂点を有する、請求項９から１２のいずれか一項に記載の方法。
【請求項１６】
前記ボリュームは、重なり合う球体または他の重なり合う形状である、請求項９から１２のいずれか一項に記載の方法。
【請求項１７】
前記点群データは、複数のスキャニング点から導かれる、請求項９から１６のいずれか一項に記載の方法。
【請求項１８】
前記複数のスキャニング点が可動スキャナーの経路上に存在する、請求項１７に記載の方法。
【請求項１９】
前記三次元表示がデータファイルとして格納される、請求項９から１８のいずれか一項に記載の方法。
【請求項２０】
前記データファイルがベクトル画像モデルとして格納される、請求項１９に記載の方法。
【請求項２１】
前記ベクトル画像モデルが、三次元のコンピュータ支援設計ＣＡＤモデルのフォーマットである、請求項２０に記載の方法。
【請求項２２】
前記三次元のモデルが、画像データによって重ね合わせられる、請求項２１に記載の方法。
【請求項２３】
重要な特徴が、前記三次元のモデルで識別される、請求項２１に記載の方法。
【請求項２４】
前記重要な特徴の情報が、ユーザに提供される、請求項２１に記載の方法。
【請求項２５】
請求項９から２４のいずれか一項に記載の方法をコンピュータに実行させる、コンピュータ実行可能な命令を備えるコンピュータプログラムを格納する一時記憶メモリ。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、物体の１組の三次元の点群データから自動的にその物体の１組の三次元表示を生成するための方法および装置に関する。
【背景技術】
【０００２】
実在する物体の正確な三次元（３Ｄ）コンピュータモデルの生産は、考古学、建築、土木および機械工学、および地理的なマッピングの分野においても、他の多くの領域と同様に非常に有用であることが分かっている。それらのアプリケーションの多くは、スキャナーが、表面の点の三次元の「点群（point cloud）」を生成するために、物体の表面上の
多数の点を測定する。この点の群は、非常に大量のデータを含んでもよく、他の理由だけでなくこのためにも、効率的に最終モデルへの取り込みを操ったり、処理したりすることが難しい。従って、例えば、三次元のコンピュータ支援設計（ＣＡＤ）モデル形式にするように、点群データをより容易に取り扱える形式に変換することは利益がある。
【０００３】
点群データの本質は、それらが、他の画像技術においては存在しない解析の見方があることを意味する。例えば、磁気共鳴画像診断（ＭＲＩ）およびコンピュータ断層撮影（ＣＡＴ）スキャンのような医用画像技術は、具体的な体積をスキャンしてスキャンされた体積内の全ての点で定義された連続的な密度値から三次元画像を生成する。しかしながら点群にとっては点の密度は、物体の密度または他の特性の表示というより、スキャナー位置への距離および角度の、およびスキャナー設定への、関数である。加えて、スキャンされた体積の大きな領域は、いかなる特徴も完全に欠けていてもよい。
【０００４】
現在のところ点群データは、構造を認識することによってデータを説明し、何が識別されているかの三次元モデル（3D model）を手作業で生成する専門家（または専門家のチーム）から与えられている。そのプロセスはいくつかの欠点がある。それは第１に、完成するために非常に多くの工数を必要とし、コストの増大を引き起こす。第２に、同一の点群を解釈する異なる人々は、異なる三次元モデルを生成することもある。そのようなモデルのユーザは、従って、それらの正確さに頼りすぎることができない。この第２の困難さは、可動スキャナーの使用に起因するノイズの多い点群データの場合に顕在化する。それら（点群データ）がノイズが多いとはいえ、可動スキャナーは、問題となるスキャニング技術の範囲をより大きい領域でスキャンするためには、静止スキャナーよりは好ましい。
【０００５】
三次元モデルを自動的に生成することを特許請求している別の装置も開示されているが、これは別の欠点を抱えている。例えば、米国特許公報８，２４４，０２６号は、グラウンドスキャンの点群を光検出および測距（ranging）処理する装置（ＬＩＤＡＲ）を記載
している。グラウンドフィルタが、グラウンドの上方に延びている特徴を識別できるようにそのグラウンドを除去する。その後で、自動の特徴サーチおよび認識ユニットが、ある特徴に関連付けられている点を認識し、それらをその特徴を表している仮想物体と交換する。このような装置は、グラウンドを基準点として使用するので、別の応用には使用することができない。加えて、その物体のための仮想物体が存在する物体のみが置き換え可能であり、専門家はその結果またはモデルを、手作業で、もっと特異な機能でモニターしなければならないであろう。
【０００６】
欧州特許公報第１，６９１，３３５号は、２次元プロファイルに沿った点群へ表面を適合させるための装置を記載している。ここでの欠点は、プロファイルが最初に定義されなければならないことであり、手作業でも自動的メカニズムによってもこの発明の一部を形成しないことである。それに反して、本発明は、提供されるべき２次元または別のプロフ
ァイルを必要としない。
【０００７】
クリアエッジ３Ｄ（ClearEdge 3D）は、点群から自動的に特徴を抽出するソフトウエアを製造する。このソフトウエアは、国際公開公報第２０１０／０４２４６６号に記載された技術を使用しており、ここでは、１または２以上の表面区画が点群から抽出され、物体の１または２以上の主軸が決定されるように用いられる。しかしながら、この方法は、特に可動スキャナーで生成されたデータを解析する場合のように、スキャンされた物体が共通の整列された主軸を有しないときには用いることができない。事実、クリアエッジ３Ｄは、ユーザに特徴の初版を手作業で定義することを要求し、それらのコピーがその後、自動的に識別される。
【発明の概要】
【発明が解決しようとする課題】
【０００８】
特許請求の範囲に記載された本発明の観点は、計算効率、および有用な省力化の解決策を提供するが、これに限定されず、優れた特徴が実在の物体として識別されて、仮想等価物に交換されるシナリオを提供する。加えて、本発明の典型的な実施形態は、可動スキャナーシステムから点群データを変換するのに十分に安定している。
【０００９】
本発明は、３×３の対称行列の固有値及び対応する固有ベクトルの頻繁な計算を要求する。これは、例えばＧ．Ｈ．ＧｏｌｕｂおよびＣ．Ｆ．ｖａｎ  Ｌｏａｎによる、「行列計算（Matrix Computations）」、１９８３年、ジョンホプキンス大学通信、に記載され
ているように、ヤコビの対角化法を用いて容易に解くことができる。しかしながら、任意の他の有効な固有値および固有ベクトル計算方法でも、それが２または全ての固有値が他と異なっていない場合でも正確に対処できるものであれば、代わりに用いることもできる。
【課題を解決するための手段】
【００１０】
本発明は、添付された特許請求の範囲の記載によって定義される。本発明の典型的な実施形態の他の特徴および利点は、添付図面と併用する以下の説明から明らかになるであろう。
【図面の簡単な説明】
【００１１】
【図１】点群データが生成され三次元モデルに変換される典型的なシステムを示す説明図である。
【図２】本方法のＭ１からＭ１２までの主ステップのフローチャートである。
【図３】同一平面上または同一直線上の点を含んでいるキューブを分類する典型的な方法のステップＡ１からＡ８のフローチャートである。
【図４】平面キューブセットを形成するために共通平面に沿って同一平面上のキューブを結合させることによって表面を識別する典型的な方法のステップＢ１からＢ２４のフローチャートである。
【図５】共通平面によって全てが交差するように平面キューブセットに属しているキューブを平坦化する典型的な方法のステップＹ１からＹ８のフローチャートである。
【図６】平面キューブセットの境界を形成するキューブを識別する典型的な方法のステップＸ１からＸ１０のフローチャートである。
【図７】平面キューブセットの、外側の周りまたは内側の穴の周りの、境界ポリゴンを追跡する典型的な方法のステップＺ１からＺ２１のフローチャートである。
【図８】境界ポリゴンに沿って群境界点の位置を識別する典型的な方法のステップＵ１からＵ１１のフローチャートである。
【図９】隣接している平面を有する交差上に群境界点を移動させる典型的な方法のステップＶ１からＶ１４のフローチャートである。
【図１０】線キューブセットを形成するために共通線に沿って同一直線上のキューブを結合させることにより直線を識別する典型的な方法のステップＷ１からＷ２４のフローチャートである。
【図１１】共通線によって全てが交差しているように線キューブセットに属するキューブを平坦化する典型的な方法のステップＴ１からＴ８のフローチャートである。
【図１２】線キューブセット内から有限な線区分の端部の位置を見出す典型的な方法のステップＳ１からＳ１６のフローチャートである。
【図１３】平面の間の距離を計算する典型的な方法を示す平面図である。
【図１４】典型的なポリゴンのファン（fan）を示す平面図である。
【図１５】平面キューブセットの境界ポリゴンを追跡する典型的な方法を示す平面図である。
【図１６】ポリゴンの次の端部の２つの選択肢の位置を示す平面図である。
【図１７】点群境界が交差ポリゴン内で線形である場合における群境界点を計算するための典型的な方法を示す平面図である。
【図１８】点群境界が交差ポリゴン内で非線形の場合における群境界点を計算するための典型的な方法を示す平面図である。
【図１９】２以上の候補群境界点がある場合における群境界点を計算するための典型的な方法を示す平面図である。
【図２０】平面の交差上の群境界点を移動させる典型的な方法を示す透視図である。
【図２１】本明細書に記載している方法を点群データの具体的なセットに実施して得られた構造上のシナリオを用いた線図である。
【発明を実施するための形態】
【００１２】
図１は、本発明の典型的な１実施形態による装置の一般的な準備を示すブロック図である。スキャナー１２０は、一連のレーザパルスを放射するＬＩＤＡＲスキャニングモジュール１０２を含む。それらのレーザパルスは、関心物体１０４の表面の全域でスキャンされ、パルスが表面から反射されてスキャニングモジュールのセンサによって受信される。スキャナー１２０の処理モジュール１０６は、レーザパルスの飛行時間から表面上の点までの距離を計算してもよく、この距離データに基づいて点群を生成してもよい。点群データ１０８は、その後、更なる処理の前に点群データベース１１０に格納される。更なる処理が必要とされれば、点群データは、コンピュータ１１２に送られ、そのコンピュータの点群処理モジュールがそのデータを三次元表示（3D representation）１１８に変換する
方法を実行する。このような方法の１実施例が以下に詳細に述べられる。本方法が完了すれば、三次元表示１１８は、メモリ１１４にデータファイルとして記憶されてもよく、および／または見える形で出力されてもよい。
【００１３】
このような三次元表示が利用できる種々の応用がある。例えば、車のアセンブリラインのシナリオでは、相互に適合するように設計された種々の部品が、ＬＩＤＡＲスキャナーによってスキャンされてもよい。得られた点群は、三次元ベクトルモデルへ変換されることができ、その部品が個別の許容差の範囲内で相互に適合することができるかどうかを決定することができる。本明細書に記載するような自動化技術なしに前述したような従来技術を用いて正確な結果を達成するためには多大な工数を要し、要求される時間軸内では実行可能ではなかった。
【００１４】
別の応用例は、道路沿いのガードレールに関する。多くの公共団体が、高速で交通している道路上のガードレールに対して最低の高さを要求する。この要求の順守を保証するために、車に搭載されたスキャナーは、ガードレールのための点群データを生成するために道路の多くの区域でスキャンすることができる。このデータが三次元モデルに変換されることができて、レール高さが決定される。繰り返しになるが、データをベクトル図形モデルに変換するための手作業で行う方法は、長時間を要する。しかしながら、手作業で行う
作業者が異なれば同じ区域のレールに対して異なる高さを決定することがよく起こり得るので、問題はより悪くなる。既得の利益が異なるグループは、意図的にまたはそうでなくても、得られるモデルをモデル決定者（modeller）にとってより好ましい事実であるようなデータに適合するように提供するかもしれない。モデル決定者が十分に高い個別のガードレールを決定したが、それが正しくないとき、結果は悲惨になりうる。従って、以下に記載するような客観的な方法が好ましい。
【００１５】
0006378215.tif 000002
点群の点が１または２以上の三次元物体の表面に分布していると仮定する。この明細書に記載されている技術は、点群を物体のＣＡＤモデル表示に変換することである。これらは、閉じた平面ポリゴンの端部（物体の平面を表す）を有する線区画、および電力線、電話線のような平坦な平面を有しない物体を表している別の線区画、に接続されたセットから構成されている。（例えばパイプやトンネルのように）円筒のような非平面の表面を構成する物体は、物体の表面の接線方向である十分な数の小さな平面によって表される。本方法によって、どのような三次元物体でも表すことができる。
【００１６】
図２は、本方法の主ステップであるＭ１からＭ１２までを示すフローチャートである。
【００１７】
＜Ｍ１＞
物体によって占められた空間の位置に三次元格子を重ね合わせるステップ。格子は空間を仕切って、数は多いが有限なキューブ（cubes）のリストにする。コンピュータ記憶空間を浪費することを避けるために、リストは、いかなる空のキューブをも除外している。目下の実施形態においては、キューブは全て同じ大きさである。各キューブの辺の長さは、その分解能と呼ばれる。（例えば部分的にスキャンされた表面が非常に大きな曲率を有しているなどで）必要であれば、これらのキューブのいくつかをより小さいキューブにサブ分割することができ、それらを更にサブ分割することなどもできる。このような方法で、異なる局部的な分解能を異なる平面で使用することができる。三次元空間の別の区分化は、例えば４面体を用いることもまた可能である。以下においては、用語キューブが用いられているとはいえ、本方法は、４面体または別の空間充填モザイク加工にも等しく適用することが推奨される。
【００１８】
＜Ｍ２＞
空でないキューブのそれぞれを以下のように分類するステップ：一致的なキューブ（キューブ内の全ての点がおおよそ同じ位置に位置している）、同一平面上のキューブ（キューブ内の全ての点がおおよそ１つの平面内に存在している）、もしくは同一直線上のキューブ（キューブ内の全ての点がおおよそ１つの直線に沿って存在している）、または空間充填的なキューブ（局部的には点群は線でも表面でもない）。ステップＭ２の細部は図３に示されている下記のステップＡ１からＡ８で、より詳細に述べられる。
【００１９】
＜Ｍ３＞
その平面（それらの点群の点の平面）がおおよそ同一平面上に存在している、隣接する同一平面上のキューブを結合させることにより平面キューブセットを成長させるステップ。各平面キューブセットは、キューブセットの共通平面と呼ばれる単一の数学的平面に関連付けられている。ステップＭ３の終わりで、全ての同一平面上のキューブは完全に１つの平面キューブセットに属する。各平面キューブセットは、１または２以上の同一平面上のキューブを含む。ステップＭ３の細部は図４に示されている下記のステップＢ１からＢ２４で、より詳細に説明される。
【００２０】
＜Ｍ４＞
各平面キューブセットを以下のように平坦化するステップ。いかなる同一平面上のキュ
ーブでもその平面キューブセットの共通平面によって交差されていなければ、そのキューブを平面キューブセットから除き、共通平面上にその全ての点を投影する。いかなる投影された点でも、すでに平面キューブセットに属していないキューブ内で存在していれば、平面キューブセットにそのキューブを加える。このことは、ステップＭ４の終わりで、平面キューブセットはステップＭ２で同一平面上のキューブ、として分類されなかったキューブをも含んでも良いことを意味する。キューブは、現時点で２以上の平面キューブセットに属してもよい。しかしながら、２以上の平面キューブセットに属するいかなるキューブも、それが属している全ての平面キューブセットの共通平面によって交差される。ステップＭ４の細部は図５に示されている下記のステップＹ１からＹ８で、より詳細に説明される。
【００２１】
＜Ｍ５＞
各平面キューブセットが平面境界キューブセットを生成するステップ。これは、平面キューブセットの境界上の全てのキューブで構成される。ステップＭ５の細部は図６に示されている下記のステップＸ１からＸ１０で、より詳細に説明される。
【００２２】
＜Ｍ６＞
各平面キューブセットの境界ポリゴンが、平面キューブセットの外側の周りに、および平面キューブセットの内側のいかなる穴でもその周りに、平面キューブ境界セットに属しているキューブの端部を用いて順々に追跡されるステップ。ステップＭ６の細部は、図７に示されている下記のステップＺ１からＺ２１で、より詳細に説明される。
【００２３】
＜Ｍ７＞
群境界点が各境界ポリゴンの各端部に対して推定されるステップ。群境界点は境界ポリゴンとは異なり、その端部がキューブの表面に沿って存在しており、それぞれの群境界点が、各平面キューブセットの共通平面上に投影された点群の点の凸含（convex hull）に
近接して存在している。群境界点はステップＭ６で計算されたそれぞれ別個の境界ポリゴンに遭遇する順に格納される。ステップＭ７の細部は、図８に示されている下記のステップＵ１からＵ１１で、より詳細に説明される。
【００２４】
＜Ｍ８＞
いかなる群境界点でも別の平面キューブセットを有する共通平面の交差に十分接近して存在していれば、その群境界点の位置が交差の線上の最も近い点まで動かされるステップ。群境界点が２以上の平面を有する交差に十分接近して存在していれば、その群境界点は交差の最も近い点まで移動されるステップ。ステップＭ８の細部は、図９に示されている下記のステップＶ１からＶ１４で、より詳細に説明される。
【００２５】
＜Ｍ９＞
境界ポリゴンの端部が、（それらが）ステップＭ８の終わりで格納される順に異なる群境界点で構成されるポリラインに変換されるステップ。分離されたポリラインは、各境界ポリゴンに対して作られる。
【００２６】
＜Ｍ１０＞
その線がおおよそ同一直線である隣接する同一直線上のキューブが、線キューブセットを形成するために結合されるステップ。それぞれの線キューブセットは、そのキューブセットの共通線と呼ばれる単一の数学的直線に関連付けられている。ステップＭ１０の終わりに、全ての同一直線上のキューブが、完全に１つの線キューブセットに属する。それぞれの線キューブセットは、１または２以上の同一直線上のキューブを含む。ステップＭ１０の細部は、図１０に示されている下記のステップＷ１からＷ２４で、より詳細に説明される。
【００２７】
＜Ｍ１１＞
それぞれの線キューブセットを以下のように平坦化するステップ。いかなる同一直線上のキューブでも、その線キューブセットの共通線によって交差されていなければ、そのキューブをその線キューブセットから除き、共通線上にその全ての点を投影する。いかなる投影された点でも、すでに線キューブセットに属していないキューブ内に存在していれば、線キューブセットにそのキューブを加える。このことは、ステップＭ１１の終わりで、線キューブセットはステップＭ２で同一直線上のキューブ、として分類されなかったキューブをも含んでもよいことを意味する。キューブは２以上の線キューブセットに属してもよい。（事実、キューブは、線キューブセットおよび平面キューブセットに同時に属してもよい。）しかしながら、２以上の線キューブセットに属するいかなるキューブも、それが属している全ての線キューブセットの共通線によって交差される。ステップＭ１１の細部は、図１１に示されている下記のステップＴ１からＴ８で、より詳細に説明される。
【００２８】
＜Ｍ１２＞
それぞれの線キューブセットの共通線に沿った１または２以上の線区域の終点が識別されるステップ。ステップＭ１２の細部は、図１２に示されている下記のステップＳ１からＳ１６で、より詳細に説明される。  
【００２９】
すでに述べたように、このプロセスの最終結果は、従って、他の線区域はもちろん完全に定義された境界を有するポリゴンの製作である。個別の要求を満足しているポリゴン境界に隣接するところで、物体の端部の一部として定義されるように識別される更なる処理が行われてもよい。このような方法で十分なデータを有して、ますます多くのポリゴンを結合させることによって、完全な三次元物体を再構築することができる。これが達成されたときに、物体は重要な特徴の数および位置に関するその重要な特徴およびデータとして識別されることができて、その上、別の関連情報を三次元モデルのユーザに提供することができる。点群データから直接的に物体の識別または比較をすることは、たいへん非効率である。例えば、物体の点群が１０6個に及ぶ点を含んでいれば、２つのそのような物体
を比較することは、１０12に及ぶ計算が必要である（それぞれの計算は物体の点群の点の１つと同様な点の数を有する別の物体とを比較する）。それに反して、同じ物体が小さい数のポリゴン（例えば１００に及ぶポリゴン）で構成されているモデルによって表されていれば、必要とされる計算は、はるかに少ない（例えば１０，０００に及ぶ）ので、プロセスは計算的に、はるかに効率的である。街路風景のモデルにおいては、共通の街路調度品がそれらの形状（ポリゴンの組み合わせ）によって識別されてもよい。それらは、当事者によって抽出されることができる街路調度品の位置に関する正確な仮想のモデルまたはデータと交換されることができる。三次元画像を作り出すために平行な写真画像が利用できれば、それらから生じた画像部分は、表面を埋めるようなそれぞれのポリゴンに関連付けられてもよい。
【００３０】
図３は、（ステップＭ１で作られた）以下のような各キューブを分類するステップＡ１からＡ８を示すステップＭ２のフローチャートである。空のキューブ（キューブは、いかなる点も含んでいない）、一致的なキューブ（キューブの全ての点がおおよそ同じ位置に位置している）、同一平面上のキューブ（キューブの全ての点がおおよそ１つの平面に存在している。）、同一直線上のキューブ（キューブの全ての点がおおよそ１つの直線に沿って存在している。）、または空間充填的なキューブ。全ての場合において、点群の点が、２または３以上のキューブの間で面または頂点に正確に存在していれば、それらのキューブのうちのただ１つが、その点を含んでいると見なされることに留意されたい。
【００３１】
数学的な表面および線は厚さがゼロである。点群は、測定誤差、およびまとめてノイズと呼ばれる他のゆらぎを被るので、点群の点それら自身は、それらを示す真の数学的な表
面または線から少し離れて存在してもよい。これを許容するために、ステップＡ１からＡ８に記載された計算は、厚さの許容差を利用する。その最適な値は、点群の正確さに依存する。
【００３２】
0006378215.tif 000003
【００３３】
0006378215.tif 000004
【００３４】
分類プロセスは以下である。
【００３５】
＜Ａ１＞
空でないキューブのリスト内で最初のキューブを選択するステップ。
【００３６】
＜Ａ２＞
ヤコビの方法、または任意の他の有効な方法を用いて、キューブの中に含まれている点群の点の共分散行列の３つの固有値を計算するステップ。いかなる負の固有値もゼロに設定する。キューブ内に正確に１つの点があれば、３つの固有値は全てゼロに設定する。
【００３７】
＜Ａ３＞
全ての固有値が厚さのしきい値よりも小さければ、キューブを一致的として分類し、ステップＡ７へ進むステップ。これは、キューブ内の全ての点がおおよそ一致するときに起こる。
【００３８】
＜Ａ４＞
固有値の２つのみが厚さの許容差よりも小さければ、同一直線上のキューブと分類し、ステップＡ７へ進むステップ。これは、キューブ内の全ての点が同じ数学的な直線におおよそ沿って存在しているときに起こる。
【００３９】
＜Ａ５＞
固有値の１つのみが厚さの許容差よりも小さければ、同一平面上のキューブと分類し、ステップＡ７へ進む。これは、キューブの全ての点が同じ数学的な平面内におおよそ存在しているときに起こる。
【００４０】
＜Ａ６＞
キューブが空間を満たしているように分類する。これは、空ではないキューブが、一致的なキューブ、同一直線上のキューブ、および同一平面上のキューブ、ではないときに起こる。
【００４１】
＜Ａ７＞
キューブがリストの最後であれば、停止する。
【００４２】
＜Ａ８＞
リスト内の次のキューブを選びステップＡ２へ進む。
【００４３】
図４は、以下の詳細ステップＢ１からＢ２４に示す、共通平面に沿って隣接する同一平
面上のキューブのセットを成長させるステップＭ３のフローチャートである。このような方法で成長した同一平面上のキューブの各セットは、平面キューブセットと呼ばれる。
0006378215.tif 000005
【００４４】
0006378215.tif 000006
【００４５】
0006378215.tif 000007
【００４６】
0006378215.tif 000008
【００４７】
0006378215.tif 000009
ここでｕは、共通平面に垂直である単位長のベクトルであり、累積された共分散行列Ｖのユニークな最小の固有値に対応する累積された共分散行列Ｖの固有ベクトルに等しい。
【００４８】
本方法のステップＢ１４およびＢ２１で、２つの平面が同一平面上にあるかどうかを決定するために、現在の累積された共通平面を現在の同一平面上のキューブｌを通るように適合した平面と比較する。２つのステップにおいて異なる基準が用いられる。
【００４９】
0006378215.tif 000010
【００５０】
0006378215.tif 000011
【００５１】
基準ＢはステップＢ２１で用いられ、次式を要求する。
0006378215.tif 000012
【００５２】
0006378215.tif 000013
【００５３】
平面成長プロセスの実際のステップは、以下である。
【００５４】
＜Ｂ１＞
ステップＭ２で識別された同一平面上のキューブの全てを含んでいる、キューブの未使用リストを作るステップ。このリスト内のいかなるキューブも未使用キューブと呼ばれる。
【００５５】
＜Ｂ２＞
未使用リストが空であれば、停止するステップ。
【００５６】
＜Ｂ３＞
平面キューブセットと呼ばれるキューブの空のリストを作るステップ。この平面キューブセットは、平面キューブセット内のキューブの共通平面に沿って全ての同一平面上のキューブを含むように成長させられる。最終的に、平面キューブセットがただ１つしかキューブを含まなくても、キューブの未使用リスト内に現在ある全てのキューブは、平面キューブセットへ移す。
【００５７】
＜Ｂ４＞
未使用キューブのリスト内の最初のキューブに現在のキューブを設定するステップ。
【００５８】
＜Ｂ５＞
候補リストと呼ばれるキューブの空のリストを作るステップ。このリストは、平面キューブセットに含まれるための候補と見なされている、未使用の同一平面上のキューブを含むことになる。
【００５９】
＜Ｂ６＞
特殊リストとよばれるキューブの空のリストを作るステップ。このリストは、平面キューブセットに含まれるための候補として最近拒絶されている、未使用の同一平面上のキューブを含むことになる。
【００６０】
＜Ｂ７＞
未使用リストから現在のキューブを平面キューブセットの中に移すステップ。従って、全ての平面キューブセットは少なくとも１つのキューブを含む。
【００６１】
＜Ｂ８＞
平面キューブセット内の点の総計が現在のキューブ内の点の合計に等しいように設定するステップ。
【００６２】
＜Ｂ９＞
平面キューブセット内の点の外積の総計が現在のキューブ内の点の外積の合計に等しいように設定するステップ。
【００６３】
＜Ｂ１０＞
未使用リスト内に存在する現在のキューブの全ての隣接するキューブを候補リストに加えるステップ。ここで、キューブは、それ（キューブ）が現在のキューブと面または頂点を共有していれば、現在のキューブに隣接している。
【００６４】
＜Ｂ１１＞
候補リストが空であれば、ステップＢ１８へ進むステップ。
【００６５】
＜Ｂ１２＞
候補リスト内の最初のキューブに現在のキューブを設定するステップ。
【００６６】
＜Ｂ１３＞
現在のキューブを候補リストから除くステップ。
【００６７】
＜Ｂ１４＞
現在のキューブが基準Ａを満足しない場合には、その現在のキューブを特殊リストへ加えてステップＢ１１へ進むステップ。
【００６８】
＜Ｂ１５＞
現在のキューブを未使用リストから平面キューブセットへ移すステップ．
【００６９】
＜Ｂ１６＞
現在のキューブｌ内の点の合計ｓlを平面キューブセット内の点の累積された総計ｓに
追加するステップ。
【００７０】
＜Ｂ１７＞
現在のキューブｌ内の点の外積の合計Ｗlを平面キューブセット内の点の外積の累積さ
れた総計Ｗに追加してステップＢ１０へ進むステップ。
【００７１】
＜Ｂ１８＞
特殊リストが空であれば、平面キューブセットのデータを出力してステップＢ２へ進むステップ。
【００７２】
＜Ｂ１９＞
特殊リスト内の最初のキューブに現在のキューブを設定するステップ。
【００７３】
＜Ｂ２０＞
特殊リストから現在のキューブを除くステップ。
【００７４】
＜Ｂ２１＞
現在のキューブが基準Ｂを満足しなければ、ステップＢ１８へ進むステップ。
【００７５】
＜Ｂ２２＞
現在のキューブを未使用リストから平面キューブセットへ移すステップ。
【００７６】
＜Ｂ２３＞
現在のキューブｌ内の点の合計ｓｌを平面キューブセット内の点の累積された総計ｓに追加するステップ。
【００７７】
＜Ｂ２４＞
現在のキューブｌ内の点の外積の合計Ｗｌを平面キューブセット内の点の外積の累積された総計Ｗに追加してステップＢ１８へ進むステップ。
【００７８】
図５は、平面キューブセット内の全てのキューブがその共通平面によって交差されることを保証するために平面キューブセット内の各キューブへ適用される、ステップＹ１からＹ８に詳細を示すステップＭ４のフローチャートである。ステップＭ４の効果は、平面キューブセットを平坦化することである。新しいキューブがステップＭ３において平面キューブセットに加えられるたびに共通平面が変わるので、ステップＭ４は必要である。平面キューブセットの成長プロセスにおいて、初期に加えられたキューブが、共通平面が変化した後でその共通平面によって交差されていることを継続している、という保証はない。ステップＭ４はこれを補償する。ステップＹ１からＹ８は平面キューブセット内の全てのキューブに対して別々に適用されるので、もし必要であれば並列に適用することもできる。
【００７９】
平面キューブセットが平坦化されるプロセスのステップは以下である。
【００８０】
＜Ｙ１＞
キューブが共通平面によって交差されていれば、停止するステップ。
【００８１】
＜Ｙ２＞
キューブを平面キューブセットから除くステップ。
【００８２】
＜Ｙ３＞
キューブ内の第１の点群の点に現在の点を設定するステップ。
【００８３】
＜Ｙ４＞
0006378215.tif 000014
【００８４】
＜Ｙ５＞
投影された点を含むキューブを探し出すステップ。このキューブを投影されたキューブと呼ぶ。この計算の正確な詳細は、キューブが空間に如何に配置されているかによって決まる。１例においては、キューブは、行、列、および層に配置されている。
0006378215.tif 000015
【００８５】
＜Ｙ６＞
0006378215.tif 000016
【００８６】
＜Ｙ７＞
現在の点がキューブ内の最後の点群の点であれば、停止するステップ。
【００８７】
＜Ｙ８＞
キューブ内の次の点群の点に現在の点を設定してステップＹ４へ進むステップ。
【００８８】
図６は、ステップＸ１からＸ１０に詳細を示すステップＭ５のフローチャートであり、平面キューブセットには属していないが共通平面によって交差されている隣接するキューブを有する平面キューブセットのメンバーを識別するために適用される。識別ざれたキューブは平面境界キューブセットに格納される。ステップＭ５が適用される段階で、各平面キューブセットは、それらのキューブの全てが共通平面によって交差されているので平坦化されている。
【００８９】
＜Ｘ１＞
空の平面境界キューブセットを作るステップ。
【００９０】
＜Ｘ２＞
平面キューブセットが空であれば、停止するステップ。
【００９１】
＜Ｘ３＞
平面キューブセット内の最初のキューブに現在のキューブを設定するステップ。
【００９２】
＜Ｘ４＞
現在のキューブに直交して隣接する１８のキューブを含んでいるリストを生成するステップ。ここで、直交して隣接するキューブとは、その現在のキューブと平面または端部を共有するキューブを意味する。現在のキューブとただ１つの頂点のみを共有しているキューブは、直交して隣接するキューブではない、ことに留意されたい。
【００９３】
＜Ｘ５＞
直交して隣接するキューブのリストの最初のキューブにテストキューブを設定するステップ。
【００９４】
＜Ｘ６＞
テストキューブが平面キューブセットのメンバーであれば、ステップＸ８へ進むステップ。
【００９５】
＜Ｘ７＞
共通平面がテストキューブと交差していれば、現在のキューブを平面境界キューブセットへ加えてステップＸ９へ進むステップ。
【００９６】
＜Ｘ８＞
テストキューブが、隣接して直交するキューブのリスト内の最後のキューブでなければ、リストの次のメンバーにテストキューブを設定してステップＸ６へ進むステップ。
【００９７】
＜Ｘ９＞
現在のキューブが平面キューブセットの最後のキューブであれば、停止するステップ。
【００９８】
＜Ｘ１０＞
平面キューブセット内の次のキューブに現在のキューブを設定してステップＸ４へ進むステップ。
【００９９】
図７は、それぞれの平面キューブセットの境界ポリゴンを追跡するために適用される
サブステップＺ１からＺ２１に詳細を示すステップＭ６のフローチャートである。ステップＭ６が適用される段階で、それぞれの平面キューブセットは、それらのキューブの全てがそれらの共通平面に交差されるように平坦化されている。共通平面に交差しているいかなるキューブ（平面キューブセットに属さないキューブも含む）をも有する共通平面の交差は、キューブの交差ポリゴンと呼ばれる凸型ポリゴンである。共通平面によって交差されているどのような２つのキューブも、それらの交差ポリゴンが少なくとも１つの共通端部を共有していれば、同一平面上に隣接するキューブと言わなければならない。交差ポリゴンを有するキューブがただ１つの頂点のみを共有していれば、同一平面上に隣接してはいないことを注記しておく。例えば、図１４では、ポリゴンＤ0Ｃ0Ｐ0およびＣ0Ｂ0Ｑ0はポリゴンＡ0Ｂ0Ｃ0Ｄ0Ｅ0の同一平面上に隣接しているが、ポリゴンＣ0Ｑ0Ｐ0は隣接していない。
【０１００】
ポリゴンファン（polygonal fan）は、各ポリゴンが、おそらく最後を除いてリスト内
の次のポリゴンと共通端部を共有している中心の頂点の周りに連続的に配置された、２または３以上の凸状ポリゴン（convex polygons）のリストである。例えば、図１４におい
ては、ポリゴンＣ0Ｄ0Ｅ0Ａ0Ｂ0、Ｃ0Ｂ0Ｑ0、Ｃ0Ｑ0Ｐ0、およびＣ0Ｐ0Ｄ0は、中央の頂点Ｃ0に関して４つのメンバーからなるポリゴンファンを有している。共通端部は、Ｃ0Ｂ0、Ｃ0Ｑ0、およびＣ0Ｄ0である。同様に、図１５においては、ポリゴンＧＨＯ、ＧＯＢ
、およびＧＢＦは中央の頂点Ｇに関して３つのメンバーからなるポリゴンファンを有している。共通端部は、ＧＯおよびＧＢである。
【０１０１】
以下に簡潔に述べれば、平面キューブセットに属しているキューブの交差ポリゴンは、内部ポリゴンと呼ばれ、それ以外は外部ポリゴンと呼ばれる。平面境界キューブセット内の全てのキューブの交差ポリゴンは内部ポリゴンであり、少なくとも１つの外部ポリゴンの同一平面上に隣接するポリゴンである。内部ポリゴンと外部ポリゴンとの間で共有された端部は、外部端部と呼ばれる。それらは、平面キューブセットの境界ポリゴンと呼ばれる１または２以上の近接している（しかし凸状でなくてもよい）ポリゴンを形成する。境界ポリゴンの連続している端部は、そのメンバーが全て内部ポリゴンであるポリゴンファンの連続している端部である。ステップＭ６によって追跡されるのは、これらの境界ポリゴンである。
【０１０２】
平面キューブセットは、それが平面キューブセットの中に１または２以上の穴を有しているか、および／または、平面キューブセットのキューブが同じキューブセットの別の部分から切断されている１または２以上の部分を形成しているか、または、共通頂点によってのみ他に接続されていれば、２以上の境界ポリゴンを有することになる。１例が図１５に示されている。ここでは、図面を簡単にするために全てのポリゴンが三角形である。陰影付きのポリゴンは、全てが内部ポリゴンである。陰影の付いていないポリゴンは、少なくとも１つの内部ポリゴンの同一平面上に隣接しているポリゴンである外部ポリゴンである。ＯＩＫ、ＯＫＣ、およびＯＢＧを除くすべての陰影を付けたポリゴンは、また平面境界キューブセットのメンバーである。図１５においては、３つの境界ポリゴン、ＡＢＣ、ＤＥＦＧＨＩＪＫＬＭＮ、およびＰＱＦがある。端部ＥＦおよびＦＰは、同じ境界ポリゴンの連続する端部ではない。なぜならば、交差ポリゴンＥＦＢおよびＰＱＦはそれらメンバーの全てが内部である１つのポリゴンファンのメンバーではないからである。それに反して、端部ＨＧおよびＧＦは、ポリゴンＧＨＯ、ＧＯＢ，およびＧＢＦによって形成された３つのメンバーからなるポリゴンファンの連続する端部である。同様に、端部ＡＢおよびＢＣは、ポリゴンＢＡＥ、ＢＥＦ、ＢＦＧ、ＢＧＯ、およびＢＯＣによって形成された５つのメンバーからなるポリゴンファンの連続する端部である。
【０１０３】
境界ポリゴンの端部は、以下のように追跡される。これはまた、図７を参照されたい。
【０１０４】
＜Ｚ１＞
境界ポリゴンの空のリストを作るステップ。
【０１０５】
＜Ｚ２＞
平面境界キューブセットが空であれば、停止するステップ。
【０１０６】
＜Ｚ３＞
平面キューブセット内の最初のキューブを現在のキューブとして選択するステップ。
【０１０７】
＜Ｚ４＞
現在のキューブの交差ポリゴン内の全ての外部端部を未使用としてマークを付けるステップ。
【０１０８】
＜Ｚ５＞
現在のキューブが平面境界キューブセット内の最後でなければ、セット内の次のキューブを現在のキューブとして設定してステップＺ４へ進むステップ。ステップＺ４およびＺ５は、平面境界キューブセット内の全てのキューブをループ化していて、それらの交差ポリゴンの全ての外部端部が未使用としてマーク付けされることを保証している。
【０１０９】
＜Ｚ６＞
新しい空の境界ポリゴンを作るステップ。境界ポリゴンは、共通平面の１つの境界の周りに追跡される順に今から増大させられる外部端部のリストである。
【０１１０】
＜Ｚ７＞
平面境界キューブセット内の最初のキューブを現在のキューブとして選択するステップ。
【０１１１】
＜Ｚ８＞
現在のキューブの交差ポリゴン内のいかなる未使用の外部端部をも現在の端部として選択するステップ。
【０１１２】
＜Ｚ９＞
現在の端部の２つのノードをＡおよびＢと名前を付けるステップ。その端部はノードＡから始まりノードＢで終わるとして処理される。端部の方向の選択はここでは任意である。
【０１１３】
＜Ｚ１０＞
現在の端部を境界ポリゴンへ加えるステップ。また、現在の端部を含むキューブをステップＵ２およびＵ７で使用するために格納するステップ。
【０１１４】
＜Ｚ１１＞
現在の端部を使用されたとしてマークを付けるステップ。
【０１１５】
＜Ｚ１２＞
現在のキューブの交差ポリゴン内の次のポリゴンの端部を探し出すステップ。これは、現在のポリゴンのユニークな端部（ＡＢではない）であり、Ｂをそのノードの１つとして有している。次のポリゴンの端部の別のノードをＣとして名前を付ける。図１６に示すように、次の端部の位置は、現在の端部のノードであるＢノードの位置に依存する。
【０１１６】
＜Ｚ１３＞
次の端部が外部端部であれば、ステップＺ１８へ進むステップ。
【０１１７】
＜Ｚ１４＞
現在のキューブのポリゴンの交差が、いかなる未使用外部端部をも残していなければ、平面境界キューブセットから現在のキューブを除くステップ。
【０１１８】
＜Ｚ１５＞
交差ポリゴンが次の端部ＢＣを含んでいるユニークな同一平面上の隣接するキューブに現在のキューブを設定するステップ。
【０１１９】
＜Ｚ１６＞
ノードＢをそのノードの１つとして有する現在のキューブ内の別の端部に次の端部を設定するステップ。別のノードをＣとして名前を付ける。
【０１２０】
＜Ｚ１７＞
次の端部が外部端部でなければステップ１５へ行き、それ以外はステップＺ１８へ進むステップ。ステップＺ１５からＺ１７は、ファンの中央頂点へ接続されている外部端部を有するファンのメンバーを見出すまでポリゴンのファンの全域にループする。例えば、ステップＺ１５の開始時に図１５における端部ＨＧが現在の端部であり、従ってＧＯが次の端部であると仮定する。ステップＺ１３は既にテストされており、ＧＯが外部端部ではな
いことを注記する。ステップＺ１５でＧＯＢに現在の交差ポリゴンを設定する。ステップＺ１６でＧＢに次の端部を設定する。ステップＺ１７では、ＧＢもまた外部端部でないので、ステップＺ１５へ戻る動作を引き起こす。ステップ１５はその時、ＧＢＦに現在の交差ポリゴンを設定し、ステップＺ１６でＧＦに次の端部を設定する。その時、ついに次の端部ＧＦが外部端部であるので、ステップＺ１７では、ループから抜け出るアクションを引き起こす。他方、ステップＺ１５の開始時に現在の端部がＧＦで次の端部がＦＢであれば、ステップＺ１５でＦＢＥに現在の交差ポリゴンを設定し、ステップＺ１６でＦＥに次の端部を設定する。このＦＥは外部端部であるので、ステップＺ１７で直ちにそのループから抜け出る。最後の例として、ステップＺ１５の開始時に、現在の端部がＡＢで次の端部がＢＥであると仮定する。そのとき、ステップＺ１５では、ＢＥＦに現在の交差ポリゴンを設定し、ステップＺ１６でＢＦに次の端部を設定する。ＢＦは外部端部ではないので、ステップＺ１７ではステップＺ１５へ戻るアクションを引き起こす。ステップＺ１５からＺ１７は繰り返され、端部ＢＧおよびＢＯを順に考慮するが、それらのいずれも外部端部ではないので、その後、ループを抜け出すときは外部端部ＢＣである。
【０１２１】
＜Ｚ１８＞
次の端部が境界ポリゴン内の最初の端部と同じでなければ、次の端部に現在の端部を設定してステップ１０へ進むステップ。
【０１２２】
＜Ｚ１９＞
現在のキューブのポリゴンの交差が、残されているいかなる未使用端部も有していければ、平面境界キューブセットから現在のキューブを除くステップ。
【０１２３】
＜Ｚ２０＞
境界ポリゴンを境界ポリゴンのリストへ加えるステップ。
【０１２４】
＜Ｚ２１＞
平面境界キューブセットが空でなければＺ６へ行き、それ以外は停止するステップ。
【０１２５】
図８は、群境界点の位置を計算するために適用されるステップＵ１からＵ１１に詳細を示すステップＭ７のフローチャートである。ステップＵ１からＵ１１は、ステップＭ６で計算されたそれぞれ別個の境界ポリゴンに適用される。ステップＵ４およびＵ８で必要とされるＡおよびＢノードは、ステップＭ６で格納されることができるか、または、それ以外に、境界ポリゴン内の前の端部および次の端部の頂点（vertices）を比較することによってそれらを推定することができることを注記しておく。
【０１２６】
＜Ｕ１＞
境界ポリゴン内の最初の端部に現在の端部を設定するステップ。
【０１２７】
＜Ｕ２＞
現在の端部が存在しているキューブに現在のキューブを設定するステップ。どのような端部でもそこに位置しているキューブの識別は、境界ポリゴンが追跡されたときにステップＺ１０で格納されている。そのキューブは、平面キューブセットのメンバーである。
【０１２８】
＜Ｕ３＞
先端の端部（leading edge）に現在の端部を設定するステップ。
【０１２９】
＜Ｕ４＞
現在の端部のＡノードにＰを設定するステップ。
【０１３０】
＜Ｕ５＞
現在の端部が境界ポリゴン内の最後の端部であれば、ステップＵ８へ進むステップ。
【０１３１】
＜Ｕ６＞
境界ポリゴンから次の端部を得るステップ。
【０１３２】
＜Ｕ７＞
次の端部が現在のキューブに位置していれば、次の端部に現在の端部を設定し、ステップＵ６へ進むステップ。どのような端部でもそこに位置しているキューブの識別は、境界ポリゴンが追跡されたときにステップＺ１０で格納されている。ステップＵ６およびＵ７は、現在の端部が現在のキューブ内の最後の端部になるまで繰り返される。
【０１３３】
＜Ｕ８＞
現在の端部のＢノードにＱを設定する。
【０１３４】
＜Ｕ９＞
線ＰＱに対して最大の有向距離を有して投影された点群の点に群境界点を設定するステップ。点群の点は、ステップＹ４の式を用いて平面上に投影される。
0006378215.tif 000017
ここで、ｑは線ＰＱのいかなる点でもよく（最も簡単にはＰまたはＱ）、ｖはＰＱに対する垂線であって共通平面に置かれてあり、単位長を有している。−ｖもまた、これらの条件を満足することを注記する。ｖおよび−ｖの正しい選択は、ｄkがまた、境界ポリゴ
ンの頂点である現在の交差ポリゴンのいかなる頂点に対しても負ではないこと、と、ｄk
がいかなる他の頂点に対しても正ではないこと、を検査することによってなされる。そのしるし（sign）が識別できるように、ｄkがゼロではない交差ポリゴンの少なくとも１つ
の頂点が常に存在している。ステップＵ９の幾何学的形状を図１７から図１９に示す。これら３つの図の全てにおいて交差ポリゴンは、ＰＣＱＢＡであり、境界ポリゴンの端部はＱＢ、ＢＡ、およびＡＰである。頂点Ｃのみが境界ポリゴンに置かれていない。法線ベクトルｖは、ｄkが増加する方向に示される。点群は、陰影を付した領域によって表されて
いる。投影された点群の点は、Ｘでマーク付けされた有向距離を最大化し、ＫＬは、ＰＱに平行であるＸを通る線である。
【０１３５】
＜Ｕ１０＞
群境界点を通る直線に近接しており、ＰＱに平行である交差ポリゴン内に別の投影された点群の点があれば、ステップＵ９で計算された群境界点の位置を通る平行線に十分に近接している全ての投影された点群の点の平均に群境界点を設定する。ここで、「十分に近接している」とは、平行線へのその距離が規定された許容差よりも小さい全ての投影された点群の点を意味し、それは小さいゆらぎでなければならず、解像度の１／４または１／１０と言える。ステップＵ１０の幾何学的形状は、図１９に示しており、ここで、ＫＬは、投影された点群の端部である。点群の点が均等に分散していると仮定すれば、十分にＫＬに近接しているＰＣＱＢＡ内の点の平均は、ほぼＸである。
【０１３６】
＜Ｕ１１＞
現在の端部が境界ポリゴン内の最後の端部でなければ、境界ポリゴン内の次の端部に現在の端部を設定してステップＵ２へ進み、それ以外は停止するステップ。
【０１３７】
図９は、群境界点を共通平面の対の間の線交差に移すように適用されるステップＶ１からＶ１４に詳細を示すステップＭ８のフローチャートである。
【０１３８】
＜Ｖ１＞
全ての平面キューブセットの共通平面のリストを作るステップ。このリストは、法線ベクトルを含み、共通平面の手段を含む。
【０１３９】
＜Ｖ２＞
共通平面のリストが空であれば停止するステップ。
【０１４０】
＜Ｖ３＞
共通平面のリスト内の最初の共通平面に現在の平面を設定するステップ。
【０１４１】
＜Ｖ４＞
現在の平面内の最初の群境界点に現在の群境界点を設定するステップ。群境界点は、ステップＭ８の目的に対していかなる順番にでもリストされることができる。特に、異なる境界ポリゴンに関連付けられている群境界点の間を区別することは必要ではない。
【０１４２】
＜Ｖ５＞
最少の距離を無限大へ設定するステップ。ここで、無限大とは、群境界点といかなる共通平面との距離よりも大きいことが保証されているいかなる正の数をも意味する。無限大に対する適切な値は、１０の３０乗である。
【０１４３】
＜Ｖ６＞
共通平面のリスト内の最初の共通平面に、隣接する平面を設定するステップ。
【０１４４】
＜Ｖ７＞
隣接する共通平面が現在の平面と同じであれば、ステップＶ１１へ進むステップ。
【０１４５】
＜Ｖ８＞
現在の隣接する平面の法線ベクトルの間の角度が十分に小さければ（１度未満と言えれば）ステップ１１へ進むステップ。この検査の目的は、ほぼ平行な平面の交差に対する無意味な計算を防ぐことである。
【０１４６】
＜Ｖ９＞
0006378215.tif 000018
【０１４７】
＜Ｖ１０＞
現在の群境界点とその投影との間の距離Ｄが最小距離よりも小さければ、最小距離をＤ
に設定して、現在の投影された点に最良の投影された点を設定するステップ。
【０１４８】
＜Ｖ１１＞
隣接する平面が共通平面のリスト内の最後の平面でなければ、共通平面のリスト内の次の平面に隣接する平面を設定してステップＶ７へ進むステップ。
【０１４９】
＜Ｖ１２＞
最小距離が十分に小さければ、最良の投影された点の位置に現在の群境界点の位置を移動させてステップＶ１３へ進むステップ。ここで、「十分に小さい」とは、小さな揺らぎ、すなわち、解像度の１／４または１／１０程度と言える揺らぎを意味する。幾何学的平面を示す図２０においては、ＡＢＣＤは個別の平面キューブセットの共通平面であり、ＤＣＦＥおよびＡＤＥＧは、ＤＣおよびＡＤに沿って共通平面ＡＢＣＤに交差している２つの近傍の平面キューブセットの共通平面である。破線ＭＮおよびＫＬは、ＤＣおよびＡＤに平行であり、点が交差線に十分に近いと見なされる距離を示している。点Ｐ1、Ｐ2、Ｐ3、およびＰ4は群境界点の例示的な位置である。Ｐ2およびＰ4からＤＣまでの距離は、十分に小さいのでそれら（Ｐ2およびＰ4）は、それらの投影をＱ2およびＱ4上へ移動される。群境界点Ｐ1はＤＣおよびＡＤの双方に十分小さい。しかしながら、それ（Ｐ1）はＡＤにより近接しているので、Ｑ1に移動される。これに反してＰ3は双方の交差に十分に近接していないので、移動されない。
【０１５０】
＜Ｖ１３＞
現在の群境界点が現在の平面に対する群境界点のリスト内の最後の群境界点でなければ、リスト内の次の群境界点に現在の群境界点を設定して、ステップＶ５へ進むステップ。
【０１５１】
＜Ｖ１４＞
現在の平面が共通平面のリスト内の最後でなければ、共通平面のリストの次の平面に現在の平面を設定してＶ３へ進み、それ以外は停止するステップ。
【０１５２】
図１０は、共通直線（共通線と呼ばれる）によって交差されている、隣接する同一直線上のキューブのセットを成長させるステップＷ１からＷ２４を示すフローチャートである。このような方法で成長した同一直線上のキューブの各セットは、線キューブセットと呼ばれる。
0006378215.tif 000019
【０１５３】
0006378215.tif 000020
【０１５４】
0006378215.tif 000021
【０１５５】
0006378215.tif 000022
【０１５６】
0006378215.tif 000023
【０１５７】
本方法のステップＷ１４およびＷ２１で、２つの直線が同一直線上に存在するかどうかを決定するために、現在の累積された線キューブセットに沿った数学的な直線を現在の同一直線上のキューブｌを通るように適合した直線と比較する。この２つのステップにおいては、異なる基準が用いられる。
【０１５８】
0006378215.tif 000024
基準Ａは、ここではｕが共通平面の基準ベクトルではなく、共通線に沿ったベクトルであることを除いては、ステップＢ１４で用いた基準Ａと同一である。図１３は、この観点から再解釈されてもよい。
【０１５９】
0006378215.tif 000025
【０１６０】
＜Ｗ１＞
ステップＭ２で識別された全ての同一直線上のキューブを含むキューブの未使用リストを作るステップ。このリスト内のいかなるキューブも未使用キューブと呼ばれる。
【０１６１】
＜Ｗ２＞
未使用リストが空であれば、停止するステップ。
【０１６２】
＜Ｗ３＞
線キューブセットと呼ばれるキューブの空のリストを作るステップ。この線キューブセットは、共通直線によって交差されている全ての同一直線上のキューブを含むように成長させられる。最終的には、線キューブセットがただ１つのキューブを含んでも、キューブの未使用リスト内に現在ある全てのキューブが、線キューブセットに移動される。
【０１６３】
＜Ｗ４＞
未使用リスト内の最初のキューブに現在のキューブを設定するステップ。
【０１６４】
＜Ｗ５＞
候補リストと呼ばれるキューブの空のリストを作るステップ。このリストは、線キューブセット内に含まれるための候補として見なされている未使用の同一直線上のキューブを含む。
【０１６５】
＜Ｗ６＞
特殊リストと呼ばれるキューブの空のリストを作るステップ。このリストは、線キューブセット内に含まれるための候補として、最近拒絶されている未使用の同一直線上のキューブを含む。
【０１６６】
＜Ｗ７＞
現在のキューブを未使用リストから線キューブセットへ移すステップ。従って、全ての線キューブセットは少なくとも１つのキューブを含む。
【０１６７】
＜Ｗ８＞
線キューブセット内の点の総計が現在のキューブ内の点の合計と等しくなるように設定するステップ。
【０１６８】
＜Ｗ９＞
線キューブセット内の点の外積の総計が現在のキューブ内の点の外積の合計と等しくなるように設定するステップ。
【０１６９】
＜Ｗ１０＞
未使用リスト内にある現在のキューブの全ての隣接するキューブを候補リストに加えるステップ。ここで、キューブが現在のキューブと面または頂点を共有していれば、そのキューブは現在のキューブに隣接するキューブである。
【０１７０】
＜Ｗ１１＞
候補リストが空であれば、ステップＷ１８へ進むステップ。
【０１７１】
＜Ｗ１２＞
候補リスト内の最初のキューブに現在のキューブを設定するステップ。
【０１７２】
＜Ｗ１３＞
現在のキューブを候補リストから除去するステップ。
【０１７３】
＜Ｗ１４＞
現在のキューブが、基準Ａを満たさなければ特殊リストに現在のキューブを加えて、ステップＷ１１へ進むステップ。
【０１７４】
＜Ｗ１５＞
現在のキューブを未使用リストから線キューブセットへ移すステップ。
【０１７５】
＜Ｗ１６＞
現在のキューブｌ内の点の合計ｓlを線キューブセット内の点の累積された総計ｓへ追
加するステップ。
【０１７６】
＜Ｗ１７＞
現在のキューブｌ内の点の外積の合計Ｗlを線キューブセット内の点の外積の累積され
た総計Ｗへ追加してステップＷ１０へ進むステップ。
【０１７７】
＜Ｗ１８＞
特殊リストが空であれば、線キューブセットのデータを出力してステップＷ２へ進むステップ。
【０１７８】
＜Ｗ１９＞
特殊リスト内の最初のキューブに現在のキューブを設定するステップ。
【０１７９】
＜Ｗ２０＞
現在のキューブを特殊リストから除去するステップ。
【０１８０】
＜Ｗ２１＞
現在のキューブが基準Ｃを満足しない場合は、ステップＷ１８へ進むステップ。
【０１８１】
＜Ｗ２２＞
現在のキューブを未使用リストから線キューブセットへ移すステップ。
【０１８２】
＜Ｗ２３＞
現在のキューブｌ内の点の合計ｓlを線キューブセット内の点の累積された総計ｓへ追
加するステップ。
【０１８３】
＜Ｗ２４＞
現在のキューブｌ内の点の外積の合計Ｗlを線キューブセット内の点の外積の累積され
た総計Ｗへ追加してステップＷ１８へ進むステップ。
【０１８４】
図１１は、線キューブセット内の全てのキューブがその共通線によって交差されることを保証するために線キューブセット内の各キューブに適用されるステップＴ１からＴ８に詳細を示すステップＭ１１のフローチャートである。ステップＭ１１の効果は、線キューブセットを平坦化させることである。ステップＭ１０で新しいキューブが平面キューブセットに追加されるごとに共通平面が変化するので、ステップＭ１１が必要である。線キューブセットの成長プロセスにおいて、初期に加えられたキューブが、それ（共通平面）が変化した後で、共通線に交差されていることを継続している保証はない。ステップＭ１１は、これに対して補償する。ステップＴ１からＴ８は、平面キューブセット内の全てのキューブに対して別々に適用されるので、もし必要であれば、並列に適用されることができる。
【０１８５】
線キューブセットが平坦化されるプロセスのステップは、以下である。
【０１８６】
＜Ｔ１＞
キューブが共通線によって交差されていれば、停止するステップ。（このキューブには
、更なるアクションは必要ではない。）
【０１８７】
＜Ｔ２＞
キューブを線キューブセットから除去するステップ。
【０１８８】
＜Ｔ３＞
キューブ内の点群の点へ現在の点を設定するステップ。
【０１８９】
＜Ｔ４＞
0006378215.tif 000026
【０１９０】
＜Ｔ５＞
投影された点を含んでいるキューブを探し出すステップ。このキューブを投影されたキューブと呼ぶ。投影されたキューブがどのようにして計算されるか、の詳細についてはステップＹ５を参照されたい。
【０１９１】
＜Ｔ６＞
投影されたキューブが、線キューブセットに属していなければ、投影されたキューブを線キューブセットへ加えるステップ。
【０１９２】
＜Ｔ７＞
現在の点がキューブ内の最後の点群の点であれば、停止するステップ。
【０１９３】
＜Ｔ８＞
キューブ内の次の点群の点に現在の点を設定してステップＴ４へ進むステップ。
【０１９４】
図１２は、線キューブセット内の共通線の終点を識別するために適用される、ステップＳ１からＳ１６に詳細を示す、ステップＭ１２のフローチャートである。ステップＭ１２が適用される段階で、それぞれの線キューブセットは、全てのそれらのキューブがそれらの共通線によって交差されているという特性を有している。共通線によって交差されている、いかなるキューブ（線キューブセットのメンバーではないキューブも含んでいる）も、キューブの交点と呼ばれる２つの点（一致的であってもよい）で共通線に一致する。
【０１９５】
共通線によって交差されており、交点を共有するいかなる２つのキューブも、同一直線上の隣接するキューブと呼ばれる。線キューブセットのメンバーがただ１つである２つの同一直線上の隣接するキューブによって共有されている、いかなる交点も線キューブセットの終点と呼ばれる。ステップＭ１２では、線キューブセットが３以上の終点を有する可能性も許容する。
【０１９６】
ステップＭ１２は、それぞれの線キューブセットに対して別々に適用される。それは、線キューブセットからキューブを、セットが空になるまで、漸進的に除去する。ステップＭ１２は、並列的に適用されることができる。
【０１９７】
＜Ｓ１＞
ＡおよびＢのノード対の空のリストを作るステップ。ステップＭ１２の完了で、リスト内の各ノード対は、線キューブセットの共通線に沿った１つの線区画の２つの終点を示すことになる。
【０１９８】
＜Ｓ２＞
線キューブセットが空であれば、停止するステップ。
【０１９９】
＜Ｓ３＞
線キューブセット内の最初のキューブへ現在のキューブを設定するステップ。
【０２００】
＜Ｓ４＞
現在のキューブが線キューブセットの終点を含んでいなければ、線キューブセットから現在のキューブを除去してステップＳ６へ進むステップ。
【０２０１】
＜Ｓ５＞
線キューブセット内の次のキューブに現在のキューブを設定してステップＳ４へ進むステップ。ステップＳ５においては、次のキューブは線キューブセット内に残されている任意のキューブでよい。
【０２０２】
＜Ｓ６＞
現在のキューブの交点に現在のノード対を設定するステップ。
【０２０３】
＜Ｓ７＞
現在のノード対の双方のノードが線キューブセットの終点であれば、１つのノードにＡと名前を付け、別のノードにＢと名前を付けてステップＳ１６へ進むステップ。
【０２０４】
＜Ｓ８＞
現在のノード対のユニークな終点をＡとして格納するステップ。
【０２０５】
＜Ｓ９＞
次のキューブを、線キューブセットのメンバーである現在のキューブのユニークな隣接するキューブへ設定するステップ。
【０２０６】
＜Ｓ１０＞
現在のキューブを前のキューブとして格納するステップ。
【０２０７】
＜Ｓ１１＞
現在のキューブを次のキューブへ設定するステップ。
【０２０８】
＜Ｓ１２＞
現在のキューブを線キューブセットから除去するステップ。
【０２０９】
＜Ｓ１３＞
現在のノード対を現在のキューブの交点に設定するステップ。
【０２１０】
＜Ｓ１４＞
現在のノード対の双方のノードが、終点でなければ、次のキューブを前のノードではない、ユニークな隣接するキューブに設定してステップＳ１０へ進むステップ。
【０２１１】
＜Ｓ１５＞
ユニークな終点をＢノードとして格納するステップ。
【０２１２】
＜Ｓ１６＞
ＡおよびＢノードが一致的（許容差の範囲内）でなければ、ＡおよびＢノードをノード対のリストに加えるステップ。
【０２１３】
＜Ｓ１７＞
ステップＳ２へ進むステップ。
【０２１４】
本発明の上記の個別の実施形態がキューブ（または、４面体を含む他のモザイク式にされている空間充填形状）を用いて記載しているとはいえ、当業者は、重なり合ったボリューム、特に、重なり合った球体、もまた用いることができると理解するであろう。そのような実施形態においては、近接しているボリュームは、その中央点が問題となるボリュームの中心点から予め定められた距離内に置かれてあるボリュームとして定義されても良い。
【０２１５】
図２１は、建築上のシーンを描くために点群データからベクトル画像への変換の結果を示す。画像内の個別の大きさの測定は、容易に決定することができ、建築家は、ベクトル画像を修正された設計図を製作するために描くことを操作することができる。これにより、建築家が物理的な建物／環境や手書きから作られた三次元モデルを実験室での測定を行うことの問題を避ける。
【０２１６】
当業者は、さまざまな異なる技術がＬＩＤＡＲおよび写真測量法を含む点群データの生成のために用いられてもよいことを高く評価するだろう。これらの技術の種々のバリエーションは、正しい位置データだけではないものを含む種々の点群を生成してもよい。この追加データは、また、記載した方法のなかに組み込まれてもよい。例えば、点群の各点は、色または明度（intensity）の情報を含んでもよい。一度、表面が識別されれば、表面
の着色または明度のマッピングは、モデル上にその表面を最初に識別した点の色または明度を用いて行われてもよい。
【０２１７】
記載された方法は、また三次元モデルの正確さを向上させるために他の画像技術と組み合わせて使用されてもよく、および／または、更なる画像データを用いてそのモデルを覆ってもよい。例えば、スキャナーは、三次元カメラと連動して用いられてもよい。写真のようにリアルな三次元環境が生成されるように、スキャニングおよび三次元写真撮影が同時に行われてもよい。
【０２１８】
本発明の明らかに異なる多くの実施形態を本発明の範囲から離れることなく行うことができるので、本発明が本発明の具体的な実施形態に限定されないのは当然のことである。
【図１】
0006378215.tif 000027
【図２】
0006378215.tif 000028
【図３】
0006378215.tif 000029
【図４】
0006378215.tif 000030
【図５】
0006378215.tif 000031
【図６】
0006378215.tif 000032
【図７】
0006378215.tif 000033
【図８】
0006378215.tif 000034
【図９】
0006378215.tif 000035
【図１０】
0006378215.tif 000036
【図１１】
0006378215.tif 000037
【図１２】
0006378215.tif 000038
【図１３】
0006378215.tif 000039
【図１４】
0006378215.tif 000040
【図１５】
0006378215.tif 000041
【図１６】
0006378215.tif 000042
【図１７】
0006378215.tif 000043
【図１８】
0006378215.tif 000044
【図１９】
0006378215.tif 000045
【図２０】
0006378215.tif 000046
【図２１】
0006378215.tif 000047