【问题标题】:How to create a Bird-Eye-View of image to a given plane?如何为给定平面创建图像的鸟瞰图?
【发布时间】:2014-12-06 15:05:19
【问题描述】:

我得到了一个平面(支持向量和平面的法线向量),这是一个由我知道其内在参数(fx、fy、cx、cy)的相机拍摄的图像。我如何将此图像转换为类似鸟瞰图的图像(以便鸟瞰图与平面的法向量共线)。我对必须使用的坐标系感到困惑,有些矩阵在世界坐标中,有些在本地坐标中。我知道 OpenCV 中有warpPerspective(),这样可以吗?

我正在使用 OpenCV:2.4.9

非常感谢!

更新: 是否必须先在相机朝向法线的情况下计算 4 个点,然后从鸟瞰视图中计算 4 个点并将它们传递给findHomography() 以获得变换矩阵?

更新: 解决了。让它工作!

【问题讨论】:

  • 您需要的是顶视图,对吧? IE。视图/相机矢量和平面法线之间的角度将是直角​​(180°)。 OTOH bird's eye view 不会这样,它会有 0/180° 以外的角度。俯视图是正视图,而鸟瞰图是透视图。
  • 这可能有助于计算相机变换:Deriving gluLookAt
  • 您将需要:相机的外部参数(至少是视角)或平面上“已知”点的 4 个像素位置(足以知道这些点之间的相对位置在飞机上)。
  • 在我的第一张图片中,假设“高度”线是一个轴,相机和这个轴之间的角度是已知的。
  • 可能视角不够,我被困在了那里……但我知道你自己搞定了? =)

标签: c++ opencv


【解决方案1】:

世界平面上的矩形将在您的图像中显示为四边形。
在鸟瞰图中,您希望它再次显示为矩形。 您必须至少知道这个世界矩形的纵横比,才能使顶视图沿两个轴正确且相等地缩放。

鉴于图像中的 4 个四边形 2D 点和目标矩形角(基本上选择了 2D 坐标),您可以计算从四边形到矩形的单应性并使用 @987654322 @ 渲染它。

这通常是最简单的方法。

您也可以自己浏览相机和矩阵。为此,您需要将相机旋转到具有正交投影的平面上方。参见单应性分解here

【讨论】:

  • 我的四边形是什么?之后我将如何计算单应性?
  • 四边形是在平面上计算4个点得到的吗? “计算从四边形到矩形的单应性”是什么意思,哪个矩形?你能更详细地解释一下吗?谢谢!
猜你喜欢
  • 2016-10-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-04-05
  • 2013-03-24
  • 1970-01-01
相关资源
最近更新 更多