gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-02 17:50:55 30 4
gpt4 key购买 nike

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

谢谢。

最佳答案

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

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

让我们考虑一个针孔相机方程。它基本上说
[u,v,1] T〜A * [R | t] [x,y,z,1] T,其中A是相机固有矩阵。现在,由于您处理的是地面平面,因此可以通过设置z = 0使其与新坐标系对齐; R | t是从该坐标系到相机对齐系统的旋转和平移矩阵;

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

现在,您需要在纯相机旋转期间发生另一种单应性,并在旋转/缩放之前和之后在传感器上的点之间缩放;那就是您想向下旋转相机并可能缩小。再次考虑针孔相机方程式:最初您具有H1 = A(此处我暂时不考虑R | T),然后旋转相机,而您具有H2 = AR。换句话说,H1是您现在制作图像的方式,H2是您想要图像的外观。
两者之间的关系是您想要查找的,H12,它也是单应性,因为同形学是转换的家庭(使用这种简单的试探法:家庭中发生的事情留在家庭中)。由于同一表面可以用H1或H2生成图像,因此我们可以通过撤消H1(返回地面)并应用H2(从地面到传感器鸟瞰图)来组装H12;在某种程度上类似于 vector 操作,您只需要从右到左遵守矩阵应用的顺序即可:
H12 = H2 * H1-1 = A * R * A-1 = P * A-1 ,在这里我们将表达式替换为H1,H2,最后替换为投影矩阵(如果有的话)

这是您的答案,如果旋转R未知,则可以从摄像机方向w.r.t.中推测出来。地面或使用opeCV库中的solvePnP()计算得出。最后,当我在手机上执行此操作时,我只是将其加速度计读数用作一个很好的近似值,因为当不加速手机时,读数代表重力 vector ,该 vector 给出旋转w.r.t.平坦的水平地面。

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

关于opencv - OpenCV-投影,单应矩阵和鸟瞰图,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21885906/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com