6种常用的AR跟踪方法
增强现实 (AR) 是一项令人着迷的技术,可将虚拟内容与现实世界无缝集成。实现这种无缝集成的关键组件之一是跟踪。各种类型的跟踪用于确定 AR 内容在环境中的准确位置和方向。本文介绍 AR 最常见的6种跟踪方法。
NSDT工具推荐: Three.js AI纹理开发包 - YOLO合成数据生成器 - GLTF/GLB在线编辑 - 3D模型格式在线转换 - 可编程3D场景编辑器 - REVIT导出3D模型插件 - 3D模型语义搜索引擎 - Three.js虚拟轴心开发包 - 3D模型在线减面 - STL模型在线切割
1、世界空间跟踪
世界空间跟踪(world space tracking)也称为相机位置估计或位置跟踪,是指准确确定设备(例如智能手机或 AR 耳机)相对于物理环境的位置和方向的过程,这包括跟踪设备在三维空间中的移动和旋转。
世界空间跟踪的主要目标是将虚拟内容与现实世界精确对齐,以确保虚拟对象在用户的视野中看起来固定且稳定。但是,世界空间跟踪通常会导致应该放置在表面上的虚拟元素看起来漂浮。世界空间跟踪最适合旨在漂浮在空间中的元素。要将物体固定在墙壁或地板上,最好使用平面检测。
应用领域:
- 游戏:在现实环境中准确定位虚拟角色或物体,创造身临其境的游戏体验。
- 建筑和设计:通过将虚拟模型集成到现实空间,支持建筑物的可视化和规划。
- 电子商务:允许虚拟试穿衣服或在自己的房间里摆放虚拟家具,以方便购买决策。
2、空间感知
空间感知(spatial perception)是一种综合方法,包括各种技术和算法。它允许 AR 设备感知和理解物理环境。使用摄像头、深度传感器和激光雷达可以捕获有关环境的信息,例如表面细节、物体尺寸和空间结构。这使得 AR 内容能够真实地集成到物理环境中。
应用领域:
- 教育和培训:实现交互式学习环境,其中虚拟内容可以与现实世界的对象相结合,以增强学习过程。
- 导航和定位:提供视觉引导或增强现实地图,帮助用户在陌生的环境中导航。
- 艺术和创造力:支持创作沉浸式艺术品或交互式装置,将虚拟元素集成到物理环境中。
3、标记跟踪或图像跟踪
标记跟踪(marker tracking)基于使用 AR 应用程序可识别的特殊标记或二维码。这些标记可作为参考点,将 AR 内容精确地放置在现实世界中。它提供高精度和稳定性,因为标记代表了可以轻松跟踪的独特视觉特征。
图像可以是照片、徽标或任何可被相机检测到的可识别 2D 对象。标记跟踪的缺点是没有标记就无法工作。因此,你必须始终拥有数字或印刷形式的标记,以便你的受众使用 AR 应用程序。
应用领域:
- 广告和营销:在印刷媒体或海报中使用特殊标记来提供交互式 AR 体验并增加受众参与度。
- 工业应用:通过将 AR 内容放置在特殊标记上以提供说明或信息,协助组装或维护机器。
- 医疗模拟:允许将虚拟模型或可视化放置在特定标记上以进行医疗培训或模拟。
并非每幅图像都适合用作 AR 跟踪的图像标记,这是你在选择标记时应该考虑的因素。在选择图像作为 AR 图像跟踪的标记时,清晰的对比度和独特的特征非常重要。简单的形状(例如正方形或圆形)效果很好,饱和的颜色也有助于更好地识别。标记应与其他物体明显区分,并在各种条件下保持稳健的可识别性。人为添加的细节也可以提高识别率。考虑应用环境来选择合适的标记,例如二维码或特殊徽标。测试不同的标记以确保可靠的 AR 体验。
4、平面检测
另一种重要的跟踪方法是平面检测(plane detection)。除了传统的 2D 图像,一些 AR 应用程序还可以检测表面并用它们代替图像。如果你想让用户决定他们想要放置内容的位置,或者如果你想使用比例和模型尺寸精度很重要的大型模型,这是一个优势。
该技术可检测现实世界中的水平或垂直表面,例如地板、桌子、墙壁或天花板。通过使用计算机视觉算法,可以识别指示平面的特征图案或结构。AR 内容可以精确地放置在这些检测到的表面上,从而实现虚拟和现实元素的无缝集成。
上面的视频左侧展示的是平面检测,右侧展示的是世界空间检测。世界空间检测使虚拟物体“漂浮”。
应用领域:
- 家具和装饰:协助虚拟放置家具、艺术品或装饰品,以便在购买或改造之前可以直观地看到房间的外观。
- 增强现实游戏:提供交互式游戏环境,虚拟物体可以放置在真实表面上,以创造令人兴奋且有趣的游戏体验。
- 建筑和施工:使建筑师和建筑商能够将建筑物的虚拟模型投射到真实空间中,以审查设计或可视化施工进度。
平面检测是一种跟踪技术,主要用于使用 ARCore 或 ARKit 编程的应用程序中。在 WebAR 领域,大多数框架都不支持平面检测。在这里,通常使用世界空间跟踪作为替代。
5、GPS 跟踪
GPS 跟踪使用全球定位系统 (GPS) 来确定 AR 设备的地理位置。它使 AR 应用程序能够显示基于位置的内容,例如有关名胜古迹的信息、导航说明或基于位置的游戏。GPS 跟踪在户外特别有用,因为户外有广泛的 GPS 信号覆盖。GPS 跟踪最突出的例子是 Pokemon GO。GPS 跟踪并不是特别精确。因此,GPS 跟踪通常与其他跟踪方法结合使用。
应用领域:
- 基于位置的信息:根据用户的位置显示附近景点、餐厅或商店的信息。
- 旅游应用:根据用户当前位置提供导游或历史遗迹信息。
- 健身和户外活动:跟踪和分析慢跑或骑自行车等活动,以记录距离、速度和路线。
6、SLAM 跟踪
最后,SLAM(Simultaneous Localization and Mapping,同步定位与地图构建)跟踪是一种结合了摄像头技术、传感器和特殊算法的先进方法。SLAM 实时检测 AR 设备的位置和方向,同时创建环境地图。这是通过跟踪检测到的特征和结构来实现的。SLAM 能够在现实世界中精确定位虚拟物体。
Slam 跟踪可以说是将虚拟物体放置在空间中最精确的跟踪方法。Slam 也是一种在 WebAR 中极为罕见的跟踪方法,并得到 Vuforia 和 Wikitude 等应用开发框架的支持。Hololens 2 还支持 slam 来创建环境的空间模型。
应用领域:
- 机器人和自主系统:支持机器人或自动驾驶汽车在其环境的空间定位和地图构建中。
- 工业检查和维护:支持将 AR 数据叠加在真实物体上,以支持检查和维护过程。
- 军事和国防:可用于支持战术行动或创建战场的虚拟模型。
7、结束语
增强现实中的各种跟踪方法可以实现虚拟内容的精确放置。因此,这些技术提供了更具沉浸感和互动性的 AR 体验,从表面的精确定位到捕捉用户的动作。随着 AR 技术的不断进步,我们肯定会在未来看到更多令人印象深刻的跟踪方法,这将继续扩大 AR 的潜力。
原文链接:6种常用的AR跟踪方法 - BimAnt
相关文章:

6种常用的AR跟踪方法
增强现实 (AR) 是一项令人着迷的技术,可将虚拟内容与现实世界无缝集成。实现这种无缝集成的关键组件之一是跟踪。各种类型的跟踪用于确定 AR 内容在环境中的准确位置和方向。本文介绍 AR 最常见的6种跟踪方法。 NSDT工具推荐: Three.js AI纹理开发包 - Y…...

HBO引爆血腥浪漫,尺度全开必看的影视剧推荐
一直以来我们的僵尸题材电影风靡全国,同时西方也创作出吸血鬼题材、丧尸题材的影视剧也是层出不穷,那今天我们就来探讨下吸血鬼题材的影视剧。 吸血鬼题材的影视剧,一直以来都是观众的宠儿。从光鲜亮丽的《暮光之城》到狗血多角恋的《吸血鬼日…...

【kubernetes】pod控制器详解
一、pod控制器概述 1、Pod控制器作用 Pod控制器,是用于实现管理pod的中间层,确保pod资源符合预期的状态,pod的资源出现故障时,会尝试进行重启,当根据重启策略无效,则会重新新建pod的资源。 2、pod控制器…...

Zookeeper学习、Tomcat
怎样使用Zookeeper实现服务发现? 典型回答 服务发现是ZK的重要用途之一,当我们想要基于zk实现服务发现时,一般可以参考以下步骤:1. 向Zookeeper注册服务 服务提供者需要在Zookeeper上创建一个临时节点来注册自己的服务。节点的名…...

软件测试基础知识与面试题最强总结(2024版)
🍅 点击文末小卡片,免费获取软件测试全套资料,资料在手,涨薪更快 一、什么是软件? 软件是计算机系统中的程序和相关文件或文档的总称。 二、什么是软件测试? 说法一:使用人工或自动的手段来运…...

ESP32播放网络音频文件
要使用ESP32播放网络上的音频文件,你可以通过以下步骤实现。ESP32可以使用Wi-Fi连接到互联网,下载音频文件并通过I2S接口输出音频数据。以下是一个示例,展示如何使用ESP32从URL获取音频文件并播放。 ESP32开发板。I2S DAC(如MAX9…...

端到端 AWS 定量分析:使用 AWS 和 AWSCLI 自动运行脚本
使用 AWSCLI 启动、运行和关闭 AWS 服务器 添加图片注释,不超过 140 字(可选) 欢迎来到雲闪世界。我们开发了两个 Python 脚本;一个用于为我们获取数据,另一个用于使用 sklearn 的决策树分类器处理数据。然后…...

数据结构与算法 - B树
一、概述 1. 历史 B树(B-Tree)结构是一种高效存储和查询数据的方法,它的历史可以追溯到1970年代早期。B树的发明人Rudolf Bayer和Edward M. McCreight分别发表了一篇论文介绍了B树。这篇论文是1972年发表于《ACM Transactions on Database Systems》中的ÿ…...

Java二十三种设计模式-观察者模式(15/23)
观察者模式:实现对象间的松耦合通知机制 引言 在当今的软件开发领域,设计模式已成为创建可维护、可扩展和可重用代码的基石。在众多设计模式中,观察者模式以其独特的能力,实现对象间的松耦合通信而脱颖而出。本文将深入探讨观察…...

opencv-python图像增强二:图像去雾(暗通道去雾)
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 一、简介:二、暗通道去雾方案简述:三、算法实现步骤3.1最小值滤波3.2 引导滤波3.3 计算图像全局光强 四:整体代码实现五…...

自研Vue3低代码海报制作平台第一步:基础拖拽组件开发
学习来源:稀土掘金 - 幽月之格大佬的技术专栏可拖拽、缩放、旋转组件 - 著作:可拖拽、缩放、旋转组件实现细节 非常感谢大佬!受益匪浅! 前面我们学习了很多vue3的知识,是时候把它们用起来做一个有意思的平台…...

QT 的 QSettings 读写 INI 文件的示例
在Qt中,QSettings 类提供了一种便捷的方式来存储和访问应用程序的设置,这些设置可以存储在多种格式的文件中,包括INI、Windows注册表(仅Windows平台)、XML和JSON等。以下是一些使用 QSettings 读写INI文件的示例。 写…...

【零基础学习CAPL语法】——testStep:测试结果输出函数
文章目录 1.函数介绍2.在报告中体现 1.函数介绍 testStep——测试结果输出函数 2.在报告中体现 //testStep() void PrintTxMsg() {testStep("Tx","[%x] [%.2x %.2x %.2x %.2x %.2x %.2x %.2x %.2x]",Diag_Req.id,Diag_Req.byte(0),Diag_Req.byte(1),Di…...

8.5.数据库基础技术-规范化
函数依赖 函数依赖:给定一个X,能唯一确定一个Y,就称X决定(确定)Y,或者说Y依赖于X。 例如:YX*X函数,此时X能确定Y的值,但是Y无法确定X的值,比如x2,y4,但是y4无法确定x2。函数依赖又可扩展以下两…...

于博士Cadence视频教程学习笔记备忘
标签:PCB教程 PCB设计步骤 cadence教程 Allegro教程 以下是我学习该视频教程的笔记,记录下备忘,欢迎大家在此基础上完善,能回传我一份是最好了,先谢过。 备注: 1、未掌握即未进行操作 2、操作软件是15.…...

8.3.数据库基础技术-关系代数
并:结果是两张表中所有记录数合并,相同记录只显示一次。交:结果是两张表中相同的记录。差:S1-S2,结果是S1表中有而S2表中没有的那些记录。 笛卡尔积:S1XS2,产生的结果包括S1和S2的所有属性列,并且S1中每条记…...

【Vue3】vue模板中如何使用enum枚举类型
简言 有的时候,我们想在vue模板中直接使用枚举类型的值,来做一些判断。 ts枚举 枚举允许开发人员定义一组命名常量。使用枚举可以更容易地记录意图,或创建一组不同的情况。TypeScript 提供了基于数字和字符串的枚举。 枚举的定义这里不说了…...

组合求和2
题目描述: Given a collection of candidate numbers (candidates) and a target number (target), find all unique combinations in candidates where the candidate numbers sum to target. Each number in candidates may only be used once in the combinati…...

Apple Maps现在可在Firefox和Mac版Edge浏览器中使用
Apple Maps最初只能在 Windows 版 Safari、Chrome 浏览器和 Edge 浏览器上运行,现在已在其他浏览器上运行,包括 Mac 版 Firefox 和 Edge。经过十多年的等待,Apple Maps于今年 7 月推出了新版地图应用的测试版,但只能在有限的浏览器…...

基于嵌入式Linux的数据库
数据库 数据库是在数据库管理系统和控制之下,存放在存储 介质上的数据集合。 基于嵌入式的数据库 基于嵌入式linux的数据库主要有SQlite, Firebird,Berkeley DB,eXtremeDB Firebird是关系型数据库,功能强大,支持存储过 程&…...

C# 使用LINQ找出一个子字符串在另一个字符串中出现的所有位置
一、实现步骤 遍历主字符串,使用IndexOf方法查找子字符串的位置。如果找到了子字符串,记录其位置,并且从该位置的后面继续查找。重复上述步骤直到遍历完整个字符串。 二、简单代码示例 using System; using System.Collections.Generic; usi…...

YOLOv8添加MobileViTv3模块(代码+free)
目录 一、理由 二、方法 (1)导入MobileViTv3模块 (2)在ultralytics/nn/tasks.py的函数parse_model中修改 (3)在yaml配置文件中写入 (4)开始训练,先把其他梯度关闭&…...

从概念到落地:全面解析DApp项目开发的核心要素与未来趋势
随着区块链技术的迅猛发展,去中心化应用程序(DApp)逐渐成为Web3时代的重要组成部分。DApp通过智能合约和分布式账本技术,提供了无需信任中介的解决方案,这种去中心化的特性使其在金融、游戏、社交等多个领域得到了广泛…...

仓颉编程入门 -- 泛型概述 , 如何定义泛型函数
泛型概述 , 如何定义泛型函数 1 . 泛型的定义 在仓颉编程语言中,泛型机制允许我们定义参数化类型,这些类型在声明时不具体指定其操作的数据类型,而是作为类型形参保留,待使用时通过类型实参来明确。这种灵活性在函数和类型声明中…...

SOC估算方法之(OCV-SOC+安时积分法)
一、引言 此方法主要参考电动汽车用磷酸铁锂电池SOC估算方法这篇论文 总结: 开路电压的测量需要将电池静止相当长的一段时间才能达到平衡状态进行测量。 安时积分法存在初始SOC的估算和累积的误差。 所以上述两种方法都存在一定的缺陷,因此下面主要讲…...

指针(下)
文章目录 指针(下)野指针、空指针野指针空指针 二级指针**main**函数的原型说明 常量指针与指针常量常量指针指针常量常量指针常量 动态内存分配常用函数**malloc****calloc****realloc****free** **void**与**void***的区别扩展:形式参数和实际参数的对应关系 指针…...

C# 浅谈IEnumerable
一、IEnumerable 简介 IEnumerable 是一个接口,它定义了对集合进行迭代所需的方法。IEnumerable 接口主要用于允许开发者使用foreach循环来遍历集合中的元素。这个接口定义了一个名为 GetEnumerator 的方法,该方法返回一个实现了 IEnumerator 接口的对象…...

mmdebstrap:创建 Debian 系统 chroot 环境的利器 ️
文章目录 mmdebstrap 的一般性参数说明 📜mmdebstrap 的常见用法示例 🌈使用 mmdebstrap 的注意事项 ⚠️ 🌈你好呀!我是 山顶风景独好 🎈欢迎踏入我的博客世界,能与您在此邂逅,真是缘分使然&am…...

【Linux SQLite数据库】一、SQLite交叉编译与移植
SQLite 是一个用 C 语言编写的开源、轻量级、快速、独立且高可靠性的 SQL 数据库引擎,它提供了功能齐全的数据库解决方案。SQLite 几乎可以在所有的手机和计算机上运行,它被嵌入到无数人每天都在使用的众多应用程序中。此外,SQLite 还具有稳定…...

每天写两道(数组篇)移除元素、
27.移除元素 给你一个数组 nums 和一个值 val,你需要 原地 移除所有数值等于 val 的元素。元素的顺序可能发生改变。然后返回 nums 中与 val 不同的元素的数量。 假设 nums 中不等于 val 的元素数量为 k,要通过此题,您需要执行以下操作&#…...