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

2024-03-17

假设我有一组 5 个标记。我正在尝试使用增强现实框架找到每个标记之间的相对距离,例如AR工具包 http://www.hitl.washington.edu/artoolkit/。在我的相机中,前 20 帧仅向我显示前 2 个标记,以便我可以计算出 2 个标记之间的转换。第二个 20 帧仅显示第二个和第三个标记,依此类推。最后 20 帧显示了第 5 个和第 1 个标记。我想构建所有 5 个标记的标记位置的 3D 地图。

我的问题是,知道由于视频源质量低而导致距离不准确,根据我收集的所有信息,如何最大限度地减少不准确度?

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

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

任何有关解决此问题的正确方法的帮助将不胜感激。

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

假设真实的世界地图如下:

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

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

我的幼稚方法存在以下问题。如果从 1 到 2 的变换平均值稍微偏离,则即使 2 到 3 的读数非常准确,3 的位置也可能会偏离。这个问题如下图所示:

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


您可以使用最小二乘法 http://mathworld.wolfram.com/LeastSquaresFitting.html方法,找到最适合所有数据的转换。如果您想要的只是标记之间的距离,那么这只是测量距离的平均值。

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

如果您预计刚体会移动(或者身体不是刚体,等等),那么您的问题就会困难得多。一次两个标记不足以固定刚体的位置(需要三个)。但请注意,在每次转换时,您几乎同时获得旧标记、新标记和连续标记的位置。如果您已经有了每个标记在身体上的预期位置,那么这应该可以每 20 帧提供一个刚性姿势的良好估计。

一般来说,如果您的身体在移动,则最佳性能将需要某种动态模型,该模型应该用于跟踪其随时间变化的姿势。给定一个动态模型,您可以使用卡尔曼滤波器 http://en.wikipedia.org/wiki/Kalman_filter进行跟踪;卡尔曼滤波器非常适合集成您所描述的数据类型。

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


编辑,根据以下评论:

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

  • 如果标记的身体是固定的,则使用所有相关帧数据的最小二乘拟合。
  • 如果标记的物体正在移动,则对其动力学进行建模并使用卡尔曼滤波器。

我想到的新点:

  • 尝试管理一系列相对转变可能不是解决问题的最佳方法;正如您所注意到的,它很容易出现累积错误。然而,只要您可以在该框架中实现必要的数学,这也不一定是坏方法。
  • 特别是,最小二乘拟合应该与相对姿势链或环完美配合。
  • 无论如何,无论是最小二乘拟合还是卡尔曼滤波器跟踪,对测量不确定性的良好估计都将提高性能。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

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

  • 为什么循环引导迭代算法的数组大小必须为 3^k+1?

    The 循环引导迭代算法 http www geeksforgeeks org an in place algorithm for string transformation 是一种通过将所有偶数项移至前面并将所有奇数项移至后面同时保留其相
  • 构建协同过滤/推荐系统

    我正在设计一个网站 该网站的概念是根据用户的口味向他们推荐各种商品 即他们评价过的项目 添加到收藏夹列表中的项目等 亚马逊 Movielens 和 Netflix 就是这样的例子 现在 我的问题是 我不知道从哪里开始了解这个系统的数学部分
  • Java 的 3D 场景图库?

    我正在寻找一个可靠的 Java 3D 场景图 API 它具有良好的文档 活跃的社区和允许商业使用的许可证 我排除了com sun scenegraph https scenegraph dev java net 因为它是 GPL 而且看起来
  • 计算 Adamic-Adar 的快速算法

    我正在研究图形分析 我想计算一个 N N 相似度矩阵 其中包含每两个顶点之间的 Adamic Adar 相似度 为了概述 Adamic Adar 让我从以下介绍开始 给定邻接矩阵A无向图的G CN是两个顶点的所有公共邻居的集合x y 两个顶
  • 多个点之间的最短路线

    我需要找到多个点之间的最短路线 假设我有以下四点 var startPoint new Point 1 1 var pointsToGoPast new List
  • 现代 GPU 上的纹理更改(和其他状态更改)成本

    我正在编写一个基于场景图的图形引擎用于建模目的 我正在使用 XNA 4 在我读过的许多地方 渲染期间应该最小化纹理变化 和其他状态变化 因此我必须按材质等对图元进行排序 我在 XNA 4 中创建了一个小型测试应用程序 它使用单个纹理渲染数百
  • 有人知道如何在android中实现像Unfold(这是iphone中的应用程序)这样的效果吗?

    我怎样才能实现这个效果呢 任何建议都会对我有帮助 None
  • 基本的 Python OpenCV 裁剪和调整大小

    有人可以帮我一些裁剪算法吗 它的 openCV 我想弄清楚这一点 我知道方法是crop image y y1 x x1 如果我有一个带有 new dimensionXxnew dimensionY 像素的图像 并且我想将其裁剪为相同的宽度
  • 如何在 R 中导入并绘制三角形网格?

    我想在 R 中绘制我的模型输出 它是格式为的三角形网格 x1 y1 z1 x2 y2 z2 x3 y3 z3 value 每行代表一个三角形 我想用以下方法绘制这些三角形value作为规模 mymesh lt structure c 0 9
  • 检测植物图片中的所有分支

    我想知道有什么可以检测下图中的所有绿色树枝 目前我开始应用 Frangi 过滤器 options struct FrangiScaleRange 5 5 FrangiScaleRatio 1 FrangiBetaOne 1 FrangiBe
  • 如何识别与我的对象相关的轮廓并找到它们的几何质心

    问题陈述和背景信息 EDIT 约束 法兰上的红色会随着时间的推移而变化 所以我此时不会尝试使用颜色识别来识别我的对象 除非它足够强大 此外 外部照明也可能是一个因素 因为将来这将是在室外区域 我有 RGB 深度相机 有了它 我就能捕捉到这个
  • 图像处理:什么是遮挡?

    我正在开发一个图像处理项目 我遇到了这个词闭塞在许多科学论文中 遮挡在图像处理中意味着什么 字典只是给出了一般的定义 谁能使用图像作为上下文来描述它们 遮挡意味着您想看到某些内容 但由于传感器设置的某些属性或某些事件而无法看到 它到底如何表
  • 计算三次贝塞尔曲线的弧长、曲线长度。为什么不工作?

    我正在用这个算法计算弧长 三次贝塞尔曲线的长度 function getArcLength path var STEPS 1000 gt precision var t 1 STEPS var aX 0 var aY 0 var bX 0
  • C 中的浮点运算是否具有结合律?

    加法在数学上具有结合律 a b c a b c 在一般情况下 此属性不适用于浮点数 因为它们表示有限精度的值 作为优化的一部分 从 C 程序生成机器代码时 编译器是否允许进行上述替换 C标准中到底在哪里说的 不允许编译器执行 优化 这将导致
  • 如何在 Detectron2 中计算并集交集?

    我正在使用 Detectron2 进行对象检测 我已经注册了 pascalvoc 数据集并训练了一个检测模型 如何计算测试数据集的平均 IOU 我知道 detector2 有一个用于计算 IOU 的预定义函数 即 detectorron2
  • 正确使用 fft2 和 fftshift 进行着色形状

    我正在尝试从 Trucco Verri 文本 3d 计算机视觉入门技术 中看到的着色算法重新创建经典形状 但我很难理解 matlab 中的 fft 函数 本质上 我需要使用可积性约束来获取图像的深度 Z 我不确定在这种情况下何时使用 fft
  • 从相机视图中拖动锁定在一定距离/半径处的对象

    我在场景中心有一个相机 距离相机 z 400 处有 1 个球体 其父级位于中心 我想从视图中向上 向下 向左 向右拖动球体 但同时不改变它相对于中心的 z 位置 我最终使用了另一个球体并使其不可见 添加side THREE DoubleSi
  • 游戏如何制作火焰和烟雾效果? [关闭]

    很难说出这里问的是什么 这个问题是含糊的 模糊的 不完整的 过于宽泛的或修辞性的 无法以目前的形式得到合理的回答 如需帮助澄清此问题以便重新打开 访问帮助中心 help reopen questions 我在互联网上搜索了有关粒子系统和火焰
  • 查找最接近点的多边形顶点的索引

    Heading 我需要找到最接近点的多边形的索引 所以在这种情况下 输出将是 4 和 0 这样 如果添加了红点 我就知 道将顶点放置在数组中的位置 有谁知道从哪里开始 抱歉 如果标题有误导性 我不知道如何正确表达它 In this case
  • 如何使用SIFT算法计算两幅图像的相似度?

    我已经用过SIFT http en wikipedia org wiki Scale invariant feature transform实施安德里亚 维达尔迪 http www vlfeat org overview sift html

随机推荐

  • 为什么 .Net 没有 Thread.Start() 的通用版本?

    我想知道为什么 Net 没有启动线程的通用方法 例如 我们启动一个像下面这样的线程 Thread th new Thread SayHello th Start Hello private static void SayHello obje
  • 具有单一选择的列表框,并且单击时也取消选择...?

    我需要一个在第一次单击时选择并在第二次单击时取消选择的列表框 以便任何时候只选择零个或一个项目 当您按住 crtl 时 选择 取消选择是在列表框中实现的 SelectionMode Single 但不幸的是 我的用户都不知道这一点 使用 S
  • 自定义 Django 管理索引页面以显示模型对象

    在 Django 管理索引页面中 通常会列出应用程序及其模型 模型对象如何也列在该索引页中 我不仅想显示应用程序 还想显示其模型对象 应该如何定制呢 我希望我的网站具有相同的功能 并通过对核心 django 系统进行轻微修改来添加它 Ste
  • appium - 如何获取本机 Android 应用程序中元素的背景颜色

    我正在尝试使用自动化应用程序appium 如何获取 Android 应用程序中元素的背景颜色 我尝试使用 element getCssValue background color 但我面临以下异常 java lang ClassCastEx
  • 数据流图构建

    我被要求编写一个程序 在给定抽象语法树的情况下构建输入程序代码的数据流图 我在网上搜索了数据流图的定义 发现在代码段的数据流分析中发生了很多事情 我想知道我到底需要绘制什么来为给定的代码构建数据流图 很感谢任何形式的帮助 给定 AST 要生
  • char类型可以归类为整数吗?

    刚才我读到 char是Java中唯一的无符号整型原始类型 这是否意味着 char 是 Java 中的整型类型之一 和C一样 最近我读到C类型包括标量类型 函数类型 联合类型 聚合类型 标量类型包括指针类型和算术类型 那么算术类型包括整型和浮
  • 查找特定元素之前和之后的元素

    我有一个列表 其中包含我与选项卡一起使用的链接 它看起来像这样 ul li a href First tab a li li a href Second tab a li li class active a href Active tab
  • google/guava 库出现 Spark 错误:java.lang.NoSuchMethodError: com.google.common.cache.CacheBuilder.refreshAfterWrite

    我有一个简单的spark项目 其中在pom xml依赖只是基本的scala scalatest junit and spark
  • 字符串中的前两个单词 - sql server

    我有这样的字符串 这是一个 hello world 示例 现在我想要该句子的前两个单词作为 SQL Server 中的输出 即这是 另一个例子 原句 完整的单词练习 输出 完整的单词 您可以按如下方式使用查询 DECLARE d nvarc
  • Boyer–Moore 字符串搜索算法的移位规则是什么?

    我一直在尝试理解轮班规则Boyer Moore 字符串搜索算法但还没有理解他们 我读到这里维基百科 http en wikipedia org wiki Boyer E2 80 93Moore string search algorithm
  • 如何在 Eclipse 中使用 PHPdoc

    我们目前正处于一个新项目的开始阶段 希望 这一次 从一开始就尽可能多地发表评论 以帮助未来的发展 我试图找出在 Eclipse 中使用 phpDoc 的最佳实践 但结果非常有限 您能分享一下在 Eclipse 中使用 phpDoc 注释内容
  • 无法将类“java.lang.String”的对象 jar 转换为类“java.util.Map”。从 grails 3.0.10 升级到 3.1.11 时

    我正在将我的应用程序从 grails 3 0 10 升级到 3 1 11 当我运行grails clean命令在读取我的内容时显示以下错误 gradle文件夹依赖项 错误初始化类路径时出错 无法转换对象 file root gradle c
  • 用户控件在面板上拖放

    我正在制作一个图形编辑器 但在拖放时遇到一些问题Panel 椭圆没有占据我放置它的确切位置 我认为它被放置在大小为 150 150 的 UserControl 中 这是一个短片的链接来说明我的意思 http gyazo com abf548
  • Android 会在更新时清理应用程序缓存吗?

    In this document https developer android com training data storage files 谷歌表示 当用户卸载您的应用时 系统会删除您应用的所有内容 内部存储中的文件 但是 当更新应用
  • R6 类的 S4 调度行为不一致

    实际问题 事实不应该是这样吗R6 https github com wch R6类继承自 非正式 S3 类R6允许为该类的签名参数定义 S4 方法吗 由于事实并非如此 那么符合当前 S3 S4 标准或在这种情况下在某种程度上可以被视为 最佳
  • jQuery:自动触发悬停

    我对列表项有一个悬停鼠标输入鼠标悬停设置 如下所示 main nav li a hover function el this leftPos el position left newWidth el parent width magicNa
  • 使用 Apache POI 编辑 Word 文档 [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我正在尝试读取Word文档模板 然后用用户给定的数据替换模板中的变量 不更改模板上的标题或样式 我不确定我正在做的事情是否正确 但是这
  • 使用 ASP.NET MVC 处理/接收从 WebRTC 或任何基于浏览器的捕获机制到服务器的实时视频网络摄像头流

    我们需要从 WebRTC 或来自客户端网络摄像头的任何其他捕获机制 即使并非所有浏览器都支持 但作为 PoC 捕获实时视频流 该实时视频需要由服务器组件 ASP Net MVC Web API 处理 我想服务器上的代码将如下所示 HttpP
  • 更新 Windows 服务

    我有一个用 net VB net 2 0 编写的 exe 我使用 installutil exe 将其安装为服务 我的问题是 每次更新 exe 时是否都需要完全卸载该服务并重新安装 我尝试停止服务并替换 exe 但它似乎没有反映所做的更改
  • 准确测量一组基准点之间的相对距离(增强现实应用)

    假设我有一组 5 个标记 我正在尝试使用增强现实框架找到每个标记之间的相对距离 例如AR工具包 http www hitl washington edu artoolkit 在我的相机中 前 20 帧仅向我显示前 2 个标记 以便我可以计算