计算二维平面上单应性的精度

时间:2013-09-03 09:13:18

标签: c++ opencv computer-vision homography

我试图找到一种方法来参数化我的单应性计算的精度。我想获得一个值,该值描述在某个位置进行测量的单应性计算的精度。

我目前已经成功地计算了单应性(使用cv::findHomography),我可以使用它将我的相机图像上的点映射到2D地图上(使用cv::perspectiveTransform)。现在我想在我的2D地图上跟踪这些物体,为了做到这一点,我想要考虑到我的相机图像背面的物体在我的2D地图上的位置不如一直在的物体。前面。

我在这个提到平面拟合的website上看了下面的例子,但我真的不明白如何使用这种方法正确填充矩阵。结果的可视化似乎符合我的需要。有没有办法用标准的OpenCV函数做到这一点?

修改 感谢Francesco的建议。但是,我认为我正在寻找与你的答案不同的东西。我不是要测试单应性本身的精度,而是测试一个真实摄像机视图中的测量密度与我创建的地图上的实际大小之间的关系。我想知道,当我在相机图像中检测到1像素时,此时我的地图上会有多少米。

我当然可以通过在我的相机图像上测量一些像素来计算,然后使用单应性来查看我的地图上有多少米,这代表我每次进行单应性时,但我不想计算这个每次。我想要的是有一个公式告诉我图像中的像素与地图上的像素之间的关系,所以我可以考虑到我在地图上的跟踪。

1 个答案:

答案 0 :(得分:0)

您正在寻找的是“预测误差条”或“预测不确定性”。你应该参考一本关于估算理论的好的入门书来了解细节(例如this one)。但简而言之,预测不确定性是......的概率。

  • 图像1中的某个像素p将是单应性H下图像2中像素p'的映射H(p')...
  • 考虑到H的不确定性,这是由于匹配对(q0,q0'),(q1,q1'),...中的误差,已经用于估计H,......
  • 但假设模型是正确的,即图像1和图像2之间的真实地图实际上是单应性(尽管单应性本身的估计参数可能会受到误差的影响)。

为了估计这种概率分布,你需要一个测量误差的模型,以及它们如何通过(单应性)模型传播的模型。