opencv - 对于 ARUCO 董事会估算来说,这是正常的不稳定程度吗? (视频示例)

标签 opencv computer-vision aruco pose-estimation apriltags

我正在尝试使用 ARUCO 板来协助室内机器人导航,但当板最正对相机时,我遇到了姿势估计 Z 轴闪烁的问题。请查看这里的问题 - 观察蓝轴在面对相机时如何来回闪烁,但在其他角度时更稳定:

https://drive.google.com/file/d/1l8uqKLbA9R4ij_kjPcYeGPUObR_sHkGn/view?usp=sharing

在我的导航范例中,我假设板上最好的位置锁定是从正前方进行,但这在我当前的设置下似乎是最差的。

  • 该视频启用了亚像素角点细化。
  • 各个标记的姿势是与板分开进行估计的,因此我们可以看到问题出现在各个标记上,而不仅仅是板本身。
  • 蓝轴不稳定性始终是水平的,即使我将标记旋转 90 度,水平方向上仍然会出现抖动 - 上下倾斜 0 时不会出现这种抖动,只有左右倾斜。
  • 我将 rvec 和 tvec 直接从检测传递到 opencv 中以绘制标记,如下所示:

think im adding the instability or it's already in there?

这只是... aruco 代码/板的正面外观吗?还是我的板子设计有问题,或者其他什么问题?希望听听对自己的抖动(或稳定性)有一定经验的人的意见,谢谢!

最佳答案

这更多的是 CV 领域特定的问题,而不是编码问题。不过,为了您的兴趣,我还是会回答这个问题。

为了使结果更加精确,需要从以下方面对系统进行增强:

1。相机标定

我认为您的相机焦距较小,因此存在一些失真。该算法利用形状畸变来计算标记的姿态,因此相机的畸变会对精度产生很大影响。

2。刚性标记

记号笔打印在非常柔软的 A4 纸上。同样的原因,这会影响姿势推断的精度。将记号笔打印在纸板上,或者将打印的记号笔粘贴在硬纸板上,或者将记号笔放在 table 上并移动相机进行测试。

3。更高的分辨率和更好的照明条件

我不确定上传时视频是否被压缩,但显然更高的分辨率会带来更高的精度。上传的视频光线和分辨率较差。

您的计算机和算法似乎运行良好,因为帧速率非常好。我认为主要问题是你的实验设置。

蓝轴不稳定性始终是水平的,即使我将标记旋转 90 度,抖动仍然发生在水平方向上 - 上下倾斜 0 时不会发生这种抖动,只有左右倾斜。

抖动来自于标记的细微变形,当标记垂直于相机主轴时,标记的投影更接近正方形,当标记垂直时,“蓝轴”对形状失真的导数更大。 “90度”。因此它对这些扭曲更加敏感。这就是为什么蓝轴在90度位置时抖动更严重的原因。

以下是一些成功的测试。 oneanother

关于opencv - 对于 ARUCO 董事会估算来说,这是正常的不稳定程度吗? (视频示例),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66146143/

相关文章:

python - 在laravel中运行python脚本

python - 检测图像中的多个圆圈

opencv - 我应该使用什么样的描述符来检测海豹幼崽?

opencv - 从凸点获取角

opencv - 如何确定OpenCV在世界空间(而不是Charuco板的方向)中的摄像机旋转角度?

python - opencv2 Aruco 库模块不适用于 python

objective-c - opencv 2.2 xcode4 ios4.3

java - 使用 Android (ndk) 在 C++ 中打开和读取文本文件

.seh_savexmm 的 Opencv 3.4.1 错误无效寄存器

c++ - 使用 openCv 的 Aruco 标记,获取 3d 角坐标?