作者:陈宏洋

一、背景概要

作为一名智能产品测试工程师,不可避免的需要接触到最新最热的技术产品,目前,VR 就是这样一种技术,“知己知彼百战不殆”,想要做好 VR 产品的测试工作,你必须先要了解 VR 是什么?VR 未来的发展趋势会怎样?除开 VR 本身,还会有其他的技术能够与 VR 一较高下亦或者融合入 VR 带来崭新的技术体验?今天我将向你介绍一门与 VR 即能匹配又能相辅相成的技术 - 三维重建。

作为一名技术开发者如果还不知道 VR 是什么,那你就 out 了,VR 到底有多火?我们从一些数据新闻中就可以看出来:全球领先的移动互联网第三方数据挖掘和整合营销机构 iiMedia Research(艾媒咨询) 发布了《2015 年中国虚拟现实行业研究报告》。报告显示,2015 年中国虚拟现实行业市场规模为 15.4 亿元,预计 2016 年将达到 56.6 亿元,2020 年市场规模预计将超过 550 亿元。国外,行业巨头跑马圈地,Facebook 收购 Oculus VR、索尼投入 Morpheus 设备、HTC 携手三星共探 VR;国内,各家积极布局,腾讯抓着 2015 年的尾巴推出整套 VR 方案,3Glasses、DeePoon 大朋头盔、蜂镜 K1 等公司体量虽小却毫不示弱。

VR 这种沉浸式三维感受方式几乎已经成为了 3D 的代名词,与此相呼应的是三维建模的尴尬地位,实际上裸眼 3D 一直也是行业热门话题,其发展的起源和发展的时间丝毫不落后于 VR,甚至于还要早于 VR。最早的提出三维建模的是 20 世纪 70 年代末,Marr 首次提出了计算机视觉的理论框架,同时利用两张有视差的平面图计算并获得深度信息,最终获取了含有深度信息的立体图形。

如今对于三维建模的应用已经渗透到了各行各业,例如:

针对三维建模的实际产品目前也有了很多,例如:Microsoft 的 Kinect、Intel 的 RealSense,更有 AutoDesk123d Catch 将三维建模的应用植入到 APP 当中,在 123dCatch 中用户只需要简单的拿起手机围绕着物体拍摄一圈,经过后台的计算,最终就可以得到三维的物体模型(体验网址和体验视频观看:http://www.123dapp.com/catch

图 1 Microsoft 的第二代 Kinect

图 2 Intel 的两款不同 RealSense

Kinect 的应用已经无需多说,微软公司结合 Kinect 和 X-box 给用户带来了极致的游戏体验,让身体的各个部位、神经感觉全部都能够参与渗入到游戏体验当中,新一代的 Kinect2.0 不仅提供了 1080P 的高清视频,同时对于骨骼追踪的改进、主动式红外检测、三维模型的实时创建、麦克风阵列的精确定位等等,全方位的增强了用户与机器之间的互动,Kinect2.0 的出现使得体感应用领域有了更多的想象和发挥的空间。

相比较与 Kinect,Intel 的 RealSense 的横空出世,将三维建模重新推向了一个新的高潮,我们可以对比查看一下两款 Realsense 的参数和功能:

可以看到,RealSense 最大的优势是:轻便,能够获取三维景深增强、动态的获取三维、进行三维扫描(相关的体验视频很多,作者提供:https://www.youtube.com/watch?v=VWVwKylq3dk等等)。

说到以上的这些东西,相信大部分的读者已经对三维产品有了大致的了解了,也许有人会产生疑问,这样的技术产品如何能够与 VR 争抢如今三维市场的这块大蛋糕呢?试想一下这样的场景:我们在虚拟的场景中能够任意的创造出属于自己的物体,例如:滑动自己的双手,创造出属于自己的汽车、自己的房子等等。同时,目前的 VR 场景都是虚拟的,是由程序构造而成的,我们可以利用三维重建技术,将现实的场景引入到我们的虚拟世界当中,例如构造一座真实的腾讯大厦,模拟站在腾讯大厦的最顶端俯瞰全深圳。

这样的场景让人兴奋,充满诱惑,不要着急!这样的事情已经发生!Leep Motion 已经可以利用人体的骨骼识别,结合 Oculus 设备,在虚拟的世界中创造出属于自己的物品(相关的视频体验:https://www.leapmotion.com/?lang=zh),同时让人感到兴奋不已的是,RealSense 结合大朋 VR 头盔,捕捉现实中的三维信息,呈现到内部的头盔场景当中(具体的体验视频可以自行查找)。

二、技术支持

目前的三维重建技术大概分类如下图所示:

图 3 三维建模的技术手法分类

市场上的产品大多集中在光学的形式,基于光学的三维重建主要有主动结构光方法和被动的双目视觉方法。结构光方法是利用单摄像机配合 DLP 投影设备,获取三维模型。而双目立体视觉是利用双摄像机得到三维建模模型。RealSense 和 Kinect2.0 都是采用主动光的结构法获取深度信息,而 123d catch 则是利用被动光的获取且结合点云拼接的技术得到。

1、被动光的双目视觉三维重建技术

被动光的双目视觉系统主要包括的技术有:相机的标定、图像的预处理、图像对的校正、图像对的匹配和深度计算、最终是三维点云的获取。

图 4 被动光技术流程

1.1 相机的标定

标定的内容实际上就是让空间物体的一点与相机的成像平面能够一一对应,而这个对应的关系式为:

其成像的示意图如下图所示:

图 5 成像模型

空间物体一点 M 到图像上一点 m 的关系依靠 P 矩阵来连接,而相机的标定就是获取 P 矩阵。

1.2 图像的预处理

通常得到的图像会含有噪声影响,对于图像的质量有极大的损害,采用图像预处理的目的可以平滑图像,滤除噪声部分,但是由于图像的边缘信息和噪声所处的频率段相似,因此通常也会滤除掉边缘信息,边缘信息的提取可以辅助立体匹配,减少立体匹配的计算量同时可以提高匹配准确率,所以一般会采取边缘保护的图像滤除噪声处理。

图 6 双边平滑滤波处理结果

1.3 图像的立体校正

双目立体视觉的主要功能就是寻找左右图像对的匹配点,计算出相应的视差从而提取出深度信息,而寻找左右图像的对应点,往往以左图像的点为基准点,在右图像中寻找匹配点,整个过程是在二维的图像中搜索,搜索的计算量较大,且精度低,由于左右图像对满足极线约束条件,即左图像一点的对应点必定在右图像上的对极线上,因此确定了左图像任意一点对应的右图像上的对极线,就可以在对极线上搜索对应点,这样将会使得搜索空间从二维减小到一维上的固定范围中,不仅能够提高匹配的精度,同时能够加快匹配的速度。

图 7 双目视觉系统立体校正前

图 8 双目视觉系统立体校正后

##### 1.4 立体匹配以及视差计算
这一步是双目视觉的核心内容,因此立体匹配的好坏会决定三维建模的模型是否准确,目前针对立体匹配的算法改进,可以参考http://vision.middlebury.edu/stereo/,匹配之后可以计算左右图像对应区域的距离信息,这一信息被称为视差值。

1.5 深度获取

双目立体视觉的深度信息提取方法为原理简便的三角测量法,其中左右摄像机是平行对准的,此时其深度信息获取及三维点云获取的立体成像几何为:如图 9 所示,令图中左右相机光心之间的距离为基线,其长度为,是相机的焦距,为世界坐标系且有轴垂直于纸面指向里面。在空间坐标中的任意一点,其在左摄像机中的成像平面上的对应点为,在右摄像机中的成像平面上的对应点为,则有:

图 9 立体成像几何原理图

式中的就是我们前面所求的视差 d,此时可得到有:

1.6 三维点云的获取

下面展示的就是利用双目视觉系统获取的三维点云(其中采用到 PCL 库显示点云)

图 10 原始图像

图 11 三维点云

2、结构光的三维重建技术

主动光的三维重建技术是目前主流产品所使用的三维重建技术,RealSense,Kinect 都是采用的红外结构光面覆盖物体表面,利用一个或两个感知红外结构光的被称为 depth Sensor 的摄像头拍摄物体,通过结构光的前后变化以及编解码最终获取物体的深度信息从而重建得到物体的三维模型点云,下面将会对结构光的方法进行大致的说明。

图 11 结构光原理图

结构光的步骤大体与被动光的相似,需要进行相机标定,以及结构光的编解码。原理大致为:如图所示,XYZ 为结构光投影仪的坐标系,xyz 为相机坐标系,由投影仪投射的结构光投射到被测物体上被相机拍摄获取,则空间一点 P 在 XYZ 坐标系下的关系式有:

可以看到,式中,B 为相机到投影仪之间的基线距离,,和 B 为标定已知结果,而 M,N 为图像的行数和列数,该值可由人为指定,m,n 为空间点 P 在图像上的坐标,该值也可以求的,而则需要结构光的编码解码求的,因此选择不同的结构光,对的精度高低有影响,从而影响到最终的计算出来的空间点的三维信息,目前常用的结构光有德布罗意光等,至于如何编码解码,有兴趣的读者可以去查找相关的资料。

相对于结构光的复杂度较高换来的高精度,另外的例如相位法获得三维信息的原理大致如图:

图 11 结构光的原理示意图(图片来自于《实时彩色三维建模技术研究》)

利用光照射在物体表面产生的偏移,导致光的相位发生相对偏移,利用偏移公式:

式中,为相位差,l,p,d 都为已知条件,通过以上的式子最终可以计算得到高度差,而这个高度差就是我们所需要的深度信息。利用主动光的方法获取三维模型的方法还有很多,在这里不一一列举。

2.1 结构光获取点云

下面展示的为利用结构光获取的三维点云模型,并利用 PCL 点云库展示得到最终的图形。


图 12 结构光获取的三维点云

3、点云拼接

123d catch 采用到了围绕物体拍摄多幅图像,利用被动光的单摄像头方式获取点云并采用点云拼接的方式,最终获取物体的三维信息。目前常用的点云拼接手法原理是如图:

图 13 点云拼接示意图

红色点云和蓝色点云分别处于不同的位置,他们之间有相似的部分,此时采用如下公式:

式中,Q 为红色点云中的点,P 为蓝色点云中的点,R,T 为旋转平移矩阵,因此拼接的根本是选取合适的 R,T 矩阵,使得他们之间的所有点的欧几里德距离之和小于给定的阈值即可,采用最小二乘法可以求取最终的 R,T。并将蓝色点云平移到红色点云附近的位置,达到拼接的目的。

三、总结

VR 的发展已经不可阻挡,三维建模的发展依然继续,如何采用新颖的方式、富有创意的应用体验获取三维市场这块大蛋糕依然是众多开发人员需要思考的问题。三维建模与 VR 的结合已经初现端倪,未来如何结合,共同分配这块大蛋糕需要我们今后更多的创新和实践。我想,三维的世界不是 VR 统治的世界,也不是任何一款其他的技术产品能够统治的世界,相互融合,协同合作,必将让整块蛋糕越来越大,同时让每一个参与者能够体验到其中的美味。

(本文部分数据来源:游戏陀螺网)

(由于作者技术有限,其中有技术错误敬请指出,同时,文中的观点仅代表个人观点)

本章完~

原文链接:enter link description here


TMQ(腾讯移动品质中心)是腾讯最早专注在移动 APP 测试的团队
我们专注于移动测试技术精华,饱含腾讯多款亿级 APP 的品质秘密,文章皆独家原创,我们不谈虚的,只谈干货!

扫码关注我们

扫一扫 关注 TMQ
精彩分享不断


↙↙↙阅读原文可查看相关链接,并与作者交流