findHomography() を呼び出した結果、3x3 行列 mtx[3][3] が返されました。この行列には、mtx[0][2] と mtx[1][2] の翻訳部分が含まれています。しかし、この 3x3 行列から回転部分を取り出すにはどうすればよいでしょうか?
残念ながら、私のターゲット システムはまったく異なる計算を使用しているため、3x3 マトリックスを直接再利用できず、これから回転を抽出する必要があります。そのため、この質問をしています。
findHomography() を呼び出した結果、3x3 行列 mtx[3][3] が返されました。この行列には、mtx[0][2] と mtx[1][2] の翻訳部分が含まれています。しかし、この 3x3 行列から回転部分を取り出すにはどうすればよいでしょうか?
残念ながら、私のターゲット システムはまったく異なる計算を使用しているため、3x3 マトリックスを直接再利用できず、これから回転を抽出する必要があります。そのため、この質問をしています。
その間、私自身のためにそれを見つけました:マトリックスから変換の一部を抽出するために使用できるOpenCV関数 RQDecomp3x3() があります。
RQDecomp3x3 には、Z 以外の他の軸で回転を返す問題があるため、この方法では、z 軸のスピンを正しく見つけることができます。射影行列を見つけて「decomposeProjectionMatrix」に渡すと、より良い結果が得られます。射影行列は、ホモグラフィ行列とは異なります。この点に注意する必要があります。
一般的に言えば、最終的な変換行列を構成要素に分解することはできません。可能なケースもあります。たとえば、操作の前の唯一の操作が平行移動であった場合、arccos(m[0][0]) を実行して回転のシータ値を取得できます。