获取位姿的方法及装置与流程

文档序号:26590407发布日期:2021-09-10 20:43阅读:121来源:国知局
获取位姿的方法及装置与流程

1.本技术涉及图像处理领域,尤其涉及获取位姿的方法及装置。


背景技术:

2.目前,在计算机视觉研究领域中,终端设备可以利用相机拍摄的多帧图像估计终端设备的位姿,即终端设备的位置和朝向。例如,终端设备可以采用同时定位与建图(simultaneous localization and mapping,slam)技术通过追踪传感器(如:相机)的位姿构建终端设备的3d轨迹,并建立场景地图。slam技术可以应用于各种场景,比如机器人导航、自动驾驶、增强现实(augmented reality,ar)和虚拟现实(virtual reality,vr)等。通常,终端设备可以利用后置摄像头采集图像,采用slam技术和后置摄像头采集的图像估计终端设备的位姿。但是,若后置摄像头的视场中视觉特征越少,后置摄像头采集到的图像包含的特征越少。由于图像包含的特征较少,导致获取到的终端设备的位姿的准确度降低。因此,如何提高终端设备的位姿的准确度是一个亟待解决的问题。


技术实现要素:

3.本技术提供的获取位姿的方法及装置,解决了如何提高终端设备的位姿的准确度的问题。
4.为达到上述目的,本技术采用如下技术方案:
5.第一方面,本技术提供了一种获取位姿的方法,该方法应用于终端设备。所述终端设备包括第一摄像头和第二摄像头。第一摄像头和第二摄像头的视野不同。所述方法包括:终端设备控制开启第一摄像头,通过第一摄像头拍摄第一图像;若终端设备确定第一图像满足异常条件,开启第二摄像头,通过第二摄像头拍摄第二图像,并根据第二图像获取终端设备的位姿。其中,异常条件用于表示终端设备基于第一图像无法得到终端设备拍摄第一图像时的位姿。其中,第二图像中包含第一图像中没有的内容;或者,第二图像不满足异常条件。
6.本技术实施例中,在终端设备获取该终端设备的位姿过程中检测到异常情况时,可以控制启动其他摄像头,利用其他摄像头获取更多视野的图像,以便提供更多的图像特征信息来获取终端设备的位姿,从而有效地提高终端设备的位姿的准确度。
7.在一种可能的设计中,第一摄像头和第二摄像头可以是不同侧的摄像头。
8.例如,第一摄像头为后置摄像头,第二摄像头为前置摄像头。
9.又如,第一摄像头为后置摄像头,第二摄像头为侧置摄像头。
10.又如,第一摄像头为前置摄像头,第二摄像头为后置摄像头。
11.又如,第一摄像头为前置摄像头,第二摄像头为侧置摄像头。
12.在另一种可能的设计中,第一摄像头和第二摄像头可以是同侧的摄像头。
13.例如,第一摄像头和第二摄像头均为后置摄像头。
14.又如,第一摄像头和第二摄像头均为前置摄像头。
15.在一种可能的实现方式中,在根据所述第二图像获取所述终端设备的位姿之前,方法还包括:通过第一摄像头拍摄第三图像;根据第二图像获取终端设备的位姿,包括:根据第一摄像头拍摄的第三图像和第二图像获取终端设备的位姿。
16.在另一种可能的实现方式中,终端设备还包括第三摄像头。其中,第三摄像头为后置摄像头;或者,第三摄像头为前置摄像头;或者,第三摄像头为侧置摄像头。在根据第二图像获取终端设备的位姿之前,方法还包括:开启第三摄像头,通过第三摄像头拍摄第四图像。根据第二图像获取终端设备的位姿,包括:根据第三摄像头拍摄的第四图像和第二图像获取终端设备的位姿。或者,根据第一摄像头拍摄的第三图像、第三摄像头拍摄的第四图像和第二图像获取终端设备的位姿。
17.在另一种可能的实现方式中,第一图像满足异常条件,包括:第一图像包含的特征的个数小于或等于第一阈值。
18.在另一种可能的实现方式中,第一图像满足异常条件,包括:基于第一图像确定的位姿和基于与第一图像相邻的图像确定的位姿之间的差值大于或等于第二阈值;或者,基于第一图像确定的位姿和基于与第一图像相邻的图像确定的位姿之间的差值的绝对值大于或等于第二阈值;或者,在预设时长内,基于第一图像确定的位姿和基于与第一图像相邻的图像确定的位姿之间的差值大于或等于第二阈值;或者,在预设时长内,基于第一图像确定的位姿和基于与第一图像相邻的图像确定的位姿之间的差值的绝对值大于或等于第二阈值。
19.第二方面,本技术提供了一种获取位姿的装置,所述获取位姿的装置应用于终端设备。终端设备包括第一摄像头和第二摄像头。第一摄像头和第二摄像头的视野不同。获取位姿的装置包括:第一摄像头用于拍摄第一图像;异常检测单元,用于确定第一图像满足异常条件,控制开启第二摄像头;其中,异常条件用于表示终端设备基于第一图像无法得到终端设备拍摄第一图像时的位姿;第二摄像头用于拍摄第二图像;位姿获取单元,用于根据第二图像获取终端设备的位姿。
20.在一种可能的设计中,第一摄像头和第二摄像头可以是不同侧的摄像头。
21.例如,第一摄像头为后置摄像头,第二摄像头为前置摄像头。
22.又如,第一摄像头为后置摄像头,第二摄像头为侧置摄像头。
23.又如,第一摄像头为前置摄像头,第二摄像头为后置摄像头。
24.又如,第一摄像头为前置摄像头,第二摄像头为侧置摄像头。
25.在另一种可能的设计中,第一摄像头和第二摄像头可以是同侧的摄像头。
26.例如,第一摄像头和第二摄像头均为后置摄像头。
27.又如,第一摄像头和第二摄像头均为前置摄像头。
28.在一种可能的实现方式中,第一摄像头还用于拍摄第三图像;位姿获取单元具体用于:根据第一摄像头拍摄的第三图像和第二图像获取终端设备的位姿。
29.在另一种可能的实现方式中,终端设备还包括第三摄像头。其中,第三摄像头为后置摄像头;或者,第三摄像头为前置摄像头;或者,第三摄像头为侧置摄像头。异常检测单元,还用于开启第三摄像头,第三摄像头用于拍摄第四图像。位姿获取单元具体用于根据第三摄像头拍摄的第四图像和第二图像获取终端设备的位姿;或者,位姿获取单元具体用于根据第一摄像头拍摄的第三图像、第三摄像头拍摄的第四图像和第二图像获取终端设备的
位姿。
30.在一种可能的实现方式中,第一图像满足异常条件,包括:第一图像包含的特征的个数小于或等于第一阈值。
31.在另一种可能的实现方式中,第一图像满足异常条件,包括:基于第一图像确定的位姿和基于与第一图像相邻的图像确定的位姿之间的差值大于或等于第二阈值;或者,基于第一图像确定的位姿和基于与第一图像相邻的图像确定的位姿之间的差值的绝对值大于或等于第二阈值;或者,在预设时长内,基于第一图像确定的位姿和基于与第一图像相邻的图像确定的位姿之间的差值大于或等于第二阈值;或者,在预设时长内,基于第一图像确定的位姿和基于与第一图像相邻的图像确定的位姿之间的差值的绝对值大于或等于第二阈值。
32.第三方面,本技术提供了一种终端设备,包括:处理器和存储器,以及至少两个摄像头,其中,至少两个摄像头用于拍摄图像,存储器用于存储计算机程序和指令,处理器用于调用计算机程序和指令,与至少两个摄像头协助执行如上述第一方面提供的获取位姿的方法。
附图说明
33.图1为本技术提供的一种终端设备的组成示例图;
34.图2为本技术提供的一种终端设备的软件结构示例图;
35.图3为本技术提供的一种获取位姿的方法流程图;
36.图4为本技术提供的一种摄像头的位置示意图;
37.图5为本技术提供的一种摄像头的位置示意图;
38.图6为本技术提供的一种摄像头的位置示意图;
39.图7为本技术提供的一种获取位姿的方法流程图;
40.图8为本技术提供的一种摄像头的位置示意图;
41.图9为本技术提供的一种摄像头的位置示意图;
42.图10为本技术提供的一种摄像头的位置示意图;
43.图11为本技术提供的一种获取位姿的方法流程图;
44.图12为本技术提供的一种获取位姿的方法流程图;
45.图13为本技术提供的一种获取位姿的方法流程图;
46.图14为本技术提供的一种获取位姿的装置的组成示意图;
47.图15为本技术提供的一种获取位姿的装置的组成示意图。
具体实施方式
48.本技术说明书和权利要求书及上述附图中的术语“第一”、“第二”和“第三”等是用于区别不同对象,而不是用于限定特定顺序。
49.在本技术实施例中,“示例性的”或者“例如”等词用于表示作例子、例证或说明。本技术实施例中被描述为“示例性的”或者“例如”的任何实施例或设计方案不应被解释为比其它实施例或设计方案更优选或更具优势。确切而言,使用“示例性的”或者“例如”等词旨在以具体方式呈现相关概念。
50.为了下述各实施例的描述清楚简洁,首先给出相关技术的简要介绍:
51.近年来,终端设备的功能越来越丰富,给用户带来了更好的使用体验。例如,终端设备可以实现vr功能,使用户处于虚拟世界中,体验虚拟世界。又如,终端设备可以实现ar功能,将虚拟物体与现实场景结合,并实现用户与虚拟物体互动。
52.其中,终端设备可以是智能手机、平板电脑、可穿戴设备、ar/vr设备等。本技术对终端设备的具体形态不予限定。可穿戴设备也可以称为穿戴式智能设备,是应用穿戴式技术对日常穿戴进行智能化设计、开发出可以穿戴的设备的总称,如眼镜、手套、手表、服饰及鞋等。可穿戴设备即直接穿在身上,或是整合到用户的衣服或配件的一种便携式设备。可穿戴设备不仅仅是一种硬件设备,更是通过软件支持以及数据交互、云端交互来实现强大的功能。广义穿戴式智能设备包括功能全、尺寸大、可不依赖智能手机实现完整或者部分的功能,例如:智能手表或智能眼镜等,以及只专注于某一类应用功能,需要和其它设备如智能手机配合使用,如各类进行体征监测的智能手环、智能首饰等。
53.在本技术中,终端设备的结构可以如图1所示。如图1所示,终端设备100可以包括处理器110,外部存储器接口120,内部存储器121,通用串行总线(universal serial bus,usb)接口130,充电管理模块140,电源管理模块141,电池142,天线1,天线2,移动通信模块150,无线通信模块160,音频模块170,扬声器170a,受话器170b,麦克风170c,耳机接口170d,传感器模块180,按键190,马达191,指示器192,摄像头193,显示屏194,以及用户标识模块(subscriber identification module,sim)卡接口195等。其中传感器模块180可以包括压力传感器180a,陀螺仪传感器180b,气压传感器180c,磁传感器180d,加速度传感器180e,距离传感器180f,接近光传感器180g,指纹传感器180h,温度传感器180j,触摸传感器180k,环境光传感器180l,骨传导传感器180m等。
54.可以理解的是,本实施例示意的结构并不构成对终端设备100的具体限定。在另一些实施例中,终端设备100可以包括比图示更多或更少的部件,或者组合某些部件,或者拆分某些部件,或者不同的部件布置。图示的部件可以以硬件,软件或软件和硬件的组合实现。
55.处理器110可以包括一个或多个处理单元,例如:处理器110可以包括应用处理器(application processor,ap),调制解调处理器,图形处理器(graphics processing unit,gpu),图像信号处理器(image signal processor,isp),控制器,视频编解码器,数字信号处理器(digital signal processor,dsp),基带处理器,和/或神经网络处理器(neural-network processing unit,npu)等。其中,不同的处理单元可以是独立的器件,也可以集成在一个或多个处理器中。例如,在本技术中,处理器110可以确定第一图像满足异常条件的情况下,控制开启其他摄像头。
56.其中,控制器可以是终端设备100的神经中枢和指挥中心。控制器可以根据指令操作码和时序信号,产生操作控制信号,完成取指令和执行指令的控制。
57.处理器110中还可以设置存储器,用于存储指令和数据。在一些实施例中,处理器110中的存储器为高速缓冲存储器。该存储器可以保存处理器110刚用过或循环使用的指令或数据。如果处理器110需要再次使用该指令或数据,可从所述存储器中直接调用。避免了重复存取,减少了处理器110的等待时间,因而提高了系统的效率。
58.在一些实施例中,处理器110可以包括一个或多个接口。接口可以包括集成电路
(inter-integrated circuit,i2c)接口,集成电路内置音频(inter-integrated circuit sound,i2s)接口,脉冲编码调制(pulse code modulation,pcm)接口,通用异步收发传输器(universal asynchronous receiver/transmitter,uart)接口,移动产业处理器接口(mobile industry processor interface,mipi),通用输入输出(general-purpose input/output,gpio)接口,用户标识模块(subscriber identity module,sim)接口,和/或通用串行总线(universal serial bus,usb)接口等。
59.mipi接口可以被用于连接处理器110与显示屏194,摄像头193等外围器件。mipi接口包括摄像头串行接口(camera serial interface,csi),显示屏串行接口(display serial interface,dsi)等。在一些实施例中,处理器110和摄像头193通过csi接口通信,实现终端设备100的拍摄功能。处理器110和显示屏194通过dsi接口通信,实现终端设备100的显示功能。
60.gpio接口可以通过软件配置。gpio接口可以被配置为控制信号,也可被配置为数据信号。在一些实施例中,gpio接口可以用于连接处理器110与摄像头193,显示屏194,无线通信模块160,音频模块170,传感器模块180等。gpio接口还可以被配置为i2c接口,i2s接口,uart接口,mipi接口等。
61.usb接口130是符合usb标准规范的接口,具体可以是mini usb接口,micro usb接口,usb type c接口等。usb接口130可以用于连接充电器为终端设备100充电,也可以用于终端设备100与外围设备之间传输数据。也可以用于连接耳机,通过耳机播放音频。该接口还可以用于连接其他终端设备,例如ar设备等。
62.可以理解的是,本实施例示意的各模块间的接口连接关系,只是示意性说明,并不构成对终端设备100的结构限定。在本技术另一些实施例中,终端设备100也可以采用上述实施例中不同的接口连接方式,或多种接口连接方式的组合。
63.电源管理模块141用于连接电池142,充电管理模块140与处理器110。电源管理模块141接收电池142和/或充电管理模块140的输入,为处理器110,内部存储器121,显示屏194,摄像头193,和无线通信模块160等供电。电源管理模块141还可以用于监测电池容量,电池循环次数,电池健康状态(漏电,阻抗)等参数。在其他一些实施例中,电源管理模块141也可以设置于处理器110中。在另一些实施例中,电源管理模块141和充电管理模块140也可以设置于同一个器件中。
64.终端设备100的无线通信功能可以通过天线1,天线2,移动通信模块150,无线通信模块160,调制解调处理器以及基带处理器等实现。
65.终端设备100通过gpu,显示屏194,以及应用处理器等实现显示功能。gpu为图像处理的微处理器,连接显示屏194和应用处理器。gpu用于执行数学和几何计算,用于图形渲染。处理器110可包括一个或多个gpu,其执行程序指令以生成或改变显示信息。
66.显示屏194用于显示图像,视频等。显示屏194包括显示面板。显示面板可以采用液晶显示屏(liquid crystal display,lcd),有机发光二极管(organic light-emitting diode,oled),有源矩阵有机发光二极体或主动矩阵有机发光二极体(active-matrix organic light emitting diode的,amoled),柔性发光二极管(flex light-emitting diode,fled),miniled,microled,micro-oled,量子点发光二极管(quantum dot light emitting diodes,qled)等。在一些实施例中,终端设备100可以包括1个或n个显示屏194,n
为大于1的正整数。
67.终端设备100的显示屏194上可以显示一系列图形用户界面(graphical user interface,gui),这些gui都是该终端设备100的主屏幕。一般来说,终端设备100的显示屏194的尺寸是固定的,只能在该终端设备100的显示屏194中显示有限的控件。控件是一种gui元素,它是一种软件组件,包含在应用程序中,控制着该应用程序处理的所有数据以及关于这些数据的交互操作,用户可以通过直接操作(direct manipulation)来与控件交互,从而对应用程序的有关信息进行读取或者编辑。一般而言,控件可以包括图标、按钮、菜单、选项卡、文本框、对话框、状态栏、导航栏、widget等可视的界面元素。
68.终端设备100可以通过isp,摄像头193,视频编解码器,gpu,显示屏194以及应用处理器等实现拍摄功能。
69.isp用于处理摄像头193反馈的数据。例如,拍照时,打开快门,光线通过镜头被传递到摄像头感光元件上,光信号转换为电信号,摄像头感光元件将所述电信号传递给isp处理,转化为肉眼可见的图像。isp还可以对图像的噪点,亮度,肤色进行算法优化。isp还可以对拍摄场景的曝光,色温等参数优化。在一些实施例中,isp可以设置在摄像头193中。
70.摄像头193用于捕获静态图像或视频。物体通过镜头生成光学图像投射到感光元件。感光元件可以是电荷耦合器件(charge coupled device,ccd)或互补金属氧化物半导体(complementary metal-oxide-semiconductor,cmos)光电晶体管。感光元件把光信号转换成电信号,之后将电信号传递给isp转换成数字图像信号。isp将数字图像信号输出到dsp加工处理。dsp将数字图像信号转换成标准的rgb,yuv等格式的图像信号。在一些实施例中,终端设备100可以包括1个或n个摄像头193,n为大于1的正整数。
71.数字信号处理器用于处理数字信号,除了可以处理数字图像信号,还可以处理其他数字信号。例如,当终端设备100在频点选择时,数字信号处理器用于对频点能量进行傅里叶变换等。
72.视频编解码器用于对数字视频压缩或解压缩。终端设备100可以支持一种或多种视频编解码器。这样,终端设备100可以播放或录制多种编码格式的视频,例如:动态图像专家组(moving picture experts group,mpeg)1,mpeg2,mpeg3,mpeg4等。
73.npu为神经网络(neural-network,nn)计算处理器,通过借鉴生物神经网络结构,例如借鉴人脑神经元之间传递模式,对输入信息快速处理,还可以不断的自学习。通过npu可以实现终端设备100的智能认知等应用,例如:图像识别,人脸识别,语音识别,文本理解等。
74.外部存储器接口120可以用于连接外部存储卡,例如micro sd卡,实现扩展终端设备100的存储能力。外部存储卡通过外部存储器接口120与处理器110通信,实现数据存储功能。例如将音乐,视频等文件保存在外部存储卡中。
75.内部存储器121可以用于存储计算机可执行程序代码,所述可执行程序代码包括指令。处理器110通过运行存储在内部存储器121的指令,从而执行终端设备100的各种功能应用以及数据处理。例如,在本实施例中,处理器110可以通过执行存储在内部存储器121中的指令,获取终端设备100的位姿。内部存储器121可以包括存储程序区和存储数据区。其中,存储程序区可存储操作系统,至少一个功能所需的应用程序(比如声音播放功能,图像播放功能等)等。存储数据区可存储终端设备100使用过程中所创建的数据(比如音频数据,
电话本等)等。此外,内部存储器121可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件,闪存器件,通用闪存存储器(universal flash storage,ufs)等。处理器110通过运行存储在内部存储器121的指令,和/或存储在设置于处理器中的存储器的指令,执行终端设备100的各种功能应用以及数据处理。
76.终端设备100可以通过音频模块170,扬声器170a,受话器170b,麦克风170c,耳机接口170d,以及应用处理器等实现音频功能。例如音乐播放,录音等。
77.音频模块170用于将数字音频信息转换成模拟音频信号输出,也用于将模拟音频输入转换为数字音频信号。音频模块170还可以用于对音频信号编码和解码。在一些实施例中,音频模块170可以设置于处理器110中,或将音频模块170的部分功能模块设置于处理器110中。
78.扬声器170a,也称“喇叭”,用于将音频电信号转换为声音信号。终端设备100可以通过扬声器170a收听音乐,或收听免提通话。
79.受话器170b,也称“听筒”,用于将音频电信号转换成声音信号。当终端设备100接听电话或语音信息时,可以通过将受话器170b靠近人耳接听语音。
80.麦克风170c,也称“话筒”,“传声器”,用于将声音信号转换为电信号。当拨打电话或发送语音信息时,用户可以通过人嘴靠近麦克风170c发声,将声音信号输入到麦克风170c。终端设备100可以设置至少一个麦克风170c。在另一些实施例中,终端设备100可以设置两个麦克风170c,除了采集声音信号,还可以实现降噪功能。在另一些实施例中,终端设备100还可以设置三个,四个或更多麦克风170c,实现采集声音信号,降噪,还可以识别声音来源,实现定向录音功能等。
81.耳机接口170d用于连接有线耳机。耳机接口170d可以是usb接口130,也可以是3.5mm的开放移动电子设备平台(open mobile terminal platform,omtp)标准接口,美国蜂窝电信工业协会(cellular telecommunications industry association of the usa,ctia)标准接口。
82.压力传感器180a用于感受压力信号,可以将压力信号转换成电信号。在一些实施例中,压力传感器180a可以设置于显示屏194。压力传感器180a的种类很多,如电阻式压力传感器,电感式压力传感器,电容式压力传感器等。电容式压力传感器可以是包括至少两个具有导电材料的平行板。当有力作用于压力传感器180a,电极之间的电容改变。终端设备100根据电容的变化确定压力的强度。当有触摸操作作用于显示屏194,终端设备100根据压力传感器180a检测所述触摸操作强度。终端设备100也可以根据压力传感器180a的检测信号计算触摸的位置。在一些实施例中,作用于相同触摸位置,但不同触摸操作强度的触摸操作,可以对应不同的操作指令。例如:当有触摸操作强度小于第一压力阈值的触摸操作作用于短消息应用图标时,执行查看短消息的指令。当有触摸操作强度大于或等于第一压力阈值的触摸操作作用于短消息应用图标时,执行新建短消息的指令。
83.陀螺仪传感器180b可以用于确定终端设备100的运动姿态。在一些实施例中,可以通过陀螺仪传感器180b确定终端设备100围绕三个轴(即,x,y和z轴)的角速度。陀螺仪传感器180b可以用于拍摄防抖。示例性的,当按下快门,陀螺仪传感器180b检测终端设备100抖动的角度,根据角度计算出镜头模组需要补偿的距离,让镜头通过反向运动抵消终端设备100的抖动,实现防抖。陀螺仪传感器180b还可以用于导航,体感游戏场景。
84.气压传感器180c用于测量气压。在一些实施例中,终端设备100通过气压传感器180c测得的气压值计算海拔高度,辅助定位和导航。
85.磁传感器180d包括霍尔传感器。终端设备100可以利用磁传感器180d检测翻盖皮套的开合。在一些实施例中,当终端设备100是翻盖机时,终端设备100可以根据磁传感器180d检测翻盖的开合。进而根据检测到的皮套的开合状态或翻盖的开合状态,设置翻盖自动解锁等特性。
86.加速度传感器180e可检测终端设备100在各个方向上(一般为三轴)加速度的大小。当终端设备100静止时可检测出重力的大小及方向。还可以用于识别终端设备姿态,应用于横竖屏切换,计步器等应用。
87.距离传感器180f,用于测量距离。终端设备100可以通过红外或激光测量距离。在一些实施例中,拍摄场景,终端设备100可以利用距离传感器180f测距以实现快速对焦。
88.接近光传感器180g可以包括例如发光二极管(led)和光检测器,例如光电二极管。发光二极管可以是红外发光二极管。终端设备100通过发光二极管向外发射红外光。终端设备100使用光电二极管检测来自附近物体的红外反射光。当检测到充分的反射光时,可以确定终端设备100附近有物体。当检测到不充分的反射光时,终端设备100可以确定终端设备100附近没有物体。终端设备100可以利用接近光传感器180g检测用户手持终端设备100贴近耳朵通话,以便自动熄灭屏幕达到省电的目的。接近光传感器180g也可用于皮套模式,口袋模式自动解锁与锁屏。
89.环境光传感器180l用于感知环境光亮度。终端设备100可以根据感知的环境光亮度自适应调节显示屏194亮度。环境光传感器180l也可用于拍照时自动调节白平衡。环境光传感器180l还可以与接近光传感器180g配合,检测终端设备100是否在口袋里,以防误触。
90.指纹传感器180h用于采集指纹。终端设备100可以利用采集的指纹特性实现指纹解锁,访问应用锁,指纹拍照,指纹接听来电等。
91.温度传感器180j用于检测温度。在一些实施例中,终端设备100利用温度传感器180j检测的温度,执行温度处理策略。例如,当温度传感器180j上报的温度超过阈值,终端设备100执行降低位于温度传感器180j附近的处理器的性能,以便降低功耗实施热保护。在另一些实施例中,当温度低于另一阈值时,终端设备100对电池142加热,以避免低温导致终端设备100异常关机。在其他一些实施例中,当温度低于又一阈值时,终端设备100对电池142的输出电压执行升压,以避免低温导致的异常关机。
92.触摸传感器180k,也称“触控器件”。触摸传感器180k可以设置于显示屏194,由触摸传感器180k与显示屏194组成触摸屏,也称“触控屏”。触摸传感器180k用于检测作用于其上或附近的触摸操作。触摸传感器可以将检测到的触摸操作传递给应用处理器,以确定触摸事件类型。可以通过显示屏194提供与触摸操作相关的视觉输出。在另一些实施例中,触摸传感器180k也可以设置于终端设备100的表面,与显示屏194所处的位置不同。
93.骨传导传感器180m可以获取振动信号。在一些实施例中,骨传导传感器180m可以获取人体声部振动骨块的振动信号。骨传导传感器180m也可以接触人体脉搏,接收血压跳动信号。在一些实施例中,骨传导传感器180m也可以设置于耳机中,结合成骨传导耳机。音频模块170可以基于所述骨传导传感器180m获取的声部振动骨块的振动信号,解析出语音信号,实现语音功能。应用处理器可以基于所述骨传导传感器180m获取的血压跳动信号解
析心率信息,实现心率检测功能。
94.按键190包括开机键,音量键等。按键190可以是机械按键。也可以是触摸式按键。终端设备100可以接收按键输入,产生与终端设备100的用户设置以及功能控制有关的键信号输入。
95.马达191可以产生振动提示。马达191可以用于来电振动提示,也可以用于触摸振动反馈。例如,作用于不同应用(例如拍照,音频播放等)的触摸操作,可以对应不同的振动反馈效果。作用于显示屏194不同区域的触摸操作,马达191也可对应不同的振动反馈效果。不同的应用场景(例如:时间提醒,接收信息,闹钟,游戏等)也可以对应不同的振动反馈效果。触摸振动反馈效果还可以支持自定义。
96.指示器192可以是指示灯,可以用于指示充电状态,电量变化,也可以用于指示消息,未接来电,通知等。
97.另外,在上述部件之上,运行有操作系统。例如苹果公司所开发的ios操作系统,谷歌公司所开发的android开源操作系统,微软公司所开发的windows操作系统等。在该操作系统上可以安装运行应用程序。
98.终端设备100的操作系统可以采用分层架构,事件驱动架构,微核架构,微服务架构,或云架构。本技术实施例以分层架构的android系统为例,示例性说明终端设备100的软件结构。
99.图2是本技术实施例的终端设备100的软件结构框图。
100.分层架构将软件分成若干个层,每一层都有清晰的角色和分工。层与层之间通过软件接口通信。在一些实施例中,将android系统分为四层,从上至下分别为应用程序层,应用程序框架层,安卓运行时(android runtime)和系统库,以及内核层。
101.应用程序层可以包括一系列应用程序包。如图2所示,应用程序包可以包括相机,图库,日历,通话,地图,导航,wlan,蓝牙,音乐,视频,短信息等应用程序。例如,在拍照时,相机应用可以访问应用程序框架层提供的相机接口管理服务。
102.应用程序框架层为应用程序层的应用程序提供应用编程接口(application programming interface,api)和编程框架。应用程序框架层包括一些预先定义的函数。如图2所示,应用程序框架层可以包括窗口管理器,内容提供器,视图系统,电话管理器,资源管理器,通知管理器等。例如,在本技术实施例中,在拍照时,应用程序框架层可以为应用程序层提供拍照功能相关的api,并为应用程序层提供相机接口管理服务,以实现拍照功能。
103.窗口管理器用于管理窗口程序。窗口管理器可以获取显示屏大小,判断是否有状态栏,锁定屏幕,截取屏幕等。
104.内容提供器用来存放和获取数据,并使这些数据可以被应用程序访问。所述数据可以包括视频,图像,音频,拨打和接听的电话,浏览历史和书签,电话簿等。
105.视图系统包括可视控件,例如显示文字的控件,显示图片的控件等。视图系统可用于构建应用程序。显示界面可以由一个或多个视图组成的。例如,包括短信通知图标的显示界面,可以包括显示文字的视图以及显示图片的视图。
106.电话管理器用于提供终端设备100的通信功能。例如通话状态的管理(包括接通,挂断等)。
107.资源管理器为应用程序提供各种资源,比如本地化字符串,图标,图片,布局文件,
视频文件等等。
108.通知管理器使应用程序可以在状态栏中显示通知信息,可以用于传达告知类型的消息,可以短暂停留后自动消失,无需用户交互。比如通知管理器被用于告知下载完成,消息提醒等。通知管理器还可以是以图表或者滚动条文本形式出现在系统顶部状态栏的通知,例如后台运行的应用程序的通知,还可以是以对话窗口形式出现在屏幕上的通知。例如在状态栏提示文本信息,发出提示音,终端设备振动,指示灯闪烁等。
109.android runtime包括核心库和虚拟机。android runtime负责安卓系统的调度和管理。
110.核心库包含两部分:一部分是java语言需要调用的功能函数,另一部分是安卓的核心库。
111.应用程序层和应用程序框架层运行在虚拟机中。虚拟机将应用程序层和应用程序框架层的java文件执行为二进制文件。虚拟机用于执行对象生命周期的管理,堆栈管理,线程管理,安全和异常的管理,以及垃圾回收等功能。
112.系统库可以包括多个功能模块。例如:表面管理器(surface manager),媒体库(media libraries),三维图形处理库(例如:opengl es),2d图形引擎(例如:sgl)等。
113.表面管理器用于对显示子系统进行管理,并且为多个应用程序提供了2d和3d图层的融合。
114.媒体库支持多种常用的音频,视频格式回放和录制,以及静态图像文件等。媒体库可以支持多种音视频编码格式,例如:mpeg4,h.264,mp3,aac,amr,jpg,png等。
115.三维图形处理库用于实现三维图形绘图,图像渲染,合成,和图层处理等。
116.2d图形引擎是2d绘图的绘图引擎。
117.内核层是硬件和软件之间的层。内核层至少包含显示驱动,摄像头驱动,音频驱动,传感器驱动。
118.需要说明的是,本技术实施例虽然以android系统为例进行说明,但是其基本原理同样适用于基于ios或windows等操作系统的终端设备。
119.下面结合图1和ar场景,示例性说明终端设备100软件以及硬件的工作流程。
120.触摸传感器180k接收到触摸操作,上报给处理器110,使得处理器响应于上述触摸操作,启动该ar应用,并在显示屏194上显示该ar应用的用户界面。例如,触摸传感器180k当接收到对ar图标的触摸操作后,向处理器110上报对ar图标的触摸操作,使得处理器110响应于上述触摸操作,启动ar图标对应的ar应用,并在显示屏194上显示ar的用户界面。此外,本技术实施例中还可以通过其它方式使得终端启动ar,并在显示屏194上显示ar的用户界面。例如,终端当黑屏、显示锁屏界面或者解锁后显示某一用户界面时,可以响应于用户的语音指令或者快捷操作等,启动ar,并在显示屏194上显示ar的用户界面。
121.在终端设备运动过程中,终端设备为了显示不同视角渲染出的虚拟物体影像,要实时获取终端设备的位置和姿态(简称:位姿)。目前,终端设备可以采用slam技术实时获取终端设备的位姿,因此,slam技术可以被称为终端设备的定为引擎。ar应用启动后,终端设备调用slam程序,同时启动相机应用,通过相机采集图像,利用slam技术和相机采集的图像获取终端设备的位置和姿态。
122.若相机采集的图像包含的特征较少(弱纹理)或采集的图像包含的特征长时间无
效,利用该图像获取的终端设备的位姿可能不准确,生成的虚拟物体可能出现漂移现象。
123.为了解决如何提高终端设备的位姿的准确度问题,本技术提供了一种获取位姿的方法,该方法应用于终端设备。所述终端设备包括第一摄像头和第二摄像头,第一摄像头和第二摄像头的视野不同。所述方法包括:终端设备控制开启第一摄像头,通过第一摄像头拍摄第一图像;若终端设备确定第一图像满足异常条件,开启第二摄像头,通过第二摄像头拍摄第二图像,并根据第二图像获取终端设备的位姿。其中,异常条件用于表示终端设备基于第一图像无法得到终端设备拍摄第一图像时的位姿。本技术实施例中,在终端设备获取该终端设备的位姿过程中检测到异常情况时,可以控制启动其他摄像头,利用其他摄像头获取更多视野的图像,以便提供更多的图像特征信息获取终端设备的位姿,从而有效地提高终端设备的位姿的准确度。
124.下面将结合附图对本技术实施例的实施方式进行详细描述。
125.图3为本技术实施例提供的一种获取位姿的方法流程图。该终端设备可以包括第一摄像头和第二摄像头。第一摄像头和第二摄像头的视野不同。如图3所示,该方法可以包括:
126.s301、终端设备通过第一摄像头拍摄第一图像。
127.在终端设备获取该终端设备的位姿前,终端设备控制开启第一摄像头,通过第一摄像头拍摄第一图像。可选的,第一摄像头可以是终端设备的后置摄像头或前置摄像头。
128.在一些实施例中,用户开启终端设备的ar应用或vr应用后,终端设备可以调用相机应用,开启第一摄像头,通过第一摄像头拍摄终端设备所处方位的图像,以便终端设备根据该第一摄像头拍摄的图像获取终端设备的位姿。可选的,第一摄像头拍摄的图像包括连续的k帧图像,k为大于或等于2的整数。
129.若获取终端设备的位姿的过程中出现异常情况,可以启动终端设备的其他摄像头,获取其他图像,利用其它图像获取终端设备的位姿。所述方法还可以包括s302~s304。
130.s302、终端设备确定第一图像满足异常条件,开启第二摄像头。
131.异常条件用于表示终端设备基于第一图像无法得到终端设备拍摄第一图像时的位姿。所谓终端设备拍摄第一图像时的位姿是指终端设备实际所处空间的位置和朝向。但是,终端设备不知道自己的实际位姿,可以通过摄像头拍摄的图像计算终端设备的位姿。
132.若终端设备基于第一图像计算得到的位姿与终端设备拍摄第一图像时的位姿之间的误差越小,即终端设备基于第一图像计算得到的位姿越接近终端设备拍摄第一图像时的位姿,表示终端设备基于第一图像计算得到的位姿越准确。
133.若终端设备基于第一图像计算得到的位姿与终端设备拍摄第一图像时的位姿之间的误差越大,表示终端设备基于第一图像计算得到的位姿越不准确,可能导致终端设备基于第一图像确定的位姿无法指示终端设备拍摄第一图像时的位姿。
134.在一种可能的实现方式中,若终端设备拍摄的第一图像包含的特征较少,可能导致根据第一图像计算得到的位姿不准确,无法得到终端设备拍摄第一图像时的实际位姿。异常条件可以为第一图像包含的特征的个数满足第一阈值。若第一图像包含的特征的个数满足第一阈值,终端设备可以确定第一图像满足异常条件。第一阈值可以是一个取值范围或是一个数值,本技术不予限定。
135.例如,异常条件可以为第一图像包含的特征的个数小于或等于第一阈值,表示第
一图像包含的特征较少,第一图像呈现了弱纹理现象。若第一阈值的取值为20,异常条件可以为第一图像包含的特征的个数小于或等于20。在本技术实施例中,若第一图像包含的特征的个数小于或等于第一阈值,表示终端设备获取终端设备的位姿时,第一图像可能无法提供足够的信息,终端设备可以确定第一图像出现异常。
136.在另一种可能的实现方式中,若终端设备确定根据第一图像计算的终端设备的位姿满足异常条件,表示根据第一图像计算得到的位姿不准确,无法得到终端设备拍摄第一图像时的位姿。在一些实施例中,异常条件可以为位姿的数值满足第二阈值。第二阈值可以是一个取值范围或是一个数值,本技术不予限定。位姿的数值可以是指依据相邻图像获取得到的位姿之间的差值;或者,位姿的数值可以是指依据相邻图像获取得到的位姿之间的差值的绝对值。可理解的,依据相邻图像获取得到的位姿之间的差值可以是指位姿的变化值。可选的,位姿的变化值可以是指依据相邻图像获取的位置的差值的绝对值。或者,位姿的变化值可以是指依据相邻图像获取的姿态的差值的绝对值。异常条件可以为依据相邻图像获取得到的位姿之间的差值满足第二阈值。或者,异常条件可以为依据相邻图像获取得到的位姿之间的差值的绝对值满足第二阈值。若终端设备的位姿的数值满足第二阈值,表示位姿的数值异常。
137.例如,异常条件可以为基于第一图像确定的位姿和基于与第一图像相邻的图像确定的位姿之间的差值大于或等于第二阈值;或者,异常条件可以为基于第一图像确定的位姿和基于与第一图像相邻的图像确定的位姿之间的差值的绝对值大于或等于第二阈值。
138.例如,终端设备基于第一图像确定的位姿和基于与第一图像相邻的图像确定的位姿之间的差值大于或等于大于2米,或者,终端设备基于第一图像确定的位姿和基于与第一图像相邻的图像确定的位姿之间的差值的绝对值大于或等于大于2米,表示终端设备的位姿的数值异常。
139.在另一些实施例中,若在预设时长内,终端设备的位姿的数值异常,表示终端设备的位姿可能不准确,终端设备可以确定终端设备的位姿出现异常。异常条件可以为在预设时长内,基于第一图像确定的位姿和基于与第一图像相邻的图像确定的位姿之间的差值大于或等于第二阈值,或者,基于第一图像确定的位姿和基于与第一图像相邻的图像确定的位姿之间的差值的绝对值大于或等于第二阈值。可选的,预设时长的取值可以是1秒。
140.在终端设备确定第一图像满足异常条件,控制开启第二摄像头。
141.在第一种可能的设计中,第一摄像头和第二摄像头位于终端设备的不同侧。
142.例如,如图4所示,为本技术实施例提供的一种摄像头的位置示意图。如图4中的(a)所示,第一摄像头401为后置摄像头,第二摄像头402为前置摄像头。如图4中的(b)所示,第一摄像头401为后置摄像头,第二摄像头402为侧置摄像头。
143.又如,如图5所示,为本技术实施例提供的一种摄像头的位置示意图。如图5中的(a)所示,第一摄像头501为前置摄像头,第二摄像头502为后置摄像头。如图5中的(b)所示,第一摄像头501为前置摄像头,第二摄像头502为侧置摄像头。
144.在第二种可能的设计中,第一摄像头和第二摄像头位于终端设备的同侧。
145.示例的,如图6所示,为本技术实施例提供的一种摄像头的位置示意图。如图6中的(a)所示,第一摄像头601为后置摄像头,第二摄像头602为后置摄像头。如图6中的(b)所示,第一摄像头601为前置摄像头,第二摄像头602为前置摄像头。
146.需要说明的是,上述图4、图5和图6仅示例性的示出终端设备中摄像头的位置和形态,但并不意在限定于此。
147.s303、终端设备通过第二摄像头拍摄第二图像。
148.在终端设备确定第一图像满足异常条件,控制开启第二摄像头后,利用第二摄像头拍摄第二图像,基于第二图像获取终端设备的位姿。可理解的,第二图像中包含第一图像中没有的内容;或者,第二图像不满足异常条件。具体的,如下s304的阐述。
149.s304、终端设备根据第二图像获取终端设备的位姿。
150.对于第一种可能的设计,第一摄像头和第二摄像头位于终端设备的不同侧。由于第一摄像头与第二摄像头的视野不同,第二摄像头可以采集到第一摄像头无法采集到的内容,即第二摄像头拍摄到的第二图像包括了第一摄像头拍摄的第一图像中没有内容,因此,第二图像可以提供更多的图像特征信息,终端设备依据第二图像计算终端设备的位姿,有效地提高终端设备的位姿的准确度。
151.对于第二种可能的设计,第一摄像头和第二摄像头位于终端设备的同侧。由于第二摄像头拍摄的第二图像与第一摄像头拍摄第一图像的时刻不同,第二图像包括的内容与第一图像包括的内容不同,即第二图像可以包括第一图像中没有内容。例如,终端设备在移动,第二摄像头拍摄的第二图像的时刻晚于第一摄像头拍摄的第一图像的时刻,第二图像可以包括第一图像中没有内容,第二图像包括更多的图像特征信息。又如,终端设备在拍摄第一图像时,终端设备抖动,第一图像可能不清楚,导致基于第一图像获取的终端设备的位姿不准确。终端设备在拍摄第二图像时,终端设备未抖动,第二图像比第一图像更清楚,第二图像包括更多的图像特征信息。因此,终端设备依据第二图像计算终端设备的位姿,有效地提高终端设备的位姿的准确度。此时,第一摄像头的视场角(field of view,fov)可以小于或等于第二摄像头的fov,本发明不做限定。
152.可选的,第一摄像头的fov小于第二摄像头的fov。fov在光学工程中又称视场,视场角的大小决定了光学仪器的视野范围。在光学仪器中,以光学仪器的镜头为顶点,以被测目标的物像可通过镜头的最大范围的两条边缘构成的夹角称为视场角。终端设备利用第二摄像头获取更广视野的图像,第二摄像头可以采集到第一摄像头无法采集到的内容,即第二摄像头拍摄到的第二图像包括了第一摄像头拍摄的第一图像中没有内容,第二图像可以提供更多的图像特征信息。因此,终端设备依据第二图像计算终端设备的位姿,有效地提高终端设备的位姿的准确度。
153.在另一些实施例中,如图7所示,终端设备根据第二图像获取终端设备的位姿具体包括以下步骤。
154.s701、终端设备通过第一摄像头拍摄第三图像。
155.s702、终端设备根据第一摄像头拍摄的第三图像和第二图像获取终端设备的位姿。
156.由于第三图像与第一图像是第一摄像头在不同的时刻拍摄的图像,第三图像包括的内容与第一图像包括的内容不同,即第三图像可以包括第一图像中没有内容。例如,终端设备在移动,第一摄像头拍摄的第三图像的时刻晚于第一摄像头拍摄的第一图像的时刻,第三图像可以包括第一图像中没有内容,第三图像包括更多的图像特征信息。又如,终端设备在拍摄第一图像时,终端设备抖动,第一图像可能不清楚,导致基于第一图像获取的终端
设备的位姿不准确。终端设备在拍摄第三图像时,终端设备未抖动,第三图像比第一图像更清楚,因此,第三图像包括更多的图像特征信息。
157.或者,由于第一摄像头与第二摄像头的视场角不同,第二图像可以提供更多的图像特征信息。因此,终端设备依据第三图像计算终端设备的位姿,有效地提高终端设备的位姿的准确度。
158.另外,第一摄像头和第二摄像头可以位于终端设备的不同侧,或者,第一摄像头和第二摄像头可以位于终端设备的同侧,第二图像可以提供更多的图像特征信息。关于第二图像的具体解释可以参考上述阐述,不予赘述。
159.因此,终端设备依据第三图像和第二图像计算终端设备的位姿,从而有效地提高终端设备的位姿的准确度。
160.其中,第一摄像头和第二摄像头在终端设备中设置的位置如上述s302中的阐述,不予赘述。
161.在另一些实施例中,终端设备还包括第三摄像头。第三摄像头可以是前置摄像头、后置摄像头或侧置摄像头。
162.示例的,如图8所示,为本技术实施例提供的一种摄像头的位置示意图。
163.如图8中的(a)所示,第一摄像头801为后置摄像头,第二摄像头802为前置摄像头。第三摄像头可以是第三摄像头803a,第三摄像头803a为侧置摄像头。可选的,第三摄像头可以是第三摄像头803b,第三摄像头803b可以为前置摄像头。可选的,第三摄像头可以是第三摄像头803c,第三摄像头803c可以为后置摄像头。
164.若第三摄像头为前置摄像头。此时,第二摄像头802的fov等于第三摄像头803b的fov;或者,第二摄像头802的fov大于第三摄像头803b的fov;或者,第二摄像头802的fov小于第三摄像头803b的fov。
165.若第三摄像头可以为后置摄像头。此时,第三摄像头803c的fov大于第一摄像头801的fov;或者,第三摄像头803c的fov小于第一摄像头801的fov;或者,第三摄像头803c的fov等于第一摄像头801的fov。
166.如图8中的(b)所示,第一摄像头801为后置摄像头,第二摄像头802为侧置摄像头。
167.第三摄像头可以为第三摄像头803a,第三摄像头803a为后置摄像头。可选的,第三摄像头可以为第三摄像头803b,第三摄像头803b可以为前置摄像头。可选的,第三摄像头可以为第三摄像头803c,第三摄像头803c可以为侧置摄像头。
168.示例的,如图9所示,为本技术实施例提供的一种摄像头的位置示意图。
169.如图9中的(a)所示,第一摄像头901为前置摄像头,第二摄像头902为后置摄像头。第三摄像头可以是第三摄像头903a,第三摄像头903a为侧置摄像头。可选的,第三摄像头可以是第三摄像头903b,第三摄像头903b可以为前置摄像头。可选的,第三摄像头可以是第三摄像头903c,第三摄像头903c可以为后置摄像头。
170.若第三摄像头为前置摄像头。此时,第二摄像头902的fov等于第三摄像头903b的fov;或者,第二摄像头902的fov大于第三摄像头903b的fov;或者,第二摄像头902的fov小于第三摄像头903b的fov。
171.若第三摄像头可以为后置摄像头。此时,第三摄像头903c的fov大于第一摄像头901的fov;或者,第三摄像头903c的fov小于第一摄像头901的fov;或者,第三摄像头903c的
fov等于第一摄像头901的fov。
172.如图9中的(b)所示,第一摄像头901为前置摄像头,第二摄像头902为侧置摄像头。
173.第三摄像头可以为第三摄像头903a,第三摄像头903a为后置摄像头。可选的,第三摄像头可以为第三摄像头903b,第三摄像头903b可以为前置摄像头。可选的,第三摄像头可以为第三摄像头903c,第三摄像头903c可以为侧置摄像头。
174.示例的,如图10所示,为本技术实施例提供的一种摄像头的位置示意图。
175.如图10中的(a)所示,第一摄像头1001为后置摄像头,第二摄像头1002为后置摄像头。第三摄像头可以是第三摄像头1003a,第三摄像头1003a为侧置摄像头。可选的,第三摄像头可以是第三摄像头1003b,第三摄像头1003b可以为前置摄像头。可选的,第三摄像头可以是第三摄像头1003c,第三摄像头1003c可以为后置摄像头。
176.如图10中的(b)所示,第一摄像头1001为前置摄像头,第二摄像头1002为前置摄像头。
177.第三摄像头可以为第三摄像头1003a,第三摄像头1003a为侧置摄像头。可选的,第三摄像头可以为第三摄像头1003b,第三摄像头1003b可以为前置摄像头。可选的,第三摄像头可以为第三摄像头1003c,第三摄像头1003c可以为后置摄像头。
178.需要说明的是,上述图8、图9和图10仅示例性的示出终端设备中摄像头的位置和形态,但并不意在限定于此。
179.在另一些实施例中,如图11所示,终端设备根据第二图像获取终端设备的位姿具体包括以下步骤。
180.s1101、终端设备开启第三摄像头。
181.终端设备确定第一图像满足异常条件,开启第三摄像头。
182.s1102、终端设备通过第三摄像头拍摄第四图像。
183.可理解的,第四图像中包含第一图像中没有的内容;或者,第四图像不满足异常条件。
184.s1103、终端设备根据第四图像和第二图像获取终端设备的位姿。
185.由于第三摄像头和第一摄像头可以位于终端设备的不同侧,第三摄像头与第一摄像头的视野不同,第三摄像头可以采集到第一摄像头无法采集到的内容,第四图像可以提供更多的图像特征信息。
186.可选的,由于第三摄像头和第一摄像头可以位于终端设备的同侧。第四图像与第一图像是在不同的时刻拍摄的图像,第四图像包括的内容与第一图像包括的内容不同,即第四图像可以包括第一图像中没有内容。例如,终端设备在移动,第三摄像头拍摄的第四图像的时刻晚于第一摄像头拍摄的第一图像的时刻,第四图像可以包括第一图像中没有内容,第四图像包括更多的图像特征信息。又如,终端设备在拍摄第一图像时,终端设备抖动,第一图像可能不清楚,导致基于第一图像获取的终端设备的位姿不准确。终端设备在拍摄第四图像时,终端设备未抖动,第四图像比第一图像更清楚,因此,第四图像包括更多的图像特征信息。因此,终端设备依据第四图像计算终端设备的位姿,有效地提高终端设备的位姿的准确度。
187.另外,第二图像也可以提供更多的图像特征信息。因此,终端设备依据第四图像和第二图像计算终端设备的位姿,从而有效地提高终端设备的位姿的准确度。第三摄像头在
终端设备中的具体位置可以如上述图8、图9、或图10的阐述,不予赘述。关于第四图像和第二图像的具体解释可以参考上述阐述,不予赘述。
188.在另一些实施例中,如图12所示,终端设备根据第二图像获取终端设备的位姿具体包括以下步骤。
189.s1201、终端设备开启第三摄像头。
190.终端设备确定第一图像满足异常条件,开启第三摄像头。
191.s1202、终端设备通过第三摄像头拍摄第四图像。
192.可理解的,第四图像中包含第一图像中没有的内容;或者,第四图像不满足异常条件。
193.s1203、终端设备通过第一摄像头拍摄第三图像。
194.可理解的,第三图像中包含第一图像中没有的内容;或者,第三图像不满足异常条件。
195.s1204、终端设备根据第三图像、第四图像和第二图像获取终端设备的位姿。
196.第三图像、第四图像和第二图像均可以提供更多的图像特征信息。因此,终端设备依据第三图像、第四图像和第二图像计算终端设备的位姿,从而有效地提高终端设备的位姿的准确度。第三摄像头在终端设备中的具体位置可以如上述图8、图9、或图10的阐述,不予赘述。关于第三图像、第四图像和第二图像的具体解释可以参考上述阐述,不予赘述。
197.可选的,终端设备还可以包括更多的摄像头,在确定第一图像满足异常条件后,控制开启其他更多的摄像头,利用更多的摄像头拍摄的图像获取终端设备的位姿。
198.在第一种可能的实现方式中,若终端设备控制开启第二摄像头,可以根据第二摄像头拍摄的图像和惯性测量组件(inertial measurement unit,imu)的信息获取终端设备的位姿。其中,第二摄像头拍摄的图像可以包括n帧图像,n为大于或等于2的整数。n帧图像可以具有同一个时间信息。示例的,如图13所示,为本技术实施例提供的终端设备根据第二摄像头拍摄的图像获取终端设备的位姿的详细过程。
199.s1301、终端设备根据第二摄像头拍摄的图像和imu的信息获取图像的特征描述和特征跟踪数据。
200.终端设备可以利用特征检测算法检测第二摄像头拍摄的图像中一个或多个特征的位置,特征的位置可以是特征的二维坐标。特征检测算法包括但不限于:加速段测试的特征(features from accelerated segment test,fast)、快速特征点提取和描述(oriented fast and rotated brief,orb)、尺度不变特征变换(scale-invariant feature transform,sift)、加速特征描述(speeded up robust features,surf)、d2net、超级点(superpoint)和人工智能(artificial intelligence,ai)特征检测方法。二元鲁棒独立特征(binary robust independent elementary features,brief)。
201.终端设备利用特征描述算法根据特征的二维坐标生成特征描述。可选的,每个二维坐标可以生成一个特征描述。特征描述可以采用向量表示。特征描述算法包括但不限于:orb、sift、surf、brief、二进制强不变可伸缩关键点(binary robust invariant scalable keypoints,brisk)、快速识别关键点(fast retina keypoint,freak)、d2net、superpoint和ai特征检测方法。
202.可理解的,第二摄像头拍摄的图像包括n帧图像,n帧图像是连续的图像,对于同一
个特征而言,在n帧图像中该同一特征的位置存在细微的变化,终端设备从n帧图像中检测特征的位置,从而实现特征跟踪。
203.终端设备根据第二摄像头拍摄的图像、imu的信息和特征的二维坐标确定特征跟踪数据。可理解的,对于n帧图像中的同一特征而言,终端设备确定该同一个特征的二维坐标,得到特征跟踪数据。特征跟踪数据可以包括多个特征的二维坐标。如果第二摄像头拍摄到当前图像,特征跟踪数据可以是指当前图像中特征的位置,如当前图像中特征的二维坐标。imu的信息包括终端设备运动的角速度和线加速度。
204.s1302、终端设备根据特征跟踪数据和imu的信息获取终端设备的位姿。
205.终端设备可以根据imu的信息和存储的终端设备的历史位姿获取终端设备的位姿。例如,终端设备可以利用数值积分算法,根据imu的信息和终端设备的历史位姿获取终端设备的位姿。
206.imu可以是测量物体三轴姿态角(或角速率)以及加速度的装置。imu具有自己的坐标系,可以称为imu坐标系。在本文中,imu坐标系可以表示为{i}。终端设备安装有imu,因此可以以imu坐标系{i}在全局坐标系{g}下的位姿表示终端设备的位姿。
207.通常,终端设备存储slam程序,slam可以是终端设备的空间定位引擎。终端设备利用采用slam技术和摄像头拍摄的图像输出终端设备建立的全局坐标系{g}中的位置和姿态(简称“位姿”)。终端设备中的任意一个摄像头均可以采用slam技术确定终端设备的位姿。或者,终端设备中的多个摄像头均可以采用slam技术确定终端设备的位姿。当终端设备调用slam程序之后,便确定了全局坐标系{g}。当终端设备控制启动其他摄像头后,获取的终端设备的位姿任然是imu坐标系{i}在全局坐标系{g}下终端设备的位姿。利用imu与相机之间的外参,即可确定相机坐标系{c}在全局坐标系{g}下终端设备的位姿,进而可以将相机坐标系{c}下计算的3d点转化到全局坐标系{g}下。
208.与imu相同,终端设备安装有摄像头。imu和摄像头之间的相对位置和姿态,是通过外参描述。若已知imu坐标系{i}下终端设备的位姿,则摄像头坐标系{c}下终端设备的位姿可以通过外参计算。若已知摄像头坐标系{c}下终端设备的位姿,则imu坐标系{i}下终端设备的位姿可以通过外参计算。
209.需要说明的是,若终端设备在预设时段内检测出获取终端设备的位姿的异常情况,在打开其它摄像头获取终端设备的位姿时,可能省略slam的初始化过程,从而,可以最大程度地降低异常对用户体验的影响。若终端设备在slam的初始化过程中检测出异常,则在打开其它摄像头获取终端设备的位姿时,需要完成slam的初始化过程。
210.进一步的,终端设备还可以利用ekf算法或非线性优化算法,根据特征跟踪数据更新获取的终端设备的位姿,得到更新后的终端设备的位姿。利用更新后的终端设备的位姿更新存储的终端设备的历史位姿。
211.可选的,若终端设备还设置有全球定位系统(global positioning system,gps)、磁力计、气压计等传感器,终端设备在确定更新后的终端设备的位姿时,还可以将传感器信息作为输入参数。传感器信息包括深度信息、磁力计信息、气压计信息和全球定位信息中至少一种。
212.若传感器信息包括全球定位信息,更新后的终端设备的位姿满足公式(1)。
213.214.其中,w表示全局坐标系,全局坐标系可以是东北天坐标系(east north up,enu)。i表示图像帧索引,r
iw
为第i帧图像对应的相机位置的测量误差,p
iw
为gps测量值在w坐标系中的读数,为终端设备的位姿在w坐标系中的获取值。r
iw
为多传感器融合模块的误差方程的一项。
215.若传感器信息包括磁力计信息,更新后的终端设备的位姿满足公式(2)。
[0216][0217]
其中,r
im
为第i帧图像对应的终端设备的位姿的测量误差,z
im
为基于磁力计获取的磁场强度在磁力计坐标系下的测量值,为终端设备的位姿下磁场强度在磁力计坐标系下的获取值;r
bw
表示向量从w坐标系变换到b坐标系的旋转矩阵,b表示相机坐标系或imu坐标系;r
mb
表示向量从b坐标系变换到磁力计坐标系的旋转矩阵。r
iw
为多传感器融合模块的误差方程的一项。
[0218]
若传感器信息包括气压计信息,更新后的终端设备的位姿满足公式(3)。
[0219][0220]
其中,r
iw
为第i帧图像对应的相机高度坐标z的测量误差,z
iw
为基于气压计获取的相机高度坐标的测量值,为相机高度的获取值。r
iw
为多传感器融合模块的误差方程的一项。
[0221]
由于终端设备采用了多个传感器信息,增加了获取终端设备的位姿的输入信息,从而,提高了获取终端设备的位姿的准确度和鲁棒性。进一步能够有效地消除漂移现象。
[0222]
s1303、终端设备根据第二摄像头拍摄的图像的特征描述和终端设备的位姿建立地图。
[0223]
终端设备根据第二摄像头拍摄的图像的特征描述和终端设备的位姿,利用三角化算法计算第二摄像头拍摄的图像的特征对应的空间三维坐标值。三维坐标值可以称为地图点,所有地图点的集合建立地图,即3d特征地图。可选的,终端设备还可以利用非线性优化算法优化地图中三维坐标和历史位姿。终端设备还可以保存终端设备的历史位姿和地图的所有三维坐标。
[0224]
可选的,当终端设备运动到已经来过的位置时,可以触发闭环纠正功能,纠正保存的历史位姿和三维坐标,以及当前获取的终端设备的位姿,以纠正终端设备的长时间漂移。
[0225]
例如,终端设备可以周期性地对当前图像的特征描述与已有地图的特征进行匹配,如果匹配的相似度高,则触发闭环纠正功能,纠正当前图像的位姿,并利用位姿图优化算法,纠正保存的历史位姿,进而重新计算三维坐标,完成地图优化更新,以及对当前终端设备的位姿的纠正。
[0226]
从而,通过闭环纠正功能减少终端设备的位姿获取的漂移量;此外,可以在位姿数据异常时,通过地图重新计算位姿,使相机位姿跟踪恢复正常。
[0227]
在另一些实施例中,当终端设备具有深度传感器或结构光深度传感器时,可以选择启动深度传感器或结构光深度传感器,进行数据采集。
[0228]
采集到的深度信息可以作为更新终端设备的位姿的输入。与上述实施例不同之处在于,特征的二维坐标对应的三维坐标,不仅由特征点三角化算法计算,还可以由二维坐标
对应的深度值获取。三维坐标对更新终端设备的位姿的影响满足公式(4)。
[0229][0230]
这里,r
i(j)
表示二维坐标测量误差,i表示图像帧索引,j表示某一个图像帧观测到的特征索引,p
j
表示三维坐标,p
i
表示终端设备的位姿,z
i(j)
表示三维坐标对应的特征在图像上的观测值,表示基于获取的终端设备的位姿和二维坐标对应的三维坐标,通过终端设备的投影函数h投影在图像上的二维坐标。
[0231]
另外,由于图像的像素坐标和飞行时间(time of flight,tof)图像的像素坐标值是一一对应的,地图点的三维坐标可以通过tof值给确定。
[0232]
当图像的二维坐标与tof图像关联时,利用tof深度值生成二维坐标对应的三维坐标,比三角化更准确,从而可以提高位姿获取的准确度。
[0233]
在第二种可能的实现方式中,若终端设备控制开启第三摄像头,根据第三摄像头拍摄的图像和imu的信息获取终端设备的位姿。其中,第三摄像头拍摄的图像包括m帧图像,m为大于或等于2的整数。具体的获取位姿的方法可以参考上述第一种可能的实现方式中的阐述,不予赘述。
[0234]
在第三种可能的实现方式中,若终端设备控制开启第二摄像头和第三摄像头,根据第二摄像头拍摄的图像、第三摄像头拍摄的图像和imu的信息获取终端设备的位姿。具体的,终端设备可以分别确定第二摄像头拍摄的图像的特征描述和特征跟踪数据,以及第三摄像头拍摄的图像的特征描述和特征跟踪数据,根据第二摄像头拍摄的图像的特征跟踪数据和imu的信息,以及第三摄像头拍摄的图像的特征跟踪数据和imu的信息获取终端设备的位姿。终端设备根据第二摄像头拍摄的图像的特征描述、第三摄像头拍摄的图像的特征描述和终端设备的位姿建立地图。具体的获取位姿的方法可以参考上述第一种可能的实现方式中的阐述,不予赘述。
[0235]
示例的,结合图4说明终端设备获取位姿的过程,终端设备启动了后置摄像头401拍摄图像,根据后置摄像头401拍摄的图像获取终端设备的位姿。若终端设备确定后置摄像头401拍摄的图像满足异常条件,或者,根据后置摄像头401拍摄的图像获取的终端设备的位姿满足异常条件,控制开启前置摄像头402。终端设备利用前置摄像头402拍摄的图像获取终端设备的位姿。
[0236]
本技术实施例中,在终端设备获取该终端设备的位姿过程中检测到异常情况时,可以控制启动其他摄像头,利用其他摄像头获取更多视野的图像,以便提供更多的图像特征信息获取终端设备的位姿,从而有效地提高获取终端设备的位姿的准确度。
[0237]
在另一些实施例中,终端设备启动了相关应用后,便启动第一摄像头、第二摄像头和第三摄像头,利用第一摄像头、第二摄像头和第三摄像头分别拍摄图像,再利用第一摄像头、第二摄像头和第三摄像头分别拍摄的图像获取终端设备的位姿。具体的获取位姿的方法可以参考上述第一种可能的实现方式中的阐述,不予赘述。
[0238]
可以理解的是,为了实现上述实施例中功能,终端设备包括了执行各个功能相应的硬件结构和/或软件模块。本领域技术人员应该很容易意识到,结合本技术中所公开的实施例描述的各示例的单元及方法步骤,本技术能够以硬件或硬件和计算机软件相结合的形式来实现。某个功能究竟以硬件还是计算机软件驱动硬件的方式来执行,取决于技术方案
的特定应用场景和设计约束条件。
[0239]
图14为本技术的实施例提供的可能的获取位姿的装置的结构示意图。这些获取位姿的装置可以用于实现上述方法实施例中终端设备的功能,因此也能实现上述方法实施例所具备的有益效果。在本技术的实施例中,该获取位姿的装置可以是如图1所示的终端设备100,还可以是应用于终端设备的模块(如芯片)。
[0240]
如图14所示,获取位姿的装置1400包括控制单元1410、异常检测单元1420和位姿获取单元1430。获取位姿的装置1400可以应用于如图1所示的终端设备100,终端设备100可以包括第一摄像头、第二摄像头和第三摄像头。第一摄像头、第二摄像头和第三摄像头用于拍摄图像。控制单元1410用于控制启动第一摄像头。异常检测单元1420用于检测到位姿获取单元1430的异常情况时,控制启动第二摄像头和/或第三摄像头。位姿获取单元1430用于获取终端设备100的位姿。示例的,获取位姿的装置1400用于实现上述图3、图7、图11、图12或图13中所示的方法实施例中终端设备的功能。
[0241]
当获取位姿的装置1400用于实现图3所示的方法实施例中终端设备的功能时:控制单元1410用于控制启动第一摄像头,以及指示位姿获取单元1430获取终端设备的位姿;异常检测单元1420用于执行s302和s303;位姿获取单元1430用于执行s304。
[0242]
当获取位姿的装置1400用于实现图7所示的方法实施例中终端设备的功能时:控制单元1410用于控制启动第一摄像头,以及指示位姿获取单元1430获取终端设备的位姿;异常检测单元1420用于执行s302、s303和s701;位姿获取单元1430用于执行s702。
[0243]
当获取位姿的装置1400用于实现图11所示的方法实施例中终端设备的功能时:控制单元1410用于控制启动第一摄像头,以及指示位姿获取单元1430获取终端设备的位姿;异常检测单元1420用于执行s302、s303、s1101和s1102;位姿获取单元1430用于执行s1103。
[0244]
当获取位姿的装置1400用于实现图12所示的方法实施例中终端设备的功能时:控制单元1410用于控制启动第一摄像头,以及指示位姿获取单元1430获取终端设备的位姿;异常检测单元1420用于执行s302、s303、s1201、s1202和s1203;位姿获取单元1430用于执行s1204。
[0245]
当获取位姿的装置1400用于实现图13所示的方法实施例中终端设备的功能时:位姿获取单元1430用于执行s1301至s1303。
[0246]
有关上述控制单元1410、异常检测单元1420和位姿获取单元1430更详细的描述可以直接参考图3、图7、图11、图12或图13所示的方法实施例中相关描述直接得到,这里不加赘述。
[0247]
示例的,如图15所示,位姿获取单元1430可以包括特征处理单元1431、位姿获取单元1432、建图单元1433和闭环纠正单元1434。终端设备100还可以包括imu、tof、gps、磁力计和气压计。
[0248]
特征处理单元1431用于根据摄像头拍摄的图像和imu的信息获取图像的特征描述和特征跟踪数据。位姿获取单元1432用于根据特征跟踪数据和imu的信息获取终端设备的位姿。建图单元1433用于根据特征处理单元1431获取的特征描述、位姿获取单元1432和传感器信息获取的终端设备的位姿建立地图。传感器信息包括深度信息、磁力计信息、气压计信息和全球定位信息中至少一种。闭环纠正单元1434用于根据纠正保存的历史位姿和地图的三维坐标。
[0249]
可以理解的是,本技术的实施例中的处理器可以是中央处理单元(central processing unit,cpu),还可以是其它通用处理器、数字信号处理器(digital signal processor,dsp)、专用集成电路(application specific integrated circuit,asic)、现场可编程门阵列(field programmable gate array,fpga)或者其它可编程逻辑器件、晶体管逻辑器件,硬件部件或者其任意组合。通用处理器可以是微处理器,也可以是任何常规的处理器。
[0250]
本技术的实施例中的方法步骤可以通过硬件的方式来实现,也可以由处理器执行软件指令的方式来实现。软件指令可以由相应的软件模块组成,软件模块可以被存放于随机存取存储器(random access memory,ram)、闪存、只读存储器(read-only memory,rom)、可编程只读存储器(programmable rom,prom)、可擦除可编程只读存储器(erasable prom,eprom)、电可擦除可编程只读存储器(electrically eprom,eeprom)、寄存器、硬盘、移动硬盘、cd-rom或者本领域熟知的任何其它形式的存储介质中。一种示例性的存储介质耦合至处理器,从而使处理器能够从该存储介质读取信息,且可向该存储介质写入信息。当然,存储介质也可以是处理器的组成部分。处理器和存储介质可以位于asic中。另外,该asic可以位于网络设备或终端设备中。当然,处理器和存储介质也可以作为分立组件存在于网络设备或终端设备中。
[0251]
在上述实施例中,可以全部或部分地通过软件、硬件、固件或者其任意组合来实现。当使用软件实现时,可以全部或部分地以计算机程序产品的形式实现。所述计算机程序产品包括一个或多个计算机程序或指令。在计算机上加载和执行所述计算机程序或指令时,全部或部分地执行本技术实施例所述的流程或功能。所述计算机可以是通用计算机、专用计算机、计算机网络、网络设备、用户设备或者其它可编程装置。所述计算机程序或指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一个计算机可读存储介质传输,例如,所述计算机程序或指令可以从一个网站站点、计算机、服务器或数据中心通过有线或无线方式向另一个网站站点、计算机、服务器或数据中心进行传输。所述计算机可读存储介质可以是计算机能够存取的任何可用介质或者是集成一个或多个可用介质的服务器、数据中心等数据存储设备。所述可用介质可以是磁性介质,例如,软盘、硬盘、磁带;也可以是光介质,例如,数字视频光盘(digital video disc,dvd);还可以是半导体介质,例如,固态硬盘(solid state drive,ssd)。
[0252]
在本技术的各个实施例中,如果没有特殊说明以及逻辑冲突,不同的实施例之间的术语和/或描述具有一致性、且可以相互引用,不同的实施例中的技术特征根据其内在的逻辑关系可以组合形成新的实施例。
[0253]
本技术中,“至少一个”是指一个或者多个,“多个”是指两个或两个以上。“和/或”,描述关联对象的关联关系,表示可以存在三种关系,例如,a和/或b,可以表示:单独存在a,同时存在a和b,单独存在b的情况,其中a,b可以是单数或者复数。在本技术的文字描述中,字符“/”,一般表示前后关联对象是一种“或”的关系;在本技术的公式中,字符“/”,表示前后关联对象是一种“相除”的关系。
[0254]
可以理解的是,在本技术的实施例中涉及的各种数字编号仅为描述方便进行的区分,并不用来限制本技术的实施例的范围。上述各过程的序号的大小并不意味着执行顺序的先后,各过程的执行顺序应以其功能和内在逻辑确定。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1