1

メッシュAとメッシュBの2 つのメッシュがあります。

私はMeshLabで作業しており、必要なのはそれらを整列させてから、B を A にもたらす変換行列を推定することだけです。

位置合わせツールを使用するときは、Aを接着し、ベース メッシュとして設定します。次に、B にポイント ベースの接着を実行し、必要に応じてプロセスボタンを使用します。手順の最後に、MeshLab プロジェクトを保存します。

B を A にもたらす変換行列を推定するために、.mlp プロジェクト ファイル (実際にはプレーン テキスト ファイル) を開いて、データを読み取ります。残念ながら、私が得るものは私が期待するものではありません。もちろん、A と B の 2 つのメッシュがあります。それぞれに変換行列があります。メッシュ A (ベース メッシュとして接着されて設定されたもの) には単位行列があり、メッシュ B には A に B をもたらすために必要な変換行列があると思います。メッシュ A の行列が単位に近い場合もありますが、それでもアイデンティティーワン。

次に例を示します。

<!DOCTYPE MeshLabDocument>
<MeshLabProject>
 <MeshGroup>
  <MLMesh label="A" filename="A.stl">
   <MLMatrix44>
1 3.61241e-09 1.85292e-11 -5.04461e-08 
-3.61241e-09 1 3.45518e-10 1.03514e-07 
-1.85292e-11 -3.45518e-10 1 5.35603e-09 
0 0 0 1 
</MLMatrix44>
  </MLMesh>
  <MLMesh label="B" filename="B.stl">
   <MLMatrix44>
-0.670956 -0.741136 -0.0231387 78.366 
0.738444 -0.665039 -0.111463 24.2717 
0.0672212 -0.0918734 0.993499 33.6056 
0 0 0 1 
</MLMatrix44>
  </MLMesh>
 </MeshGroup>
 <RasterGroup/>
</MeshLabProject>

ここで、私の単純な仮定は、何らかの理由で MeshLab が B を A に適切に移動できないということです。代わりに、B を A に非常に近づけますが、A の位置も最小限に調整して最適に一致させる必要があります。

もしそうなら、最高の B から A への変換を行うために、次のことを実行したいと考えています。

[B マトリックス] * INVERTED[A マトリックス] = [A マトリックス上の B]

これは正しいです?

4

1 に答える 1