本发明涉及一种ar方法,尤其是一种基于单目vio的移动端ar方法。
背景技术:
slam(simultaneouslocalizationandmapping)分为两大功能:定位与建图。其中建图主要作用是对周边环境的理解,建立周边环境与空间的对应关系;定位主要是根据建好的图,判断设备在地图中的位姿,从而得到相机在环境中的信息。
slam分为dense和sparse两种,基于计算能力的考虑,移动端一般选择sparseslam。sparseslam虽然速度快,但是效果很依赖环境:在比较复杂,特征点多的环境下,sparseslam效果很好,而对于白墙、光滑平面等特征点比较少的环境,其效果很差,很难准确的估算出相机的姿态。
技术实现要素:
本发明的目的在于提供一种基于单目vio的移动端ar方法,能够弥补vslam的缺点,在短时间内,定位效果很好且不受环境特征点的影响。
为了实现上述发明目的,本发明提供了一种基于单目vio的移动端ar方法,包括如下步骤:
步骤1,利用相机和imu分别进行图像采集和惯性数据采集,且imu的采集频率大于相机的采集频率;
步骤2,提取相机获取的每一帧图像的特征点,并用光流法对各个特征点进行跟踪,并将成功跟踪的帧设置为关键帧;
步骤3,对imu得到的多组imu数据进行预积分,计算出两帧图像对应的imu位置和速度分别为:
式中,pk和pk+1分别表示第k和k+1帧时imu的位置,vk和vk+1表示第k和k+1帧时imu的速度,δt为k与k+1帧之间的时间间隔,rt为t时刻旋转矩阵,at为t时刻的加速度,g为重力加速度;
步骤4,利用sfm算法获取关键帧中跟踪的特征点,并根据该特征点计算出每个关键帧的位姿
步骤5,根据imu测得的两帧之间的imu位置相减计算获得位移,再根据imu得到的位移和旋转信息与相机测得两帧之间的位移和旋转信息相等算出相机与imu之间的外参
式中,s为尺度因子,
步骤6,初始化imu的速度、加速度以及尺度因子,初始化公式为:
式中,
步骤7,利用紧耦合非线性优化imu测量数据以及相机测量数据得到相机姿态,优化公式为:
式中,
进一步地,步骤1中,相机以30hz的速度获取图像,即1秒30帧的速度;imu以100hz的速度获取数据,即1秒100组imu数据。
进一步地,步骤2中,光流法假设同一个特征点的灰度不变,对于t时刻位于(x,y)处的像素,假设t+dt时刻他运动到(x+dx,y+dy)处,灰度值不变,表示式为:
i(x+dx,y+dy,t+dt)=i(x,y,t)
式中,(x+dx,y+dy表示运动后的坐标,(x,y)表示运动前坐标,t表示运动前时刻,t+dt表示运动后时刻。
本发明的有益效果在于:采用imu(惯性测量单元)正好弥补了vslam的缺点,在短时间内,其效果很好且不受环境特征点的影响;在时间长时,可利用vslam与imu对齐,防止偏移;结合vslam与imu的vio系统(visual-inertialodometry),可保证算法在移动端实时运行,且效果很稳定。
附图说明
图1为本发明的方法流程图。
具体实施方式
如图1所示,本发明提供了一种基于单目vio的移动端ar方法,包括如下步骤:
步骤1,利用相机和imu分别进行图像采集和惯性数据采集,且imu的采集频率大于相机的采集频率;
步骤2,提取相机获取的每一帧图像的特征点,并用光流法对各个特征点进行跟踪,并将成功跟踪的帧设置为关键帧;
步骤3,由于imu的频率远高于相机获取图像的速度,所以当获取到两帧图像时,往往会得到多组imu数据,因此对imu得到的多组imu数据进行预积分,计算出两帧图像对应的imu位置和速度分别为:
式中,pk和pk+1分别表示第k和k+1帧时imu的位置,vk和vk+1表示第k和k+1帧时imu的速度,δt为k与k+1帧之间的时间间隔,rt为t时刻旋转矩阵,at为t时刻的加速度,g为重力加速度;
步骤4,利用sfm算法获取关键帧中跟踪的特征点,并根据该特征点计算出每个关键帧的位姿位姿
步骤5,根据imu测得的两帧之间的imu位置相减计算获得位移,再根据imu得到的位移和旋转信息与相机测得两帧之间的位移和旋转信息相等算出相机与imu之间的外参
式中,s为尺度因子,可由步骤6的初始化公式计算获得,
步骤6,判断是否已经进行过初始化,若还未进行初始化,则初始化imu的速度、加速度以及尺度因子,若已经进行过初始化,则直接进入步骤7,初始化公式为:
式中,
步骤7,利用紧耦合非线性优化imu测量数据以及相机测量数据得到相机姿态,相机测量数据由sfm算法根据相机拍摄的图像计算得到,优化公式为:
式中,
进一步地,步骤1中,相机以30hz的速度获取图像,即1秒30帧的速度;imu以100hz的速度获取数据,即1秒100组imu数据。
进一步地,步骤2中,光流法假设同一个特征点的灰度不变,对于t时刻位于(x,y)处的像素,假设t+dt时刻他运动到(x+dx,y+dy)处,灰度值不变,表示式为:
1(x+dx,y+dy,t+dt)=1(x,y,t)
式中,(x+dx,y+dy)表示运动后的坐标,(x,y)表示运动前坐标,t表示运动前时刻,t+dt表示运动后时刻。
本发明采用imu(惯性测量单元)正好弥补了vslam的缺点,在短时间内,其效果很好且不受环境特征点的影响;在时间长时,可利用vslam与imu对齐,防止偏移;结合vslam与imu的vio系统(visual-inertialodometry),可保证算法在移动端实时运行,且效果很稳定。