OpenCV-投影,单应矩阵和鸟瞰图

问题描述 投票:0回答:1

我想从鸟瞰图获得单应性矩阵,我知道相机的投影矩阵。它们之间有关系吗?

谢谢。

opencv projection homography
1个回答
0
投票

投影矩阵定义为相机的固有矩阵(例如,焦距,主点等)和非固有矩阵(旋转和平移)的乘积。问题是轮换和平移是什么?例如,我可以想象另一台摄像机或3D物体,相对于它们这些旋转和平移。否则,您的投影只是一个固有矩阵。

[首先考虑获得鸟瞰图所需了解的信息:您至少需要知道相机在地面上的朝向。如果您还知道相机标高,则可以创建度量标准重建。但是,由于您提到了单应性,我假设您考虑的是平面的鸟瞰图,因为单应性将两个平面上的点映射到],在这种情况下,平面上的点与平面上的点传感器。

让我们考虑一下针孔相机方程。它基本上说[u,v,1] T

〜A * [R | t] [x,y,z,1] T,其中A是相机固有矩阵。现在,由于您处理了地面plane,因此可以通过设置z = 0使其与新的坐标系对齐; R | t是从该坐标系到相机对齐系统的旋转和平移矩阵;

[接下来,请注意,您的R | t是3x4矩阵,并且因为z = 0,所以它失去一维;它变成3x3或同形,现在等于H = A * R’| t;好的,我们所做的只是证明地面与您的传感器之间存在单应性映射;

现在,您希望在纯相机旋转期间发生另一种单应性,并在旋转/缩放之前和之后在传感器上的点之间缩放;那就是您要向下旋转相机并可能缩小。再次考虑针孔相机方程式:最初,您有H1 = A(此处我不考虑R | T),然后旋转相机,而您有H2 = AR。换句话说,H1是您现在制作图像的方式,H2是您想要图像的外观。两者之间的关系是您想要查找的,H12,它也是单应性,因为同形学是变换的[[family

(使用这种简单的试探法:家庭中发生的事情留在家庭中)。由于同一表面可以用H1或H2生成图像,因此我们可以通过撤消H1(返回地面)并应用H2(从地面到传感器鸟瞰图)来组装H12;在某种程度上类似于矢量操作,您只需要遵守从右到左的矩阵应用顺序:H12 = H2 * H1 -1 = A * R * A -1 = P * A -1,在这里,我们用表达式替换H1,H2,最后替换为投影矩阵(如果有的话)这是您的答案,如果旋转R未知,则可以从摄像机方位w.r.t.中推测出来。地面或使用opeCV库中的solvePnP()计算得出。最后,当我在手机上执行此操作时,我只是将其加速度计读数用作一个很好的近似值,因为当不加速手机时,读数代表重力矢量,该矢量给出旋转w.r.t.平坦的水平地面。

[将鸟瞰图绘制为图像时,您会注意到其边界从矩形变成某种梯形(由于照相机的截头圆锥体形状),并且在远处有一些孔(由于采样不足)率)。您可以使用wrapPerspective()

在孔内插值
© www.soinside.com 2019 - 2024. All rights reserved.