我正在尝试找到一种方法来参数化我的单应性计算的精度。我想获得一个值,该值描述在特定位置进行的测量的单应性计算的精度。
我目前已经成功地计算了单应性(使用 cv::findHomography
),我可以使用它将我的相机图像上的一个点映射到二维 map 上(使用 cv::perspectiveTransform
)。现在我想在我的 2D map 上跟踪这些对象并为此我想考虑到我的相机图像后面的对象在我的 2D map 上的位置不如一直在的对象前面。
我查看了关于此 website 的以下示例那提到了平面拟合,但我真的不明白如何使用这种方法正确填充矩阵。结果的可视化似乎确实符合我的需要。有什么方法可以用标准的 OpenCV 函数做到这一点吗?
编辑: 感谢弗朗切斯科的建议。但是,我想我正在寻找与您的答案不同的东西。我不是要测试单应性本身的精度,而是要测试一个真实相机 View 中的测量密度与我创建的 map 上的实际尺寸之间的关系。我想知道当我在相机图像中检测到 1 个像素时,此时我的 map 上会有多少米。
当然,我可以通过在我的相机图像上测量周围的一些像素来计算,然后使用单应性来查看每次我做单应性时这代表我的 map 上有多少米,但我不想计算这个每次。我想要的是有一个公式可以告诉我图像中的像素与 map 上的像素之间的关系,这样我就可以在 map 上进行跟踪时考虑到这一点。
最佳答案
您正在寻找的是所谓的“预测误差线”或“预测不确定性”。你绝对应该查阅一本关于估计理论的好介绍性书籍以获取详细信息(例如 this one )。但简而言之,预测不确定性是......
- 图像1中的某个像素p将是图像2中像素p'在单应性H...下的映射H(p')
- 鉴于已用于估计 H 的匹配对 (q0, q0'), (q1, q1'), ... 中的误差导致 H 的不确定性,...
- 但假设模型是正确的,也就是说,图像 1 和 2 之间的真实映射实际上是单应性的(尽管单应性本身的估计参数可能会受到误差的影响)。
为了估计此概率分布,您需要一个测量误差模型,以及一个测量误差如何通过(单应性)模型传播的模型。
关于c++ - 计算二维平面上单应性的精度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18588353/