1

3D 形状を揃える方法を探しています。AB、A、および B のマトリックスがあり、それぞれに 3D アイテムが含まれています。行列 AB は A と B で構成されています。

A と B が AB を再構築するために必要な変換 (回転、平行移動) を見つけたいと思います。

私を助けることができる方法論や便利な機能はありますか?

よろしく。

4

1 に答える 1

1

次のアプローチを考えています。

最初に、関連する自由度を処理する変換行列を取得します。次に、非線形最適化を使用して、バイナリ 3D の差異を最小限に抑えます。自由度について: (x,y,z) 位置と (theta,phi,psi) 角度方向 (Euler) の各オブジェクト。したがって、検索を実行するには 6+6=12 の自由度 (または次元) が必要だと考える人もいるでしょう。ただし、2つのボディが存在する必要があるという制約があるため、次元は低くなります。したがって、相対を探すだけで十分です。空間分離 (dx,dy,dz) と相対角度差 (theta,phi,psi) 。さらに、形状に対称性があるかどうかを尋ねることができます。たとえば、形状の 1 つが球体であるか、角度が無関係であるかなどです。したがって、自由度ごとに、関連する 3x3 変換行列があると予想されます。 、Rtheta、Rphi、Rpsi、Tx、Ty、Tz。ここで、Rtheta は次のようになります。

 Rtheta = [cos(theta)    0      -sin(theta)   0
           0             1              0     0
           sin(theta)    0       cos(theta)   0
           0             0              0     1];

これらの行列は、一般的な回転行列と組み合わせることができます

 Rot=Rtheta*Rphi*Rpsi;

同様に、平行移動行列 Trans=Tx*Ty*Tz を取得します。

tform_Trans = maketform('affine', Trans);
tform_Rot = maketform('affine', Rot);
tform_RT = maketform('composite',tform_Rot,tform_Trans);

関数を使用して変換が適用されます

 tformarray(A, tform_RT, R, TDIMS_A, TDIMS_B, TSIZE_B, TMAP_B, F)

この詳細については、次のリンクを参照してください。

于 2012-10-30T22:45:02.390 に答える