【发布时间】:2016-10-28 13:31:49
【问题描述】:
我有两个 2x3 矩阵 A 和 B - 每个都用于仿射变换。 我需要将 A 和 B 组合成一个第三矩阵 C,它将 A 和 B 的仿射变换组合成一个矩阵。
我需要如何将它们相乘?
AB 还是 BA ?
不同之处在于 A 或 B 会被转置,还是完全不同?
我读到的另一个解决方案是使用 3x3 矩阵并复制到前两行中,并且只使用结果中的前两行。但归根结底是AB还是BA。
此外,有没有一种简单的方法可以在 OpenCV 中实现这一点,或者我是否需要如上所述实现每个步骤?
【问题讨论】:
-
两者都不应该被转置。添加第三行。乘法顺序取决于您的情况。
-
它有所不同,取决于顺序,应该首先执行哪个转换。但请注意,2x3 仿射变换不能以这种方式相乘,您首先必须通过在底部添加 0 0 1 行来将它们扩展到 3x3 矩阵。之后,如果您想在 B 之前执行 A,则计算 C = BA;如果您想先执行 B,则计算 C = AB。
-
谢谢你,成功了。但是OpenCV没有提供任何功能吗?
-
您可以轻松编写一个小函数,隐式地将两个仿射 2x3 矩阵相乘,而无需添加额外的行。也许openCV中的某个地方隐藏了这样一个功能,但是如果,我不知道......
-
在 2012 年似乎没有 ... stackoverflow.com/questions/13557066/…
标签: c++ opencv matrix affinetransform