从单应性中恢复飞机

时间:2013-07-23 06:24:15

标签: opencv normals homography plane

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

2 个答案:

答案 0 :(得分:1)

如果您对摄像机进行了校准,则可以提取平面的法线,但不能提取到平面的距离(即,您获得的变换符合标度),为Wikipedia explains。我不知道有任何实现,但是在这里你有几篇论文来处理这个问题(我警告你这不是直截了当的):Faugeras & Lustman 1988Vargas & Malis 2005

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

答案 1 :(得分:0)

对图像进行整流定义为使对极线水平并位于两个图像中的同一行。从你的描述我得到你只是想扭曲飞机,使其平行于相机传感器或图像平面。这与整顿无关 - 我宁愿称它为获得鸟瞰或顶视图。

我看到了混乱的根源。图像的校正通常涉及每个图像与单应矩阵的乘法。在你的情况下,虽然传感器平面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 /焦点;这里是img.col是图像列,w - 图像宽度,焦点是相机焦距。请注意,在鸟瞰图中,相机视锥体看起来像一个梯形。

single image + gyroscope = depth