2017-08-13 10 views
0

OpenCVで、与えられた変換行列から変換の種類(回転、平行移動、せん断、...)を判別できるのでしょうか?変換行列からの種類の判別(反転)

この記事にフォローアップ:http://docs.opencv.org/2.4/doc/tutorials/imgproc/imgtrans/warp_affine/warp_affine.html

私は2x3の変換行列を取得します。例:

[ 0.85, 0.20, 0; 
-0.06, 0.37, 253.44] 

私は3番目の「列」が翻訳を表していることを知っています。だから、x=0y=253.44

この場合でも、最初の2列にのみ回転や回転、スケーリングが適用されるかどうかを判断する方法はありますか?だから、私は何とか逆行列の乗算を得ることですか?

答えて

0

これは一般的に不可能です。これは、このアフィン変換のスケーリングは-1です、または180度回転

-1 0 0 
0 -1 0 

に評価され、theta = piもし

cos(theta) sin(theta) 0 
-sin(theta) cos(theta) 0 

:たとえば、アフィン変換を検討?

アフィン変換実際には複数の変換の構成として記述されますが、行列の乗算は可換性ではないため、これらの構成の順序が重要です。そしてそれは翻訳のためにも行きます。イメージの(0、0)の位置を中心に回転が行われるため、変換して回転するよりも、回転してから変換すると結果の変換行列が異なります。

つまり、固有の分解はありません。スケーリングが均一である、または剪断が均一である、またはスケーリングが肯定的であるなど特定の制約があることがわかっている場合、は独特の分解を得ることができます。数学についてはhereを参照してください。

関連する問題