本公开涉及增强现实技术领域,具体而言,涉及一种虚拟对象位姿校准方法、虚拟对象位姿校准装置、存储介质和电子设备。
背景技术:
增强现实(augmentedreality,ar)是一种把虚拟世界和现实世界融合的技术,该技术已广泛应用到教育、游戏、医疗、物联网、智能制造等多个领域。
在多人ar的场景中,多个ar设备通常需要显示同一虚拟物体。然而,由于多个ar设备各自建立的坐标系不一致,会导致多个ar设备显示的虚拟物体不在同一位置,影响了用户的交互体验。
技术实现要素:
本公开提供一种虚拟对象位姿校准方法、虚拟对象位姿校准装置、存储介质和电子设备,进而至少在一定程度上克服多人ar场景中多个ar设备上虚拟物体显示位置不一致的问题。
根据本公开的第一方面,提供了一种虚拟对象位姿校准方法,应用于第一设备,包括:确定第二设备在第一设备坐标系下的位姿,第一设备坐标系由第一设备建立;接收第二设备在第二设备坐标系下的位姿,第二设备坐标系由第二设备建立;利用第二设备在第一设备坐标系下的位姿以及第二设备在第二设备坐标系下的位姿,计算位姿校准参数;将位姿校准参数发送至第二设备,以便第二设备利用位姿校准参数对虚拟对象的位姿进行校准。
根据本公开的第二方面,提供了一种虚拟对象位姿校准方法,应用于第二设备,包括:向第一设备发送第二设备在第二设备坐标系下的位姿,以便第一设备利用第二设备在第二设备坐标系下的位姿以及第二设备在第一设备坐标系下的位姿计算位姿校准参数;其中,第一设备坐标系由第一设备建立,第二设备坐标系由第二设备建立;接收第一设备计算并发送的位姿校准参数,以便利用位姿校准参数对虚拟对象的位姿进行校准。
根据本公开的第三方面,提供了一种虚拟对象位姿校准方法,应用于第一设备,包括:确定第二设备在第一设备坐标系下的位姿;将第二设备在第一设备坐标系下的位姿发送给第二设备,以便第二设备利用第二设备在第一设备坐标系下的位姿以及第二设备在第二设备坐标系下的位姿计算位姿校准参数并对虚拟对象的位姿进行校准;其中,第一设备坐标系由第一设备建立,第二设备坐标系由第二设备建立。
根据本公开的第四方面,提供了一种虚拟对象位姿校准方法,应用于第二设备,包括:接收第二设备在第一设备坐标系下的位姿,第一设备坐标系由第一设备建立;确定第二设备在第二设备坐标系下的位姿,第二设备坐标系由第二设备建立;利用第二设备在第一设备坐标系下的位姿以及第二设备在第二设备坐标系下的位姿,计算位姿校准参数;利用位姿校准参数对虚拟对象的位姿进行校准。
根据本公开的第五方面,提供了一种虚拟对象位姿校准装置,应用于第一设备,包括:第一位姿确定模块,用于确定第二设备在第一设备坐标系下的位姿,第一设备坐标系由第一设备建立;第一位姿接收模块,用于接收第二设备在第二设备坐标系下的位姿,第二设备坐标系由第二设备建立;第一参数计算模块,用于利用第二设备在第一设备坐标系下的位姿以及第二设备在第二设备坐标系下的位姿,计算位姿校准参数;参数发送模块,用于将位姿校准参数发送至第二设备,以便第二设备利用位姿校准参数对虚拟对象的位姿进行校准。
根据本公开的第六方面,提供了一种虚拟对象位姿校准装置,应用于第二设备,包括:第一位姿发送模块,用于向第一设备发送第二设备在第二设备坐标系下的位姿,以便第一设备利用第二设备在第二设备坐标系下的位姿以及第二设备在第一设备坐标系下的位姿计算位姿校准参数;其中,第一设备坐标系由第一设备建立,第二设备坐标系由第二设备建立;参数接收模块,用于接收第一设备计算并发送的位姿校准参数,以便利用位姿校准参数对虚拟对象的位姿进行校准。
根据本公开的第七方面,提供了一种虚拟对象位姿校准装置,应用于第一设备,包括:第二位姿确定模块,用于确定第二设备在第一设备坐标系下的位姿;第二位姿发送模块,用于将第二设备在第一设备坐标系下的位姿发送给第二设备,以便第二设备利用第二设备在第一设备坐标系下的位姿以及第二设备在第二设备坐标系下的位姿计算位姿校准参数并对虚拟对象的位姿进行校准;其中,第一设备坐标系由第一设备建立,第二设备坐标系由第二设备建立。
根据本公开的第八方面,提供了一种虚拟对象位姿校准装置,应用于第二设备,包括:第二位姿接收模块,用于接收第二设备在第一设备坐标系下的位姿,第一设备坐标系由第一设备建立;第三位姿确定模块,用于确定第二设备在第二设备坐标系下的位姿,第二设备坐标系由第二设备建立;第二参数计算模块,用于利用第二设备在第一设备坐标系下的位姿以及第二设备在第二设备坐标系下的位姿,计算位姿校准参数;第二校准模块,用于利用位姿校准参数对虚拟对象的位姿进行校准。
根据本公开的第九方面,提供了一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现上述任一种虚拟对象位姿校准方法。
根据本公开的第十方面,提供了一种电子设备,包括处理器;存储器,用于存储一个或多个程序,当一个或多个程序被处理器执行时,使得所述处理器实现上述任一种虚拟对象位姿校准方法。
在本公开的一些实施例所提供的技术方案中,利用第二设备在第一设备坐标系下的位姿以及第二设备在第二设备坐标系下的位姿,计算位姿校准参数,第二设备可以利用该位姿校准参数执行校准操作。通过计算并应用位姿校准参数,修正了多人ar场景下多个ar设备坐标系不统一的问题,使得多个ar设备上同一虚拟对象能够显示在同一位置,实现了显示效果的一致性,提高了用户虚实交互的体验。
应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本公开。
附图说明
此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本公开的实施例,并与说明书一起用于解释本公开的原理。显而易见地,下面描述中的附图仅仅是本公开的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。在附图中:
图1示出了可以应用本公开实施例的虚拟对象位姿校准方法或虚拟对象位姿校准装置的示例性系统架构的示意图;
图2示出了适于用来实现本公开实施例的电子设备的结构示意图;
图3示意性示出了根据本公开的示例性实施方式的应用于第一设备的虚拟对象位姿校准方法的流程图;
图4示出了根据本公开实施例的第一设备向第二设备发送校准请求的交互示意图;
图5示出了根据本公开实施例的借助于虚拟框确定第一设备是否处于第二设备对应指定位置的示意图;
图6示意性示出了根据本公开的示例性实施方式的应用于第二设备的虚拟对象位姿校准方法的流程图;
图7示意性示出了根据本公开一个实施例的第一设备与第二设备之间的交互图;
图8示意性示出了根据本公开的另一示例性实施方式的应用于第一设备的虚拟对象位姿校准方法的流程图;
图9示意性示出了根据本公开的另一示例性实施方式的应用于第二设备的虚拟对象位姿校准方法的流程图;
图10示意性示出了根据本公开另一个实施例的第一设备与第二设备之间的交互图;
图11示意性示出了根据本公开的示例性实施方式的应用于第一设备的虚拟对象位姿校准装置的方框图;
图12示意性示出了根据本公开的示例性实施方式的应用于第二设备的虚拟对象位姿校准装置的方框图;
图13示意性示出了根据本公开的另一示例性实施方式的应用于第一设备的虚拟对象位姿校准装置的方框图;
图14示意性示出了根据本公开的另一示例性实施方式的应用于第二设备的虚拟对象位姿校准装置的方框图。
具体实施方式
现在将参考附图更全面地描述示例实施方式。然而,示例实施方式能够以多种形式实施,且不应被理解为限于在此阐述的范例;相反,提供这些实施方式使得本公开将更加全面和完整,并将示例实施方式的构思全面地传达给本领域的技术人员。所描述的特征、结构或特性可以以任何合适的方式结合在一个或更多实施方式中。在下面的描述中,提供许多具体细节从而给出对本公开的实施方式的充分理解。然而,本领域技术人员将意识到,可以实践本公开的技术方案而省略所述特定细节中的一个或更多,或者可以采用其它的方法、组元、装置、步骤等。在其它情况下,不详细示出或描述公知技术方案以避免喧宾夺主而使得本公开的各方面变得模糊。
此外,附图仅为本公开的示意性图解,并非一定是按比例绘制。图中相同的附图标记表示相同或类似的部分,因而将省略对它们的重复描述。附图中所示的一些方框图是功能实体,不一定必须与物理或逻辑上独立的实体相对应。可以采用软件形式来实现这些功能实体,或在一个或多个硬件模块或集成电路中实现这些功能实体,或在不同网络和/或处理器装置和/或微控制器装置中实现这些功能实体。
附图中所示的流程图仅是示例性说明,不是必须包括所有的步骤。例如,有的步骤还可以分解,而有的步骤可以合并或部分合并,因此实际执行的顺序有可能根据实际情况改变。另外,下面所有的术语“第一”、“第二”、“第三”等仅是为了区分的目的,不应作为本公开内容的限制。
ar设备可以使用摄像头扫描现实场景,建立自身的地图,所建立地图对应坐标系的坐标原点和坐标轴方向往往是随机的,通常在开启摄像头的瞬间确定出。
在场景中存在多个ar设备进行多人ar交互的情况下,各ar设备的坐标原点和坐标轴方向是随机的,导致各ar设备所建立地图的坐标系不一定会重合,相当于多个ar设备无法统一到同一地图上。当在场景中配置一虚拟对象时,各ar设备上显示该虚拟对象的位置和方向可能存在差异,影响用户虚实交互的体验。
例如,在多人会议显示虚拟主持人的场景下,由于多个ar设备所建立的地图不统一,并且多个ar设备观看虚拟主持人时所处角度也不同,这就导致多个ar设备显示出的虚拟主持人不在同一位置,虚拟主持人的方向也可能不同。在与虚拟主持人进行虚实交互的情况下,虽然针对的是同一虚拟主持人,然而,用户虚实交互的方向不一致,导致场景混乱,用户体验差。
鉴于此,需要一种新的虚拟对象位姿校准方案,以确保多个ar设备上同一虚拟对象显示位置一致。
虽然本公开示例性实施方式中以第一设备与第二设备为例说明多人ar的优化方案,然而,本领域技术人员可以理解的是,可以将本公开示例性实施方式的虚拟对象位姿校准方案应用于包括两个以上ar设备的多人ar场景中。
图1示出了可以应用本公开实施例的虚拟对象位姿校准方法或虚拟对象位姿校准装置的示例性系统架构的示意图。
第一设备101可以是执行多人ar交互过程的多个ar设备中的任意一个设备,其类型可以包括但不限于手机、平板电脑、ar眼镜、ar头盔等。第二设备102处于与第一设备101相同的场景中,可以是执行多人ar交互过程的多个ar设备中的另一个设备,其类型可以与第一设备101相同,例如,第一设备101和第二设备102都是手机,或都是ar眼镜。另外,第一设备101与第二设备102的类型可以不同,例如,第一设备101为手机、第二设备102为ar眼镜。本公开对第一设备101和第二设备102的类型不做限制。
第一设备101和第二设备102单独开机,分别使用配备的摄像模组扫描现实场景,建立各自的地图。本公开对采集图像、构建地图的过程不做限制,摄像模组可以是单目摄像模组,也可以是双目或多目摄像模组。
在第一设备101和第二设备102单独建图完成后,第一设备101可以发送校准请求,第二设备102可以响应该校准请求与第一设备101建立通信连接。
在本公开一些实施例中,第一设备101可以确定出第二设备102在第一设备101建立的坐标系(即,第一设备坐标系)下的位姿。另外,第二设备102可以将当前第二设备102在第二设备102建立的坐标系(即,第二设备坐标系)下的位姿发送给第一设备101。
第一设备101可以利用上述第二设备102在第一设备坐标系下的位姿以及第二设备102在第二设备坐标系的位姿,计算位姿校准参数,并将该位姿校准参数发送给第二设备102,以便第二设备102利用该位姿校准参数执行校准操作。
在本公开的另一些实施例中,由第二设备102计算位姿校准参数。具体的,第一设备101可以确定出第二设备102在第一设备坐标系下的位姿,并发送给第二设备102。第二设备102可以利用接收到的第二设备102在第一设备坐标系下的位姿以及第二设备102在第二设备坐标系下的位姿,计算位姿校准参数,并利用该位姿校准参数执行校准操作。
针对第二设备102执行校准操作的过程,参考图1,首先,确定虚拟对象100的信息,其中,虚拟对象100的信息可以是由第一设备101发送的信息,还可以是其他设备或云端发送的信息,亦或者是第二设备102配置的信息,本公开对此不做限制。接下来,第二设备102可以利用位姿校准参数对虚拟对象100的信息进行校准处理,得到校准后的虚拟对象100,并在第二设备102的显示界面上显示出校准后的虚拟对象100。
由此,该虚拟对象100在第一设备101上与在第二设备102上显示出的位置一致,均如图所示立于一真实平台上。在随后的虚实交互过程中,第一设备101的用户与第二设备102的用户所看到的虚拟对象100在场景中处于同一位置,避免了定位混乱情况的发生,提高了用户体验。
虽然图1以虚拟主持人的形状示意性描绘了虚拟对象100,然而,本领域技术人员容易理解的是,虚拟对象还可以是其他对象,本公开对此也不做限制。
图2示出了适于用来实现本公开示例性实施方式的电子设备的示意图。该电子设备可以体现出本公开示例性实施方式的第一设备和/或第二设备的一种具体配置形式。需要说明的是,图2示出的电子设备仅是一个示例,不应对本公开实施例的功能和使用范围带来任何限制。
本公开的电子设备至少包括处理器和存储器,存储器用于存储一个或多个程序,当一个或多个程序被处理器执行时,使得处理器可以实现本公开示例性实施方式的虚拟对象位姿校准方法。
具体的,如图2所示,电子设备200可以包括:处理器210、内部存储器221、外部存储器接口222、通用串行总线(universalserialbus,usb)接口230、充电管理模块240、电源管理模块241、电池242、天线1、天线2、移动通信模块250、无线通信模块260、音频模块270、扬声器271、受话器272、麦克风273、耳机接口274、传感器模块280、显示屏290、摄像模组291、指示器292、马达293、按键294以及用户标识模块(subscriberidentificationmodule,sim)卡接口295等。其中传感器模块280可以包括深度传感器2801、压力传感器2802、陀螺仪传感器2803、气压传感器2804、磁传感器2805、加速度传感器2806、距离传感器2807、接近光传感器2808、指纹传感器2809、温度传感器2810、触摸传感器2811、环境光传感器2812及骨传导传感器2813等。
可以理解的是,本申请实施例示意的结构并不构成对电子设备200的具体限定。在本申请另一些实施例中,电子设备200可以包括比图示更多或更少的部件,或者组合某些部件,或者拆分某些部件,或者不同的部件布置。图示的部件可以以硬件、软件或软件和硬件的组合实现。
处理器210可以包括一个或多个处理单元,例如:处理器210可以包括应用处理器(applicationprocessor,ap)、调制解调处理器、图形处理器(graphicsprocessingunit,gpu)、图像信号处理器(imagesignalprocessor,isp)、控制器、视频编解码器、数字信号处理器(digitalsignalprocessor,dsp)、基带处理器和/或神经网络处理器(neural-etworkprocessingunit,npu)等。其中,不同的处理单元可以是独立的器件,也可以集成在一个或多个处理器中。另外,处理器210中还可以设置存储器,用于存储指令和数据。
usb接口230是符合usb标准规范的接口,具体可以是miniusb接口,microusb接口,usbtypec接口等。usb接口230可以用于连接充电器为电子设备200充电,也可以用于电子设备200与外围设备之间传输数据。也可以用于连接耳机,通过耳机播放音频。该接口还可以用于连接其他电子设备,例如ar设备等。
充电管理模块240用于从充电器接收充电输入。其中,充电器可以是无线充电器,也可以是有线充电器。电源管理模块241用于连接电池242、充电管理模块240与处理器210。电源管理模块241接收电池242和/或充电管理模块240的输入,为处理器210、内部存储器221、显示屏290、摄像模组291和无线通信模块260等供电。
电子设备200的无线通信功能可以通过天线1、天线2、移动通信模块250、无线通信模块260、调制解调处理器以及基带处理器等实现。
移动通信模块250可以提供应用在电子设备200上的包括2g/3g/4g/5g等无线通信的解决方案。
无线通信模块260可以提供应用在电子设备200上的包括无线局域网(wirelesslocalareanetworks,wlan)(如无线保真(wirelessfidelity,wi-fi)网络)、蓝牙(bluetooth,bt)、全球导航卫星系统(globalnavigationsatellitesystem,gnss)、调频(frequencymodulation,fm)、近距离无线通信技术(nearfieldcommunication,nfc)、红外技术(infrared,ir)等无线通信的解决方案。
电子设备200通过gpu、显示屏290及应用处理器等实现显示功能。gpu为图像处理的微处理器,连接显示屏290和应用处理器。gpu用于执行数学和几何计算,用于图形渲染。处理器210可包括一个或多个gpu,其执行程序指令以生成或改变显示信息。
电子设备200可以通过isp、摄像模组291、视频编解码器、gpu、显示屏290及应用处理器等实现拍摄功能。在一些实施例中,电子设备200可以包括1个或n个摄像模组291,n为大于1的正整数,若电子设备200包括n个摄像头,n个摄像头中有一个是主摄像头。
内部存储器221可以用于存储计算机可执行程序代码,所述可执行程序代码包括指令。内部存储器221可以包括存储程序区和存储数据区。外部存储器接口222可以用于连接外部存储卡,例如microsd卡,实现扩展电子设备200的存储能力。
电子设备200可以通过音频模块270、扬声器271、受话器272、麦克风273、耳机接口274及应用处理器等实现音频功能。例如音乐播放、录音等。
音频模块270用于将数字音频信息转换成模拟音频信号输出,也用于将模拟音频输入转换为数字音频信号。音频模块270还可以用于对音频信号编码和解码。在一些实施例中,音频模块270可以设置于处理器210中,或将音频模块270的部分功能模块设置于处理器210中。
扬声器271,也称“喇叭”,用于将音频电信号转换为声音信号。电子设备200可以通过扬声器271收听音乐,或收听免提通话。受话器272,也称“听筒”,用于将音频电信号转换成声音信号。当电子设备200接听电话或语音信息时,可以通过将受话器272靠近人耳接听语音。麦克风273,也称“话筒”,“传声器”,用于将声音信号转换为电信号。当拨打电话或发送语音信息时,用户可以通过人嘴靠近麦克风273发声,将声音信号输入到麦克风273。电子设备200可以设置至少一个麦克风273。耳机接口274用于连接有线耳机。
针对电子设备200包括的传感器,深度传感器2801用于获取景物的深度信息。压力传感器2802用于感受压力信号,可以将压力信号转换成电信号。陀螺仪传感器2803可以用于确定电子设备200的运动姿态。气压传感器2804用于测量气压。磁传感器2805包括霍尔传感器。电子设备200可以利用磁传感器2805检测翻盖皮套的开合。加速度传感器2806可检测电子设备200在各个方向上(一般为三轴)加速度的大小。距离传感器2807用于测量距离。接近光传感器2808可以包括例如发光二极管(led)和光检测器,例如光电二极管。指纹传感器2809用于采集指纹。温度传感器2810用于检测温度。触摸传感器2811可以将检测到的触摸操作传递给应用处理器,以确定触摸事件类型。可以通过显示屏290提供与触摸操作相关的视觉输出。环境光传感器2812用于感知环境光亮度。骨传导传感器2813可以获取振动信号。
按键294包括开机键,音量键等。按键294可以是机械按键。也可以是触摸式按键。马达293可以产生振动提示。马达293可以用于来电振动提示,也可以用于触摸振动反馈。指示器292可以是指示灯,可以用于指示充电状态,电量变化,也可以用于指示消息,未接来电,通知等。sim卡接口295用于连接sim卡。电子设备200通过sim卡和网络交互,实现通话以及数据通信等功能。
本申请还提供了一种计算机可读存储介质,该计算机可读存储介质可以是上述实施例中描述的电子设备中所包含的;也可以是单独存在,而未装配入该电子设备中。
计算机可读存储介质例如可以是——但不限于——电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子可以包括但不限于:具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机访问存储器(ram)、只读存储器(rom)、可擦式可编程只读存储器(eprom或闪存)、光纤、便携式紧凑磁盘只读存储器(cd-rom)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本公开中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。
计算机可读存储介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。计算机可读存储介质上包含的程序代码可以用任何适当的介质传输,包括但不限于:无线、电线、光缆、rf等等,或者上述的任意合适的组合。
计算机可读存储介质承载有一个或者多个程序,当上述一个或者多个程序被一个该电子设备执行时,使得该电子设备实现如下述实施例中所述的方法。
附图中的流程图和框图,图示了按照本公开各种实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段、或代码的一部分,上述模块、程序段、或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个接连地表示的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图或流程图中的每个方框、以及框图或流程图中的方框的组合,可以用执行规定的功能或操作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
描述于本公开实施例中所涉及到的单元可以通过软件的方式实现,也可以通过硬件的方式来实现,所描述的单元也可以设置在处理器中。其中,这些单元的名称在某种情况下并不构成对该单元本身的限定。
图3示意性示出了本公开的示例性实施方式应用于第一设备的虚拟对象位姿校准方法的流程图。参考图3,该虚拟对象位姿校准方法可以包括以下步骤:
s32.确定第二设备在第一设备坐标系下的位姿,第一设备坐标系由第一设备建立。
在第一设备通过摄像模组采集图像并执行建图过程后,可以确定场景中第二设备在第一设备坐标系下的位姿。
第一设备可以响应用户触发校准过程的操作,开始执行本公开的处理过程。其中,该操作可以例如为,用户在第一设备的界面上点击多人ar的应用程序图标,或者用户在多人ar应用程序中点击预配置的校准按钮。另外,第一设备还可以提供校准设备选择按钮,也就是说,提供一个或多个要进行校准的设备的名称,以便用户进行选择。
如图4所示,第一设备101可以响应用户点击ar应用程序图标的操作,在进入程序的同时,发送校准请求。该校准请求可以以广播的形式对外发送,另外,在用户选择要校准的设备时,可以向该设备定向发送校准请求。
第二设备102响应该校准请求,可以提示用户是否执行ar校准过程,在用户确认后,第二设备102可以向第一设备101发送一确认信息,在这种情况下,第一设备101可以执行本公开所述的虚拟对象位姿校准过程。
针对第一设备执行确定第二设备在第一设备坐标系下位姿的过程:
根据本公开的一些实施例,可以将第一设备移动到与第二设备对应的指定位置,通过确定第一设备在第一设备坐标系下的位姿,来得到第二设备在第一设备坐标系下的位姿。
在一个实施例中,本公开所述的与第二设备对应的指定位置可以是与第二设备所处位置相同的位置,例如,可以记录第二设备在真实场景中的位置,并移开第二设备,在这种情况下,将第一设备移动到该记录的位置处,进而确定出此时第一设备在第一设备坐标系下的位姿。
在另一个实施例中,在场景允许一定误差的情况下,这些误差可能是用户肉眼无法看出的或者对最后显示效果影响较小,本公开所述的与第二设备对应的指定位置可以是与第二设备接近的位置,例如,正对第二设备且与第二设备的距离小于距离阈值的位置。
具体的,可以保持第二设备的位姿不变,也就是说,保持第二设备在场景中的位置状态。在第一设备向第二设备移动的过程中,如果第一设备处于第二设备对应的指定位置,则确定第一设备在第一设备坐标系下的位姿。本领域技术人员容易理解的是,第一设备的用户可以手持或头戴第一设备向第二设备的位置移动。
在第一设备向第二设备移动的过程中,如图5所示,第一设备101的界面上可以呈现预配置的虚拟框50,摄像模组处于开启状态,该界面上实时显示拍摄的场景图像。如果界面上第二设备的图像501占虚拟框50的比例大于比例阈值,则可以确定第一设备处于第二设备对应的指定位置。其中,比例阈值可以预先进行配置,用户也可以根据实际需要的精确程度自行调整,例如,该比例阈值为0.85。
虽然图5以第一设备中虚拟框为例,然而,在另一个实施例中,第二设备可以朝向第一设备拍摄,第二设备界面上可以配置虚拟框,如果第一设备的图像占该虚拟框的比例大于比例阈值,则第二设备可以向第一设备发送位置确定信息,以表征第一设备已到达对应的指定位置。
此外,第一设备的用户也可以自行决定是否到达指定位置。在这种情况下,第一设备的界面上可以配置一位置确定按钮,在用户点击该按钮时,确定当前第一设备在第一设备坐标系下的位姿。
在确定出第一设备在第一设备坐标系下的位姿后,鉴于一些场景中,第一设备与第二设备的朝向可能不一致,也就是说,第一设备与第二设备的朝向存在偏差,如,在实际地理位置下,一个朝南一个朝北。在这种情况下,需要对第一设备在第一设备坐标系下的位姿进行调整,以得到第二设备在第一设备坐标系下的位姿。另外,可以例如利用第一设备的摄像模组采集到的图像确定设备的朝向是否一致。
具体的,在第一设备处于与第二设备对应的指定位置时,如果第一设备与第二设备的朝向不一致,则第一设备调整第一设备在第一设备坐标系下的位姿数据,直至第一设备与第二设备的位姿所对应的朝向一致。将第一设备在第一设备坐标系下的位姿调整后的结果,确定为第二设备在第一设备坐标系下的位姿,记为(r1,t1),分别表示平移量和旋转量。
在上述移动第一设备以确定第二设备在第一设备坐标系下位姿的实施例中,处理过程简单、易实施,得到准确的位姿确定结果。下面将描述不需要移动第一设备也可得到位姿结果的实施例。
根据本公开的另一些实施例,可以在保持第一设备与第二设备的位姿不变的情况下,计算第二设备在第一设备坐标系下的位姿。
具体的,一方面,可以利用第一设备配备的深度传感器检测第一设备与第二设备之间的平移距离,其中,该深度传感器可以例如包括tof(timeofflight,飞行时间)传感器、结构光传感器等。
另一方面,可以确定第二设备相对于第一设备的旋转角度,也就是说,确定第二设备相对于第一设备的旋转量。例如,可以对第一设备摄像模组采集的图像进行分析,得到相对旋转角度。
接下来,可以结合确定出的平移距离和相对旋转角度计算第二设备在第一设备坐标系下的位姿。
在一个实施例中,第一设备和第二设备所处场景可以存在一个参照物,例如,方桌等真实物体,借助于该参照物得到第一设备和第二设备相对于实际场景的位置,在这种情况下,在得到第一设备坐标系的坐标原点和坐标轴方向以及第一设备在第一设备坐标系下的位姿的情况下,利用上述平移距离和相对旋转角度,可以确定出第二设备在第一设备坐标系下的位姿。
在另一个实施例中,第一设备朝向第二设备,例如,第一设备正对第二设备。在这种情况下,在确定出第一设备坐标系的坐标原点和坐标轴方向以及第一设备在第一设备坐标系下的位姿的情况下,利用上述平移距离和相对旋转角度,可以确定出第二设备在第一设备坐标系下的位姿。
s34.接收第二设备在第二设备坐标系下的位姿,第二设备坐标系由第二设备建立。
在步骤s32中,第一设备向第二设备发送校准请求的情况下,第二设备可以响应该校准请求确定出当前第二设备在第二设备坐标系下的位姿,并将该位姿发送给第一设备。本公开示例性实施方式将第二设备在第二设备坐标系下的位姿记为(r0,t0),分别表示平移量和旋转量。
本领域技术人员容易理解的是,上述步骤s32与步骤s34的执行顺序可以互换。
s36.利用第二设备在第一设备坐标系下的位姿以及第二设备在第二设备坐标系下的位姿,计算位姿校准参数。
在本公开的示例性实施方式中,位姿校准参数包括平移量校准参数和旋转量校准参数。
一方面,可以计算第二设备在第二设备坐标系下的平移量r0与第二设备在第一设备坐标系下平移量r1的差值,作为平移量校准参数。在这种情况下,如果将平移量校准参数表示为δr,则δr=r0-r1。
另一方面,旋转量可以是由四元数转换成的矩阵,首先,可以确定第二设备在第二设备坐标系下旋转量t0的转置结果,记为[t0]-1。接下来,计算第二设备在第一设备坐标系下旋转量t1与该转置结果[t0]-1的乘积,作为旋转量校准参数。在这种情况下,如果将旋转量校准参数表示为δt,则δt=t1*[t0]-1。
s38.将位姿校准参数发送至第二设备,以便第二设备利用位姿校准参数对虚拟对象的位姿进行校准。
在步骤s36计算出位姿校准参数后,第一设备可以将该位姿校准参数发送至第二设备,以便第二设备利用该位姿校准参数执行校准操作。
另外,第二设备在接收到位姿校准参数后,可以弹出确定信息,供用户选择是否应用该位姿校准参数。
在第二设备应用该位姿校准参数后,如果确定出虚拟对象,则会对虚拟对象进行处理,并呈现处理后的结果。
具体的,首先,第二设备确定虚拟对象。其中,该虚拟对象可以由第一设备通过放置锚点信息的方式确定出,并发送给第二设备,或者,该虚拟对象可以是其他设备或云端发送的虚拟对象,亦或者虚拟对象由第二设备配置出,本公开对虚拟对象的形状、类型、来源均不做限制。
接下来,第二设备可以利用位姿校准参数对虚拟对象进行校准,得到校准后的虚拟对象。应当理解的是,对虚拟对象的处理是按坐标进行处理,在这种情况下,若虚拟对象表示为(rt,tt),则校准后的虚拟对象表示为(rt-δr,tt*δt)。本领域技术人员容易理解的是,虚拟对象位姿的调整,可以映射为即是地图坐标系调整的过程,也就是第二设备所建立的地图与第一设备所建立的地图统一的过程。
随后,第二设备在界面对应的位置显示出校准后的虚拟对象。
图6示出了上述第二设备执行操作过程的流程图,参考图6,根据本公开的示例性实施方式的应用于第二设备的虚拟对象位姿校准方法可以包括以下步骤:
s62.向第一设备发送第二设备在第二设备坐标系下的位姿,以便第一设备利用第二设备在第二设备坐标系下的位姿以及第二设备在第一设备坐标系下的位姿计算位姿校准参数;其中,第一设备坐标系由第一设备建立,第二设备坐标系由第二设备建立。
s64.接收第一设备计算并发送的位姿校准参数,以便利用位姿校准参数对虚拟对象的位姿进行校准。
步骤s62和步骤s64的过程在上述步骤s32至步骤s38的描述中均已说明,在此不再赘述。
下面参考图7对本公开一个示例性实施方式的虚拟对象位姿校准的交互过程进行说明。
在步骤s702中,第一设备发送校准请求,第二设备响应该校准请求与第一设备建立连接,确定第二设备在第二设备坐标系下的位姿;在步骤s704中,第二设备将第二设备在第二设备坐标系下的位姿发送给第一设备。
在步骤s706中,第一设备确定第二设备在第一设备坐标系下的位姿。
在步骤s708中,第一设备基于第二设备在第二设备坐标系下的位姿以及第二设备在第一设备坐标系下的位姿,计算位姿校准参数,其中,位姿校准参数包括平移量校准参数和旋转量校准参数。
在步骤s710中,第一设备将计算出的位姿校准参数发送给第二设备;在步骤s712中,第一设备可以将虚拟对象发送至第二设备。
在步骤s714中,第二设备可以利用位姿校准参数对虚拟对象进行校准;在步骤s716中,第二设备可以在界面上显示校准后的虚拟对象。
基于上述虚拟对象位姿校准过程,第一设备计算位姿校准参数,第二设备利用该位姿校准参数进行校准,修正了多人ar场景下多个ar设备坐标系不统一的问题,使得多个ar设备上同一虚拟对象能够显示在同一位置,实现了显示效果的一致性,提高了用户虚实交互的体验。
下面将参考图8对本公开另一示例性实施方式的应用于第一设备的虚拟对象位姿校准方法进行说明。参考图8,该虚拟对象位姿校准方法可以包括以下步骤:
s82.确定第二设备在第一设备坐标系下的位姿;
s84.将第二设备在第一设备坐标系下的位姿发送给第二设备,以便第二设备利用第二设备在第一设备坐标系下的位姿以及第二设备在第二设备坐标系下的位姿计算位姿校准参数并对虚拟对象的位姿进行校准;
其中,第一设备坐标系由第一设备建立,第二设备坐标系由第二设备建立。
在步骤s82中,第一设备确定第二设备在第一设备坐标系下位姿的过程与上述步骤s32类似,在此不再赘述。
在步骤s84中,与上述方法不同的是,此处,第一设备直接将确定出的第二设备在第一设备坐标系下的位姿发送给第二设备,由第二设备计算位姿校准参数。
下面将参考图9对本公开另一示例性实施方式的应用于第二设备的虚拟对象位姿校准方法进行说明。参考图9,该虚拟对象位姿校准方法可以包括以下步骤:
s92.接收第二设备在第一设备坐标系下的位姿,第一设备坐标系由第一设备建立。
与上述步骤s82对应的,第二设备接收由第一设备确定出的第二设备在第一设备坐标系下的位姿。
s94.确定第二设备在第二设备坐标系下的位姿,第二设备坐标系由第二设备建立。
第二设备可以响应第一设备发送的校准请求,确定出第二设备在第二设备坐标系下的位姿。
s96.利用第二设备在第一设备坐标系下的位姿以及第二设备在第二设备坐标系下的位姿,计算位姿校准参数。
位姿校准参数包括平移量校准参数和旋转量校准参数。具体的,可以利用上述步骤s36相同的方式由第二设备计算出平移量校准参数δr和旋转量校准参数δt,在此不再赘述。
s98.利用位姿校准参数对虚拟对象的位姿进行校准。
具体的,首先,第二设备确定虚拟对象。其中,该虚拟对象可以由第一设备通过放置锚点信息的方式确定出,并发送给第二设备,或者,该虚拟对象可以是其他设备或云端发送的虚拟对象,亦或者虚拟对象由第二设备配置出,本公开对虚拟对象的形状、类型、来源均不做限制。
接下来,第二设备可以利用位姿校准参数对虚拟对象进行校准,得到校准后的虚拟对象。应当理解的是,对虚拟对象的处理是按坐标进行处理,在这种情况下,若虚拟对象表示为(rt,tt),则校准后的虚拟对象表示为(rt-δr,tt*δt)。
随后,第二设备在界面对应的位置显示出校准后的虚拟对象。
下面参考图10对本公开另一个示例性实施方式的虚拟对象位姿校准的交互过程进行说明。
在步骤s1002中,第一设备发送校准请求,第二设备响应该校准请求与第一设备建立连接。
在步骤s1004中,第一设备确定第二设备在第一设备坐标系下的位姿。在步骤s1006中,第一设备向第二设备发送第二设备在第一设备坐标系下的位姿。
在步骤s1008中,第二设备确定第二设备在第二设备坐标系下的位姿;在步骤s1010中,第二设备基于第二设备在第二设备坐标系下的位姿以及第二设备在第一设备坐标系下的位姿,计算位姿校准参数,其中,位姿校准参数包括平移量校准参数和旋转量校准参数。
在步骤s1012中,第一设备可以将虚拟对象发送至第二设备。
在步骤s1014中,第二设备可以利用位姿校准参数对虚拟对象进行校准;在步骤s1016中,第二设备可以在界面上显示校准后的虚拟对象。
基于上述虚拟对象位姿校准过程,第一设备确定第二设备在第一设备坐标系下的位姿,并发送给第二设备。第二设备基于第二设备在第二设备坐标系下的位姿以及第二设备在第一设备坐标系下的位姿,计算位姿校准参数,并利用该位姿校准参数进行校准。修正了多人ar场景下多个ar设备坐标系不统一的问题,使得多个ar设备上同一虚拟对象能够显示在同一位置,实现了显示效果的一致性,提高了用户虚实交互的体验。
应当注意,尽管在附图中以特定顺序描述了本公开中方法的各个步骤,但是,这并非要求或者暗示必须按照该特定顺序来执行这些步骤,或是必须执行全部所示的步骤才能实现期望的结果。附加的或备选的,可以省略某些步骤,将多个步骤合并为一个步骤执行,以及/或者将一个步骤分解为多个步骤执行等。
进一步的,本示例实施方式中还提供了一种应用于第一设备的虚拟对象位姿校准装置。
图11示意性示出了本公开的示例性实施方式的应用于第一设备的虚拟对象位姿校准装置的方框图。参考图11,根据本公开的示例性实施方式的应用于第一设备的虚拟对象位姿校准装置11可以包括第一位姿确定模块111、第一位姿接收模块113、第一参数计算模块115和参数发送模块117。
具体的,第一位姿确定模块111可以用于确定第二设备在第一设备坐标系下的位姿,第一设备坐标系由第一设备建立;第一位姿接收模块113可以用于接收第二设备在第二设备坐标系下的位姿,第二设备坐标系由第二设备建立;第一参数计算模块115可以用于利用第二设备在第一设备坐标系下的位姿以及第二设备在第二设备坐标系下的位姿,计算位姿校准参数;参数发送模块117可以用于将位姿校准参数发送至第二设备,以便第二设备利用位姿校准参数对虚拟对象的位姿进行校准。
根据本公开的示例性实施例,虚拟对象位姿校准装置11还可以向第二设备发送校准请求。在这种情况下,第二设备响应该校准请求确定出第二设备在第二设备坐标系下的位姿,并将第二设备在第二设备坐标系下的位姿发送给第一设备。
根据本公开的示例性实施例,第一位姿确定模块111可以被配置为执行:在第一设备处于与第二设备对应的指定位置时,确定第一设备在第一设备坐标系下的位姿;基于第一设备在第一设备坐标系下的位姿,确定出第二设备在第一设备坐标系下的位姿。
根据本公开的示例性实施例,第一位姿确定模块111确定第一设备在第一设备坐标系下的位姿的过程可以被配置为执行:保持第二设备的位姿不变,在第一设备向第二设备移动的过程中,如果第一设备处于与第二设备对应的指定位置,则确定第一设备在第一设备坐标系下的位姿。
根据本公开的示例性实施例,在所述第一设备向第二设备移动的过程中,第一位姿确定模块111还可以被配置为执行:在第一设备的界面上呈现虚拟框,该界面上实时显示拍摄的场景图像;如果界面上第二设备的图像占虚拟框的比例大于比例阈值,则第一设备处于与第二设备对应的指定位置。
根据本公开的示例性实施例,第一位姿确定模块111确定出第二设备在第一设备坐标系下的位姿的过程可以被配置为执行:在第一设备处于与第二设备对应的指定位置时,如果第一设备与第二设备的朝向不一致,则调整第一设备在第一设备坐标系下的位姿,直至第一设备与第二设备的位姿所对应的朝向一致;将第一设备在第一设备坐标系下的位姿调整后的结果,确定为第二设备在第一设备坐标系下的位姿。
根据本公开的示例性实施例,第一位姿确定模块111可以被配置为执行:在保持第一设备与第二设备的位姿不变的情况下,计算第二设备在第一设备坐标系下的位姿。
根据本公开的示例性实施例,第一位姿确定模块111可以被配置为执行:利用第一设备的深度传感器检测第一设备与第二设备之间的平移距离;确定第二设备相对于第一设备的旋转角度;结合第一设备与第二设备之间的平移距离以及第二设备相对于第一设备的旋转角度,计算第二设备在第一设备坐标系下的位姿。
根据本公开的示例性实施例,位姿校准参数包括平移量校准参数和旋转量校准参数。在这种情况下,第一参数计算模块115可以被配置为执行:计算第二设备在第二设备坐标系下平移量与第二设备在第一设备坐标系下平移量的差值,作为平移量校准参数;以及确定第二设备在第二设备坐标系下旋转量的转置结果,计算第二设备在第一设备坐标系下旋转量与转置结果的乘积,作为旋转量校准参数。
进一步的,本示例实施方式中还提供了一种应用于第二设备的虚拟对象位姿校准装置。
图12示意性示出了本公开的示例性实施方式的应用于第二设备的虚拟对象位姿校准装置的方框图。参考图12,根据本公开的示例性实施方式的应用于第二设备的虚拟对象位姿校准装置12可以包括第一位姿发送模块121和第一校准模块123。
具体的,第一位姿发送模块121可以用于向第一设备发送第二设备在第二设备坐标系下的位姿,以便第一设备利用第二设备在第二设备坐标系下的位姿以及第二设备在第一设备坐标系下的位姿计算位姿校准参数;其中,第一设备坐标系由第一设备建立,第二设备坐标系由第二设备建立;第一校准模块123可以用于接收第一设备计算并发送的位姿校准参数,以便利用位姿校准参数对虚拟对象的位姿进行校准。
根据本公开的示例性实施例,第一位姿发送模块121可以被配置为执行:响应第一设备发送的校准请求,向第一设备发送第二设备在第二设备坐标系下的位姿。
根据本公开的示例性实施例,第一校准模块123可以被配置为执行:确定虚拟对象;利用位姿校准参数对虚拟对象进行校准,得到校准后的虚拟对象;显示校准后的虚拟对象。
进一步的,本示例实施方式中还提供了另一种应用于第一设备的虚拟对象位姿校准装置。
图13示意性示出了本公开的另一示例性实施方式的应用于第一设备的虚拟对象位姿校准装置的方框图。参考图13,根据本公开的示例性实施方式的应用于第一设备的虚拟对象位姿校准装置13可以包括第二位姿确定模块131和第二位姿发送模块133。
具体的,第二位姿确定模块131可以用于确定第二设备在第一设备坐标系下的位姿;第二位姿发送模块133可以用于将第二设备在第一设备坐标系下的位姿发送给第二设备,以便第二设备利用第二设备在第一设备坐标系下的位姿以及第二设备在第二设备坐标系下的位姿计算位姿校准参数并对虚拟对象的位姿进行校准;其中,第一设备坐标系由第一设备建立,第二设备坐标系由所述第二设备建立。
根据本公开的示例性实施例,虚拟对象位姿校准装置13可以用于向第二设备发送校准请求,以便第二设备响应校准请求与第一设备建立通信连接;其中,在第一设备与第二设备建立通信连接后,执行确定第二设备在第一设备坐标系下的位姿的过程。
根据本公开的示例性实施例,第二位姿确定模块131可以被配置为执行:在第一设备处于与第二设备对应的指定位置时,确定第一设备在第一设备坐标系下的位姿;基于第一设备在第一设备坐标系下的位姿,确定出第二设备在第一设备坐标系下的位姿。
根据本公开的示例性实施例,第二位姿确定模块131确定第一设备在第一设备坐标系下的位姿的过程可以被配置为执行:保持第二设备的位姿不变,在第一设备向第二设备移动的过程中,如果第一设备处于与第二设备对应的指定位置,则确定第一设备在第一设备坐标系下的位姿。
根据本公开的示例性实施例,在第一设备向第二设备移动的过程中,第二位姿确定模块131还可以被配置为执行:在第一设备的界面上呈现虚拟框,该界面上实时显示拍摄的场景图像;如果该界面上第二设备的图像占虚拟框的比例大于比例阈值,则第一设备处于与第二设备对应的指定位置。
根据本公开的示例性实施例,第二位姿确定模块131确定出所述第二设备在所述第一设备坐标系下的位姿的过程可以被配置为执行:在第一设备处于与第二设备对应的指定位置时,如果第一设备与第二设备的朝向不一致,则调整第一设备在第一设备坐标系下的位姿,直至第一设备与第二设备的位姿所对应的朝向一致;将第一设备在第一设备坐标系下的位姿调整后的结果,确定为第二设备在第一设备坐标系下的位姿。
根据本公开的示例性实施例,第二位姿确定模块131可以被配置为执行:在保持第一设备与第二设备的位姿不变的情况下,计算第二设备在第一设备坐标系下的位姿。
根据本公开的示例性实施例,第二位姿确定模块131计算第二设备在第一设备坐标系下的位姿的过程可以被配置为执行:利用第一设备的深度传感器检测第一设备与第二设备之间的平移距离;确定第二设备相对于第一设备的旋转角度;结合第一设备与第二设备之间的平移距离以及第二设备相对于第一设备的旋转角度,计算第二设备在第一设备坐标系下的位姿。
进一步的,本示例实施方式中还提供了另一种应用于第二设备的虚拟对象位姿校准装置。
图14示意性示出了本公开的另一示例性实施方式的应用于第二设备的虚拟对象位姿校准装置的方框图。参考图14,根据本公开的示例性实施方式的应用于第二设备的虚拟对象位姿校准装置14可以包括第二位姿接收模块141、第三位姿确定模块143、第二参数计算模块145和第二校准模块147。
具体的,第二位姿接收模块141可以用于接收第二设备在第一设备坐标系下的位姿,第一设备坐标系由第一设备建立;第三位姿确定模块143可以用于确定第二设备在第二设备坐标系下的位姿,第二设备坐标系由第二设备建立;第二参数计算模块145可以用于利用第二设备在第一设备坐标系下的位姿以及第二设备在第二设备坐标系下的位姿,计算位姿校准参数;第二校准模块147可以用于利用位姿校准参数对虚拟对象的位姿进行校准。
根据本公开的示例性实施例,位姿校准参数包括平移量校准参数和旋转量校准参数,在这种情况下,第二参数计算模块145可以被配置为执行:计算第二设备在第二设备坐标系下平移量与第二设备在第一设备坐标系下平移量的差值,作为平移量校准参数;以及确定第二设备在第二设备坐标系下旋转量的转置结果,计算第二设备在第一设备坐标系下旋转量与转置结果的乘积,作为旋转量校准参数。
根据本公开的示例性实施例,第二校准模块147可以被配置为执行:确定虚拟对象;利用位姿校准参数对虚拟对象进行校准,得到校准后的虚拟对象;显示校准后的虚拟对象。
由于本公开实施方式的虚拟对象位姿校准装置的各个功能模块与上述方法实施方式中相同,因此在此不再赘述。
通过以上的实施方式的描述,本领域的技术人员易于理解,这里描述的示例实施方式可以通过软件实现,也可以通过软件结合必要的硬件的方式来实现。因此,根据本公开实施方式的技术方案可以以软件产品的形式体现出来,该软件产品可以存储在一个非易失性存储介质(可以是cd-rom,u盘,移动硬盘等)中或网络上,包括若干指令以使得一台计算设备(可以是个人计算机、服务器、终端装置、或者网络设备等)执行根据本公开实施方式的方法。
此外,上述附图仅是根据本公开示例性实施例的方法所包括的处理的示意性说明,而不是限制目的。易于理解,上述附图所示的处理并不表明或限制这些处理的时间顺序。另外,也易于理解,这些处理可以是例如在多个模块中同步或异步执行的。
应当注意,尽管在上文详细描述中提及了用于动作执行的设备的若干模块或者单元,但是这种划分并非强制性的。实际上,根据本公开的实施方式,上文描述的两个或更多模块或者单元的特征和功能可以在一个模块或者单元中具体化。反之,上文描述的一个模块或者单元的特征和功能可以进一步划分为由多个模块或者单元来具体化。
本领域技术人员在考虑说明书及实践这里公开的内容后,将容易想到本公开的其他实施例。本申请旨在涵盖本公开的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本公开的一般性原理并包括本公开未公开的本技术领域中的公知常识或惯用技术手段。说明书和实施例仅被视为示例性的,本公开的真正范围和精神由权利要求指出。
应当理解的是,本公开并不局限于上面已经描述并在附图中示出的精确结构,并且可以在不脱离其范围进行各种修改和改变。本公开的范围仅由所附的权利要求来限。