分解3d仿射矩阵opencv

时间:2015-07-22 08:36:00

标签: opencv affinetransform

这是我的第一个: enter image description here

如上图所示:

  1. 有3个轴,其原点为O,O1,O2
  2. 在O和O1之间存在称为M1(4 * 4)的仿射变换,并且从O到O2应用M2(4 * 4)
  3. 此外,很明显我们可以计算O1和O2之间的转换,正如我在上图所描述的那样。
  4. 众所周知,仿射变换可以用以下形式写出:

    1) 90 > 50 ----> No change
    2) now check the second and third number 90 < 1 ---> 1 and 90 swap.
    3) check if the first number is lesser than the new second number(1) - 50 < 1 - swap again 50 and 1.
    4) 1 is the first number in the array, so go back to 90 and check the number after 90. 
    

    假设M1和M2的组件对我们来说是已知的,我需要计算O2和O1之间的旋转和平移。 关于翻译,我可以在上面的图像中找到它。但对于轮换,我不清楚我是如何得到它的。基于矩阵计算,我最终得到了这个:

    A = Shearing(3*3).Scaling(3*3).Rotation(3*3)
    

    然后,为了得到Shearing(O2->O1).Scaling(O2->O1).Rotation(O2->O1) = Inverse(Shearing(2->O2).Scaling(O->O2).Rotation(O->O2)).Shearing(O->O1).Scaling(O->O1).Rotation(O->O1) ,我想我必须分解rotation(O2->O1)。所以我在Inverse(Shearing(2->O2).Scaling(O->O2).Rotation(O->O2)).Shearing(O->O1).Scaling(O->O1).Rotation(O->O1)中寻找一种方法,c++分解仿射矩阵。还有,还有其他方法可以得到我想要的东西吗?

0 个答案:

没有答案