在 2 个图像上计算的单应性与在相同图像上颠倒计算的单应性之间有什么联系?

信息处理 图像处理 计算机视觉 单应性
2022-01-12 13:17:51

使用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 或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)。我的最终目的是使用想要的关系来转换最终矩阵,避免计算代价高昂的图像旋转。

1个回答

我认为在查看单应矩阵的公式时: 其中相对于旋转的旋转矩阵;是从的平移向量;分别是平面的法向量和到平面的距离(参见Homography-3D 平面到平面方程)。

Hba=RtnTd
Rbatabnd

两个矩阵之间的关系在于平面的法向量。所以你需要得到平面的法向量(从单应矩阵中),并对其应用旋转,然后使用上面的公式计算单应矩阵。对于单应矩阵的正确分解,可以看一下这些代码示例这篇论文