您现在的位置: 天下网吧 >> 网吧天下 >> 网吧行业 >> 网络追踪 >> 正文

微软全息眼镜HoloLens解密:如何还原三维场景

[作者:佚名 来源:不详 时间:2015-1-26我来说两句

图像对齐,rectification。因为两个摄像头的位置不同,因此它们各自看到的场景是有偏差的,左边的摄像头能看到最左的场景,右边的看到最右的场景。图像对齐的目的是得到相同的场景部分。

左右图像匹配,correspondence。可以使用OpenCV,得到disparity map。

通过重映射函数,比如OpenCV中的cv::reprojectImageTo3D,得到一张深度图。

只有一张深度图是不够的,它只是某一时刻真实的场景在摄像头中的映射。要想得到完整的三维场景,我们需要分析一系列的深度图。

HoloLens如何从多张深度图重建三维场景?

答案是SLAM,Simultaneous Localization And Mapping,即同步定位与建图系统。这个技术被用于机器人、无人汽车、无人飞行器的定位与寻路系统。解决的是非常哲学的问题:

我现在在哪里?

我可以去哪里?

SLAM有很多实现的方式,有一个开源的方式,实现了很多深度图的处理和匹配算法,可以认为是三维版本的OpenCV。

而微软围绕着Kinect的深度图数据发明了Kinect Fushion算法,并发表了两篇论文:

KinectFusion: Real-time 3D Reconstruction and Interaction Using a Moving Depth Camera;

KinectFusion: Real-Time Dense Surface Mapping and Tracking。

为什么我认为HoloLens与Kinect Fushion有关?答案在这个页面中。Shahram Izadi是微软剑桥研究院的principal researcher及research manager。他所领导的互动3D技术组/ interactive 3D technologIEs为微软的多项产品提供了研究力量,包括Kinect for Windows, Kinect Fusion以及HoloLens。顺便说一句,他们组在招人:)

Kinect Fushion,通过在室内移动Kinect设备,获取不同角度的深度图,实时迭代,对不同对深度图进行累积,计算出精确的房间以及房间内物体的三维模型。

它分四个阶段:

深度图格式转换,转化后的深度的单位是米,用浮点数保存。并计算顶点坐标和表面的法向量。

计算世界坐标系下的相机姿态(包含位置和朝向),通过迭代的对齐算法跟踪这两个值,这样系统总是知道当前的相机与最初的姿态相比变了多少。

第三阶段将姿态已知情况下的深度数据融合到单个三维乐高空间里,你也可以叫它为MineCraft空间,因为这个空间的基本元素不是三角形,而是方格子。演示视频中频频出现MineCraft场景估计也和这个阶段有关。

基于Raycasting的三维渲染,Raycasting需要从当前的相机位置发出射线,与三维空间求交集。乐高空间特别适合Raycasting,可以用八叉树来加速射线的求交运算。Raycasting、Raytracing以及Rasterization是三种常见的渲染方式,这里就不展开了。

在HoloLens的应用中我们运行到第三步,即获取三维乐高模型就可以了,第四步并不是必需的。因为HoloLens的屏幕是透明的,不需要再把房屋的模型渲染一遍,我们自带的眼睛已经渲染了一遍了。




关注天下网吧微信,了解网吧网咖经营管理,安装维护:


本文来源:不详 作者:佚名

声明
本文来源地址:http://www.ithome.com/
声明:本站所发表的文章、评论及图片仅代表作者本人观点,与本站立场无关。若文章侵犯了您的相关权益,请及时与我们联系,我们会及时处理,感谢您对本站的支持!联系邮箱:support@txwb.com.,本站所有有注明来源为天下网吧或天下网吧论坛的原创作品,各位转载时请注明来源链接!
天下网吧 网吧天下