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

2023-09-08 00:57:16 作者:南墙撞死了

比方说,我有一组5个标记。我试图找到每个标记之间的相对距离使用增强现实的框架,如 ARToolkit 。在我的相机养活你最初的20帧显示我的第2个标记只有这样我就可以工作了2个标记之间的转换。第二个20帧告诉我只有等第二和第三标记。最后20帧告诉我5号和1号标记。我想建立的所有5个标记的标记位置的三维地图。

Let's say I have a set of 5 markers. I am trying to find the relative distances between each marker using an augmented reality framework such as ARToolkit. In my camera feed thee first 20 frames show me the first 2 markers only so I can work out the transformation between the 2 markers. The second 20 frames show me the 2nd and 3rd markers only and so on. The last 20 frames show me the 5th and 1st markers. I want to build up a 3D map of the marker positions of all 5 markers.

我的问题是,明知会有不准确适当的视频输入信号的低质量的距离,我该如何最大限度地减少不准确性给所有的信息,我已经收集?

我的幼稚的方法是使用所述第一标记作为基点,从第一帧20搭变换的平均值和将第二标记等的第三和第四。对于第五标记地方它其间的第四和第一通过将其放置在第五和第一和第四和第五之间的转换的平均值的中间。这种方法我感觉具有朝向所述第一标记放置一个偏压,但并没有考虑到相机看到每帧2个以上的标记。

My naive approach would be to use the first marker as a base point, from the first 20 frames take the mean of the transformations and place the 2nd marker and so forth for the 3rd and 4th. For the 5th marker place it inbetween the 4th and 1st by placing it in the middle of the mean of the transformations between the 5th and 1st and the 4th and 5th. This approach I feel has a bias towards the first marker placement though and doesn't take into account the camera seeing more than 2 markers per frame.

最后,我希望我的系统能够制定出的标记x个地图。在任何给定的帧最大为x标记可以出现并且有由于图像质量非全身的错误。

Ultimately I want my system to be able to work out the map of x number of markers. In any given frame up to x markers can appear and there are non-systemic errors due to the image quality.

任何关于正确处理这个问题的帮助将是很大的AP preciated。

Any help regarding the correct approach to this problem would be greatly appreciated.

修改: 关于该问题的更多信息:

More information regarding the problem:

可以说,在现实世界映射如下:

Lets say the realworld map is as follows:

可以说,我获得100的读数为每个由图像中的箭头psented重新$ P $点之间的转换。真正的值被写入上面的箭头。

Lets say I get 100 readings for each of the transformations between the points as represented by the arrows in the image. The real values are written above the arrows.

我得到的数值有一定的误差(假设按照有关实际值高斯分布)。例如获得marker 1到2可能是X上的读数之一:9.8 Y:0.09。鉴于我有所有这些读物我怎么估计地图。结果理想地应当尽可能接近真实值尽可能

The values I obtain have some error (assumed to follow a gaussian distribution about the actual value). For instance one of the readings obtained for marker 1 to 2 could be x:9.8 y:0.09. Given I have all these readings how do I estimate the map. The result should ideally be as close to the real values as possible.

我天真的做法存在以下问题。如果变换为1〜2,平均为稍微偏离放置3可以是中断,即使2〜3的读数是非常准确的。如下所示此问题:

My naive approach has the following problem. If the average of the transforms from 1 to 2 is slightly off the placement of 3 can be off even though the reading of 2 to 3 is very accurate. This problem is shown below:

果岭的实际值,在黑人的计算值。平均变换为1至2为x:10 Y:2

The greens are the actual values, the blacks are the calculated values. The average transform of 1 to 2 is x:10 y:2.

推荐答案

您可以使用最小二乘的方法,发现给最适合您的所有数据的转换。如果你想要的是标记之间的距离,这是测量的距离仅仅是平均水平。

You can use a least-squares method, to find the transformation that gives the best fit to all your data. If all you want is the distance between the markers, this is just the average of the distances measured.

假设你的标记位置是固定的(例如,一个固定的刚体),并且希望它们的相对位置,那么你可以简单地记录它们的位置和平均它们。如果没有为混淆一个标记与另一个潜在的,你可以从帧跟踪他们到帧,并使用每个标记位置的连续性,它的两个时期,以确认其身份。

Assuming that your marker positions are fixed (e.g., to a fixed rigid body), and you want their relative position, then you can simply record their positions and average them. If there is a potential for confusing one marker with another, you can track them from frame to frame, and use the continuity of each marker location between its two periods to confirm its identity.

如果您希望您的刚体被移动(或者如果身体不是刚性的,等等),那么你的问题是显著困难。两个标记在一个时间不足以固定刚体的位置(这需要三个)。但是,请注意,在每个转变,则有旧标记的位置,则新的标记,并且连续标记,在几乎相同的时间。如果你已经对身体为每个标记的预期位置,这应该提供一个刚性的一个很好的估计姿势,每隔20帧。

If you expect your rigid body to be moving (or if the body is not rigid, and so forth), then your problem is significantly harder. Two markers at a time is not sufficient to fix the position of a rigid body (which requires three). However, note that, at each transition, you have the location of the old marker, the new marker, and the continuous marker, at almost the same time. If you already have an expected location on the body for each of your markers, this should provide a good estimate of a rigid pose every 20 frames.

在一般情况下,如果身体运动时,最好性能将需要某种模型的其动态,这应被用于跟踪其姿态随着时间的推移。给定一个动态模型,您可以使用卡尔曼滤波做跟踪;卡尔曼滤波器很好适应整合你所描述的数据类型。

In general, if your body is moving, best performance will require some kind of model for its dynamics, which should be used to track its pose over time. Given a dynamic model, you can use a Kalman filter to do the tracking; Kalman filters are well-adapted to integrating the kind of data you describe.

通过包括您标记为卡尔曼状态向量的一部分的位置,你可能能够能够从纯粹的传感器数据推断出它们的相对位置(这似乎是你的目标),而不是需要此信息的先验。如果你希望能够有效地处理标记任意数量的,你可能需要拿出常用的方法,一些聪明的突变;您的问题似乎旨在避免传统的分解方法,如连续卡尔曼滤波解决方案。

By including the locations of your markers as part of the Kalman state vector, you may be able to be able to deduce their relative locations from purely sensor data (which appears to be your goal), rather than requiring this information a priori. If you want to be able to handle an arbitrary number of markers efficiently, you may need to come up with some clever mutation of the usual methods; your problem seems designed to avoid solution by conventional decomposition methods such as sequential Kalman filtering.

编辑,如下面的评论:

如果您的标记生成一个完整的三维姿态(而不是只是一个三维位置),附加数据会更容易维护你正在跟踪的对象,准确的信息。然而,上面仍是建议适用:

If your markers yield a full 3D pose (instead of just a 3D position), the additional data will make it easier to maintain accurate information about the object you are tracking. However, the recommendations above still apply:

如果标记体是固定的,使用最小二乘拟合所有有关帧的数据。 如果标记的主体移动时,模型及其动态,并使用一个卡尔曼滤波器。

新点浮现在脑海中:

在尝试管理链条相对变换未必是解决这个问题的最好办法;当你注意,很容易积累误差。然而,这并不一定是个不错的方法,可以,只要你能实现在该框架内必要的数学。 具体地,一个最小二乘拟合应很好地工作用链相对姿势或环 在任何情况下,为任何一个最小二乘拟合或卡尔曼滤波器跟踪,您的测量的不确定性的一个良好的估计将提高性能。