AR 透视头盔

2023-10-31 22:20
文章标签 透视 头盔 ar

本文主要是介绍AR 透视头盔,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

 http://www.cnblogs.com/yanhuiqingkong/p/5690835.html

2016年被称为虚拟现实技术元年,然而我们要说的是与之同时发展的增强现实技术(Augmented Reality)。增强现实与虚拟现实有着显著的不同。虚拟现实是通过计算机图形技术、三维跟踪技术和各种显示技术等为用户构建完全虚拟的沉浸式环境;而增强现实是在现实环境的基础上叠加虚拟的信息,这些虚拟信息也就是为了“增强”现实环境而人为加上去的。简单来说,虚拟现实全是虚拟的,增强现实既有虚拟又有真实。

      本文旨在介绍增强现实技术和应用,重点是分享笔者在学习和工作中遇到的一些问题和总结的一些经验,所以在介绍中会有不全面的论述,也免不了有一些疏漏,但是一定尽力做到最好。下面就进入主题,讲解一下增强现实中的光学透射式头盔显示器的标定技术。

 

一、什么是光学透射式头盔显示器,又是怎样应用到增强现实中呢?

      头盔显示器,也叫头戴式显示器,顾名思义就是一种戴在用户头上使用的显示器。它的主要部件就是一个放置在人眼前面的显示装置,此外还有用于将显示器固定在头上的固定结构等。头盔显示器主要分为两大类,沉浸式头盔和透射式头盔。沉浸式头盔主要是虚拟现实头盔,用于构建沉浸式的虚拟现实环境,典型的设备如Oculus Rift、HTC Vive、暴风魔镜等。透射式头盔主要用于增强现实,也是我们要重点讲到的一类设备,典型的如Hololens、Magic Leap等等。在透射式头盔中,又分为两个小类,视频透射式头盔和光学透射式头盔。视频透射式头盔显示器是利用摄像头捕获场景的视频流,并将虚拟的信息叠加到视频流中,最后把加工后的视频流逐帧渲染在显示器上供用户观看。这种显示器就如同手机一样。而光学透射式头盔显示器(有的地方叫“光学透视型头盔显示器”,英文为“optical see-through head-mounted display”),有一个半透半反的光学系统,它一方面像普通眼镜一样可以透过外部的环境光,使用户可以看到眼前的真实世界,另一方面可以反射来自微型显示器的图像,叠加到人的视野中。

      上图摘自一篇介绍光学透射式头盔显示器的论文,大致能表明这类显示器的基本结构。当然这款是自由曲面棱镜组成的,还有其他的类型如光波导镜片等。

之所以要应用光学透射式头盔显示器,是因为它可以将虚拟信息直接叠加到真实环境中,给人更加自然的交互体验,而不需要让人去看加工后的视频,如同看电视一般乏味无新意。

      理想情况下,佩戴上头盔显示器后应该看到如下的效果。

  

      上图截图自电影《钢铁侠》,主人公可以看到虚拟的物体叠加在空中。我们先不管电影中的效果可以用哪些现实手段实现(全息投影也好,真三维光学全息也罢),我们只考虑如何采用光学透射式增强现实来实现它。当然唯一不同的是,采用光学透射式头盔显示器以后,我们必须佩戴它才能从用户视角看到这些炫酷的效果。实际看到的可能是下面这样子的。该图选自一篇做人机交互的论文。

二、光学透射式头盔显示器的标定原理

(1)所谓标定,到底是标定什么,怎么进行?

      首先,必须明确几个用到的坐标系统。世界坐标系使用W表示,跟踪摄像机(跟踪摄像机用来建立本系统与外部环境之间的联系)坐标系使用C表示,头盔显示器的像面是一个2D的平面,采用S表示其平面坐标系,人眼与头盔显示器的像面组成一个针孔模型的虚拟摄像机,坐标系使用V表示。如果读者没有计算机视觉基础,可以参考清华大学出版社出版的《计算机视觉:算法与应用》一书,或者自行百度,也可搜索到相关介绍。针孔模型介绍可参考博文

http://blog.csdn.net/lixianjun913/article/details/10032019。

      标定主要是通过一些测量和计算,来确定一些参数。这里主要标定的是跟踪摄像机坐标系到头盔显示器屏幕坐标系的映射关系。

假设空间中的任意一点P,在世界坐标系W中的坐标为Pw,在跟踪摄像机坐标系下的坐标为Pc,通过屏幕看该点,该点在屏幕上的坐标为Ps,则得到两个等式

Pc=[Rwc|Twc;0 0 0 1]Pw

Ps=K[Rcv|Tcv]Pc=G Pc

      其中,Pw,Pc是三维位置的齐次坐标,因此都是四维向量。Ps是二维位置的齐次坐标,因此是三维向量。每一个出现的R都是3*3的旋转矩阵,每个T都是3*1的平移向量,它是包含3个元素的列向量。K是表示包含人眼的虚拟摄像机的内参数矩阵,是3*3矩阵。令Ps = [u v 1]T,Pc = [x yc  zc  1]T,G=[g11  g12  g13  g14 ; g21  g22  g23  g24 ; g31  g32  g33  g34  ],则得到

 

 

      所以我们要标定的就是G。有了G就有了从跟踪摄像机三维坐标系到显示器屏幕二维坐标的映射关系,进而可以在屏幕上对现实中的物体做虚拟信息标注。当然,G可以直接分解成内参数矩阵和旋转、平移矩阵(平移向量看成是n*1的矩阵),这样,我们不仅可以进行文字标注,还可以根据虚拟摄像机和跟踪摄像机之间的空间位置关系,进行三维虚拟物体的叠加。这也就是最后我们看到的在真实世界中叠加一些虚拟的人物、建筑等物体的效果了。

(2)软件怎么写?

      了解了标定原理之后,你也许就迫不及待地要进行实验了。

      其实要想求解上述的G,还是比较容易的。首先观察Ps=G Pc,左边是三维的,右边是四维的,很明显G应当是3*4的矩阵。对于这12个未知数(实际上只有11个独立的,剩余一个是尺度缩放因子,在齐次坐标系统中不影响最终结果),可以由至少6组对应点求解得到。因为每组对应点是可以得到两个独立的方程的。忘了说了,每组对应点指的是某一个头部位姿状态下,P点的跟踪摄像机坐标Pc和屏幕坐标Ps。

      软件只需要获取不同的至少6个头部位姿下的6组对应点即可。在求解时,所有的未知数移动到等式左边,那么右边全是0,直接求解可能得到零解。因此我们对系数矩阵进行奇异值分解。假设取了n组对应点,则只需要把2n*12的矩阵使用matlab的SVD函数进行分解就行了。右奇异矩阵中对应最小特征值的向量就是要求的解。直接拷贝出来就是要求的G。

      具体的程序代码还需要各位读者自己写写看,只有两个步骤哦,第一步读取一系列(不少于6组,建议10组以上)对应点位置坐标,第二步使用matlab的SVD函数进行求解。之后,得到G就能知道任意的三维位置对应的屏幕位置了。这时,你还不能在你想要的位置上叠加想要的虚拟信息吗?

       看看,是不是很简单。其实很多事情都是看上去复杂难解,实则脉络清晰,求解容易。当然了,在实现的过程中还有很多小技巧。相信初次接触的朋友也会遇到很多难题。如果有问题可以在评论中留言进行交流。

 

主要参考文献

[1] Tuceryan M, Navab N. Single point active alignment method (SPAAM) for optical see-through HMD calibration for AR[C]// IEEE and ACM International Symposium on Augmented Reality. IEEE, 2000:149.

这篇关于AR 透视头盔的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/318517

相关文章

图像处理基础篇-镜像仿射透视

一.图像镜像 图像镜像是图像旋转变换的一种特殊情况,通常包括垂直方向和水平方向的镜像。水平镜像通常是以原图像的垂直中轴为中心,将图像分为左右两部分进行堆成变换。如图7-1所示: 垂直镜像通常是以原图像的水平中轴线为中心,将图像划分为上下两部分进行堆成变换的过程,示意图如图7-2所示。 在Python中主要调用OpenCV的flip()函数实现图像镜像变换,函数原型如下: dst =

基于yolov8的电动车佩戴头盔检测系统python源码+onnx模型+评估指标曲线+精美GUI界面

【算法介绍】 基于YOLOv8的电动车佩戴头盔检测系统利用了YOLOv8这一先进的目标检测模型,旨在提高电动车骑行者的安全意识,减少因未佩戴头盔而导致的交通事故风险。YOLOv8作为YOLO系列的最新版本,在检测速度和精度上均进行了优化,特别适用于处理复杂场景中的小目标检测。 该系统通过收集并标注包含电动车骑行者图像的数据集,对YOLOv8模型进行训练,使其能够准确识别骑行者是否佩戴头盔。在实

构建全景式智慧文旅生态:EasyCVR视频汇聚平台与AR/VR技术的深度融合实践

在科技日新月异的今天,AR(增强现实)和VR(虚拟现实)技术正以前所未有的速度改变着我们的生活方式和工作模式。而EasyCVR视频汇聚平台,作为一款基于云-边-端一体化架构的视频融合+AI智能分析平台,可以通过其强大的数据接入、处理、转码及分发能力,与AR/VR技术形成完美结合,为多个领域带来了前所未有的创新应用。 在此背景下,增强现实(AR)和虚拟现实(VR)等前沿技术结合EasyCVR平台在

百万豪车同款!上半年交付暴涨5倍,AR HUD强攻20万以下车型

作为人车交互的新窗口,AR HUD的潜能还在不断凸显。 8月初,问界M9通过OTA升级新增AR HUD观影功能,通过三指滑动,能够轻松实现AR HUD与三联屏之间的无缝流转,支持75英寸投射沉浸观看。 这也意味着,继取代仪表盘、融合中控屏和辅助驾驶系统信息等之后,AR HUD的娱乐功能潜能逐步被挖掘。同时,更大的呈现空间、虚像距离,也对AR HUD配套的软件平台和算法提出更高要求。 高工智能

Pandas-高级处理(七):透视表(pivot_table)【以指定列作为行索引对另一指定列的值进行分组聚合操作】、交叉表(crosstab)【统计频率】

交叉表与透视表的作用 交叉表:计算一列数据对于另外一列数据的分组个数透视表:指定某一列对另一列的关系 一、透视表 透视表是一种可以对数据动态排布并且分类汇总的表格格式。 透视表:透视表是将原有的DataFrame的列分别作为行索引和列索引,然后对指定的列应用聚集函数 data.pivot_table()DataFrame.pivot_table([], index=[]) 比如:pd.

36. 悬停时的透视变换 ### 交替文字

悬停时的透视变换 在元素上应用带有悬停动画的透视变换。 使用 transform 与 perspective() 和 rotateY() 函数为元素创建透视。使用 transition 在悬停时更新 transform 属性的值。将 rotateY() 的值改为负数,可以从左到右镜像透视效果。 <div class="card-container">

从失败案例透视数字化营销误区

在数字化时代,数字化营销成为企业竞争的重要手段,但并非尝试都能成功。今天,我们通过一个失败案例来剖析数字化营销中的常见误区。 案例中的企业是一家中型消费品公司,主要生产时尚服装。为应对竞争压力,企业实施数字化营销战略,目标是一年内品牌知名度提高 50%、销售额增长 30%。 然而,在实施过程中却陷入诸多误区。目标设定方面,目标过高且不明确,巨大压力下企业过于急躁,也无法准确评估效果和调

fps射击吃鸡/透视/自瞄/逆向/imgui绘制系列课程(电脑端2024)

易语言fps射击吃鸡/透视/自瞄/逆向/imgui系列课程(电脑端2024) 主讲:类人猿、小严      因市面上易语言fps游戏非常零散、逻辑较差、不系统,大家学习起来费劲。这一套课程针对fps类型的游戏做详细讲解分析,实用为主,通用性强。教程由简单到复杂,打造市面最高质量视频。教程适合广大编程和脚本爱好者入手。 一、某射击类游戏基础变态数据分析和代码 1. 游戏分析的环境 2. 人

使用Leap Motion Orion开发酷炫的手势识别VR/AR应用

Leap Motion Orien支持Oculus和HTC Vive开发,当然对Unity的支持显然是必须的。 不过前提是: 1.Windows 7 64位或者windows 10 2.Leap Motion Orion 3.Oculus SDK 1.3(需要Unity 5.3.4 p1以上版本) 4.HTC Vive(需要Unity 5.4+) U

Google Expeditions项目今年获得AR支持

本周的Google I / O会议已经在虚拟现实(VR)公告中脱颖而出。该公司透露了全新Daydream独立头显的研发工作,该头显将由HTC和联想制作。它也有关于增强现实(AR)方面的消息分享:“远征”项目将把AR带入课堂中。   与VR和AR相关的所有事情,Google的VR副总裁Clay Bavor今天早些时候宣布了这个声明,称之为“终极展示”。“远征”可以使学生通过使用Google