2Dケース
回答のこの部分では、平面内の剛体運動についてのみ説明しているため、質問と完全には一致しません。
あなたがあなたのコメントに従ってうまくいくように見えるあなたのポイントを特定したとしましょう。これで、これらのポイント間の距離を計算して並べ替えることができます。検出された2つのポイント間の最短距離は、元の三角形の最短エッジに対応する必要があります。この情報を使用して、ポイントにA、B、Cのラベルを付けることができます。
次に、すべてのポイントを移動(移動)して、後で1つのポイントが原点にくるようにします。これは、元の三角形の原点に1つのコーナーがあることを前提としています。元の三角形と移動した点のセットの両方で、 Aが原点にあると仮定します。このベクトルの否定バージョンは、三角形の変換を示します。
今度は回転します。今のところ、元の三角形の場合、Bは正のx軸にある、つまりy =0およびx >0であると想定します。これで、カメラから点Batan2
の(移動した)位置を取得し、座標では、線ABとx軸の間の角度を決定できます。これが三角形の回転角です。
これらの両方を組み合わせて、アフィン変換を形成できます。元の三角形が原点にA 、 x軸の正の部分にBが配置されていない場合は、同様の手法を使用して、元の三角形が記述されたプロパティを持つ三角形とどのように関連しているかを判断できます。
3Dケース
宇宙での硬直した動きについては、すぐに使える解決策はありません。ただのアイデア。カメラが原点にあり、分析する画像がz = 1に埋め込まれているとします。次に、画像内の点( x、y )は、その埋め込まれた位置の点(x、y、1)に対応し、その点を通過する光線は、その座標の倍数、つまり(λx、λy、λ)によって与えられます。したがって、画像内のポイントA、B、Cの位置から始めて、ポイントごとの1つの変数に基づいて、空間内の対応するポイントを計算できます。c。
ここでのタスクは、空間内のポイント間の距離が三角形のエッジの長さと一致するように、これら3つの変数を選択することです。これにより、3つの変数で3つの方程式のシステムが作成されます。
(a - b)^2 + (Ay*a - By*b)^2 + (Ax*a - Bx*b)^2 == AB^2
(a - c)^2 + (Ay*a - Cy*c)^2 + (Ax*a - Cx*c)^2 == AC^2
(b - c)^2 + (By*b - Cy*c)^2 + (Bx*b - Cx*c)^2 == BC^2
残念ながら、これらの方程式は線形ではありません。いたるところに変数の四角があります。それらを数式処理システムに単純にフィードするだけでは、まだ明確な解決策は得られていません。いくつかの反復プロセスを使用して近似を見つけるための数値的な方法があるかもしれないと思いますが、それについていくつかの調査を行う必要があります。
3D座標を取得したら、これらからの変換の計算は比較すると簡単です。それはすべて、回転の説明に必要な形式によって異なります。