【问题标题】:Recover plane from homography从单应性中恢复平面
【发布时间】:2013-07-23 06:24:14
【问题描述】:

我已经使用 openCV 通过使用特征并匹配它们来计算与同一平面的视图相关的单应性。有没有办法从这个单应性中恢复平面本身或平面法线? (我正在寻找一个方程,其中 H 是输入,正常 n 是输出。)

【问题讨论】:

  • 恐怕这更像是一道线性代数题。你应该找到给定初始平面和变换矩阵的平面方程。

标签: opencv normals homography plane


【解决方案1】:

如果你有相机的校准,你可以提取平面的法线,但不能提取到平面的距离(即你获得的变换是按比例的),如Wikipedia explains。我不知道有什么实现方法,但这里有几篇处理这个问题的论文(我警告你这并不简单):Faugeras & Lustman 1988Vargas & Malis 2005

如果平面上的两点之间至少有一个实际距离,则可以恢复变换的实际平移(即到平面的距离)。如果是这种情况,使用 OpenCV 最简单的方法是首先计算单应性,然后获得平面上的四个点及其 2D 坐标和真实的 3D 坐标(如果你有真正的测量,你应该能够获得它们在飞机上),最后使用 PnP。 PnP 将为您带来真正的转变。

【讨论】:

  • 我实际上对到飞机的距离并不感兴趣。我想相对于平面校正图像(因此相机位置与平面直接正交)。
【解决方案2】:

校正图像的定义是使核线水平并在两个图像中位于同一行。根据您的描述,我知道您只是想扭曲平面,使其平行于相机传感器或图像平面。这与整改无关,我宁愿称其为鸟瞰图或俯视图。

我看到了混乱的根源。图像的校正通常涉及将每个图像与单应矩阵相乘。在您的情况下,尽管传感器平面 b 中的每个点: Xb = Hab * Xa = (Hb * Ha^-1) * Xa,其中 Ha 是从世界平面到传感器 a 的单应性; Ha 和固有相机矩阵将为您提供平面方向,但我没有看到将 Hab 分解为 Ha 和 Hb 的简单方法。

一个经典的(也是困难的)方法是找到一个基本矩阵,从中恢复基本矩阵,将基本矩阵分解为相机旋转和平移(按比例),校正两个图像,执行密集立体,然后拟合将平面方程转换为您重建的 3d 点。

如果您对地平面感兴趣并且您操作嵌入式设备,那么您甚至不需要两个框架 - 可以从单张照片中轻松恢复顶视图、从地面的相机高度 (H) 和陀螺仪(或方向矢量)读数。下面的一个简单的图表解释了 2D 情况下的过程:第一张图显示了如何将 Z(深度)坐标恢复到地平面上的每个点;第二张图显示了俯视图,纵轴为 z,横轴 x = (img.col-w/2)*Z/focal;这里的 img.col 是图像列,w - 图像宽度,focal 是相机焦距。请注意,在鸟瞰图中,相机平截头体看起来像一个梯形。

【讨论】:

    猜你喜欢
    • 2020-10-26
    • 2018-05-21
    • 1970-01-01
    • 2017-08-30
    • 2015-08-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多