本发明涉及图像处理领域,具体是一种实时六自由度VR/AR/MR设备定位方法。
背景技术:
三自由度定位方案:使用IMU数据,计算出设备在三个轴向上的旋转的技术,一种最简易的方法是通过IMU中的陀螺仪数据,对时间做积分,将所得的结果应用到VR设备上。
六自由度定位方案:现有的方案一般是使用摄像头,通过图像处理技术,同时得到设备在三个轴向上的旋转和三个方向上的位移。
目前的VR设备只能支持三自由度的定位,VR设备显示的画面只有三个方向的旋转,用户在空间中的位移无法被反映在画面上,三自由度定位的沉浸感不足。AR/MR设备为了实现六自由度的定位,一般是借助摄像头的图像处理的方法来计算用户的位移,而图像处理由于计算量和摄像头硬件限制,计算一次姿态的时间一般远远大于16毫秒,往往不能达到使画面流畅所需要的60FPS的要求,无法实时定位。
技术实现要素:
本发明的目的在于提出一种六自由度定位方案,能比较精确地计算出用户的姿态,同时满足至少60FPS渲染要求的计算速度。
技术方案:
一种实时六自由度VR/AR/MR设备定位方法,包括先计算六自由度定位方案,六自由度定位方案在t时刻计算出相机的位姿Pose(t),此时画面有渲染需求就直接应用Pose(t);由于六自由度定位方案的复杂性,下一个位姿Pose(t+1)和t时刻隔的时间比较长,中间画面又有渲染需求时,将Pose(t)和IMU旋转矩阵RIMU进行一次融合,将得到的结果直接应用于渲染,以达到实时渲染的要求;
其中,Pose(t)和IMU的融合结果PoseIMU(t)T按照以下公式计算:
PoseIMU(t)T=RIMU*Pose(t)T
式中,RIMU为4*4的齐次矩阵,是IMU计算出的旋转矩阵。
具体的,所述六自由度定位方案使用SLAM算法或PTAM算法计算。
优选的,SLAM算法计算步骤为:
S101:相机标定,目标在于得到相机的内参矩阵:
其中,fx和fy为相机的焦距,xo,yo为主点坐标,s为坐标轴倾斜参数;
S102:定位,相机标定好以后,根据相机拍到的画面,求解出相机的位姿;
S103:地图重建,将相机拍到的画面转换成点云,并通过点云拼接的方法,将周围的环境以点云的形式重新表示出来;
S104:回环检测,由于定位计算的结果跟真实的相机位姿有偏差,短时间内偏差较小,时间长以后会存在累积误差,计算出的姿态跟真实的位姿差别较大,通过回环检测,当相机拍摄到的画面和之前重复时,可矫正相机位姿;
最后得到的相机位姿矩阵Pose(t)如下:
其中,R3×3是一个属于SO3群的旋转矩阵,表示六个自由度中的三个旋转量;T3×1是一个列向量,向量的每个元素分别表示相机在三个轴向上的位移。
具体的,步骤S101中所述相机标定包括:线性标定法、非线性优化标定法和两步标定法。
具体的,步骤S102中求解相机的位姿的方法为光束平差法。
优选的,所述IMU旋转矩阵RIMU的计算方法为
RIMU=αRgyro+βRacc+γRmag
其中,α+β+γ=1;Rgyro、Racc、Rmag分别为陀螺仪、加速度计、磁力计计算出的位姿矩阵。
具体的,α、β、γ的数值通过EKF算法、线性的KF算法或者Mahony滤波计算。
陀螺仪的校准方式为:在多次采样中取平均值;或者先在静止状态下采集陀螺仪的偏移量,上报数据时去除。
加速度计在静止状态下利用重力加速度的方向剔除干扰,过程如下:
A=(ax,ay,az)
G=(g,0,0)
Δ=A-G
其中A为静止状态下加速计数据,G为重力加速度向量,Δ为加速计偏移量,At为加速计原始数据,为校准后t时刻的加速计数据。
磁力计校准需要考虑是否含有附加的局部磁场环境:若无,磁力计则采用平面校准法或八字校准法进行校准;在含有附加的局部磁场环境下,通过下述方法进行校准:
S201:将设备水平旋转360度;
S202:找到磁力计水平方向数据的最小输出Xmin,Ymin和最大输出Xmax,Ymax;
S203:第一比例系数Xs=1;
S204:计算另一个比例系数Ys
S205:计算偏置补偿
Xb=Xs[1/2(Xmax-Xmin)-Xmax]
Yb=Ys[1/2(Ymax-Ymin)-Ymax]
S206:得到输出
Xout=Xin*Xs+Xb
Yout=Yin*Ys+Yb
其中,XoutYout为校准后的磁力计数据,XinYin为原始磁力计数据,Z轴在使用此种方法时无需校准。
本发明的有益效果
本发明在一般六自由度方案的基础上加上IMU,实现了具备实时性的六自由度定位方案。IMU模组便宜轻便,成本不高,容易在原六自由度的方案上进行改装,并且IMU的融合算法对CPU性能消耗很小,容易加入原六自由度方案。
附图说明
图1为传统六自由度定位的SLAM算法方案框图
图2为传统通过IMU计算相机位姿的方案框图
图3为本发明六自由度定位方案框图
具体实施方式
下面结合附图以最优实施例对本发明作进一步说明,但本发明的保护范围不限于此:
结合图3,一种实时六自由度VR/AR/MR设备定位方法,先基于SLAM计算六自由度定位方案,六自由度定位方案在t时刻计算出相机的位姿Pose(t),此时画面有渲染需求就直接应用Pose(t);由于六自由度定位方案的复杂性,下一个位姿Pose(t+1)和t时刻隔的时间比较长,中间画面又有渲染需求时,将SLAM计算得到的Pose(t)和IMU旋转矩阵RIMU进行一次融合,将得到的结果直接应用于渲染,以达到实时渲染的要求;
其中,Pose(t)和IMU的融合结果PoseIMU(t)T按照以下公式计算:
PoseIMU(t)T=RIMU*Pose(t)T
式中,RIMU为4*4的齐次矩阵,是IMU计算出的旋转矩阵。
(在其它实施例中,所述六自由度定位方案可以基于PTAM算法计算)。
结合图1,SLAM算法可以使用的相机方案主要有:RGBD相机、双目相机、单目相机,SLAM算法计算步骤为:
S101:相机标定(可选用线性标定法、非线性优化标定法或两步标定法),目标在于得到相机的内参矩阵:
其中,fx和fy为相机的焦距,xo,yo为主点坐标,s为坐标轴倾斜参数;
S102:定位,相机标定好以后,根据相机拍到的画面,通过光束平差法求解出相机的位姿;
S103:地图重建,将相机拍到的画面转换成点云,并通过点云拼接的方法,将周围的环境以点云的形式重新表示出来;
S104:回环检测,由于定位计算的结果跟真实的相机位姿有偏差,短时间内偏差较小,时间长以后会存在累积误差,计算出的姿态跟真实的位姿差别较大,通过回环检测,当相机拍摄到的画面和之前重复时,可矫正相机位姿;
最后得到的相机位姿矩阵Pose(t)如下:
其中,R3×3是一个属于SO3群的旋转矩阵,表示六个自由度中的三个旋转量;T3×1是一个列向量,向量的每个元素分别表示相机在三个轴向上的位移。位姿矩阵可以直接应用于Direct3D、OpenGL、Unity等图形库和引擎的渲染。
结合图2,所述IMU旋转矩阵RIMU的计算方法为
RIMU=αRgyro+βRacc+γRmag
其中,α+β+γ=1(α、β、γ的数值选用EKF算法、线性的KF算法或者Mahony滤波计算);Rgyro、Racc、Rmag分别为陀螺仪、加速度计、磁力计计算出的位姿矩阵。
Rgyro、Racc、Rmag在实际过程中需要校准,具体的:
陀螺仪的校准方式为:在多次采样中取平均值;或者先在静止状态下采集陀螺仪的偏移量,上报数据时去除。
加速度计在静止状态下利用重力加速度的方向剔除干扰,过程如下:
A=(ax,ay,az)
G=(g,0,0)
Δ=A-G
其中A为静止状态下加速计数据,G为重力加速度向量,Δ为加速计偏移量,At为加速计原始数据,为校准后t时刻的加速计数据。
磁力计校准需要考虑是否含有附加的局部磁场环境:若无,磁力计则采用平面校准法或八字校准法进行校准;在含有附加的局部磁场环境下,通过下述方法进行校准:
S201:将设备水平旋转360度;
S202:找到磁力计水平方向数据的最小输出Xmin,Ymin和最大输出Xmax,Ymax;
S203:第一比例系数Xs=1;
S204:计算另一个比例系数Ys
S205:计算偏置补偿
Xb=Xs[1/2(Xmax-Xmin)-Xmax]
Yb=Ys[1/2(Ymax-Ymin)-Ymax]
S206:得到输出
Xout=Xin*Xs+Xb
Yout=Yin*Ys+Yb
其中,XoutYout为校准后的磁力计数据,XinYin为原始磁力计数据,Z轴在使用此种方法时无需校准。
本实施例在SLAM的基础上,加上IMU融合算法,使得SLAM来不及给出结果时,借助IMU给出一个和真实姿态比较接近的结果,能够精确地计算出用户的姿态,同时满足至少60FPS渲染要求的计算速度。
相关技术术语的名词解释
IMU:International Mathematical Union,惯性测量单元,是测量物体三轴姿态角(或角速率)以及加速度的装置。一般的,一个IMU包含了三个单轴的加速度计和三个单轴的陀螺,加速度计检测物体在载体坐标系统独立三轴的加速度信号,而陀螺检测载体相对于导航坐标系的角速度信号,测量物体在三维空间中的角速度和加速度,并以此解算出物体的姿态。
三自由度定位:三自由度定位指以三个旋转角度来描述物体姿态的定位方式,无法完全模拟物体在空间中的状态。
六自由度定位:六自由度定位在三自由度的基础上,额外加上物体在三个方向上的位移信息,可以完全模拟物体在空间中的状态。
SLAM:simultaneous localization and mapping,同步定位与建图。SLAM问题可以描述为:机器人在未知环境中从一个未知位置开始移动,在移动过程中根据位置估计和地图进行自身定位,同时在自身定位的基础上建造增量式地图,实现机器人的自主定位和导航。
EKF:extended kalman filter,扩展卡尔曼滤波器,卡尔曼滤波是一种高效率的递归滤波器(自回归滤波器),它能够从一系列的不完全包含噪声的测量中,估计动态系统的状态。扩展卡尔曼滤波器在卡尔曼滤波器的基础上引入雅可比矩阵,实现对非线性模型的估计。
VR:Virtual Reality,虚拟现实,是一种可以创建和体验虚拟世界的计算机仿真系统它利用计算机生成一种模拟环境是一种多源信息融合的交互式的三维动态视景和实体行为的系统仿真使用户沉浸到该环境中。
AR:Augmented Reality,增强现实,是一种实时地计算摄影机影像的位置及角度并加上相应图像的技术,这种技术的目标是在屏幕上把虚拟世界套在现实世界并进行互动。
MR:Mixed Reality,混合现实,是虚拟现实技术的进一步发展,该技术通过在虚拟环境中引入现实场景信息,在虚拟世界、现实世界和用户之间搭起一个交互反馈的信息回路,以增强用户体验的真实感。
SO3群:三维旋转群,群的成员是3*3的矩阵,一个SO3群的矩阵可以表示三维欧式空间中的一个旋转,并且矩阵之间的乘法结果也属于SO3群。
RGBD相机:由RGB相机和深度相机组成,RGB相机即普通摄像头,RGB表示图像信息由红绿蓝三色组成,即普通彩色图像,深度相机返回的图像是深度信息,图像中每个像素的值代表该像素对应的物体和相机的距离。
双目相机:双目相机由两个RGB摄像头组成,事先按照一定的角度和距离固定两个摄像头,通过图像处理,可以利用已知信息重建距离信息,达到和RGBD相机一样的效果。
单目相机:单目相机只拥有一个RGB摄像头,可以在一定程度上进行定位,但是由于缺少尺度信息,只能给出相对结果。
本文中所描述的具体实施例仅仅是对本发明精神做举例说明。本发明所属技术领域的技术人员可以对所描述的具体实施例做各种各样的修改或补充或采用类似的方式替代,但并不会偏离本发明的精神或者超越所附权利要求书所定义的范围。