【问题标题】:How to get uncertainty/covariance in estimating the pose of ArUco marker - OpenCV如何在估计 ArUco 标记的位姿时获得不确定性/协方差 - OpenCV
【发布时间】:2022-07-21 04:58:12
【问题描述】:

我正在使用 OpenCV 的 cv2.aruco.estimatePoseSingleMarkers 函数来估计 ArUco 标记的姿势并且效果很好。但是,我还想要姿势估计中的不确定性/协方差。

有没有办法做到这一点?

【问题讨论】:

  • 无论您采用何种解决方案,请记住,边缘需要以亚像素精度定位,而图像锐化通常会与此相混淆……更不用说大多数“计算机视觉”会幸福地忽略伽马映射,这将影响亚像素定位。

标签: opencv covariance aruco uncertainty


【解决方案1】:

我也一直在寻找关于姿势不确定性的论文。我不是很成功,但是发现了几篇从理论上研究围绕这个问题的论文......很难在实践中应用。一篇论文甚至说“没有人在考虑错误”LOL

我刚刚放弃了我的文献搜索,正在尝试以下方法:

  • 在一个正方形中创建了一组四个 ArUco 标签。这给出了以“组中心”为中心的四个估计。获取四个姿势和相关数据 (rvecs, tvecs)
  • 使用cv2.projectPoints,以四种不同的方式(从每个姿势)找到组中心。这给出了 2D(像素空间)随机误差。有点用处 - 您可以获得局部像素精度(毫米/像素)的估计值。
  • 使用 3D 旋转/平移(即构建和使用 4×4 变换矩阵,这需要 cv2.Rodrigues),在相机空间中找到组中心四种不同的方式 - 我认为这应该给出 3DOF (平移)随机误差。它确实给出了组中心位置的平均值±标准差,从标准差可以得到 SE(标准误差)-> 如果需要,将错误传播到其他位置。
  • 最后,再次使用 3D 旋转/平移,我将每个姿势的 Z 轴投影到相机空间中。单位 Z 给出姿态方向余弦,同样,mean±std 给出方向的随机误差。这将是另一个 3DOF(旋转)随机错误我希望...

不过,这只是随机错误。现在我正在考虑如何包含精度误差......我通常会回到 John R Taylor 的“误差分析简介”(“Train Wreck”一书)......他说

...例如,如果您必须用尺子测量明确定义的长度l 以毫米为单位,您可以合理地决定长度可以是 读到最接近的毫米,但没有更好。在这里,不确定性 dl 将是 dl = 0.5mm...

使用相同的(我认为?)推理,我放弃亚像素精炼,并假设像素精度误差为半个像素,开始进行像素精度估计。但是肯定有更聪明的人可以纠正这个问题吗?唐诺。

我会随着进度更新...

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2022-01-03
    • 1970-01-01
    • 1970-01-01
    • 2015-09-09
    • 1970-01-01
    • 2017-04-27
    • 2012-06-04
    • 1970-01-01
    相关资源
    最近更新 更多