基于三维重建和增强现实的虚拟购物系统的制作方法

文档序号:16978172发布日期:2019-02-26 19:13阅读:391来源:国知局
基于三维重建和增强现实的虚拟购物系统的制作方法

本发明涉及三维重建领域和增强现实领域,具体的说,三位重建为室内小物体的重建方法和设备,增强现实是基于双目和单目摄像头的平面和空间跟踪方法。



背景技术:

在目前商品都是以二维图片的形式展示,不够直观。而利用基于视觉的三维重建技术可以低廉高效的建立商品的三维模型,且不需要专业的建模人员。同时,应用增强现实技术,将物品的三维模型以增强现实的形式叠加到现实世界中,比如人体上、房屋中,就可以实现相应的逼真的虚拟试穿和虚拟家庭等增强显示的体验。项目将分别实验使用基于rgb-d、基于双目视觉和基于单目视觉的三种流行的三维重建方式,来寻找重建准确度和重建成本的最佳平衡。增强现实将在移动端实现,利用手机摄像头构建出基于visualslam的地图信息,将三维模型准确的叠加到手机的取景场景中,构建逼真的购物体验。

目前我们在网络购物中最大的不便是无法从产品的二维图片中完整的了解一款产品,很多时候图片上的信息不够全面,或者不知道在自己的身上会是怎样的效果。三维物品可以让我们更加全面的了解一款产品,但是三维建模成本高,只有像汽车这样的昂贵产品才会使用三维商品模型。但是应用基于视觉的三维重建技术,可以在使用我们的手机摄像头拍照来做三维重建。



技术实现要素:

本发明主要分为两个部分,基于三维重建技术的改进应用和增强现实的改进引用。

本发明三维重建部分提供一种基于sfm改进算法的三维重建方法和软件。用户可以通过手机拍摄物品,上传照片到重建软件,生成物品的三维模型。

本发明增强现实部分提供了基于标记物和无标记物slam的两种方法,将三维物品叠加到真实空间中去,达到增强现实的效果。

本发明中三维重建方法包括:为了找到多帧图像中相同的部分,使用sift检测子做为特征检测的算法。sift使用高斯金字塔做为特征,sift第一步是找到一个主梯度方向,使其具有旋转不变性,特征描述子可以适应多个方向的特征。在特征匹配阶段,使用ransac来估计多幅图像间的基础矩阵。因为会出现很多错误匹配的特征描述子,需要算法对提取的描述过滤。ransac是一种利用随机算法能够过滤异常点的高效算法。使用多帧图像中的匹配点建立投影矩阵,最小化投影误差,提高匹配的精度。之后增量式的加入新的匹配特征点,使系统可以处理大量的图像和缺失点。

增强现实部分,使用了两种不同的算法形式。第一种是基于标记物的跟踪。提取标记物的orb特征做为特征描述子。orb特征是fast和brief的结合,是一种快速和鲁棒描述子。从摄像头中读取实时视频流,对视频图像中每一帧图像提取orb特征子,使用ransac与模版图像的特征子做匹配,如果匹配上,通过投影矩阵计算出相机姿态,将相机坐标放入opengl的坐标转换关系中,渲染出虚拟物品。第二种是slam的跟踪方式。通过标记物提取,特征点匹配,姿态估计,姿态更新和地图更新等一系列的操作,完成slam的地图构建和跟踪。通过slam获取到相机姿态后,放入opengl的旋转矩阵,计算出渲染物品的位置。

附图说明

图1本发明实例的三维重建和增强现实购物系统的流程示意图。

图2是三维重建系统的算法执行流程图。

图3是增强现实部分的模板匹配的算法执行流程图。

图4是增强现实部分的基于建图和定位的执行流程图。

具体实施方式

本发明提供一种将三维重建方法和移动虚拟现实展示结合在一起的系统。系统的总体架构图如1所示。包括的步骤如下:

通过拍摄物品多帧照片,使用改进的sfm算法重建出物品的三维形状,将重建出的三维信息存入模型数据库中,模型库中有各种类型的3维物品,如家具、玩具、艺术品等。

通过模版匹配或者slam定位的方法,计算出相机的姿态。

取出3维模型,根据相机姿态渲染出相应的空间位置下的模型。

图像采集部分,可以使用各种类型的摄像头,包括usb摄像头和手机摄像头。移动摄像头对物品拍摄多角度的多帧图像,保证物品的同一个特征能够出现在多张图片中。

在三维重建部分的算法流程参照图2。包括的步骤如下:

首先完成相机校准,使用相机校准方法获得内部参数矩阵和外部参数矩阵,用于之后深度恢复的计算。

使用quote代表2d点在像素坐标下的位置,quote来代表3d点在空间坐标下的位置,通过公示quote计算两者的投影关系。其中k是内部参数矩阵,r、t是外部参数矩阵。

通过寻找多帧图像中对应匹配的特征点,通过匹配点对应的位置用几何学求取每个点在三维空间中的位置。

特征点的提取使用了sift算法,可以兼顾到速度和精度。为了加速特征点的匹配,将特征点根据大小排序。

在每张图像中的关键点匹配时使用了近似最近邻算法,为了减少错误匹配,使用随机匹配的ransac算法来剔除一定的错误匹配点。通过使用pnp公式,用最少8个匹配点。如果少于20个匹配点,认为这两幅图像是一个不好的匹配。

使用增量式将新拍摄图像加入,当加入多幅图像后,使用集束调整可以优化初始相机和结构参数估计的误差,得到更加精确的估计。

集束调整需要最小化全集中所有3d的投影误差:

得到一个更加优化的3d重建结果。

使用lm算法来解决其中的非线性最小二乘问题,将其用公式表示为:

其中的j是雅可比函数,使用泰勒展开的损失函数是:

通过以上步骤算法的多次迭代执行,可以生成物体的三维模型。由于算法是自动执行的,并不知道生成的3d模型中哪些部分是背景。将生成的3d模型导入三维点云软件,手动去处背景区域。

将3维模型从点云格式转化为fbx格式,兼容增强现实部分的模型加载。将转换好的模型存入模型库中。完成模型的构建。

增强现实部分的使用了模版匹配和slam两种形式。模版匹配先选用一张纹理清晰的自然图片,提取图片中的orb图像描述子。

如图3所示的模版匹配过程,orb结合利用了fast关键点描述子和brief描述子,并通过改进这两种算法来加强准确度和加快速度。首先使用fast去找到关键点,再使用harris角点去寻找关键点周围的点。构造图像金字塔来实现多尺度的特征。

将模版的orb描述子存入模版数据库。再模版数据库中有多个模版的orb描述子,可以实现多个模版的识别。

使用摄像头取景,对实时输入的图像提取orb特征,将得到的orb特征与模版库中的orb特征做对比。如果有超过20个点匹配上,认为摄像头取景的照片中出现了模版,进入姿态求解部分。

将姿态求解转化为pnp问题,pnp问题是在通过在给定了多个2d投影点和对应的3d点后,求解相机的位置和方向。相机的投影模型如下:quote。同时由于错误匹配关系的存在,使用ransc减小错误匹配造成的影响。在本发明中,使用opencv提供的solvepnp函数来求解相机的姿态。

通过单应性变换后,求解出相机相对于标记物位置和姿势。将标记物所在的平面的坐上角选为世界坐标系的(0,0,0)位置。

使用opengl三维模型的渲染。将3维模型渲染在世界坐标系(0,0,0),将相机的姿态矩阵作为世界坐标系到相机坐标系的转换关系,在乘以模型的坐标系,渲染出3维模型在屏幕中正确的位置和大小。

第二种增强现实模式是基于slam的空间定位模型,可以完全脱离标记物,具有更好的表现效果。

如图4所示,地图的初始化。在系统初始开始的时候,使用5点做立体初始化构建地图。要求在选择一帧图像作为起始帧后,平移手机,使图像产生一定的位移。提取两帧图像的fast角点,找到对应的关键点。接着使用ransac算法过滤掉错误匹配。

估计出基本矩阵,使用集束调整来获取一个可行的初始化地图。将地图旋转和平移使被检测到的平面放置在z=0的世界坐标处。

在地图初始化后,地图中只有两个关键帧,并且表示的空间也很小。系统需要动态的添加新的关键帧和增量式的构建地图。当跟踪的质量比较好,或者当前帧和之前的关键帧距离比较远的时候,会将当前帧加入到地图当中去。

跟踪线程会同时执行,通过定位出相机在地图中的位置,求得转移矩阵,作为世界坐标系到相机坐标系的转换关系。

通过opengl的三维图像渲染,用户在屏幕上可以看到虚拟物品被放置在现实场景中,并且随着用户的视角变化,虚拟物品也会发生相应的变化。得到一种逼真的用户体验。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1