Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/131.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 二维平面上单应的精度计算_C++_Opencv_Computer Vision_Homography - Fatal编程技术网

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

C++ 二维平面上单应的精度计算,c++,opencv,computer-vision,homography,C++,Opencv,Computer Vision,Homography,我正试图找到一种方法来参数化我的单应计算的精度。我想获得一个值,该值描述在特定位置进行测量时单应性计算的精度 我目前已经成功地计算了单应性(使用cv::findHomography),并且我可以使用它将相机图像上的一个点映射到2D地图上(使用cv::perspectiveTransform)。现在我想在我的2D地图上跟踪这些对象,要做到这一点,我想考虑的是,在我的相机图像后面的对象在我的2D地图上的位置不如在前面的对象精确 我看了下面的例子,其中提到了平面拟合,但我真的不明白如何使用这种方法正确

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

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

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

编辑: 谢谢弗朗西斯科的推荐。但是,我想我在寻找与你的答案不同的东西。我不是想测试单应性本身的精度,而是一个真实摄像机视图中的测量密度与我创建的地图上的实际大小之间的关系。我想知道,当我在相机图像中的检测距离为1像素时,这一点在我的地图上会有多少米


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

你要寻找的是所谓的“预测误差条”或“预测不确定性”。你绝对应该参考一本关于估算理论的入门书来了解细节(例如)。但简单地说,预测的不确定性是

  • 图像1中的某个像素p将是图像2中像素p’在单应H下的映射H(p’)
  • 由于匹配对(q0,q0’,(q1,q1’,…)中的误差(用于估计H,…)而产生的不确定度,以H表示
  • 但假设模型是正确的,即图像1和图像2之间的真实映射实际上是单应(尽管单应本身的估计参数可能会受到误差的影响)

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

这是一个老问题,但除了在测量周围提取像素并对结果进行四舍五入之外,你找到了解决方案吗?没有,最后我决定暂时把这个错误作为一个手动参数。。。