Math 精确测量一组基准点之间的相对距离(增强现实应用)

Math 精确测量一组基准点之间的相对距离(增强现实应用),math,3d,computer-vision,augmented-reality,artoolkit,Math,3d,Computer Vision,Augmented Reality,Artoolkit,假设我有一套5个标记。我正在尝试使用增强现实框架(例如,虚拟现实)查找每个标记之间的相对距离。在我的相机中,前20帧只显示前2个标记,这样我就可以计算出这2个标记之间的转换。第二个20帧仅显示第二个和第三个标记,依此类推。最后20帧显示了第5个和第1个标记。我想建立一个所有5个标记位置的3D地图 我的问题是,知道由于视频馈送的质量低,距离会有不准确的地方,我如何在我收集的所有信息的基础上最大限度地减少不准确的地方? 我天真的方法是使用第一个标记作为基点,从前20帧开始,取变换的平均值,然后放置第

假设我有一套5个标记。我正在尝试使用增强现实框架(例如,虚拟现实)查找每个标记之间的相对距离。在我的相机中,前20帧只显示前2个标记,这样我就可以计算出这2个标记之间的转换。第二个20帧仅显示第二个和第三个标记,依此类推。最后20帧显示了第5个和第1个标记。我想建立一个所有5个标记位置的3D地图

我的问题是,知道由于视频馈送的质量低,距离会有不准确的地方,我如何在我收集的所有信息的基础上最大限度地减少不准确的地方?

我天真的方法是使用第一个标记作为基点,从前20帧开始,取变换的平均值,然后放置第二个标记,以此类推,放置第三个和第四个标记。对于第五个标记,它放置在第四和第一之间,通过将其放置在第五和第一和第四和第五之间的变换的平均值中间。我觉得这种方法偏向于第一个标记的放置,并且没有考虑到相机每帧看到超过2个标记

最终,我希望我的系统能够计算出x个标记的地图。在任何给定的帧中,最多可以出现x个标记,并且由于图像质量,存在非系统性错误

如果您能提供正确解决此问题的任何帮助,我们将不胜感激

编辑: 有关此问题的更多信息:

假设现实世界地图如下所示:

假设我得到了图像中箭头表示的点之间的每个变换的100个读数。实际值写在箭头上方

我得到的值有一些误差(假设实际值遵循高斯分布)。例如,标记1至2的一个读数可能是x:9.8 y:0.09。既然我有这些读数,我该如何估计地图呢。理想情况下,结果应尽可能接近实际值

我天真的做法有以下问题。如果从1到2的变换的平均值稍微偏离,则即使2到3的读数非常准确,3的位置也可能会偏离。此问题如下所示:

绿色是实际值,黑色是计算值。1到2的平均转换为x:10 y:2。

您可以使用一种方法来找到最适合所有数据的转换。如果您只需要标记之间的距离,那么这只是测量距离的平均值

假设您的标记位置是固定的(例如,固定到固定刚体),并且您想要它们的相对位置,那么您可以简单地记录它们的位置并将其平均。如果可能会将一个标记与另一个标记混淆,则可以逐帧跟踪它们,并使用每个标记位置在其两个周期之间的连续性来确认其标识

如果你期望你的刚体在移动(或者如果刚体不是刚体,等等),那么你的问题就更难了。一次两个标记不足以固定刚体的位置(需要三个)。但是,请注意,在每个过渡处,您几乎同时拥有旧标记、新标记和连续标记的位置。如果您的每个标记在身体上已经有了一个预期的位置,那么这应该可以很好地估计每20帧的刚性姿势

一般来说,如果你的身体在移动,最好的表现将需要某种动力学模型,该模型应用于随时间跟踪其姿势。给定一个动态模型,您可以使用a来进行跟踪;卡尔曼滤波器非常适合集成您描述的数据类型

通过将标记的位置作为Kalman状态向量的一部分,您可能能够从纯粹的传感器数据(这似乎是您的目标)推断出它们的相对位置,而不需要先验信息。如果你想有效地处理任意数量的标记,你可能需要想出一些常用方法的巧妙变异;您的问题似乎旨在避免使用常规分解方法(如顺序卡尔曼滤波)来解决


根据以下评论进行编辑:

如果标记生成完整的三维姿势(而不仅仅是三维位置),则附加数据将使您更容易维护有关正在跟踪的对象的准确信息。但是,上述建议仍然适用:

  • 如果标记的主体是固定的,则使用所有相关帧数据的最小二乘拟合
  • 如果标记的物体正在移动,则对其动力学建模并使用卡尔曼滤波器
我想到的新观点是:

  • 试图管理一系列相对转换可能不是解决问题的最佳方式;正如您所注意到的,它容易出现累积错误。然而,这也不一定是一种坏方法,只要您能够在该框架中实现必要的数学
  • 特别是,最小二乘拟合应该能够很好地处理链式或环形的相对姿势
  • 在任何情况下,无论是最小二乘拟合还是卡尔曼滤波跟踪,对测量不确定性的良好估计都将提高性能

在dsp.stackexchange.com上可能更好?感谢您的回复,标记位置是固定的。我每帧仅有的信息是帧中显示的标记之间的3D转换。误差可能是高斯分布。我实际上没有标记的位置,但我可以区分一个标记和另一个标记。如果我理解正确,你在做光学跟踪,最多2个p