本发明属于slam技术领域,具体涉及一种基于熵加权图像梯度的半直接单目视觉slam方法。
背景技术:
随着机器人定位理论和计算机视觉技术的不断发展和进步,基于视觉的同步定位与地图构建技术(visualsimultaneouslocalizationandmapping,v-slam)的研究正在成为机器人技术领域新的研究热点。视觉slam技术通过摄像机获取视觉信息进行同时定位与地图创建,获得的机器人三维位姿信息和环境信息,是移动机器人执行其他任务的基础。
前端跟踪部分的计算方法主要有两种:特征法和直接法。特征法首先需要提取图像特征点和计算描述子,进行特征点匹配后通过最小化重投影误差计算出机器人位姿。然而,特征提取和匹配是耗时的,这使得基于特征法的前端跟踪比较慢。直接法利用光度不变性原理,通过最小化光度误差来获取机器人的位姿信息,计算像素深度,实现自身定位和建图。直接法相对于特征法,由于不需要提取图像特征,执行速度较快。
在高动态范围环境(hdr)中,如果没有适当的曝光控制,图像可能容易过度曝光或曝光不足,并且只能从这些图像中提取非常少的信息。为了克服动态范围窄的问题,许多相机会自动调整曝光时间。然而,直接法的跟踪都直接依赖于点的亮度,曝光时间的改变打破了连续帧的光度不变假设,这将会使得直接法在hdr环境中容易跟踪失败。因而为了保证更加准确的控制相机获取图像时的曝光时间,需要开发一种新的方法。
技术实现要素:
本发明的主要目的在于克服现有技术的缺点与不足,提出一种基于熵加权图像梯度的半直接单目视觉slam方法,相比传统曝光算法下直接法的单目视觉slam方法,利用图像熵梯度寻找最佳曝光时间可以大大提高动态范围,同时加入图像分块的思想,代替原来计算每个像素的图像梯度大大减少计算量,可以有效提高系统鲁棒性。
为了达到上述目的,本发明采用以下技术方案:
基于熵加权图像梯度的半直接单目视觉slam方法,包括以下步骤:
s1、开启相机先通过调整光圈、曝光增益达到最佳的曝光效果,并记录曝光时间,并读入下一帧图像;
s2、若当前图像与上一帧图像的平均亮度差值的绝对值超过上一帧图像亮度平均值的15%,则将图像分成若干个图像块;
s3、计算每个图像块的图像熵,根据图像熵分配权重;
s4、计算每个图像块的图像梯度,根据步骤s3分配的权重,对所有图像块的梯度进行累加得到当前帧图像梯度;
s5、记录6次调整相机曝光时间后的图像熵加权图像梯度值,分别作为多项式拟合曲线的6个点的x坐标和y坐标,拟合曲线后用牛顿迭代法寻找曲线函数值最大值,其对应的x坐标即为最优曝光时间;
s6、通过对应接口传入半直接法单目视觉slam的视觉里程计中;
s7、判断相机获取的图片是否为最后一帧图像,若否,则对比上一帧图像的亮度平均值并返回到步骤s1,若是,则结束。
进一步的,所述图像块的图像熵具体由公式(1)计算得到,公式(1)如下:
其中,j表示任一图像块,ej表示图像块j的图像熵。
进一步的,所述根据图像熵分配权重具体为:
权重由基于分块图像熵的权值函数决定,权值函数具体如下:
其中,w(ej)表示图像块j的权重;根据公式(2)得所述图像块的图像熵越小,则权重越接近于0,图像块的图像熵越大,则权重越接近于1。
进一步的,所述图像块的图像梯度计算过程如下:
采用图像金字塔将分辨率设为320*240,并分成48块图像块,每个图像块大小为40*40;
计算图像块的图像梯度,图像梯度表示为像素的x方向和y方向的导数:
其中,图像块中每个像素i的梯度记为
进一步的,所述熵加权图像梯度值的计算过程如下:
通过公式(4)对每个图像块覆上权重,则计算出图像的熵加权图像梯度:
gj=w(ej)*gradj(4)。
进一步的,所述调整相机曝光时间具体操作为:
若当前帧图像比上一帧图像的平均亮度值大,则将上一帧图像标为对比图像,减小相机曝光时间5次,每次调整幅度为对比图像曝光时间的5%;
若当前帧图像比上一帧图像的平均亮度值小,则增加相机曝光时间5次,每次调整幅度为对比图像曝光时间的5%。
进一步的,所述相机具体采用分辨率为640*480像素的相机。
本发明与现有技术相比,具有如下优点和有益效果:
1、本发明方法相比传统曝光算法可以保证半直接法的slam系统在hdr环境下不易跟丢对象目标;本发明使用图像熵梯度来表征图像质量,得到一个与灰度直方图相当的效果,并且对图像分块计算,相比原来对每个像素处理大大提高系统的实时性,同时保证一定的曝光效果。
附图说明
图1是本发明方法的流程图;
图2是基于分块图像熵的权值函数的图像;
图3是图像熵与曝光时间映射关系。
具体实施方式
下面结合实施例及附图对本发明作进一步详细的描述,但本发明的实施方式不限于此。
实施例
如图1所示,本发明,基于熵加权图像梯度的半直接单目视觉slam方法,包括以下步骤:
s1、开启相机先通过调整光圈、曝光增益达到最佳的曝光效果,并记录曝光时间,并读入下一帧图像;所述相机具体采用分辨率为640*480像素的相机。
s2、若当前图像与上一帧图像的平均亮度差值的绝对值超过上一帧图像亮度平均值的15%,则将图像分成若干个图像块;
s3、计算每个图像块的图像熵,根据图像熵分配权重,具体为:
所述图像块的图像熵具体由公式(1)计算得到,公式(1)如下:
其中,j表示任一图像块,ej表示图像块j的图像熵。
所述根据图像熵分配权重具体为:
权重由基于分块图像熵的权值函数决定,权值函数具体如下:
其中,w(ej)表示图像块j的权重;如图2所示,根据公式(2)得所述图像块的图像熵越小,则权重越接近于0,图像块的图像熵越大,则权重越接近于1。若图像块的图像熵的小于0.5,分配的权值将接近于0,从而起到对曝光不合理(欠曝光和过曝光)的图像块的抑制作用,如图3所示,为图像熵与曝光时间的映射关系。
s4、计算每个图像块的图像梯度,根据步骤s3分配的权重,对所有图像块的的梯度进行累加得到当前帧图像梯度;
所述图像块的图像梯度计算过程如下:
采用图像金字塔将分辨率设为320*240,并分成48块图像块,每个图像块大小为40*40;
计算图像块的图像梯度,图像梯度表示为像素的x方向和y方向的导数:
其中,图像块中每个像素i的梯度记为
s5、记录6次调整相机曝光时间后的图像熵加权图像梯度值,分别作为多项式拟合曲线的6个点的x坐标和y坐标,拟合曲线后用牛顿迭代法寻找曲线函数值最大值,其对应的x坐标即为最优曝光时间;
所述调整相机曝光时间具体操作为:
若当前帧图像比上一帧图像的平均亮度值大,则将上一帧图像标为对比图像,减小相机曝光时间5次,每次调整幅度为对比图像曝光时间的5%;
若当前帧图像比上一帧图像的平均亮度值小,则增加相机曝光时间5次,每次调整幅度为对比图像曝光时间的5%。
所述熵加权图像梯度值的计算过程如下:
通过公式(4)对每个图像块覆上权重,则计算出图像的熵加权图像梯度:
gj=w(ej)*gradj(4)。
s6、通过对应接口传入半直接法单目视觉slam的视觉里程计中;
s7、判断相机获取的图片是否为最后一帧图像,若否,则对比上一帧图像的亮度平均值并返回到步骤s1,若是,则结束。
在本实施例中,当发现当前帧图像亮度有明显变化,则依次按照特定步长改变5次曝光时间,并计算每次调整曝光时间后的熵加权图像梯度,得到六个计算值,并通过多项式拟合曲线方式,寻找基于分块图像的熵加权图像梯度值最大值。该值就是最佳曝光值,并即使调整相机参数,并传入直接法单目视觉slam的视觉里程计接口当中,如此迭代循环直到下一次检测到亮度明显变化再次触发。
还需要说明的是,在本说明书中,诸如术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
对所公开的实施例的上述说明,使本领域专业技术人员能够实现或使用本发明。对这些实施例的多种修改对本领域的专业技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本发明的精神或范围的情况下,在其他实施例中实现。因此,本发明将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。
1.基于熵加权图像梯度的半直接单目视觉slam方法,其特征在于,包括以下步骤:
s1、开启相机先通过调整光圈、曝光增益达到最佳的曝光效果,并记录曝光时间,并读入下一帧图像;
s2、若当前图像与上一帧图像的平均亮度差值的绝对值超过上一帧图像亮度平均值的15%,则将图像分成若干个图像块;
s3、计算每个图像块的图像熵,根据图像熵分配权重;
s4、计算每个图像块的图像梯度,根据步骤s3分配的权重,对所有图像块的梯度进行累加得到当前帧图像梯度;
s5、记录6次调整相机曝光时间后的图像熵加权图像梯度值,分别作为多项式拟合曲线的6个点的x坐标和y坐标,拟合曲线后用牛顿迭代法寻找曲线函数值最大值,其对应的x坐标即为最优曝光时间;
s6、通过对应接口传入半直接法单目视觉slam的视觉里程计中;
s7、判断相机获取的图片是否为最后一帧图像,若否,则对比上一帧图像的亮度平均值并返回到步骤s1,若是,则结束。
2.根据权利要求1所述的基于熵加权图像梯度的半直接单目视觉slam方法,其特征在于,所述图像块的图像熵具体由公式(1)计算得到,公式(1)如下:
其中,j表示任一图像块,ej表示图像块j的图像熵。
3.根据权利要求2所述的基于熵加权图像梯度的半直接单目视觉slam方法,其特征在于,所述根据图像熵分配权重具体为:
权重由基于分块图像熵的权值函数决定,权值函数具体如下:
其中,w(ej)表示图像块j的权重;根据公式(2)得所述图像块的图像熵越小,则权重越接近于0,图像块的图像熵越大,则权重越接近于1。
4.根据权利要求1所述的基于熵加权图像梯度的半直接单目视觉slam方法,其特征在于,所述图像块的图像梯度计算过程如下:
采用图像金字塔将分辨率设为320*240,并分成48块图像块,每个图像块大小为40*40;
计算图像块的图像梯度,图像梯度表示为像素的x方向和y方向的导数:
其中,图像块中每个像素i的梯度记为
5.根据权利要求3或4所述的基于熵加权图像梯度的半直接单目视觉slam方法,其特征在于,所述熵加权图像梯度值的计算过程如下:
通过公式(4)对每个图像块覆上权重,则计算出图像的熵加权图像梯度:
gj=w(ej)*gradj(4)。
6.根据权利要求1所述的基于熵加权图像梯度的半直接单目视觉slam方法,其特征在于,所述调整相机曝光时间具体操作为:
若当前帧图像比上一帧图像的平均亮度值大,则将上一帧图像标为对比图像,减小相机曝光时间5次,每次调整幅度为对比图像曝光时间的5%;
若当前帧图像比上一帧图像的平均亮度值小,则增加相机曝光时间5次,每次调整幅度为对比图像曝光时间的5%。
7.根据权利要求1所述的基于熵加权图像梯度的半直接单目视觉slam方法,其特征在于,所述相机具体采用分辨率为640*480像素的相机。
技术总结