开发物体识别桌、_【课程总结】AR系统开发“秘籍”大揭秘!

导读:AR技术飞速发展,被广泛应用于游戏、医疗、旅游、电商等行业。那么对于AR系统的整体设计和应用是如何操作的呢?商汤泰坦公开课第006期联合“SLAM技术及应用”暑期学校与研讨会共同推出“移动增强现实系统的设计与应用案例解析”&“AR应用开发”线上公开课。由浙江大学-商汤三维视觉联合实验室章国锋教授和商汤科技研究总监盛崇山对AR系统的设计和应用进行了整体的解读。

AR系统整体框架包括“输入数据—三维注册—虚实融合”三大部分。

9ce7c0af9f0bd2cf2f695838e665a9da.png

1

-THE FIRST-

输入信息

输入的数据不同,处理的方式也会有很大的区别。目前,可输入的数据十分多样化,例如:

  1. IMU 数据

    •Time stamp

    •Acceleration

    •Angular velocity

  2. 图像数据、深度数据

    •Time stamp

    •Exposure time

    •RGB

    •Depth

  3. 校正数据

    •Camera 校正参数 (Pinhole Model)

    •Projection: fx fy cx, cy

    •Distortion: k1, k2, k3, k4

  4. IMU 校正参数

    •Bias, Scale, Misalignment

    •Noise, Bias noise

  5. 外参

    •Rotation, Translation

    •Time offset

522c1a890037dda1a1e046e5d70216d2.png

2

-THE SECOND-

三维注册与重建

三维注册与重建是AR系统的基础组件。

三维注册不仅包括恢复相机相对于场景的位姿,而且还包括对物体的识别和位姿恢复。前者一般采用SLAM技术,包含相机跟踪、地图构建和更新、回路检测和闭合、重定位等模块。

三维重建具体包含物体和场景的三维重建,对于实现高品质的AR效果来说非常重要。

关键词

SLAM

具体来说,SLAM技术中的相机跟踪,一般包括特征提取与匹配,以及相机位姿估计。为了实时性的需要,特征跟踪一般要放在前台线程。

但是如果有IMU数据的话,情况将会有所不同。我们可以直接通过积分得到位姿,特征提取与匹配可以放到后台线程执行,以相对较低的频率(如10Hz) 矫正IMU和相机的状态。

地图的创建和更新一般需要实现以下功能:

  1. 加入新的关键帧或删除旧的关键帧

  2. 优化关键帧的位姿和地图点的三维

  3. 三角化出新的三维点云

  4. 保证比较频繁、快速的地图优化局部优化:

  • 局部优化:滑动窗口:优化当前帧相邻关键帧和三维点

  • 全局优化:更好地消除累积误差

   5. 在线删除关键帧和三维点,避免系统资源开销太大

6ab77b8365fd316c558b3a7704b5a275.gif

一般用词袋技术或者在线建词汇树或KD-Tree的方式进行回路检测和闭合。我们可以检测当前帧的图像是不是跟之前的某一帧图像(一般是关键帧)存在相同的内容,检测到回路之后,再通过集束调整或位姿图优化来消除误差累积,实现回路的闭合。

dd2410c105c85ba5a40d33ce1ae8556b.png

跟踪难免会失败,当跟踪失败之后需要快速地恢复相机的位姿,也就是要进行重定位常见的策略有:

  • PTAM :通过度量当前帧和关键帧的缩略图的相似度来进行重定位

  • ORB-SLAM :通过提取 ORB 特征并借助预先构建词袋字典树来进行快速的候选帧选取和特征匹配

  • 基于深度学习的重定位 :对光照变化有更好的容忍度

关键词

三维物体识别与跟踪

根据物体的类型不同,可以分为平面标志物和三维物体的识别与跟踪。一般需要进行特征提取,然后进行特征匹配:

  1. 特征点法

    • 二进制描述子代替 SIFT 描述子

    • 近似最近邻匹配方法 如 k d 树 加速匹配

  2. 纹理较丰富的三维物体

    •借助特征点匹配来建立所提取的特征点与数据库中的特征点(有三维位置)的对应关系

  3. 弱纹理物体

    • 利用颜色先验模型来计算跟踪对象的前景背景的概率图,进而利用前背景的区域性先验信息估算出跟踪对象的区域信息。

根据不同的物体类型,所采用的算法也会有差别:

  1. 物体检测识别

    • 平面标志的检测识别:图像检索技术( 词袋技术、 VLAD)

    • 三维物体:纹理丰富 (词袋技术 )、 纹理较弱(深度学习)

  2. 物体位姿估计与跟踪

    • 纹理丰富的三维物体:特征点匹配得到2D-3D点匹配 通过 PnP 计算相对位姿

    • 缺乏纹理的三维物体:物体识别估计初始位姿迭代优化目标函数(对齐三维物体投影边和图像边缘)跟踪求解

    • 平面标志物:单应性矩阵分解得到位姿

关键词

三维重建

三维重建包括多平面重建和稠密几何重建。多平面重建适用于简单的水平和垂直平面的重建,采用稀疏点云即可完成。

bccc74053f0da116eb98d74d0d933b6d.gif

而对于复杂的情况,则需要稠密几何重建,包括运用多视图实时深度估计、在线渐增式稠密三维点云拓展以及在线稠密网格结构生成。

b611ebc0f56af0d4f06dbf8c61e1e3aa.gif

3

-THE THIRD-

虚实融合

为了使虚拟物体模能够和真实场景无缝的融合,我们需要进行光照估计、真实感绘制、遮挡处理以及阴影投射等处理

关键词

光照估计

根据场景的平均亮度计算环境光来更好的测算场景亮度

78c5e9eb659a9e6b6481943552c73e48.gif

对于全局光估计,则需要计算出用于表达全局光信息的球谐系数,然后根据球谐系数来估计光照亮度信息

0bd7763cb559776139264538a05241cb.png76fb1e7b2badf8165eda778cd53302ad.png

关键词

遮挡信息处理

基于三维重建的遮挡处理需要绘制三维重建出的网格深度;绘制场景中的其他用于增强现实的虚拟模型。对于人像抠图的遮挡处理则更加复杂,不仅需要人像抠图还需要人的深度估计。

8bcfb66468acfe9c910620fc48e3ed72.gif

关键词

阴影绘制

平面阴影投射需要把虚拟物体绘制到shadow map中。绘制物体放置所在的虚拟平面,采用shadow map算法,阴影内的输出阴影颜色,阴影外的采用全透明绘制。

复杂阴影投射则稍有不同,把虚拟物体绘制到shadow map中,绘制重建出的网格,采用shadow map算法,阴影内的输出阴影颜色,阴影外的采用全透明绘制。

e2a6478dab84336de24c9fe7d458d2d6.png

目前,AR+教育,AR+游戏、AR+旅游、AR+工业已经全面“开花”,推动多种行业发展。

c2508ed2c18a44a02da8bdc83ee5432a.gif

4

-THE FOURTH-

SenseTime SenseAR

以商汤科技为核心,联合若干战略合作伙伴推出的SenseAR 开发平台致力于提供一整套 AR 解决方案,包括 AR 底层驱动引擎、AR 内容创作工具链和 AR 硬件装置推荐,为各行各业的商家和用户提供 AR 服务,促进AR生态的发展,从而让更多用户享受到AR为生活和工作带来的便利。

可以实现以下基本功能:

  • 运动跟踪:让手机可以理解和跟踪它相对于现实世界的位置。

  • 环境理解:让手机可以检测各类表面(例如地面、咖啡桌或墙壁等水平、垂直和倾斜表面)的大小和位置。

  • 光照估计:让手机可以估测环境当前的光照条件。

  • 三维重建:稠密网格实时重建,遮挡碰撞。

  • 人物:手势等。

  • 其他:图像识别跟踪、多人互动等。

利用该平台进行6DOF跟踪&平面检测流程如下:

bfb62848065a9f7f66dfb8203813abd9.png

平台结构如下:

4646635967fd53cfce77db6b592fc1d7.png

其中最为重要的是SDK(包括:C/Java/Unity3D版本。)SDK封装了Camera、IMU数据的获取,支持RGB、RGBD、IMU、多视频流等。ARServer内部采用多算法框架,根据SDK端的配置,启动相关的算法。以下为SDK结构:

2e17c8f6986ea7b69f67ac97e95260a1.png

关键词

SenseTime SenseAR功能案例

课上列举出图像识别与跟踪、手势识别与跟踪、稠密网格实时重建、多人互动&AR云四种功能案例。

具体以图像识别与跟踪为例,SenseAR平台提供图像识别与跟踪功能,借助该功能可以构建在用户环境中响应2D图像的AR应用。开发者只需要提供一组参考图像,在相机预览中检测到图像时,SenseAR会实时输出这些图像的物理位置,利用这些信息可以添加自定义的AR效果。

其中数据载入三种方式:

  • 图片

  • pattern文件

  • spk包文件

6211cc5ab117f0bd893d79a75b3c92cc.png

算法配置:

6aad2794e7da3809c240376792f8ac64.png

 识别列表:

9c74a406ce7d3f10dcd0c61068b14ce6.png

SenseTime SenseAR应用开发成本低,并且集成到了Unity3D的ARFoundation中 ,不需要额外的开发就能支持SenseAR支持的平台;融合 AI 技术, 不仅能提供可靠的 6DoF 跟踪定位和三维结构恢复, 而且能对人体、物体和场景进行检测、识别和理解,深度满足各种 AI+AR 应用的需求

如果你想要进行更多AR领域开发,欢迎使用SenseAR开发者网站:

http://openar.sensetime.com

全部课件

f1620d31331a73fa9b982e92747091c7.png

http://www.cad.zju.edu.cn/home/gfzhang/download/2019-SLAM-Summer-School-slides.zip

0a7a3a39d646624065b0b398536d2fff.png

商汤泰坦公开课

关注我们  不再迷路

02441bbbd3a1b0d0c8dfc30ec846a22e.gif

▼点击阅读原文 即可发表你的评论!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/304265.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

商业项目中最受欢迎的 7 种编程语言

【导读】:Semaphore 是一个国外持续集成/持续部署方案服务商。Semaphore 称自己在过去三年对其开发者用户进行调查,调查他们在开发商业项目时一般都使用哪些语言。这些数据基于成千上万个在 Semaphore 上进行测试和部署的项目的人。所以现在这是迄今为止…

为or、in平反——or、in到底能不能利用索引?

先说一个笑话,作为开场白。俺也换换风格试一试,呵呵。 在以前,有三个书生赶考,在路上遇到了一个算命先生,于是就问算命先生:我们三个人赶考,结果如何呀?算命先生伸出来了一个手指头&…

iNeuOS 工业互联网操作系统,在核工业测控领域的成功应用

注:由于本项目涉及核工业,具体细节保密。1. 前言iNeuOS工业互联网操作系统iNeuOS,公众号:iNeuOS“iNeuOS工业互联操作系统”面向未来,公众号首秀iNeuOS工业互联网操作系统积累了10多年工业领域知识和经验&#xff0…

5 thinkpad 黑将评测_王中林院士团队黑科技:80秒,将PM 2.5降至0!把森林氧吧搬回家!...

空气负离子(NAI)被称为“空气维生素”,它们广泛用于室内空气净化,包括去除空气中的颗粒物、对挥发性有机化合物进行氧化分解和抑菌。除了从森林、瀑布和暴雨等自然来源外,目前还开发了基于电晕放电、热离子电子发射、光激发和勒纳效应的纳米空…

详细解读给数据挖掘新手的6个案例

1946年2月16日,是一个值得纪念的日子。在这一天,人类历史上真正意义上的第一台电子计算机诞生了,此后计算机便随着科技的发展以强大的生命力飞速发展着。而作为用来定义计算机程序的形式语言——编程语言也紧跟计算机其后蓬勃发展&#xff0c…

Jquery高亮显示文本中重要的关键字

一、界面预览鼠标放到右边的Tab按钮上&#xff0c;文字透明度降低&#xff0c;同时一段文字高亮显示&#xff0c;效果如下&#xff1a;Demo地址&#xff1a;http://5thirtyone.com/sandbox/samples/fadefocus/很绚丽的效果幺&#xff01;二、实现原理将要高亮显示的文字加上<…

公众号滑动图代码_实用技巧:公众号封面图如何提取?

有好友留言说&#xff1a;经常看到很骚气的公众号封面&#xff0c;该怎么提取下载呢&#xff01;今天就告诉你&#xff0c;公众号的高清封面图如何下载&#xff01;一共有3种方法&#xff1a;01、网页代码直接下载①在浏览器打开公众号文章&#xff0c;在网页空白处鼠标右键&am…

如何使用 HttpReports 监控 .NET Core 应用程序

简介HttpReports 基于.NET Core 开发的APM监控系统&#xff0c;使用MIT开源协议&#xff0c;主要功能包括&#xff0c;统计, 分析, 可视化&#xff0c; 监控&#xff0c;追踪等&#xff0c;适合在中小项目中使用。github&#xff1a;https://github.com/dotnetcore/HttpReports…

课程笔记|吴恩达Coursera机器学习 Week1 笔记-机器学习基础

11. Introduction1.1 Supervised Learning已知输入x以及其对应的标签y&#xff0c;求解 f:x→y回归 regression&#xff1a;输出的结果y是一个连续的变量 yℝ分类 classification&#xff1a;输出的结果y是一个离散的变量 y{1,2,3...,k}1.2 Unsupervised Learning已知输入x&…

html如何链接sql sever,SQL Server链接服务器

链接服务器节点可以连接到另一个数据库&#xff0c;通常/通常在不同的机器上运行&#xff0c;也许在不同的城市/国家。如果您需要执行分布式查询(查询远程数据库)&#xff0c;这可能是有用的。设置链接服务器就是相当于使用简单的 SQL Server 管理套件&#xff0c;所有需要的就…

C#断点续传原理与实现

在了解HTTP断点续传的原理之前&#xff0c;让我们先来了解一下HTTP协议&#xff0c;HTTP协议是一种基于tcp的简单协议&#xff0c;分为请求和回复两种。请求协议是由客户机(浏览器)向服务器&#xff08;WEB SERVER&#xff09;提交请求时发送报文的协议。回复协议是由服务器(we…

.NET:使用 LinqSharp 简化复杂查询

LinqSharp 是个开源 LINQ 扩展库&#xff0c;它允许您编写简单代码来生成复杂查询&#xff0c;包括查询扩展和动态查询生成。LinqSharp.EFCore 是对 EntityFramework 的增强库&#xff0c;提供更多数据注解、数据库函数及自定义储存规则等。https://github.com/zmjack/LinqShar…

c#事件的发布-订阅模型_微信灰度测试订阅号付费功能,小米推出最便宜5G套餐,腾讯辟谣高管猝死赔钱事件,核心期刊发布十岁儿童文章,这就是今天的其他大新闻!...

今天是1月15日农历十二月廿一杭州又开始下雨了今天中午出个门我们这乡下打车排队能排到十几个。。。下面是今天的其他大新闻# 微信宣布&#xff1a;正灰度测试订阅号付费功能( IT之家 ) 1月15日消息&#xff0c;腾讯微信团队今日表示&#xff0c;目前微信灰度测试订阅号付费能力…

据说这篇总结覆盖了一般Python开发面试中可能会问到的大部分问题

原文标题&#xff1a;一名python web后端开发工程师的面试总结先介绍下我的情况通信背景&#xff0c;工作一年多不到两年。之前一直在做C的MFC软件界面开发工作。公司为某不景气的国企研究所。&#xff08;喏&#xff0c;我的工作经验很水&#xff1a;1是方向不对&#xff1b;2…

理解C#泛型运作原理

前言我们都知道泛型在C#的重要性&#xff0c;泛型是OOP语言中三大特征的多态的最重要的体现&#xff0c;几乎泛型撑起了整个.NET框架&#xff0c;在讲泛型之前&#xff0c;我们可以抛出一个问题&#xff0c;我们现在需要一个可扩容的数组类&#xff0c;且满足所有类型&#xff…

游戏计算机的显示器,玩游戏用多大显示器好?聊聊电脑显示器多大尺寸合适

最近有多位网友在“电脑百事网”微信公众号中留言问到“显示器多大尺寸合适”、“玩游戏用多大显示器好”类似的相关问题。今天小编就来抽空解答一下&#xff0c;希望对有类似问题的网络朋友有所参考。电脑显示器多大尺寸合适Q&#xff1a;玩游戏用多大显示器好&#xff1f;A&a…

搭建基于域名的虚拟web主机

创建两个目录&#xff0c;分别存放accp和benet两个网站的网页文件<?xml:namespace prefix o ns "urn:schemas-microsoft-com:office:office" />创建两个页面用以以后的测试因为我的主页写的是index.htm&#xff0c;在配置文件httpd.conf中没有这个引导页面&…

百度地图大数据告诉你一线城市真相

01 城市人口吸引力大PK&#xff01;2017年度城市人口吸引力指数排名▼划重点&#xff1a;1、第三列里的省会城市南昌、长春、乌鲁木齐、兰州、海口、呼和浩特、西宁是对人口的吸引力较弱。2、第二列里的贵阳、沈阳、哈尔滨、石家庄、福州、合肥、南宁、昆明对人口的吸引力尚可。…

微软开源Power Fx,基于Excel的低代码编程语言

喜欢就关注我们吧&#xff01;微软宣布推出新的开源编程语言 Power Fx&#xff0c;一种基于 Microsoft Excel 的低代码公式语言&#xff1b;将可以在整个 Microsoft Power Platform 中进行使用。该语言背后的动机是开发一些 Excel 用户熟悉的东西&#xff0c;以内容为中心而不是…

如何通过自学找到一份开发的工作?

01学习过程比较仔细的学习了《cprimer》&#xff0c;并对每个习题都自己写代码实现了一遍&#xff0c;包括稍微复杂一点的例子。认真读完了《effective c》&#xff0c;《effective stl》。比较仔细的学完了《数据结构与算法分析》&#xff0c;并把其中的每种数据结构和算法都用…