一种基于ARkit和二维码的虚拟场景定位方法技术

技术编号:24252913 阅读:172 留言:0更新日期:2020-05-23 00:17
本发明专利技术公开一种基于ARkit和二维码的虚拟场景定位方法,根据摄像机截图,将二维码区域颜色数据使用ZXing库解码,获得二维码的三个定位点的屏幕坐标及二维码挂载的数据信息;使用ARkit技术获得当前扫码的平面,从摄像机位置向三个特征点分别发射三条射线。本发明专利技术基于ARkit和二维码技术可将虚拟场景高效灵活的定位到现实世界中,通过获得二维码数据,对二维码颜色数据进行解码,通过ARkit技术对二维码数据进行重新计算,获得二维码在虚拟场景中的三个特征点,之后通过旋转、计算二维码各坐标的方法定位二维码在虚拟场景中的位置,然后根据反向转转、计算将其与现实世界结合,从而能够使AR场景与现实世界结合更加的贴切,能够精确定位虚拟场景在现实世界的位置。

A virtual scene location method based on arkit and QR code

【技术实现步骤摘要】
一种基于ARkit和二维码的虚拟场景定位方法
本专利技术涉及互联网
,具体的说是一种基于ARkit和二维码的虚拟场景定位方法。
技术介绍
当前人们生活在一个互联网信息发达的社会中,随着AR技术的迅速发展,如何使虚拟世界灵活精准的定位投射到现实世界中,是非常重要的;随着互联网和移动互联网的迅猛发展,用户的使用要求也越来越挑剔,对应用软件的用户体验要求也越来越高;现有的虚拟场景模拟定位方法很难将虚拟场景灵活高效的锚固到现实世界中,整个应用的可用性不够稳定。这时候就需要通过一种将灵活高效的虚拟场景锚固到现实世界的方法,提高整个应用的可用性。
技术实现思路
针对现有技术中存在的不足,本专利技术设计了一种基于ARkit和二维码的虚拟场景定位方法;能够将虚拟场景灵活高效的锚固到现实世界中,提高整个应用的可用性。技术方案:本专利技术解决问题所采用的技术方案为:一种基于ARkit和二维码的虚拟场景定位方法,包括以下步骤:1)根据摄像机截图,将二维码区域颜色数据使用ZXing库解码,获得二维码的三个定位点的屏幕坐标及二维码挂载的数据信息;2)使用ARkit技术获得当前扫码的平面,从摄像机位置向三个特征点分别发射三条射线,计算出三条射线与扫码平面的相交位置,即真实世界的二维码的三个特征点在ARkit坐标系下的位置;3)根据步骤2)中的三个特征点坐标计算得到二维码在ARkit坐标系下的中心位置与旋转位置;4)根据二维码的数据信息向服务器请求二维码得到二维码在虚拟场景下的位置、角度及缩放,根据步骤3)中的二维码在ARkit坐标系下的位置,减去二维码在虚拟场景的位置,即可得出虚拟场景坐标原点在ARkit坐标系下的位置;二维码在ARkit坐标系下的角度反向旋转二维码在虚拟场景下的角度即可得出虚拟场景坐标原点在ARkit坐标系下的旋转角度;同理可计算出缩放;5)通过将二维码在服务器对应场景模型信息和二维码在虚拟场景的位置信息动态配置,达到虚拟场景与现实世界灵活结合的目的。其中,所述步骤1)中具体实现方法为:根据摄像机屏幕UI的扫码框计算该框的屏幕区域Rect并对32向上取整,读取该Rect范围的颜色数据到Color32[]数组colors中,将RGB编码的colors转换成YUV编码的byte[]buffer,并使用ZXing库MultiFormatReader类decodeWithState方法进行解码操作,得到ZXing库Result类对象,其中特征点在ResultPoints属性数组中,二维码存储的字符串数据在Text属性中。其中,所述步骤2)中具体实现方法为:通过ResultPoints加Rect的最小坐标,得到二维码特征点的屏幕坐标pts,通过摄像机的屏幕射线方法得到三个射线Rays,使用ARkit的ARInterface获取一系列平面,根据步骤1)获取的字符串数据Result.Text获取二维码粘贴方向(水平或垂直)获取最优的plane数据模型,计算Rays和plane的交点,得到二维码三个特征点实际位置,即controlPoints位置。其中,所述步骤3)中具体实现方法为:通过步骤2)中得到的二维码的三个特征点,其左下角、左上角和右上角的索引分别设置为0、1、2;通过左下角和右上角的均值求出二维码的中心点坐标center,默认二维码的上方空间方向为vup,从二维码的中心到顶部中心计算得出前方向vforward,使用(controlPoints[0]-center)和(controlPoints[1]-center)的叉乘得到上方空间方向vup,通过Quaternion.LookRotation(vforward,vup)得出二维码旋转的四元数;再根据现场粘贴二维码量取实际位置,估算二维码虚拟场景坐标,并配置到服务器。其中,所述步骤4)中具体实现方法为:从Result.Text中的数据中得到虚拟场景SceneID和二维码MaID,通过MaID向服务器查询得到二维码在虚拟场景中的位置position和旋转rotation,反向移动和旋转即可得出虚拟场景坐标系中心在ARKit坐标系的位置和旋转;根据场景ID拉取场景数据加载场景渲染到屏幕。其中,所述步骤5)中具体实现方法为:根据AR场景和现实世界结合的实际效果,微调整服务器存储二维码的虚拟场景位置,使AR场景和现实世界结合贴切。有益效果:本专利技术与现有技术相比,具有以下优点:本专利技术中基于ARkit和二维码技术可将虚拟场景高效灵活的定位到现实世界中,其主要通过获得二维码数据,对二维码颜色数据进行解码,通过ARkit技术对二维码数据进行重新计算,获得二维码在虚拟场景中的三个特征点,之后通过旋转、计算二维码各坐标的方法定位二维码在虚拟场景中的位置,然后根据反向转转、计算等操作将其与现实世界结合,从而能够使AR场景与现实世界结合更加的贴切,能够精确定位虚拟场景在现实世界的位置。附图说明图1为本专利技术扫码界面UI图;图2为本专利技术中二维码基本结构图。具体实施方式下面结合附图和具体实施例,进一步阐明本专利技术,本实施例在以本专利技术技术方案为前提下进行实施,应理解这些实施例仅用于说明本专利技术而不用于限制本专利技术的范围。实施例1本实施1提供一种基于ARkit和二维码的虚拟场景定位方法,包括以下步骤:步骤1):根据图1中屏幕UI的扫码框计算该框的屏幕区域Rect并对32向上取整,读取该Rect范围的颜色数据到Color32[]数组colors中,将RGB编码的colors转换成YUV编码的byte[]buffer,并使用ZXing库MultiFormatReader类decodeWithState方法进行解码操作,得到ZXing库Result类对象,其中特征点在ResultPoints属性数组中,二维码存储的字符串数据在Text属性中;步骤2):通过ResultPoints加Rect的最小坐标,得到二维码特征点的屏幕坐标pts,通过摄像机的屏幕射线方法得到三个射线Rays,使用ARkit的ARInterface获取一系列平面,根据步骤1)获取的字符串数据Result.Text获取二维码粘贴方向(水平或垂直)获取最优的plane数据模型,计算Rays和plane的交点,得到二维码三个特征点实际位置,即controlPoints位置。步骤3):二维码的三个特征点如图2所示,其左下角、左上角和右上角的索引分别设置为0、1、2;通过左下角和右上角的均值求出二维码的中心点坐标center,默认二维码的上方空间方向为vup,从二维码的中心到顶部中心计算得出前方向vforward,使用(controlPoints[0]-center)和(controlPoints[1]-center)的叉乘得到上方空间方向vup,通过Quaternion.LookRotation(vforward,vup)得出二维码旋转的四元数;再根据现场粘贴二维码量取实际位置,估本文档来自技高网...

【技术保护点】
1.一种基于ARkit和二维码的虚拟场景定位方法,其特征在于:包括以下步骤:/n1)根据摄像机截图,将二维码区域颜色数据使用ZXing库解码,获得二维码的三个定位点的屏幕坐标及二维码挂载的数据信息;/n2)使用ARkit技术获得当前扫码的平面,从摄像机位置向三个特征点分别发射三条射线,计算出三条射线与扫码平面的相交位置,即真实世界的二维码的三个特征点在ARkit坐标系下的位置;/n3)根据步骤2)中的三个特征点坐标计算得到二维码在ARkit坐标系下的中心位置与旋转位置;/n4)根据二维码的数据信息向服务器请求二维码得到二维码在虚拟场景下的位置、角度及缩放,根据步骤3)中的二维码在ARkit坐标系下的位置,减去二维码在虚拟场景的位置,即可得出虚拟场景坐标原点在ARkit坐标系下的位置;二维码在ARkit坐标系下的角度反向旋转二维码在虚拟场景下的角度即可得出虚拟场景坐标原点在ARkit坐标系下的旋转角度;同理可计算出缩放;/n5)通过将二维码在服务器对应场景模型信息和二维码在虚拟场景的位置信息动态配置,达到虚拟场景与现实世界灵活结合的目的。/n

【技术特征摘要】
1.一种基于ARkit和二维码的虚拟场景定位方法,其特征在于:包括以下步骤:
1)根据摄像机截图,将二维码区域颜色数据使用ZXing库解码,获得二维码的三个定位点的屏幕坐标及二维码挂载的数据信息;
2)使用ARkit技术获得当前扫码的平面,从摄像机位置向三个特征点分别发射三条射线,计算出三条射线与扫码平面的相交位置,即真实世界的二维码的三个特征点在ARkit坐标系下的位置;
3)根据步骤2)中的三个特征点坐标计算得到二维码在ARkit坐标系下的中心位置与旋转位置;
4)根据二维码的数据信息向服务器请求二维码得到二维码在虚拟场景下的位置、角度及缩放,根据步骤3)中的二维码在ARkit坐标系下的位置,减去二维码在虚拟场景的位置,即可得出虚拟场景坐标原点在ARkit坐标系下的位置;二维码在ARkit坐标系下的角度反向旋转二维码在虚拟场景下的角度即可得出虚拟场景坐标原点在ARkit坐标系下的旋转角度;同理可计算出缩放;
5)通过将二维码在服务器对应场景模型信息和二维码在虚拟场景的位置信息动态配置,达到虚拟场景与现实世界灵活结合的目的。


2.根据权利要求1所述的一种基于ARkit和二维码的虚拟场景定位方法,其特征在于:所述步骤1)中具体实现方法为:根据摄像机屏幕UI的扫码框计算该框的屏幕区域Rect并对32向上取整,读取该Rect范围的颜色数据到Color32[]数组colors中,将RGB编码的colors转换成YUV编码的byte[]buffer,并使用ZXing库MultiFormatReader类decodeWithState方法进行解码操作,得到ZXing库Result类对象,其中特征点在ResultPoints属性数组中,二维码存储的字符串数据在Text属性中。


3.根据权利要求2所述的一种基于ARkit和二维码的虚拟场景定位方法,其特征在于:所述步骤2)中具体实现方法为:通过ResultPoints加Rect的最小坐标,得到二维码...

【专利技术属性】
技术研发人员:陈旋周海林鹏
申请(专利权)人:江苏艾佳家居用品有限公司
类型:发明
国别省市:江苏;32

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1