在2张图像上计算出的单应性与上下颠覆同一张图像上计算出的单应性之间的联系是什么?


9

使用OpenCV,我可以计算出这两个图像之间的单应性:

第一张图片

第二张图片

不用担心右侧的白色奇怪形状,这是由于我使用的智能手机支架所致。由findHomography()函数提供的单应性(使用通过快速特征检测器和HammingLUT描述符匹配器检测到的点)为:

A = [ 1.412817430564191,  0.0684947165270289,  -517.7751355800591;
     -0.002927297251810,  1.210310757993256,     39.56631316477566;
      0.000290600259844, -9.348301989015293e-05,  1]

现在,我使用相同的过程,通过使用imagemagick来计算旋转了180度(上下)的相同图像之间的单应性(事实上​​,我同样有兴趣知道旋转90度或90度的关系) 270度...)。他们来了:

倒置第一张图片

倒置第二张图片

通过这些图像,单应性变为:

B = [ 0.7148688519736168,  0.01978048500375845,  325.8330631554814;
     -0.1706219498833541,  0.8666521745094313,    64.72944905752504;
     -0.0002078857275647, -5.080048486810413e-05,  1]

现在,问题是您如何关联A和B?A的两个第一个对角线值接近B中的两个对角线值,但不是精确(.707805537而不是0.71486885)。我的最终目的是使用所需的关系来变换最终矩阵,从而避免计算代价高昂的图像旋转。

Answers:


4

Hba=RtnTd
Rbatabnd

这两个矩阵之间的关系位于平面的法线向量中。因此,您需要获取平面的法线向量(在单应性矩阵之外),并对其应用旋转,然后使用上述公式计算单应性矩阵。为了正确分解单应性矩阵,可以查看这些代码示例本文


我真的不明白你的意思。从等式中,我得到了法线Mat invT = 1./t; Mat n = invT.t() * (H - R);(实际上是n/d)。现在,“对其施加旋转”会给我一个3x1向量,但是如何使用它来再次计算单应矩阵呢?谢谢
斯特凡Péchard

添加了更多信息,希望可以弄清楚。
Geerten 2012年

为什么是-t / d而不是+ t / d?
Maystro 2015年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.