図1のフローチャートを参照して、3Dシーン(例えば、現実の環境を表すもの、例えば、センサを介して取得されたもの)における3Dモデル化オブジェクト(例えば、現実の物体を表すもの、例えば、物理的な製品を表すもの、センサを介して取得されたもの、あるいはユーザによって設計されたもの)の位置を特定(すなわち、位置に関する情報を出力)するための、コンピュータによって実施される方法が提案される。3Dモデル化オブジェクトおよび3Dシーンは、それぞれ、3D点(例えば、他のタイプの所定のデータに基づいて、例えば、所定の、あるいは方法内で決定された、ジオメトリ/形状の表現)を含み、各3D点はそれぞれの法線ベクトル(例えば、3D点など、他のタイプの所定のデータに基づいて、例えば、所定の、あるいは方法内で決定された、ジオメトリ/形状に対する面法線の表現)に関連付けられている(すなわち、特定のリンクデータ、例えば、ポインタ、あるいは各3D点について関連データの取得を可能にする他の任意のデータを用いて、リンクされている)。本方法は、3Dシーン内において3Dモデル化オブジェクトの位置決めを行うステップ(S10)(すなわち、1つまたは複数の3D位置を提供するルール/機能を記述するデータを決定する任意の演算)を含む。
後に詳述するように、3Dモデル化オブジェクトは、物体(例えば、製品のような、仮想または現実の物体、例えば、機械部品または消費者製品のような、部品、または部品の集合体)を表し、その3D表現を可能にする任意のデータセットである。3Dシーンもまた3Dモデル化オブジェクトであり、3Dモデル化オブジェクトによって(本方法の位置特定に基づき)表された物体が配置される可能性のある環境(すなわち、物体のセット/集合体およびそれらの間の空きスペース)を表す。3Dシーンは、仮想シーンあるいは現実シーンの表現(例えば、3Dモデル化オブジェクトによって表される現実の物体の1つのバージョンを含んでいる可能性がある)であってもよく、例えば、RGBデータおよび/または深度データおよび/または光学データなど、物理センサを介して取得されたジオメトリを含む(例えば、structure−from−motion解析および/またはRGB深度再構成、または他の任意の、センサに基づく3D再構成のような、3D再構成を介して得られた任意の3Dシーン)。本方法は、このような3Dシーンにおける3Dモデル化オブジェクト(これは上述のようなセンサに基づく任意の3D再構成を介して、あるいはユーザが3Dモデル化オブジェクトを例えばCADシステムで設計することによって得られる)の位置特定を行うためのものである。
「位置特定」とは、単に、本方法が、3Dモデル化オブジェクトの位置に関する情報を出力することを意味する。そのような出力情報は、位置決めS10の結果から導出され、「位置決め」は、3Dシーンにおける3Dモデル化オブジェクトの位置決めをするための少なくとも1つのルール/機能(当該ルール/機能も「位置決め」と呼ぶ)を決定(および/または、テスト、および/または提供)することに相当する(後に示す例では、「位置決め」は剛体運動、すなわち、並進運動および/または回転であり、以下の事実を意味する。すなわち、3Dモデル化オブジェクトおよび3Dシーンが、それぞれ、例えば正規直交するそれぞれの基準フレームに関連付けられており、3Dモデル化オブジェクトに対応するフレームは、3Dシーンに対応するフレームに対して、何らかの方法で、例えば、任意に、位置決めされており、また、位置決めは、3Dモデル化オブジェクトが3Dシーン内に正確に配置されるように、3Dモデル化オブジェクトに対してフレームを「再配置」する剛体運動(これは本方法の特定のやり方で実施される)に相当する。そのような出力情報は、3Dシーン内において3Dモデル化オブジェクトの位置に関する任意の情報であってもよい(例えば、本方法は、シーン内の3Dモデル化オブジェクトの存在の有無を認識するためにのみ使用されてもよい)。この情報は、例えば少なくとも1つの剛体運動を含む、3Dシーン内に3Dモデル化オブジェクトを配置するための規則を含むことができる(例えば、3Dシーン内の3Dモデル化オブジェクトの最初の位置決め、例えば任意の、および/または所定の、または本方法内で決定された位置を参照する)。3Dモデル化オブジェクトの、可能性のあるいくつかの位置が提供されてもよい。また、位置決めS10は、3Dモデル化オブジェクトが3Dシーン内に位置していない(従って、位置決めが出力されていない)と判定される結果になる可能性もある。また、本方法は、信頼性情報(例えば、可能性のあるそれぞれの位置に関連付けられた信頼性/重要性のレベル)を決定するか、あるいは、(例えば、システマチックに、あるいは信頼性の閾値に達したときに)(例えば、S10によって提供される)1つまたは複数の最適な位置を出力してもよい。さらに、本方法は、単一の3Dモデル化オブジェクト上で実行されてもよく、または基本3Dモデル化オブジェクトの異なるバージョン上で繰り返し実行されてもよい(例えば、異なる縮尺や、異なる修正を加えた場合においても、「3Dモデル化オブジェクト」という表現は、その基本バージョンまたは修正バージョンの両方を区別せずに指す)。こうした検討は、3Dシーン内において3Dモデル化オブジェクトの位置特定を行う従来技術から周知である。
一例において、位置決めS10は、オプションとしてそれぞれが重要性レベルを有する、3Dシーン内の3Dモデル化オブジェクトの1つまたは複数の最良の位置決め機能を決定することに相当してもよく、位置特定は、場合によっては決定ステップの結果として生じるフィルタリングの後に、位置決めS10の結果を出力するだけであってもよい(決定は、所定の重要性閾値、例えば、各重要性レベルと比較される閾値に基づく)。このような位置特定には、異なる周知のアプリケーションがある可能性がある(すなわち、位置特定は、当該アプリケーションの前または実行中、例えばリアルタイムで、行われる)。
あるアプリケーションでは、本方法は、仮想現実の拡張に(例えばマーカーレスで、また、例えばリアルタイムで)用いることができる。3Dシーンは仮想環境であり、その中における3Dモデル化オブジェクトの位置が(例えば、ユーザが仮想現実に没入すること、および/または、その中で移動するなど仮想現実に対して対話操作を行うことを含む、仮想現実の方法よりも先に、または、同時に、すなわちリアルタイムで)特定される。この位置特定は、仮想環境(すなわち、3Dシーン)にデータを追加(例えば3Dモデル化オブジェクトに関連する追加データ、例えば非ジオメトリデータ、例えばユーザ定義データ、例えばモデル化オブジェクトのCADバージョン上で作業し、制約、正確なジオメトリ、および/または表現された現実の物体のセンサに基づく3D再構成では直接得られない任意のデータなど、任意のタイプの情報を追加)するのに使用可能であり、それによって仮想現実(例えば、拡張前のモデル化オブジェクトについての最小限のデータのみ(例えばジオメトリデータのみ)を含む仮想現実)を豊かなものにする。本方法は、堅牢で正確な位置特定を実行するため、マーカーレスで(すなわち、後で位置特定を行うのを補助するために任意のマーカーを埋め込んだ3Dモデル化オブジェクトなしで)すべてを実行することができる。また、本方法は比較的速く実行されるため、リアルタイムで効率的に実行することができる。マーカーレスに対し、マーカー拡張現実とは、現実世界のシーンに特別な記号を配置し、コンピュータシステムがこの記号を認識して、追加の仮想オブジェクトを現実世界のシーンのビューの適切な場所に挿入することができるようにするマーカー拡張現実を指す。現実世界のシーンにあらかじめ定義された記号を配置することは必ずしも可能ではない。本方法は、明確に、マーカーレスの性能を提供する。
別のアプリケーションにおいて、本方法は、あらゆるstructure−from−motion解析3D再構成に適用することができる。structure−from−motion解析3D再構成(すなわち、現実のオブジェクトについての物理的データが、当該オブジェクトの3Dモデルを再構成するために、専用のセンサによって取得される)において、データ取得に中断期間が含まれている場合、本方法では、中断によって分離された2つの取得期間の修正を補助することができる。一方の期間中に取得されたデータ(すなわち3Dモデル化オブジェクト)の少なくとも一部は、実際には、他方の期間中に取得されたデータのみに基づいて再構成された3Dシーン内において位置を特定することができ(すなわち部分データに基づく「中間的」再構成)、それにより修正が達成される。これにより、完全な3D再構成のために、後で両方のデータセットを考慮/同期することが可能になる。RGD−Dデータセットは、RGB−Dカメラを使用して3Dシーンをキャプチャすることができる場合であってもよい。そのような装置は、RGB(赤、緑、青)の画素の画像を各画素に関連付けられた深度(D)情報とともに提供する。これは、キャプチャ処理中に並進運動または円運動に従ってカメラを動かすことによって得られる。カメラの動きが中断され、別の位置から再開された場合、結果として生じる2つのデータセットは、カメラのキャプチャ視点に接続されない。スキャン全体を再開する必要がある。これは、本方法により回避することが可能である。同様に、本方法は、同時に実行される3D再構成を同期させるために適用可能であり、それにより、その2つの3D再構成を融合して、その情報を共同で使用する。
例えば、本方法は、マーカーレス拡張現実を実行することができる任意のソフトウェア製品に実装することができる。そして、そのような製品は、以下の特徴を有することができる。すなわち、ソフトウェアは、シーン内のモデルの部分的なオクルージョンに対して堅牢であり、演算時間はシーンのサイズに対して線形であり、依存係数は1より小さく、ソフトウェアは、三角メッシュとは対照的に、鏡面対称を扱うことができ、かつ/または、点および法線ベクトルが関与する。本方法は、このように、拡張現実を扱うことができる。この技術は、コンピュータによって生成された仮想要素(場合により3Dオブジェクト)を現実世界のシーンの3Dビューに挿入するためのものである。多くのアプリケーション、すなわち、エンターテイメント、ツーリズム、観光、ゲーム、家具デザイン、軍事などが、拡張現実の恩恵を受ける。本方法は、RGB−Dデータセット管理ソフトウェアについても同様に使用することができる。上記先行技術の解決策は、異なる問題を特徴とする。それらは、鏡面対称のもとで不変の記述子を利用する。それらのソフトウェアでは、形状とその鏡面形状との間に違いがない。それらソフトウェアでは、モデルの代わりに、鏡像モデルの位置をシーンにおいて特定するかもしれない。さらに、これらの解決策は、すべてのモデルの対/シーン要素について網羅的な調査を頻繁に実行するため、演算時間の観点から問題がある。
その出力(上述)が何であれ、上記先行技術によって知られている種類の特定のアルゴリズムに従って位置決めが実行される(例えば、完全にまたは半自動的に)(アルゴリズムのいくつかの特異性に続き、位置決めS10および上記先行技術の位置決めについて、本方法の例を参照して後述する)。そのようなタイプのアルゴリズムは、第1の対のそれぞれについて、第2の対のそれぞれとの一致に対して報酬を与える。これについてここで説明する。
「対」は、(関連付けられた法線ベクトルを有する)点の順序付けられたペアを指す。本方法によって処理されるこれらの特定のデータセットは、便宜上、以下では単に(第1および/または第2の)「対」、または、さらなる利便性のため「ペア」と呼ぶ(すなわち、順序に関する側面を無視する)。「第1」の対は3Dモデル化オブジェクトに関連し、「第2」の対は3Dシーンに関連する。具体的には、第1の対は、3Dモデル化オブジェクトの2つの3D点と、それらに関連付けられた法線ベクトルからなり、一方、第2の対は、3Dシーンの2つの3D点と、それらに関連付けられた法線ベクトルとからなる。
ここで、位置決めS10は、第2の対に対して、3Dモデル化オブジェクトを「最良の方法」、例えば、後述の例を参照して説明する特定の方法で位置決め(または「整列」)を行う傾向がある。差し当たっては、位置決めS10は理論的位置を考慮するアルゴリズムに従うと言うことが可能であり、これは「探査」位置決めとも呼ばれる。これは、例えば、アルゴリズムが特定の制約下で最適化プログラムを解決することに相当し得る、最適化の分野で知られている。ここで、このアルゴリズムは、可能な解決策を検討すること(すなわち、理論上の位置の関連性を評価すること)に相当する任意のスキームであってもよく、位置を(理論的に)考慮する場合には、アルゴリズムは常に、位置決めに関する特定の条件に報酬を与える(あるいは同様に、満たされていない条件にペナルティを与える)。これはすべて、それ自体、最適化とアルゴリズムの分野で知られている。なお、本方法は、何らかのやり方で、特に暗示的に、このような報酬付与を(アルゴリズムの特定のステップとして)実施することができる。すなわち、アルゴリズムは、暗示的に報酬付与が行われている解決策に直接向かう(つまり、例えばエネルギーなどの最適条件を実際に探索するのではない)。言い換えれば、報酬付与は、アルゴリズムによって実行される所定の選択肢の背後に「隠されて」いてもよい。
具体的には、位置決めS10によって行われようとしている3Dシーンにおける3Dモデル化オブジェクトの任意の(理論上の)位置決めに関して、アルゴリズムは以下のように位置決めに報酬を与える。このアルゴリズムは、第1の対が、それぞれ第2の対の上に実質的に配置されているという事実、およびそのような第1の対に関して、記述子の値が第2の対についての記述子の値と、各回、実質的に等しいという事実に対し報酬を与える。言い換えれば、本方法は、第1の対(例えば、それらの最大数)を第2の対に送り(すなわちジオメトリの一致)、そのような対が同じ記述子の値を示すようにする傾向がある(すなわち、シナリオの現実の特性に固有のグローバルな最適化を意図した等価性および不完全性の「実質的な」特性)。さらに言い換えれば、アルゴリズムは、第1の対であって、それらが配置される対応する第2の対を持たない(またはそのような第2の対とほとんど一致しない)第1の対、および/または記述子の値の一致がない(またはほとんどない)第2の対にペナルティを課す。ここで、広く知られているように、これは一般に、多くの異なる方法で実施することが可能であり、それには、先行技術に記載された方法で行うこと、あるいは本方法の(1つまたは複数の)例の(1つまたは複数の)特異性を用いることが含まれる。
本方法は、コンピュータによって実施される。すなわち、本方法のステップ(あるいは略全てのステップ)が少なくとも1つのコンピュータ、または類似の任意のシステムによって実行される。よって本方法のステップは、コンピュータにより、完全に自動的に、あるいは半自動的に実行される可能性がある。例えば、本方法の少なくともいくつかのステップは、ユーザとコンピュータの対話を通じて始動されてもよい。求められるユーザとコンピュータの対話レベルは、想定される自動性のレベルに応じたものであって、ユーザの要望を実装する必要性との間でバランスをとるものとしてもよい。例えば、このレベルは、ユーザが設定し、および/または、予め定義されていてもよい。特に、位置決めS10は、アルゴリズムに従って完全に自動的に行われてもよく、例えば、プロセッサによって実行されてもよい。
本方法のコンピュータによる実施の典型的な例は、この目的に適したシステムを用いて本方法を実行することである。当該システムは、本方法を実行するための命令を含むコンピュータプログラムを記録したメモリに接続されたプロセッサ、および、グラフィカル・ユーザ・インターフェイス(GUI)を備えていてもよい。また、メモリはデータベースを記憶していてもよい。メモリは、そのような記憶に適した任意のハードウェアであり、場合により、物理的に区別可能ないくつかの部分(例えば、プログラム用に1つ、場合によりデータベース用に1つ)を含む。
データベースとは、検索および取得用に最適化されたデータ(すなわち情報)の任意の集合(例えば所定の構造化言語、例えばSQLに基づく、例えばリレーショナルデータベース)を意味する。データベースは、メモリに格納されると、コンピュータによる迅速な検索および取得を可能にする。データベースは、実際、様々なデータ処理動作と連動して、データの記憶、取得、修正、および削除を容易にするよう構造化されている。データベースは、それぞれ1つまたは複数のフィールドからなるレコードに分割可能な1つのファイルあるいはファイルのセットからなっていてもよい。フィールドは、データ記憶の基本単位である。ユーザは、主としてクエリによってデータを取得してもよい。ユーザは、使用されているデータベース管理システムのルールに従って、キーワードとソートコマンドを用いて、多数のレコードにおけるフィールドを、迅速に、検索、再配置、グループ化、および選択し、特定の集積データに関するレポートを取得または作成することができる。
本方法は、一般に、モデル化オブジェクトを操作する。モデル化オブジェクトは、例えばデータベースに格納されたデータによって定義される任意のオブジェクトである。さらには、「モデル化オブジェクト」という表現は、データそのものも指す。システムの種類に応じて、異なる種類のデータによってモデル化オブジェクトが定義されてもよい。実際、システムは、CADシステム、CAEシステム、CAMシステム、PDMシステム、および/またはPLMシステムのうちの任意のもの(あるいは任意の組み合わせ)であってもよい。それら異なるシステムにおいて、モデル化オブジェクトは、対応するデータによって定義される。したがって、CADオブジェクト、PLMオブジェクト、PDMオブジェクト、CAEオブジェクト、CAMオブジェクト、CADデータ、PLMデータ、PDMデータ、CAMデータ、CAEデータについて言及することがある。しかしながら、モデル化オブジェクトは、これらのシステムの任意の組み合わせに対応するデータによって定義されてもよいため、これらのシステムは、互いに排他的なものではない。したがって、以下に示すこのようなシステムの定義から明らかなように、システムは、CAD兼PLMシステムであってもよい。
CADシステムは、少なくとも、CATIAのようなモデル化オブジェクトのグラフィック表現に基づくモデル化オブジェクトの設計に適した任意のシステムをも意味する。この場合、モデル化オブジェクトを定義するデータは、モデル化オブジェクトを表現可能にするデータを含む。CADシステムは、例えば、辺や線を用い、また、場合により面や曲面を用いて、CADモデル化オブジェクトの表現を提供してもよい。線、辺、あるいは面は、例えば、非一様有理Bスプライン(NURBS)など、様々な様式で表現されてもよい。具体的には、CADファイルは仕様を含み、その仕様に基づきジオメトリが生成可能であり、よって表現が生成可能となる。モデル化オブジェクトの仕様は1つまたは複数のCADファイルに格納されていてもよい。CADシステムでモデル化オブジェクトを表現するファイルの典型的なサイズは、一部分あたり1メガバイトの範囲である。また、モデル化オブジェクトは、典型的には、数千の部分の集合体であってもよい。
CADの文脈において、モデル化オブジェクトは、典型的には、3Dモデル化オブジェクト、例えば、一つの部品や部品の集合体などの製品、あるいは製品の集合体を表現するものであってもよい。「3Dモデル化オブジェクト」は、3D表現が可能なデータによってモデル化される任意のオブジェクトを意味する。3D表現は、その部品をすべての角度から見ることを可能にする。たとえば、3Dで表現された3Dモデル化オブジェクトは、その軸のうちの任意の軸、あるいは、その表現が表示された画面中の任意の軸を中心に、処理して回転させることが可能である。これは、特に、3Dモデル化されていない2Dアイコンについては除外される。3D表現の表示は、設計を容易にする(すなわち、設計者が作業を達成するスピードを統計的に速める)。製品の設計は製造工程の一部であるから、これによって当該産業における製造工程が迅速化する。
3Dモデル化オブジェクトは、CADソフトウェア・ソリューションやCADシステム等を用いた仮想的デザインの完了後に実世界において製造される製品、すなわち(例えば機械的な)部品や、部品の集合(あるいは同様に部品の集合。なぜなら部品の集合は本方法の観点では一つの部品としてみることができ、また、本方法は集合体における各部品に独立して適用することができるからである)、より一般的には任意の剛体の集合体(例えば移動機構)などの製品のジオメトリを表現してもよい。CADソフトウェア・ソリューションは、航空宇宙、建築、建設、消費財、ハイテク機器、産業機器、輸送、海洋、および/または海洋石油/ガス生産、または交通を含む、限定されることのない様々な産業分野において製品の設計を可能にする。本方法により設計される3Dモデル化オブジェクトは、このように、地上車両の部品(例えば、自動車および軽トラック機器、レーシングカー、オートバイ、トラックおよびモーター機器、トラック、バス、電車を含む)、航空車両の部品(例えば、航空機体機器、航空宇宙機器、推進機器、防衛製品、航空路線機器、宇宙機器を含む)、海軍車両の部品(例えば、海軍用機器、商業用船舶、オフショア機器、ヨットおよび作業船、船舶用機器を含む)、一般的な機械部品(例えば、工業用製造機械、大型移動機械または機器、設置機器、産業機器製品、加工金属製品、タイヤ製造製品を含む)、電気機械部品または電子部品(例えば、家電、セキュリティおよび/または制御および/または計装製品、コンピューティングおよび通信機器、半導体、医療装置および設備を含む)、消費者製品(例えば、家具、家庭用および庭用製品、レジャー用品、ファッション用品、耐久消費財小売用品、織物類小売用品を含む)、包装(例えば、食品および飲料およびたばこ、美容およびパーソナルケア、家庭用製品包装を含む)などのように、任意の機械的部品であり得る工業製品を表してもよい。3Dシーンは、そのようなモデル化オブジェクトであってもよい。しかし、3Dシーンは、典型的には現実のシーンを表し、したがって、例えば、3Dは、場合により他のタイプのモデル化オブジェクト(例えば、工場、および/または、部屋、および/または、設備などのような、風景、および/または、空間、および/または、建物)と、特定のやり方で組み立てられた(あるいは並べられた)そのようないくつかのモデル化オブジェクトを含む。
PLMシステムは、物理的な、製造された製品(または製造される予定の製品)を表すモデル化オブジェクトの管理に適した任意のシステムをも指す。PLMシステムでは、モデル化オブジェクトは、このように、物理的な物体の製造に適したデータによって定義される。これらは、典型的には、寸法の値および/または公差の値であってもよい。物体を正しく製造するために、実際、このような値を用いるのが望ましい。
CAMソリューションとは、製品の製造データを管理するのに適した、ハードウェアのソフトウェアである、あらゆるソリューションをも指す。製造データは、一般に、製造する製品、製造工程、および必要なリソースに関するデータを含む。CAMソリューションは、製品の製造工程全体を計画し最適化するのに用いられる。例えば、実現可能性、製造工程の期間、または製造工程における特定のステップで使用されるリソース、例えば特定のロボットの数に関する情報をCAMユーザに提供することができる。これにより、管理や必要な投資についての決定を可能にする。CAMは、CAD工程、および、場合によりCAE工程に続く工程である。このようなCAMソリューションは、ダッソー・システムズにより、DELMIA(登録商標)として提供されている。
CAEソリューションとは、モデル化オブジェクトの物理的挙動の分析に適した、ハードウェアのソフトウェアである、あらゆるソリューションをも指す。よく知られており広く用いられているCAE技術は有限要素法(Finite Element Method:FEM)であり、これは、典型的には、モデル化オブジェクトを、物理的挙動を方程式によって計算しシミュレーションできる要素に分割することを含む。このようなCAEソリューションは、ダッソー・システムズにより、SIMULIA(登録商標)として提供されている。成長するCAE技術のもう1つは、CADジオメトリデータを使用せずに異なる物理分野の複数の要素で構成される複雑なシステムのモデリングと解析を行うことを含む。CAEソリューションはシミュレーションを可能にし、それにより、製造する製品の最適化、改善および検証を可能にする。このようなCAEソリューションは、ダッソー・システムズにより、DYMOLA(登録商標)として提供されている。
PDMはProduct Data Management(生産データ管理)の略である。PDMソリューションとは、特定の製品に関するすべての種類のデータを管理するのに適した、ハードウェアのソフトウェアである、あらゆるソリューションを指す。PDMソリューションは、製品のライフサイクルにかかわるすべての関係者によって使用されてもよい。これには、主として技術者のほか、プロジェクトマネージャー、財務担当者、営業担当者、およびバイヤーも含まれる。PDMソリューションは、一般に、製品指向のデータベースに基づく。これにより、関係者が製品に関する一貫したデータを共有することが可能になり、これにより、関係者が異なるデータを用いるのを防止する。このようなPDMソリューションは、ダッソー・システムズにより、ENOVIA(登録商標)として提供されている。
図2は、システムのGUIの一例を示し、本システムは、例えば、先に3Dモデル化オブジェクトの設計を行い、そして本方法によって位置特定を行う、CADシステムである。
GUI2100は、標準的なメニューバー2110,2120、ならびに底部および側面のツールバー2140,2150を有する典型的なCADのようなインターフェースであってもよい。このようなメニューバーおよびツールバーは、ユーザが選択可能なアイコンのセットを含み、各アイコンは、当技術分野で知られているように、1つまたは複数の操作または機能に関連付けられている。これらのアイコンのいくつかは、GUI2100に表示された3Dモデル化オブジェクト2000の編集および/または作業に適合したソフトウェアツールに関連付けられている。ソフトウェアツールはワークベンチに分類することができる。各ワークベンチは、ソフトウェアツールのサブセットを含む。特に、ワークベンチの1つは、モデル化製品2000のジオメトリ的特徴を編集するのに適した編集ワークベンチである。操作中、設計者は、例えば、オブジェクト2000の一部を予め選択し、次いで、適切なアイコンを選択することによって、操作を開始する(例えば、寸法、色などを変更する)か、ジオメトリ的制約を編集することができる。例えば、典型的なCAD操作は、スクリーン上に表示された3Dモデル化オブジェクトのパンチングまたは折り畳みのモデリングである。GUIは、例えば、表示された製品2000に関連するデータ2500を表示してもよい。図2の例では、「特徴ツリー」として表示されたデータ2500およびそれらの3D表現2000は、ブレーキキャリパおよびディスクを含むブレーキ部品に関するものである。GUIは、編集された製品の動作のシミュレーションを起動するため、または表示された製品2000の様々な属性を描画するために、例えばオブジェクトの3D定位を容易にするための様々なタイプのグラフィックツール2130,2070,2080をさらに示してもよい。カーソル2060は、ユーザがグラフィックツールを用いて対話操作ができるように、触覚デバイスによって制御されてもよい。
図3は、本システムの一例を示すものであって、当該システムは、クライアントコンピュータシステム、例えばユーザのワークステーションである。
本例のクライアントコンピュータは、内部通信バス1000に接続された中央演算処理装置(CPU)1010、および同じくバスに接続されたランダムアクセスメモリ(RAM)1070とを備える。クライアントコンピュータは、さらに、バスに接続されたビデオランダムアクセスメモリ1100と関連付けられたグラフィックス処理装置(GPU)1110を備える。ビデオRAM1100は、当該技術分野において、フレームバッファとしても知られる。大容量記憶装置コントローラ1020は、ハードドライブ1030などの大容量記憶装置へのアクセスを管理する。コンピュータプログラムの命令及びデータを具体的に実現するのに適した大容量メモリ装置は、例として、EPROM、EEPROM及びフラッシュメモリ装置のような半導体メモリ装置、内蔵ハードディスクやリムーバブルディスクなどの磁気ディスク、光磁気ディスク、およびCD−ROMディスク1040を含む、全ての形式の不揮発性メモリを含む。前述のいずれも、特別に設計されたASIC(特定用途向け集積回路)によって補完されてもよいし、組み入れられてもよい。ネットワークアダプタ1050は、ネットワーク1060へのアクセスを管理する。クライアントコンピュータはまた、カーソル制御装置、キーボードなどの触覚装置1090を含んでいてもよい。カーソル制御装置は、ユーザがディスプレイ1080上の任意の所望の位置にカーソルを選択的に位置させることを可能にするために、クライアントコンピュータ内で使用される。さらに、カーソル制御デバイスは、ユーザが様々なコマンドを選択し、制御信号を入力することを可能にする。カーソル制御装置は、システムに制御信号を入力するための多数の信号生成装置を含む。典型的には、カーソル制御装置はマウスであってもよく、マウスのボタンは信号を生成するために使用される。あるいは、または追加的に、クライアントコンピュータシステムは、感知パッドおよび/または感知スクリーンを備えてもよい。
コンピュータプログラムは、コンピュータによって実行可能な命令を含んでいてもよく、命令は、上記システムに方法を実行させるための手段を含む。プログラムは、システムのメモリを含む任意のデータ記憶媒体に記録可能であってもよい。プログラムは、例えば、デジタル電子回路、またはコンピュータハードウェア、ファームウェア、ソフトウェア、またはそれらの組み合わせで実装されてもよい。プログラムは、例えばプログラマブルプロセッサによる実行のための機械読み取り可能な記憶装置に具体的に実現された製品のような装置として実装されてもよい。方法ステップは、プログラム可能なプロセッサが命令のプログラムを実行し、入力データを操作して出力を生成することによって方法の機能を実行することによって実行されてもよい。したがって、プロセッサは、データ記憶システム、少なくとも1つの入力デバイス、および少なくとも1つの出力デバイスからデータおよび命令を受信し、また、それらにデータおよび命令を送信するようにプログラム可能であってもよく、またそのように接続されていてもよい。アプリケーションプログラムは、高水準の手続き型またはオブジェクト指向のプログラミング言語で、または必要に応じてアセンブリ言語または機械語で実装されていてもよい。いずれの場合も、言語はコンパイラ型言語またはインタープリタ型言語であってもよい。プログラムは、フルインストールプログラムまたは更新プログラムであってもよい。いずれの場合も、プログラムをシステムに適用すると、本方法を実行するための指示が得られる。
「3Dモデル化オブジェクトの設計」とは、3Dモデル化オブジェクトを作り上げる工程の少なくとも一部である任意の行為あるいは一連の行為を指す。したがって、本方法は、3Dモデル化オブジェクトを一から作ることを含んでもよい。あるいは、本方法は、以前に作成された3Dモデル化オブジェクトを提供し、次いで3Dモデル化オブジェクトを修正することを含んでいてもよい。
ここで、本方法の例を説明する。この方法の異なるオプションが例によって実装され、それらについて以下に詳述する。これらの例において、すべてのオプションが実装されるわけではなく、および/または、一部のオプションがわずかに変更され、異なる方法で実装されてもよい。
これらの例における方法は、「モデル」と名付けられた物理的な3Dディテールを、「シーン」と名付けられた、より広い物理的3D環境に配置してもよい。まず、3Dの物理的シーンおよびモデルは、点及び法線ベクトルからなる2つの有限集合の対にそれぞれ変換されてもよい(例えば、そのようなすでに有限となっている集合から開始するか、あるいは対応する無限集合をサンプリングすることによって行う)。一例では、点は3Dシーンおよびモデルの表面からサンプリングされる。法線ベクトルは、サンプリング点での3Dシーンおよびモデルの表面のものである。図4はそのようなサンプリングを例示している。図5は、典型的なモデルのサンプリング点を示し、図6は、シーンのそれを示す(像が3Dシーンによって表される環境内に明らかに存在するので、図5の像(すなわち3Dモデル化オブジェクト)の表現が実際に見つけられ、図6の3Dシーン内に配置されるべきことを示す図の例)。
本方法における関心の対象は、(点,法線)の対のペアであり、((点,法線),(点,法線))のようなものである。以下に説明する例では、本方法は、「3D投票」ステップを介して、モデルのペアをシーンのペアに変更するすべての剛体運動のうち最も頻度の高いものを選択してもよい。モデル内の「アンカーポイント」と呼ばれる3つの点を選択し、この選択は、モデルのペアをシーンのペアに変更する剛体運動によって変換されたすべてのアンカーポイントを格納することによって行ってもよい。これは、後述の「ペアからペアへの剛体運動」ステップである。最も頻繁な変換アンカーポイントは、「最良の剛体運動」が算出される、最も頻繁な剛体運動を開示する。さらに、例えば、ユーザが最良の剛体運動を後続の工程で使用できるかどうかを決定するために、「重要性レベル」を算出してもよい。パフォーマンス目的のために、全てのペアからペアへの剛体運動が調査されなくてもよい。(モデルの)ペアを(シーンの)類似のペアに変更する剛体運動のみが考慮されてもよい。あるペアに類似するペアは、数値署名を使用することによって集められ、専用のデータ構造に記憶されてもよい。これは、後述の「ペア署名」マッチングである。これらの個々のオプションのすべてを特徴とする方法の例が、図7のフローチャートに示されている。
例の方法がstructure−from−motion解析に適用されると、いくつかのことが可能になる。カメラのスキャンが中断された場合、シーンの一部が、連続したデータセットによって共有されるように、隣接する位置から再開することができる。本方法は、共有部分をマッチングすることによって、2つのデータセットの正しい再配置を算出することができる。これにより、中断または摂動を許容することができるため、スキャン工程がより堅牢になる。マーカーレス拡張現実とは、所定の記号による補助なしに現実世界のビューに追加の仮想オブジェクトを挿入することである。そのような状況に適用すると、例の方法は、仮想オブジェクトの適切な挿入位置を算出することができる。上記先行技術と比較して、例の方法の主要なオプションの利点は、堅牢でありつつも、必要な演算が少ない投票工程である。実際、例の方法は、シーンの一定数のペアを用いて動作するが、上記従来技術では、可能性のあるすべてのペアが考慮される一定数の「参照点」を用いて動作する。例の方法は、(1)使用するシーンのペアのセットを適切に選択し、(2)2つのペア間の剛性変換を算出するための直接的な方法を有し、また(3)変換のためにグローバルに投票する方法(アンカーポイントとハッシュテーブル)を有することにより、堅牢性を保ち、さらには堅牢性を改善しつつ、「参照点」を破棄することができる。もう1つの違いは、記述子の第4の実数が効率的に対称性を扱うことである。実際は、上記先行技術とは対照的に、例の方法においては、鏡面対称の2つのペアが同じ記述子を共有しない。
図8〜10の各図は、それぞれ3枚の絵を示す。左上の絵は3Dモデルであり、左下の絵は3Dシーンであり、右の絵はシーン内に配置されたモデルである(この表示はS10に従って実行される方法のさらなるステップであり得る)。すべてのシーンとモデルは3D点の有限集合である。図8は「車」のモデルを示す。図9は「椅子」のモデルを示す。図10は「ヴィーナス」のモデルを示す。
ここで「ペア」(または「対」)の表記について説明する。
単位球を
とし、3D点と法線ベクトルからなる対の集合を
とする。定義上、例の方法において、モデルMとシーンSは、Kの有限の部分集合であり、すべてのiについて、
のとき
であり、すべてのiについて、
のとき
であることを意味する。PMを
の要素の全ての対の集合とする。
についても同様である。
数学的な観点からは、PMまたはPSの要素はいくつかの点と法線の対であるが、明確にするために、以下ではこれを「ペア」と呼ぶ。これは従来技術における表現とも一致する。要素の順番が重要であるため、明らかにこれは数学的観点からは「ペア」ではないが、真のペアの数学的概念は以下の説明では使用されていないため、誤解を招くことはない。図11は典型的なペアを例示する。
アルゴリズムの一例と、上述の報酬付与をどのように実行するかについて説明する。
位置決めS10に続くアルゴリズムは、(最初の対に対して実行され非常に迅速に禁止される可能性のある上述の先行技術のアルゴリズムとは異なり)第2の対上で(繰り返し)実行され、実行中のそれぞれの第2の対に一致するすべての第1の対にアクセスし、アクセスした第2の対上に実質的に配置される第1の対に対して報酬を与える3Dシーン内における3Dモデル化オブジェクトの位置決めを出力するものであってもよい。言い換えれば、位置決めは、3Dシーンの第2の対から構造的に開始し、候補となる第1の対(すなわち、考慮される第2の対のそれぞれの上に実質的に配置され得る3Dモデル化オブジェクトのもの)を考慮し、それらの候補を候補位置に変換する。この構造により、演算時間が短縮される。
特に、アルゴリズムが実行される第2の対は、3Dシーンに含まれるそれぞれの3D点の代表的な部分集合である(例えば、部分集合によって/対して形成される)。言い換えると、アルゴリズムは、全ての第2の対に対して実行される代わりに、その部分集合上(すなわち、3Dシーンに含まれる各3D点の代表的な部分集合に対応する)で実行される。「代表的」とは、第2の対が(最初のサンプリングと比較して)少ない情報量でシーンのジオメトリを表すことを意味する。具体的には、代表的部分集合は、3Dシーンに含まれる各3D点の縮小(すなわち、選択)から得られる。縮小には、3Dシーンに含まれる各3D点の空間クラスタリング(例えば、K平均法)と、クラスタリングの結果に基づく確率的選択が含まれる。言い換えると、3Dシーンの3D点がクラスタリングされ、クラスタに確率が割り当てられ、本方法は、割り当てられたクラスタ確率に基づいてランダム(例えば、擬似ランダム)に選択を実行する。確率は、確率的選択が、大きなクラスタ、および/または近いクラスタに報酬を与えるようなものであってもよい(ここで「近い」という用語は、基準位置から評価した距離であり、これは、3Dシーンが仮想現実環境である場合にはカメラの位置、すなわち、没入したユーザの視点であってもよく、例えば、また、本方法は、ユーザが仮想現実没入工程に入っていて、仮想環境と対話している間に、例えばリアルタイムで実行される)。
ここで、(演算の観点から見て)特に効率的な方法で特に正確な最終結果を導き出すような、PSのこのような縮小の例について説明する。この例では、カメラの位置を参照している。カメラの位置が与えられていない場合、関連する項を取り除くことによって(また一般的な空間クラスタリングを実行することによって)この例を適合させることができる。この例のクラスタリングの目的は、主に、対の分布を均質にし、同じオブジェクトに属する可能性が高い対をグループ化することである。
Sの要素数は非常に大きく、Mの要素数よりはるかに大きく、PSとPMについても同様である。パフォーマンスのために、この例ではランダムに選択されたPSの部分集合のみが考慮される。集合PSは、モデルの点の数、すなわち
に縮小される。縮小後の典型的な値は
であり、モデルの典型的なサイズは
である。本例の縮小は、集合Sのクラスタリングステップと、それに続くPSの要素のランダム選択ステップとによって実行される。先に定義したように、Sの要素は、3D点と法線ベクトルとからなる対である。この例の縮小工程では法線ベクトルは使用されないため、「Sの点」とは、3D点のみを指す。この例のクラスタリングステップはK平均法アルゴリズムに基づき、例えば文献「Tapas Kanungo,David M.Mount,Nathan S.Netanyahu,Christine D.Piatko,Ruth Silverman,and Angela Y.Wu,An Efficient k−Means Clustering Algorithm:Analysis and Implementation,IEEE Transactions on Pattern Analysis and Machine Intelligence,Vol.24,No7,July 2002」に記載されている。入力は、クラスタの数N(2と5との間、例えば、経験的に良好な値である3)とポイントの集合Sである。出力は、クラスタと名付けられたN個の空でない互いに素な部分集合Ci、i=1,・・・,Nであり、それぞれCiに関連付けられた、平均点と名付けられた数多くの3D点mi=(xi,yi,zi)、i=1,・・・,Nである。出力は、次の特性が満たされるように算出される。まず、S=C1∪・・・∪CNである。次に、全ての点m∈Ciが、j≠iである他の平均点mjよりも平均点miに近い。すなわち、全てのi=1,・・・,Nと全てのm∈Ciについて
である。各クラスタCi内の点の数はniで表される。平均点はk平均法アルゴリズムによって算出され、それらの点はSに属さない。クラスタリングに使用される基準軸系は、z座標がカメラまでの距離であり、全てのiについてzi>0となるように定義される。本例の文脈においては、典型的なクラスタ数は3である。
図12は、2Dポイントの例示的な集合を示す。図13は、平均点m1、m2、m3、m4およびカメラ位置とともに、4つのクラスタC1、C2、C3、C4へのk平均法を例示する。本例のランダム選択ステップは、以下のように実行される。C(N+1)=Sに注目することにより、集合S全体が含まれる。次に、i=1,・・・,N+1について、確率pi∈[0,1]が以下の式に従って各Ciに関連付けられる。まず、
である。次に、正規化係数は
であり、最後に、すべてのi∈{1,・・・,N}について、確率は
である。係数p0は、p1+・・・+p(N+1)=1となるように設計されている。確率piはCiの点の数の2乗ni 2に比例し、その深度ziに反比例する。このように、同じ数の点を持つ2つのクラスタがある場合、最も可能性が高いのはカメラに近いものである。さらに、同じ深度を有する2つのクラスタがある場合、最も可能性が高いのは、点の数が最大のクラスタである。最後に、集合C(N+1)の確率はゼロにはならず、別個のクラスタにおける点を有するペアが選択される。
Npを、PSにおいて選択するペアの数とする。選択アルゴリズムは、前段落で定義した確率に従って、集合{1,・・・,N+1}における整数のランダム発生器を利用する。これをRandProbと表す。RandProbを呼び出すたびに、新しい整数値が返される。整数aとbが与えられた場合、アルゴリズムは、一様な確率に従って、任意の集合{a,a+1,・・・,b}における整数の発生器もランダムに使用する。これをRand(a,b)と呼ぶ。Rand(a,b)を呼び出すたびに、新しい整数値が返される。選択アルゴリズムは、以下のようなものであってもよい。
簡略化のため、縮小した集合PSも依然としてPSで表している。
一例では、本方法は、(さらに)ペアの前処理を含むことができる。前処理は、例えば所定の閾値に対して、p2がp1に比較的近いか、あるいは、例えば所定の閾値に対して、n1がp2−p1との共線状態に比較的近い対((p1,n1)、(p2,n2))から顕著にPM∪PSを消去する(すなわち、後の処理のために取り除く)ものであってもよい。
本例では、効率化のため、集合PMとPSは無意味なペアを削除することで消去される。無意味なペア((p1,n1),(p2,n2))とは、p1とp2の距離が不適切であるか、またはn1、n2、およびp2−p1がほぼ共線的であるようなものである。
第1の処理は、
が大き過ぎるか、小さ過ぎるようなPMとPSのペアを取り除くものであってもよい。正確には、これは以下を算出することによって行われる。
ここで、kmin=0.1であり、kmax=0.6である。そして、
を満たすようなペア((p1,n1),(p2,n2))∈PM∪PSのみが、さらなる処理のために保持される。
第2の前処理によれば、以下の関係を満たすペア((p1,n1),(p2,n2))∈PM∪PSのみを保持することができる。
det[u,v,w]は、ベクトル
の3×3行列式を表す。閾値kの典型的な値は、k=0.2である(これは±50%の範囲で変更できる)。以下で用いられている集合PMおよびPSは、前処理で定義された特性を満たしてもよい。
ここで、署名の概念について説明する。
ペアについての数値署名が、以下の工程に従って定義されてもよい。ペアは、「記述子」と呼ばれる4つの要素からなる実数群に変換することができ、これはまた、整数に変換できる。そのような場合、署名は、以下に説明するように、両者の組み合わせを指す可能性がある。
まず、本方法の一例における記述子について説明する。
本例では、記述子は特定の項があるために、鏡面対称下で可変である。これにより、上記先行技術に対して、誤検出の低減が可能になる。
((p1,n1),(p2,n2))∈PM∪PSが与えられた場合、記述子は、q=p2−p1および
によって定義されるマッピング
に従って算出されてもよい。
ここで、
は、ベクトルuとvのスカラ積である。マッピングFは、上記先行技術と同様、剛体運動の下では不変であるが、上記先行技術とは対照的に、鏡面対称の下では不変ではない。実際、鏡面対称線形マッピングLに注目すると、鏡像ペアの記述子の第4の座標は、
であってもよく、これはdet L=−1だからである。
記述子(上記の例の特定の記述子、またはそのような他の記述子)は、一例において量子化されていてもよく、これは等価評価(必要な場合)の高速実行につながる。ここで、このような量子化について説明する。
一般的に、第1の対の記述子の値と第2の対の記述子の値が実質的に等価であることは、整数が実質的に等価であることと見なすことができる。具体的には、第1の対の記述子の値に対応する第1の整数と、第2の対の記述子の値に対応する第2の整数とが実質的に等価である可能性があり、そのような場合、第1の整数および第2の整数は、第1の対の記述子の値と第2の対の記述子の値にそれぞれ適用される量子化マッピングを介して算出されてもよい。これにより、整数の等価性のみが考慮されるため、工程が大幅に高速化される(実数の比較には時間がかかる)。
ここで、このような量子化を効率的かつ比較的高精度に(最終的な結果のために)実行する特定の方法について説明する。
H=F(PM∪PS)を、((p1,n1),(p2,n2))∈PM∪PSのとき、4つの要素からなる全てのF(p1,n1,p2,n2)の有限集合とする。本質的に、
である。Hの各要素は、量子化マッピング
を用いて整数に変換される。このマッピングについて以下に定義する。i=1,・・・,4およびすべての(r1,r2,r3,r4)∈Hについて
であるような8つの実数
および
(i=1,・・・,4)が存在する。
実際、実数r2とr3は正規化されたベクトルのスカラ積であるため、−1≦r2≦1であり、また−1≦r3≦1である。実数r4は正規化ベクトルの行列式であるため、−1≦r4≦1である。(言い換えれば、r1に関して、より正確な最小値および/またはより正確な最大値も決定することができるが、
および
(i=2,3,4)について、−1および+1を保持することができる)。
最後に、数r1は、
を満たすような数であり、
および
は、一例の上記前処理によって定義されてもよい。
「解像度」と呼ばれる4つの実数εi、i=1,・・・、4が考えられる。典型的な値は以下のとおりである。
テストでは、分解能数の効率の範囲は、これらの名目値を中心に±50%であることが示された(すなわち、本方法は、上述の4つの数値のそれぞれについて、±50%以内で変動する値を検討することができる)。なお、
および
に関して、−1および+1よりも正確な値が保持される場合、εi、i=2,3,4の値は、ε1と同様とすることができる。
実数r以下である最大の整数[r]に着目し、i=1,・・・,4について整数δiを定義すると、
と表せる。
ここで、任意の(r1,r2,r3,r4)∈Hが与えられたとして、i=1,・・・,4に関して整数qiを定義すると、
と表される。
そして、4つの要素からなる(r1,r2,r3,r4)∈Hの量子化は、
と定義される。
最後に、署名は量子化した記述子、すなわち、合成
によって定義されるマッピング
であり、すべての((p1,n1),(p2,n2))∈PM∪PSについて、
であることを意味する。
例えば、
および
と、以下のペア(図14〜17に示す)を選択する。
演算結果は以下のとおりとなる。
なお、ペアa1はペアa2に近いため、σ(a1)=σ(a4)である。さらに、ペアa2とa3は等長であり、マッピングFは剛体運動の下で不変であるため、F(a2)=F(a3)=(1,0,0,−1)であり、σ(a2)=σ(a3)である。
ここで、本方法の高速な実行を可能にするような、本方法の一例について説明する。この例では、アルゴリズムは3D投票原理に従う(すなわち、ハッシュテーブルが使用され、アルゴリズムの出力は、ハッシュテーブルの最も人気のある1つまたは複数のスロットに対応する)。具体的には、アルゴリズムは、一致する第2の対上の第1の対を位置させる全ての位置決め(例えば剛体運動)の中で最良の投票に対応していてもよい。そして、最良の投票は、3Dモデル化オブジェクトに含まれるそれぞれの3D点の、3つのいわゆる「アンカーポイント」を実質的に同じように位置させる最大の位置決めグループを保持するハッシュテーブルスロットに対応していてもよい(すなわち、グループの位置決めは、アンカーポイントをハッシュテーブルの同じスロットに送信する。これは、例えば所定の3×3Dハッシュテーブルであり、したがってスロットはこのような所定の3×3Dグリッドのセルである)。言い換えれば、第1の対を、一致する第2の対に位置付ける位置決め(例えば、「一致する」とは、上記の形状記述子に対応し、一例では、特に、署名に対応する)は、対の観点(例えば、具体的には、先に例を挙げて述べたように第2の対の観点)で考えられる。そのような候補の位置決めはすべて保持され、(1つまたは複数の)最も「人気のある」ものが検討される。これにより、位置決めS10の迅速な決定が可能になる。アンカーポイントは、3Dモデル化オブジェクトに属する整列されていない3つの点であってもよい。これにより、3D投票が堅牢化される。
ここで、テストされ、特に良く機能するアンカーポイントの一例を説明する。この例では、アンカーポイントは、モデルMのA=(m1,m2,m3)で表される3点であり、相互の距離ができるだけ大きくなるように選択されている。正確には、
である。なお、点m1、m2、およびm3にそれぞれ関連付けられた法線ベクトルn1、n2、n3は、このアンカーポイントの定義に関与しない。
ここで、上記詳述した例に沿った全体的なアルゴリズムの例について説明する。アルゴリズムの概要は次のとおりである。第1のステップは、ペアからペアへの剛体運動dがアンカーポイントAをどのように変化させるかをテーブルT(・)に記憶することである。本ステップは、パフォーマンスのために、以下の命令03に記載のように、同じ署名を有するペアの対を調査してもよい。
整数imaxはアルゴリズムによって調査されたペアからペアへの剛体運動の数である。出力テーブルTは、当該剛体運動を用いて変換したすべてのアンカーポイントを集める。Im(T)をTのすべての値の集合とする。すなわち、
である。
第2のステップでは、以下の意味において最も頻繁に出現する剛体運動を識別する。ε>0を閾値とする。値εについては後述する。任意のt∈Im(T)を考える。C(t、ε)は、T(i)がtに近くなるような{1,・・・,imax}におけるインデックスiの集合である。正確には
である。
定義上、Im(T)において選択された値t*は、最大のC(t,ε)を有する。すなわち、
である。なお、この「最大の引数」の定式化は一般的なものである。アルゴリズムの一例については後述する。最後のステップは、シーンSにおいてモデルMを位置決め/位置特定する最良の剛体運動を返す。これは、
が、可能な限り小さくなるような剛性運動d*∈SE(3)である。d*の算出の一例については後述する。
ここで、対の署名マッチング(上述のアルゴリズム例のステップ03で使用される)のために保持されるデータ構造の具体例について説明する。この例では、第1の対の記述子の値に量子化マッピングを適用した結果は、本方法の全体的な効率を高めるために、インデックス付きテーブルに格納される。
実際、ある署名を有するPMのすべての要素を取得することは、アルゴリズムにおいて集中的に使用され得る。例えば、上記の例の命令03で、「For all x∈PM such that σ(x)=k do begin」によってキャプチャされる。プログラミングの観点から、この演算は適切なデータ構造によって補助されて実行される。このデータ構造は、3つのテーブルT1、T2、およびT3を含み、以下のように算出することができる。
第1のステップは、T1(k)がσ(x)=kとなるような要素x∈PMの数であるようにテーブルT1を算出することである。テーブルT1は、すべてのiについてT1(i)=0で初期化される。
このステップの後には、整数nは、すべてのx∈PMについて1≦σ(x)≦nとなる。これはσ(PM)⊂{1,・・・,n}を意味する。なお、σ(PM)={1,・・・,n}である必要はない。すなわち、PMの要素の署名ではない{1,・・・,n}のいくつかの値が存在してもよい。言い換えれば、T1(i)=0となるような整数iが存在してもよい。
第2のステップは、(将来の)テーブルT3内のアドレスのディレクトリであるテーブルT2を算出することである。テーブルT2のサイズはnである。テーブルT1は、このステップの後には使用されない。
最後のステップは、テーブルT3に、同じ署名を有する要素のリストを供給することである。テーブルT3のサイズは、
であり、テーブルT3は、すべての
についてT3(i)=0で初期化される。
このデータ構造は、以下のように用いられてもよい。シーンy∈PSの要素とその署名k=σ(y)が与えられた場合、同じ署名kを有するモデル要素x∈PMの数mがテーブルT3内の場所T2(k)で読み取られる。すなわち、m=T3(T2(k))である。当該モデル要素は、j=1,2,・・・,mについて、テーブルT3内の場所T3(T2(k)+j)に配置される。
結果のデータ構造のサイズは
であり、3つのステップの累積計算量は
であるため、この演算は明らかに最適である。図18のテーブルは、
かつ、σ(a)=σ(b)=σ(d)=σ(e)=2、かつσ(c)=σ(f)=4であり、n=4であるPM={a,b,c,d,e,f}を有するデータ構造を例示したものである。署名値3を有するPMの要素数はT3(T2(3))=T3(7)=0である。署名値2を有するPMの要素数はT3(T2(2))=T3(2)=4であり、それらはT3(3)=a、T3(4)=b、T3(5)=d、T3(6)=eである。
ここで、(比較的正確な結果に導きつつ)全体的なスピードをさらに増加させるアルゴリズムの例について説明する。この例では、上述の例で説明したように、アルゴリズムは、一致するそれぞれの第2の対上のそれぞれの第1の対を位置させるすべての剛体運動の中で最良の投票に対応する。ここで、各剛体運動は、それぞれの第1の対に付された正規直交軸系と、それぞれの第2の対に付された正規直交軸系のみ(すなわち決定に他のデータは関与しない)に基づいて、特定の高速な方法で決定される(すなわち、ペアからペアへの剛体運動を算出。例えば、上記例のアルゴリズムのステップ04)。正規直交軸系は、それぞれ、上記2つの点のうちの1つのみとそれに関連付けられた法線ベクトルに基づいて、それぞれの第1の対およびそれぞれの第2の対から決定され(言い換えると、考慮された対のペアのそれぞれについて、それらの間の剛性運動が、2つの正規直交系、すなわち各対につき1つの正規直交系のみに基づいて決定され、各系は、対を定義する情報/データの半分のみ、すなわち、対の上記2つの点のうち1つの位置およびそれに関連付けられた法線ベクトルに基づいて決定される。すなわち、もう一方の点の位置およびそれに関連付けられた法線ベクトルは用いられない)、それにより決定が高速になり、それに応じてアルゴリズム全体が高速になるようにする。
ここで、このような、上記前処理の例と特に相乗的に協働する剛体運動の決定の例(なぜなら、そのような前処理は、この決定の例が特に高速となるような入力である対を残すからである)について説明する。
本例では、剛体運動の算出は、アルゴリズムの命令04で実行される。2つのペアa、a’が与えられた場合、ある意味でd(a)がa’に近づくような剛体運動dを算出する
。その原理は、ペアaとa’にそれぞれ付された2つの直接的な正規直交軸系(O,U,
V,W)と(O’,U’,V’,W’)を定義し、そして(O,U,V,W)を(O’,
U’,V’,W’)に変換する剛体運動dを算出することである。正確には、剛体運動d
は、回転Cが行列積
で定義されるとき、全ての
についてd(x)=Cx+Dとなるような運動である。そして並進運動DはD=O’−C
Oで定義される。ペア((p1,n1),(p2,n2))に付された軸系(O,U,V,W)は、以下のように定義される。第1のベクトルUは、U=n1である。第2のベクトルVは、Uに垂直な平面上のp2−p1の正規化投影である。これは2つのステップV:=(I−UUT)(p2−p1)で算出される。ここでIは恒等行列であり、
である。前処理を行ったため、p2≠p1であり、n1はp2−p1に対して共線的でないため、演算が効果的である。第3のベクトルWは、交差積W=U×Vである。最後に原点Oはp1である。図19は、軸系の定義を例示している。軸系(O,U,V,W)はn2と長さ
に依存しないにもかかわらず、実際には良好な結果が得られる。他方のペアに付された軸系(O’,U’,V’,W’)についても同様の演算が行われる。図20は、剛体運動の
定義を例示している。
ここで、t*の最大値の引数を算出することに相当する上記3D投票の例について説明する。
構築すると、Im(T)は3D点の3つ組の有限集合であり、これはIm(T)の要素が
における点として見ることができるということを意味する。閾値ε>0が与えられた場合、実数の集合
は、次のように、全ての区間[jε,(j+1)ε]の和集合として書くことができる。
このように、
は、ボックスの和集合として書くことができ、
となる。すなわち、
である。
この例における投票とは、
を満たす各ボックス
の範囲内のIm(T)の9つ組の数をカウントし、9つ組の数が最も多いボックスを選択することである。好ましい閾値は、
である。
明確にするため、以下の擬似コード例のアルゴリズムにおける投票を更新するのに、整数のテーブルVote(j1,・・・,j9)が用いられる。同様に、各ボックスの点の重心を更新するのに、
における点のテーブルb(j1,・・・,j9)が用いられる。最適化のために、どちらもハッシュ化されたデータ構造に置き換えることができる。整数BestVoteは、現時点で最良の投票であり、工程全体にわたって更新される。整数SecondVoteは、現時点で2番目に良い投票であり、工程全体にわたって更新される。これは重要性レベルに必要である。
重要性レベルは、BestVoteとSecondVoteの値を比較するための比率
であってもよい。その原理は、BestVoteがSecondVoteよりも「はるかに大きい」場合、投票工程は有意であるということであり、典型的には、
のときに「多くの」アンカーポイントが同じボックスに変換される。数学的には、投票が有意でないとしても、常に最良の剛体運動(次段落で詳述)が算出可能である。最良の剛体運動を保持するか、あるいは最良のもののうちいくつかを保持するか、あるいは保持しないかの決定は、実装の問題に過ぎず、本方法の適用の仕方による。
選択された値t*は、ボックス
における点の重心であり、すなわち、
である。
便宜上、3つの点s1、s2、s3が明示的となるように記述されている。
図21〜図22は、(9次元の状況とは対照的に)2次元の状況における投票工程を示す。図21は、2D点の集合Im(T)を示す。図22は、
を覆うε×εのボックスである。選択されたボックスは
であり、それは点を最も多く含むからである。すなわち
である。2番目に良い投票はSecondVote=Vote(4,3)=2であり、重要性レベルは
である。
ここで、最良の剛体運動を算出するための方法の例を示す。
上記説明によると、ここでは、モデルMのアンカーポイントA=(m1,m2,m3)をシーンSの選択された3つ組の点t*=(s1,s2,s3)に変更する最良の剛体運動d*を見つけることが重要かもしれない。最良の剛体運動d*は、並進運動T*および回転R*によって定義され、すべての
について、d*(x)=R*x+T*である。回転R*および並進運動T*は、以下のように算出され得る。
以下のベクトルは、m1、m2、m3を用いて算出される。
s1、s2、s3についても同様である。
次に、行列Pが、U、V、W、U’、V’、およびW’を用いて算出される。
なお、(U,V,W)と(U’,V’,W’)は一般に非直交軸系であり、これにより
Pは一般に非直交行列となる。そのため、マッピングR*はPに最も近い回転である。これは一意であり、例えば、文献「Andriy Myronenko,Xubo Song,On the closed−form solution of the rotation matrix arising in computer vision problems,9 Apr 2009」で説明されているように、特異値分解を用いて算出することができる。最後に、並進運動T*はT*=s1−R*m1によって定義される。