问题标签 [apriltags]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
0 回答
264 浏览

c++ - Apriltags3,当标记面向相机时,如何改善姿势模糊?

我有一个使用 Apriltags3 基准标记的 c++ 应用程序。

这些看起来既快速又稳定,除非标记平面向相机或其附近。

在这些情况下,姿势显着翻转,使姿势数据无法使用。据我了解,这种翻转是方形标记的一个已知问题,因为有两种可能的解决方案来估计姿势。

我该如何改善这种翻转?我努力了:

1 - 使用带有 IPPE_SQUARE 标志的 SolvePnp,我能够返回两个解决方案。

然后我选择最接近前一个姿势的姿势。这工作得很好,直到姿势的旋转通过零(正值到负值),然后旋转轴翻转。

2 - 存储前几个姿势并在 3d 点、2d 角和姿势上运行滑动窗口束调整。这似乎没有任何效果,我仍然看到同样的翻转。

3 - 使用以下内容:

获取相机相对于标记的姿势。我会假设具有正 X 值(在标记前面)的相机姿势是正确的,但是,当我使用该姿势时:

我看到与解决方案 1 相同的问题。

4 - 使用立体相机,在每帧中找到标记,对点进行三角测量,然后使用 Eigen SVD 函数找到这些点与从零标记长度创建的一组点之间的刚性变换。

这对翻译很有用,但旋转似乎翻转得更多!

有答案吗?我还能尝试什么?

注意:我用 Aruco 标记测试过,相同的相机和校准,我没有看到这个翻转问题,这似乎是 Apriltags3 的问题。

0 投票
0 回答
2671 浏览

python - 详细了解openCV aruco标记检测/姿态估计:亚像素精度

我目前正在研究openCV的'aruco'模块,特别关注ArUco标记和AprilTags的poseEstimation。

查看亚像素精度,我遇到了一个奇怪的行为,下面的代码证明了这一点:如果我确实提供了“完美”校准(例如 cx/cy 等于图像中心并且失真设置为零)和“完美”具有已知边长的标记,如果旋转为 0/90/180 或 270 度,cv.detectMarkers 只会产生正确的值。子像素例程为其他方向产生(几乎)恒定值,但处于“偏移”水平。很明显,在 0/90/180/270 度的特定角度,角落中的像素会产生急剧的过渡,因此可以高精度检测。然而,我很难看出在所有其他情况下被低估的长度是从哪里来的。这是一个错误还是由某些三角函数引起的?--> 看下面脚本生成的图表:姿态误差是由角点检测误差引起的。因此,检测精度将取决于代码的方向。

我还检查了 ArUco 标记和不同的亚像素化方法。尽管两者之间的角度行为会改变,但“峰值”仍然存在。

我很确定,这不是由于与标记旋转相关的插值,因为我也可以在实际数据中观察到相同的行为(但请注意,峰的“高度”似乎在某种程度上取决于插值方法。您可以通过将 cv.warpAffine 中的标志更改为 cv.INTER_LINEAR 来进行测试。

我的问题是:

  1. 峰值是由于错误还是这是预期的行为?
  2. 如果是后者,你能帮我理解为什么吗?
  3. 有没有办法消除精度的这种方向依赖性(除了增加系统的分辨率,不需要亚像素)?

编辑:请注意,AprilTag 功能最近才添加到 openCV,因此您需要升级到某些标准存储库中尚不可用的最新版本。例如,您可以在 conda-forge 上获取最新版本。/编辑

0 投票
2 回答
664 浏览

computer-vision - AprilTag 本地化预期准确度

我正在使用密歇根大学 AprilTag 库来定位对象,并正在寻求满足我的定位准确性目标的建议。我正在使用0.4 MegaPixel 相机,在距离 0.1-1.5 米远的大约 7.5 厘米宽的标签上。我使用 MatLab 来校准我的相机内在函数和失真系数。

期望的结果 我希望能够将标签定位到 5 毫米以内的精度。

观察到的结果 当我相对于标签移动相机时,定位结果会有所不同。我离标签每移动 100 厘米,我发现标签在世界上的投影位置漂移了大约 10 厘米。

我的本地化准确性的合理期望是什么?我可以采取哪些措施来减少我观察到的漂移?

0 投票
1 回答
68 浏览

python - 在 Ruby 模式下打开 Python 脚本不起作用

在 Python 3.9 中尝试新的“Ruby 模式”,但无法正常工作:

中的简单脚本mymodule

以 ruby​​ 模式(“rb”)执行文件时的预期输出是打印在标准输出上的“Hello World”,但我收到一个错误:

看起来这些行被正确解析为rb"ruby style lines",所以它显然没有open错:

这里有什么问题?那一定是一个错误exec,对吧?

0 投票
1 回答
335 浏览

c++ - AprilTag - 以欧拉角形式获取旋转信息

我正在尝试采用 AprilTag 的 3x3 旋转矩阵输出并将其转换为欧拉角。

我知道使用欧拉角可能会出现一些问题,例如轴排序和云台锁定等。但是我的用例非常简单,这确实不应该成为问题。

我让 AprilTag 成功检测到标签,并估计如下姿势:

我可以毫无问题地从那个姿势中提取平移数据,就像这样。(而且它似乎相当准确,在 18 英寸外大约有 1/3 英寸的误差)

我可以在 处访问估计的 3x3 旋转矩阵(类型matd_tpose.R。问题是,我无法弄清楚如何将 3x3 矩阵转换为“正常”欧拉角。我已经尝试了 3 种不同的方法来将 3x3 矩阵转换为我在网上找到的欧拉角,但都没有奏效。

我发现的第一种方法:

我发现的第二种方法:

我发现的第三种方法:

所有这些方法都返回了完全垃圾数据。然后我尝试使用此处decomposeProjectionMatrix描述的 OpenCV 功能。

我将 AprilTag 的数据输入如下:

这也产生了垃圾数据。我认为这很简单,但显然不是。有谁知道如何从 AprilTag 中正确获取欧拉角?

0 投票
0 回答
65 浏览

c - 如何在flutter应用程序上访问apriltag库

我目前正在 Flutter 上创建一个应用程序来跟踪 Apriltags,我正在使用密歇根大学创建的 Apriltag 库,这个库是用 C 编写的。我需要帮助找出如何能够访问这个的步骤C 库。

0 投票
0 回答
246 浏览

computer-vision - Aruco 是高精度姿势估计的好标记吗?如果是这样,我应该使用哪个字典?

我目前正在从事一个计算机视觉项目,我需要估计针的姿势以协助外科医生操作它。不用说我需要极高的精度。

我目前正在编写最后一个实习生留下的代码,他使用 aruco 基准标记进行姿势估计。

我已经阅读了一些论文,感觉 aruco 不够好,但似乎有各种各样的字典,它们的属性差异很大。

apriltag 、 s-TAG 或 ARToolKitPlus 是否更适合此应用程序?

0 投票
0 回答
242 浏览

python - 无效的数字参数“/Wsign-compare”:无法在 Windows 上安装 pip 包或构建相应的库

我已经在 linux 上使用了 python 模块apriltag(在此处找到https://pypi.org/project/apriltag/)一段时间,并且需要将我的系统移至 Windows。在我的 Windows 机器上,我尝试在 python3.6 上安装 apriltag pip 包:

python -m pip install apriltag

但是轮子未能构建,给了我一个很长的错误列表,我认为其中的关键是

构建自定义规则 C:/Users/xxxx/apriltag_3b8f424df9f543459d5bd3db09137d9f/core/CMakeLists.txt cl:命令行错误 D8021:无效的数字参数'/Wsign-compare'```

担心 PyPI 包在 windows 上可能不起作用(?)我查看了它所基于的项目,在这里找到https://github.com/swatbotics/apriltag。克隆到它并使用 Visual Studio 构建它,第一个构建失败了

错误 D8021 无效的数字参数“/Wsign-compare”

我在这里查看过,/Wsign-compare但没有发现任何人甚至得到这个错误的例子,更不用说解决它了。让我知道是否有修复它,或者这个 repo 是否永远不会在 Windows 上构建。

谢谢 :)

编辑:为上下文添加了整个 python 构建日志

0 投票
2 回答
566 浏览

opencv - 这是 ARUCO 板估计的正常不稳定量吗?(视频示例)

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

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

在我的导航范例中,我假设板上最好的位置锁定是从死前开始,但在我目前的设置下这似乎是最差的。

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

认为我增加了不稳定性还是已经存在?

这只是... aruco 代码/板的外观如何?还是我的电路板设计有问题,还是其他什么?很想听听那些对自己的抖动(或稳定性)有一定经验的人的意见,谢谢!

0 投票
0 回答
22 浏览

detection - ArUco 校准未读取整行标记

我一直在尝试使用 aruco_calibration_fromimages 但我得到了糟糕的校准文件,我真的不知道为什么。似乎该程序甚至没有读取我提供给它的所有图像的第一行,无论图像有多近或多远。

校准期间丢失行 另一个丢失行示例

然后,一旦我使用这些校准图像来读取标记,它们就遥遥无期了。

用我的校准文件读取标记 另一个例子

有没有人遇到过这样的问题或知道为什么会发生这种情况?

我开始使用 20 幅图像进行校准,然后是 40 幅,现在是 60 幅。情况有所好转,但仍然非常糟糕。