问题标签 [fiducial-markers]

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 回答
482 浏览

opencv - 如何实时检测经典碰撞测试假人基准标记?

我指的是看起来像这样的标记: 碰撞测试假人基准标记

我相信哈里斯角点检测和霍夫变换的某种组合可以用来定位标记。理想的做法是定位标记并获取它的边界(作为椭圆)或它的方向(作为圆柱体/切线向量)。

必须有一篇关于此的论文,但我找不到一篇。

0 投票
0 回答
246 浏览

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

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

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

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

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

0 投票
0 回答
166 浏览

python - Python OpenCV 侵蚀和扩张的工作方式与 C# 不同

我正在尝试将一些用于生成基准标记的代码从 C# 转换为 Python,但我陷入了侵蚀和扩张。OpenCV 的实现与 C# 实现的工作方式不同。

如果有人想重现该问题,这是完整的 C# 代码:https ://pastecode.io/s/2NbQPPOLCy

以下是标记生成器的 C# 代码的相关部分。它有自己的腐蚀和膨胀功能。

这就是扩张和侵蚀函数的调​​用方式:

下面是 C# 的 dilate 和 erode 函数的实现:

这是在 C# 中生成内核的方式:

这是 Python 的最小代码:

这是在膨胀和腐蚀之前生成的图像。在 C# 和 Python 中的腐蚀和膨胀之前,我设法获得了相同的图像。 预腐蚀和扩张

这是在 C# 中腐蚀和膨胀后的图像: 在此处输入图像描述

这是 Python 中侵蚀和扩张步骤后的图像: 在此处输入图像描述

我想知道如何在 Python 中实现与 C# 侵蚀和扩张后相同的图像

我还尝试将用于膨胀和腐蚀的 C# 代码转换为 python,但没有成功,因为 C# 实现使用指针,这在 Python 中不可用。

我从这个 repo 获得了 C# 代码:https ://github.com/bbenligiray/stag并对其进行了修改,使其全部在一个文件中

0 投票
0 回答
22 浏览

c++ - 尝试使用 USB 摄像头 Ubuntu 18.04 定位 Aruco Fiducials

我有一些我认为应该使用开放 CV 来检测一组基准的代码。出于某种原因,我无法让我的代码运行。它给出了错误“无法停止流:无效参数”

0 投票
0 回答
9 浏览

pattern-matching - 改进模式匹配或其他可以提高基准检测精度的方法

我想检测物体的位置旋转和缩放,以便可以适当放置夹臂来拾取物体。我使用了模板匹配,但没有达到我想要的精度。任何人都可以提出一种改进它的方法。或者有没有其他方法可以提供更好的精度?