相关疑难解决方法(0)

在存在相机抖动的情况下检测基准标记

当用户猛烈地移动相机(手机)时,我正试图使基于OpenCV的基准标记检测更加稳健.标记是ArTag风格,黑色边框内嵌有汉明码.通过对图像进行阈值处理来检测边界,然后根据找到的轮廓查找四边形,然后检查四边形的内部.

通常,如果识别黑色边界,则标记的解码相当稳健.我尝试过最明显的事情,即对图像进行两次下采样,并在这些级别上执行四次检测.这有助于相机在极端近地标记上散焦,并且还有非常小的图像模糊水平,但对于相机运动模糊的一般情况并没有太大帮助

是否有关于使检测更加稳健的方法的研究?我想知道的想法包括:

  1. 您可以进行某种光流跟踪来"猜测"下一帧中标记的位置,然后在这些猜测的区域中进行某种角点检测,而不是将矩形搜索视为全帧阈值处理吗?
  2. 在PC上,是否可以导出模糊系数(可能通过注册检测到标记的最近视频帧)并在处理之前对图像进行去模糊?
  3. 在智能手机上,是否可以使用陀螺仪和/或加速度计来获得去模糊系数并对图像进行预处理?(我假设没有,只是因为如果是这样的话,市场上会充斥着纠错相机应用程序.)

失败的想法的链接也将受到赞赏,如果它节省我尝试它们.

opencv computer-vision augmented-reality

7
推荐指数
1
解决办法
3026
查看次数

OpenCV 投影点与 Unity 相机视图之间不匹配

我们正在开发一个 AR 应用程序,其中需要将对象的 3D 模型叠加到对象的视频流上。Unity 场景包含 3D 模型,并且相机正在拍摄 3D 对象。相机姿势最初未知。

\n\n

\xe2\x96\xb6我们尝试过的

\n\n

我们没有找到一个好的解决方案来直接在 Unity 中估计相机位姿。因此,我们使用了OpenCV,它提供了广泛的计算机视觉函数库。特别是,我们找到Aruco 标签,然后将其匹配的 3D-2D 坐标传递给solvePnp.

\n\n

solvePnp返回与现实相符最多几厘米的相机位置。我们还验证了较低的重投影误差。

\n\n

Aruco 标签的重投影

\n\n

每个使用过的标签角都会被重新投影并在图像上显示为红点。如您所见,差异很小。

\n\n

这些结果看起来不错,应该足以满足我们的用例。\n因此,我们根据现实和 OpenCV 验证相机姿势。

\n\n

\xe2\x96\xb6问题

\n\n

然而,当将相机放置在 Unity 场景中的估计姿势时,3D 对象无法很好地对齐。

\n\n

标记和视频流的统一视图

\n\n

在此 Unity 屏幕截图中,您可以看到虚拟(Unity 对象)绿色标签的视图与视频源中的真实标签不匹配。

\n\n

\xe2\x96\xb6可能的根本原因

\n\n

我们确定了可以解释 Unity 和 OpenCV 之间不匹配的不同可能根本原因:

\n\n
    \n
  • 相机内在参数的差异:我们尝试了不同的参数组,但没有一个绝对成功。我们首先使用 OpenCV 校准相机并尝试反向移植参数到 Unity。我们还查看了制造商数据,但没有提供更好的结果。最后,我们手动测量了视场 (FoV),并将其与已知的相机传感器尺寸相结合。这些测试的结果没有太大差异。
  • \n
  • Unity 和 OpenCV 之间相机模型的差异:OpenCV 使用针孔相机模型,但我无法找到关于 Unity 模拟哪个模型的结论性答案。
  • \n
\n\n …

opencv computer-vision unity-game-engine pose-estimation opencv-solvepnp

6
推荐指数
0
解决办法
1403
查看次数