当前位置: 首页 > 编程日记 > 正文

​《头号玩家》中的“绿洲”,用 VR 可以找到

图源:百度百科

出品 | AI科技大本营(ID:rgznai100)

2045年,现实世界令人失望,人们将救赎的希望寄托于“绿洲”,一个虚拟游戏宇宙。人们只要戴上VR设备,就可以进入这个与现实形成强烈反差的虚拟世界。在这个世界中,有繁华的都市、形象各异、光彩照人的玩家,而且各色影视游戏中的经典角色也在这里齐聚一堂。

这是电影《头号玩家》中的精彩剧情,虽然只是剧情,但是“绿洲”世界的存在,着实令人心动,在“绿洲”里,任何人都可以成为超级英雄,再遥远的梦想都变得触手可及。现实世界中的你,是否也想一睹“绿洲”世界呢?

随着科技发展,现实世界和虚拟世界之间的关系也愈发紧密。

相信很多人都听说过任天堂的“爆款”游戏—精灵宝可梦Go,拿出手机摄像头“扫一扫”,手机屏幕上就能显示出有小精灵站在路边的报箱上,并且能和现实世界互动,小精灵可以沿着报箱爬上爬下,你伸出手,它甚至可以直接爬上你的手心,让玩家在虚拟和现实之间开始“真假难辨”。

图源:百度百科

相比于“绿洲”中的虚拟现实技术,“精灵宝可梦”中运用的是混合现实技术。混合现实是一种视觉增强的技术,结合真实世界和虚拟世界,共同创造了新的可视化对象,用来模拟真实物体,并且可以对现有对象或景观的实时图像进行数字更改。

是不是听起来就很炫酷,但是混合现实技术可不是“徒有其表”,在现实世界中,依旧可以“大展拳脚”,近期,大阪大学的研究人员将混合现实技术与城市规划结合,在现实世界中也能规划虚拟建筑。研究人员运用深度学习改善混合现实技术的应用,利用游戏引擎动态的删除识别的视频中的遮挡对象,从而帮助工程师进一步优化城市规划设计。

为了进行生态文明建设和应对气候变化,建筑节能和绿色建筑是城市规划中重要的一环,人类在规划各类建筑工程和项目的同时,需要与自然环境和谐相处,保护人类赖以居住的环境。因此,在建筑规划和设计阶段,相关人员会在施工前后对规划的建筑景观进行评估和考察,以避免规划失误,但是现在缺乏相应的景观可视化技术,加大了工程人员的工作难度。

目前一般是通过数字化的计算机图纸来实现建筑模型的设计,在传统设计过程中的许多交流通过文字和二维的图像来表达,不直观,让人费解,影响了设计人员之间的有效沟通。混合虚拟技术的出现和应用,引起了景观设计领域的关注,通过将虚拟的内容叠加到真实场景中,能否解决现存的问题呢?

混合现实技术中的一大难题是遮挡,当虚拟世界中对象遮挡了应该在前景中渲染的真实物理对象时,两者之间就会遮挡。此外,由于利用混合现实技术的景观可视化中,虚拟对象与真实对象之间的距离可能会不同,无法统一固定距离,加大了遮挡对象处理的难度。

大阪大学的研究人员在研究中,利用深度学习进行语义分割,并将其集成到混合现实系统中,以实现动态遮挡处理和景观指数估计,既可用于现有景观,也可用于景观设计评估,并且可以通过连接到高性能的个人计算机上,在具备视频通信功能的移动设备上即可进行操作,该系统的适用性也得到了相应的验证。

该项研究的初衷是基于混合现实技术进行未来景观设计和评估,其中主要两个评价指标,其一是在现实世界和虚拟世界发生遮挡的地方,如何保持更好的一致性;其二是对于景观指数的评估。

基于上述要求,研究人员将深度学习语义分割和混合现实技术结合,并结合实际应用场景大多在户外,所以将整体系统在轻型移动设备上集成实现。该系统能够直观评估当前景观和设计的景观,是否或者多大程度上有助于绿色建筑和城市规划,相关定量评估的标准也正在积极的讨论和审核中。

下面让我们来了解下这个系统的构成,主要包括以下三个部分。

1.客户端浏览器与游戏引擎之间的通信

在轻型移动客户端上,浏览器获取的实时视频和语义分割视频被传输到游戏引擎,这一过程需要浏览器与游戏引擎之间进行视频通信。研究人员使用Unity游戏引擎,并将常用的OpenCV for Unity作为混合现实系统开发中的的图像处理插件。鉴于浏览器和Unity都在前端运行,浏览器和游戏引擎无法直接通信,因此,研究人员在客户端上构建了中继服务器,以实现浏览器和Unity之间的视频通信。

中继服务器是使用Python和Flask在本地环境中构建的,Ajax开发用于浏览器和中继服务器之间的通信,视频数据被传输到中继服务器。Unity与中继服务器之间的通信是使用WWW类(Unity中用于HTTP通信的类)访问存储在中继服务器中的视频数据。将上述各个部分进行集成整合,研究人员构建了一个系统,将实时视频和语义分段视频从浏览器传输到Unity。

2.动态遮挡处理

上图是系统中配置的虚拟空间。在虚拟空间中,人们定义了设计目标的3D模型和摄像机位置,通过虚拟摄像机绘制出新结构的3D模型,即混合现实图像(MR图像),将混合现实图像叠加在现实空间中的实时物理图像上,并通过混合现实技术绘制3D模型。

该系统通过使用Unity的OpenCV生成基于语义分割图像的遮挡目标区域的每一帧的图像。在语义分割中,为景观元素的每个类别,例如天空和植被,定义RGB值,从而可以根据检测类别的RGB值生成用于遮挡的遮挡图像。为了实现动态遮挡,用户在生成遮挡图像时预先设置要遮挡的真实物体的类别,从而可以自动生成用于遮挡每一帧中的真实对象的掩模图像。

接下来,将所生成的掩模图像与混合现实图像组合,并且使混合现实图像中的组合掩模区域不可见,以实现动态遮挡。下图显示了整体的动态遮挡过程的流程。

3.景观指数计算

如今,语义分割(应用于静态2D图像、视频甚至3D数据、体数据)是计算机视觉的关键问题之一。在宏观意义上来说,语义分割是为场景理解铺平了道路的一种高层任务。作为计算机视觉的核心问题,场景理解的重要性越来越突出,因为现实中越来越多的应用场景需要从影像中推理出相关的知识或语义。

在绿色建筑和城市规划中,语义分割用于估计当前的景观指数以及由混合现实图像叠加后设计目标的景观指数。为了量化该项目,研究人员测量了绿色景观指数(GVI),即在一个人的视线范围内,包括植物和树木在内的绿色区域在当前或拟布局中的比例。当前的景观图像的GVI和MR叠加设计目标后的景观图像的GVI均以绿色区域作为景观指数估算的目标进行估算。

下图显示了一种用于测量当前景观和设计景观的绿色可见性的方法。当前GVI是通过将使用蒙版图像中的语义分割而提取的绿色区域中的像素数除以整个图像中的像素数来测量的。使用Unity的图层功能估算混合现实中具有新结构的GVI,该功能仅渲染选定图层中的对象。

在这种方法中,通过为绿色植物的3D模型分配特定的图层来创建混合现实图像。然后,再将混合现实图像进行遮挡,并与绿色区域的当前遮挡图像合并,以创建绿色区域的新遮挡图像。通过将组合蒙版图像中绿色区域中的像素数除以整个图像中的像素数,可以测量具有新结构的GVI。

正如前文所述,准确性是衡量该系统的一大重要指标,因此研究人员对20个风景图像进行了语义分割,并从生成的图像中验证了GVI测量的准确性。风景图像的分辨率设置为1024×576像素,在该系统中,研究人员将绿色区域定义为Cityscapes数据集中的“植被”和“地形”区域,并通过比较手动创建的地面真实图像和分段图像来评估准确性。如下图所示,该项系统预测GVI可以达到93.3%的准确率,高于其他的研究结果。

为了验证系统的实用性,研究人员进行了实景验证,对室外植被进行了基于混合现实技术的景观可视化,并评估了GVI估算对于当前和计划中的景观设计是否准确。混合现实技术将新植被的3D模型叠加在现有植被上,以验证GVI的测量。

结果表明,该系统能够叠加3D植被模型来模拟当前景观和设计景观,并能够同时估算GVI。但是,该系统目前的帧速率约为3-5 fps,虽然可能无法满足实时性能,但可以模拟风景并测量相应的GVI。但是,从研究结果中,我们可以发现系统应用时容易高估当前景观的GVI并低估了设计景观的GVI。对此,研究人员认为是因为该系统提取了当前景观中的大范围的边界作为绿色区域。相比之下,被设计景观的GVI被低估了。

混合现实技术的发展,使其在越来越多的领域得到了应用,绿色建筑是全球关注的热点之一,混合现实技术与城市规划的结合会给建筑行业带来许多新的应用研究领域:建筑方案可视化、模型设计协同化、施工过程信息化以及运营维护高效化等。该项研究的团队希望这项研究能够帮助工程相关人员理解GVI对城市规划的重要性,同样,我们也期待两者之间碰撞出精彩的火花。

2020-2021中国开发者调查报告重磅来袭,直接扫码或微信搜索「CSDN」公众号,后台回复关键词「开发者」,快速获取完整的报告内容!


更多精彩推荐
☞打造专属BGM,Python 深度学习教你☞英特尔第三代 Ice Lake 发布正面与 AMD EPYC PK,结果令人大跌眼镜!☞AR 第一大单,微软 219 亿美元为美军打造高科技头盔
点分享点收藏点点赞点在看

相关文章:

Android开发之程序猿必需要懂得Android的重要设计理念2(5.20更新版)

上篇文章介绍了Android开发的设计理念的一部分,并没有得到博友们的多大认可,仅仅看到了一位博友在以下留言期待下一篇文章的发表,为了这小小的唯一支持。我决定继续把后面的8个要点介绍一下,自己也潜心反省一下,自己的…

Espresso小试

Espresso开源了,那就试着用一下, 1. 下载Espresso Espresso没有提供单独的jar包下载,建议clone整个项目或者下载zip包 git clone https://code.google.com/p/android-test-kit/ 或从这里下载:https://code.google.com/p/android-t…

XML与DataSet的相互转换类

送给大家一个XML与DataSet的相互转换的类:XmlDatasetConvert 该类提供了四种方法:1、将xml对象内容字符串转换为DataSet2、将xml文件转换为DataSet3、将DataSet转换为xml对象字符串4、将DataSet转换为xml文件 XmlDatasetConvert.csusing System;using System.Colle…

想学Python?那这套教程再适合不过了!

如果你想问最近这些年什么编程语言最值得学习,我相信很多人都会告诉你是Python!所以不仅是开发小白,甚至很多开发老手,也都开始学习Python,作为辅助第二语言来提高自己的职场竞争力。不过结合我最近这些年Python的学习…

修改360浏览器 标题栏 显示的文字

作者:韩梦飞沙 Author:han_meng_fei_sha 邮箱:313134555qq.com E-mail: 313134555 qq.com 修改360浏览器 标题栏 显示的文字 dll修改 DLL(Dynamic Link Library)文件是一种常见的应用程序拓展,也叫动态链接库文件。若遇到一些已经…

联邦学习的隐忧:来自梯度的深度泄露

作者 | Ligeng Zhu and Song Han编译 | 对外经济贸易大学金融科技实验室头图 | 下载于视觉中国【编者按】数据交易流通是数据要素市场建立的关键环节。为了在推动数据流动的同时保护数据安全、个人信息和隐私,隐私计算技术因运而生。目前,该技术分为三个…

.net 中 using的几种用法

1. using指令。using 命名空间名字,这样可以在程序中直接用命令空间中的类型,而不必指定类型的详细命名空间,类似于Java的import,这个功能也是最常用的,几乎每个cs的程序都会用到。例如:using System; 一般…

少走弯路的10条忠告

如何在涉世之初少走弯路,有一个好的开端,开始一番成功的事业?以下是一些先行者积累的10条有益的涉世忠告。好好地遵循、把握这些忠告和建议吧,比起所学的课堂课程来,它毫不逊色! 1. 买个闹钟,以…

linux实战考试题:批量创建用户和密码(不能使用循环)

批量创建10个用户,并且设置随机8位密码,要求不能用shell的循环(例如:for,while等),只能用linux命令及管道实现。方法1:[rootoldboy /]# echo stu{01..10}|tr " " "\n"|sed …

路径,文件,目录,I/O常见操作汇总

摘要: 文件操作是程序中非常基础和重要的内容,而路径、文件、目录以及I/O都是在进行文件操作时的常见主题,这里想把这些常见的问题作个总结,对于每个问题,尽量提供一些解决方案,即使没有你想要的答案,也…

Winform开发的界面处理优化

在Winform开发中,客户体验是个很好的参考性指标,如果一个功能使用的时候感觉很流畅,说明我们的程序执行效率还不错,但是随着数据的真多,原先可能流程的地方可能会变得比较卡,这时候就需要追本索源&#xff…

人工智能语音技术支持“多情感程度”调节,细腻演绎“人声”

近期,微软发布最新语音技术,支持“情感程度”轻松调节,令智能语音的情感表现力更加细腻可控。 人类的情感很大程度上体现于语音语调的微妙变化,比如一句“再见”,有时是平静而含蓄的,有时是开心而轻松的&a…

HDU 1431 素数回文

有人问我这个问题。个人感觉暴搜会TLE O(n*sqrt(n))。n100000000;(推断素数用2~sqrt(n)1 去除) 还是枚举好了。枚举 1~10000,把他每一位存下来,回文数已知 left 。求 right ,然后组合起来。比如 1 &#xf…

递归的妙用—遍历子控件

我们在ASP.NET编程中, 经常需要遍历一个Web控件的子控件 ,找到所需的控件并获取控件中相应的值。以前我都是采用循环的方式遍历子控件,但当子控件是复杂的树形结构,比如:子控件也有子控件,子控件的子控件也有子控件。这…

【原创】关于代码质量的打油诗

要想代码写得好,以下规则供参考:代码格式规范多,静态检查常做到。代码注释要工整,垃圾注释不可要。重要分支详注释,复杂逻辑拆分细。数据类型多注意,经常判空习惯好。常量类型须定义,魔幻数字要…

Java 开发技巧详细知识体系总结

本篇文章是我们整理的一份架构师的成长路线,包括了并发编程、设计模式、常用框架、中间件、微服务与分布式、常用工具、JVM、MySQL、数据结构与算法,还有架构师精选视频、架构师成长路线高清大图。又是新的一年,每一年都会有人在成为架构师的…

23-hadoop-hive的DDL和DML操作

跟mysql类似, hive也有 DDL, 和 DML操作 数据类型: https://cwiki.apache.org/confluence/display/Hive/LanguageManualDDL : primitive_type| array_type| map_type| struct_type| union_type -- (Note: Available in Hive 0.7.0 and later) primitive_type为基本类型, 包括:…

经典正则表达式

正则表达式用于字符串处理,表单验证等场合,实用高效,但用到时总是不太把握,以致往往要上网查一番。我将一些常用的表达式收藏在这里,作备忘之用。本贴随时会更新。 匹配中文字符的正则表达式: [/u4e00-/u9…

腾讯云TDSQL数据库核心技术理论取得进展 ,同时发布数据异常检测工具

近日,腾讯云和中国人民大学在数据库基础研究上有了进展,聚焦在“数据异常”领域,这是数据库可串行化理论体系中的重要概念。 数据异常是打开并发访问控制技术大门的金钥匙。在数据库行业中,以往只发现了10多种数据异常现象&#…

Android应用工程文件组成

src目录:java代码源文件。gen目录:R.java:静态内部类,系统自动生成,无需程序员维护。assets目录:资源目录,html,多媒体文件。bin目录:应用程序所生成的apk。res目录&…

matlab2014a + win764bit + vs2013混合编程(.m转成dll供C++调用)

在matlab中可以通过mbuild工具将.m文件编译成dll文件供外部的C程序调用,这样就可以实现matlab和C混合编程的目的。 1. 使用matlab生成dll文件 1.1 首先需要带有mcc编译器的matlab软件,这个可以通过在matlab命令行中输入:!mcc命令来查看 1.2…

当前日期得到本周的开始和结束日期

/// <summary> /// 本周起止时间 /// </summary> /// <param name"dt"></param> /// <returns></returns> private string weekrange(System.DateTime dt) { int weeknow Convert.ToInt32(dt.DayOfWeek); int day…

分享一个mysql 复杂查询的例子

发布&#xff1a;脚本学堂/MySQL 编辑&#xff1a;thebaby 2013-08-23 09:37:37 【大 中 小】 有关mysql复杂查询的一个例子&#xff0c;正在学习mysql的朋友&#xff0c;可以作为一个参考。在mysql中&#xff0c;LOCATE(dmin,email)1 表示dmi字符在email字符中出现的索引位…

百度携手同济大学,瞄准AI、智慧交通等核心科技领域攻关

4月14日&#xff0c;百度与同济大学在上海举行了战略合作框架协议签约仪式。百度与同济大学将围绕人工智能、智慧交通等方面&#xff0c;共同开展科研攻关&#xff0c;创造AI技术及产业交流平台、搭建AI应用人才培养机制&#xff0c;力争取得基础理论和关键核心技术的突破。 签…

怎样做才是最优雅方式切换 web 项目数据源 ?

随着业务变迁/需求变更&#xff0c;JavaEE 应用中会被迫连接多个数据源进行业务处理。 怎样在不影响原有项目结构的情况下&#xff0c;已最优雅/最简洁的方式动态切换数据源呢&#xff1f; 本文已一次添加数据源后动态切换实践为例&#xff0c;描述整个思考和实践过程&#xff…

C#开发编码规范

C#开发编码规范 注记&#xff1a;Pascal 大小写形式——所有单词第一个字母大写&#xff0c;其他字母小写。Camel 大小写形式——除了第一个单词&#xff0c;所有单词第一个字母大写&#xff0c;其他字母小写。类名使用Pascal大小写形式 public class HelloWorld{ …}方法使用…

【原创】如何分析一个网站使用的服务器类型

如何知道一个网站使用的是什么类型的服务器呢&#xff1f;如其前端使用的是apache呢还是iis呢还是nginx呢还是其他呢&#xff1f;中间件使用的是什么呢&#xff1f;有以下几种方法&#xff1a; 首先说原理&#xff1a;http协议的头部提供了丰富的信息告诉我们一些信息&#xff…

想学Python?那这套教程再适合你不过了!!

如果你想问最近这些年什么编程语言最值得学习&#xff0c;我相信很多人都会告诉你是Python&#xff01;所以不仅是开发小白&#xff0c;甚至很多开发老手&#xff0c;也都开始学习Python&#xff0c;作为辅助第二语言来提高自己的职场竞争力。不过结合我最近这些年Python的学习…

Java compiler level does not match the version of the installed Java project facet.

2019独角兽企业重金招聘Python工程师标准>>> 解决方式&#xff1a;右击项目点击>>选择对应的版本就好、&#xff01; 转载于:https://my.oschina.net/liusonghuang/blog/1512115

【C#小知识】C#中一些易混淆概念总结(三)---------结构,GC,静态成员,静态类...

目录&#xff1a; 【C#小知识】C#中一些易混淆概念总结 【C#小知识】C#中一些易混淆概念总结&#xff08;二&#xff09; ---------------------------------------分割线---------------------------------------------- 一&#xff0c;C#中结构 在C#中可以使用struct关键字来…