APP下载

多特征自适应融合的CamShift算法与ROS跟随小车实现

2021-05-14党海鑫陈超波

科学技术与工程 2021年10期
关键词:直方图小车光线

党海鑫, 高 嵩, 曹 凯, 陈超波, 王 坤

(西安工业大学电子信息工程学院, 西安 710021)

运动目标检测与跟随作为计算机视觉领域的研究热点之一[1],主要利用计算机视觉技术检测并跟随运动物体从而得到一个目标物体完整的运动方向和轨迹,同时在这个过程中针对一些可能遇到的复杂物体的遮挡、背景环境的干扰、光线强度的变化等问题给出合理的解决措施,从而实现良好的跟随效果。并相应地出现了一些基于背景或特征的跟随方法;此中基于特征模型的方法首要通过辨识目标的色彩、纹理等易区分的特征进行跟随并定位运动目标所在位置,使机器能够对所选目标进行实时地跟随。在此基础上,尽可能地降低算法的复杂度,并提高跟随的实时性与精度。

传统的CamShift目标跟随算法以目标的颜色作为特征建立颜色直方图模型[2],通过在反向投影图上寻找与目标模型的最相似区域,并结合每一次新的目标位置信息作为下次迭代初始值从而实现对目标物体的跟随。然而仅通过颜色实现跟随的算法很容易受到相似背景或物体遮挡的影响,从而导致跟随失败。针对上述问题,文献[3]和文献[4]分别引进了了贝叶斯框架和FREAK特征匹配,改进后的算法虽然改善了系统的鲁棒性但也在算法复杂度方面有所提升。文献[5]改变了传统算法中只以H信号为特征的弊端,进而增加了S信号直方图补偿策略提高了算法的高效性,但仍然对部分复杂环境考虑欠缺;文献[6-7]提出了融合颜色和纹理的跟随算法,在假设两个特征之间独立的同时降低了该系统的鲁棒性;文献[8]对此加入了纹理特征。

上述几种方法虽然改进了目标特征模型,改善了跟随效果,但在较为复杂的场景中跟随效果并不理想,容易受到干扰,需要融合其他特征以提高跟随的鲁棒性[9]。为此,提出一种利用多种特征自适应融合的CamShift算法和修正概率分布密度图的以及限定目标框的方法,并在自己搭建的机器人操作系统(robot operating system,ROS)智能小车上进行了多种干扰场景下的实验。后续将从模型简介、融合方法、优化与实验方面进行概述。

1 CamShift算法基本原理

1988年Bradski[10]提出的CamShift算法以颜色直方图为目标特征,先获得目标物体的颜色概率分布图,再根据目标的形状或距离变化自动调节目标框尺寸,通过迭代搜寻最相似区域。由于颜色直方图反映的是对应颜色区域属于初始框选区的概率,故该方法不受目标物理形状变化和光线变化的影响,可以有效地解决尺度变化及部分遮挡的问题。

CamShift跟随算法主要包括以下步骤[11-12]:

(1)初始化目标框,求取H分量的直方图。

(2)将后续待匹配图像进行反向投影。

(3)根据目标框的属性,采用Meanshift算法迭代计算目标框的质心(xc,yc),以及(x,y)处的像素值I(x,y),然后将目标框的中心移动到新的质心坐标。

(4)在下一帧图像中,重复步骤(2)、步骤(3)直至跟随完成。

传统的CamShift算法仅仅使用了目标物体的颜色信息,易受光线变化、相似颜色物体及背景和遮挡的影响,从而影响跟随甚至目标丢失[13-14],针对上述问题,将输入图像进行高斯滤波后,建立目标的颜色、边缘、纹理信息直方图;再根据相似性度量对概率密度图进行自适应融合,最后结合概率密度分布图的修正和目标框的限定,有效地解决了光线明显变化或相似颜色干扰等因素的影响。

2 多特征提取及自适应融合

2.1 颜色特征模型

颜色直方图通过提取图像中对光线变化适应性强的H值,建立对应的直方图以及概率分布图。设目标的中心点和像素集分别为x0和{xi}(i=1,2,…,n),则颜色特征模型可表述为

(1)

式(1)中:Cq为归一化常数;k()为核函数;b()为像素特征值;u为(x,y)处特征值;δ(x)为判断待辨识像素的所属区间的函数。则颜色直方图分布为hc={hc(u)}。

2.2 纹理特征模型

局部二值模式(local binary pattern,LBP)作为描述物体纹理特征的算子,能够利用灰度图像在边缘处产生的变化描述物体的表面特性,并且对目标旋转和光线剧烈变化具有较强的鲁棒性,对噪声也有较好的抑制能力[15-16]。此外融合LBP时较小的计算复杂度也能够满足系统对于实时性的需求。

LBP在计算时首先将灰度图像的中心点p处的像素值作为阈值;然后取该点周围3×3即半径为R的邻域窗口,最后通过式(2)来求取相应的纹理信息。

(2)

式(2)中:gc、gi分别为上述中心点和邻域像素点的灰度值;s()为二值函数。则纹理特征模型可表示为

(3)

式(3)中:C为常数。

2.3 边缘特征模型

边缘特征不仅能够较好地反映物体边缘方向的分布情况和轮廓信息,而且不易受颜色和光线的干扰[17]。

整数阶边缘检测算子对图像的非高频信号有着较强的弱化作用,从而导致物体边缘部分信息缺失。而采用分数阶微分构建边缘检测算子,在对高频信号进行提升的同时,保留了中低频信号,能够更好地保存目标图像边缘的微弱信息[18]。通过采用R-L(Riemann-Liouville)分数阶微分的概念,建立对边缘信息能够更好处理的模板。

函数f(t)的R-L定义为

(4)

式(4)中:Г()为伽马函数;t、a表示积分上下限,即信号f(t)在[a,t]内连续可导;v表示要进行积分的次数。

关于f(t)的积分,要将其离散化到数字图形,假定a=0,步长h=1,把[0,t]区间等分成n份,可以得到:

(5)

通俗来说,在M×N的图像f(x,y)上进行边缘检测实际上是用m×m大小的掩模梯度算子进行线性滤波,该算子为

(6)

式(6)中:w()为滤波因子;s、t为卷积公式中偏移量。

可得到分数阶微分边缘检测模板的系数为

(-P)(2i)(-P-1)

(7)

(8)

为了满足计算量和实时性,以及提取效果同时,采用3×3的检测模板[19],并使P=0.5,即R1=-0.099 7,R0=0.797 6,最终得到的模板如图1所示。目标边缘特征模型为

(9)

式(9)中:b(xi,yi)为(xi,yi)处像素对应的特征值。

图1 R-L分数阶微分边缘检测算子模板

2.4 相似性度量

采用巴氏系数衡量目标模型与候选模型之间的相似度。在0~1内假设一帧图像中候选直方图向量为h′f,目标直方图向量为hf;那么候选区域与目标区域的相似度可以定义为

(10)

当候选区域和目标区域越相似,ρ越接近1;反之越接近0。

2.5 多特征融合与修正

本算法采取的融合方法是根据3个特征的贡献程度来动态分配各自权值在融合时占据的比重,即用当前帧的目标框中的某一特征的直方图h1(n)和尺寸比当前目标框大1倍且中心点相同的扩展框下的某一特征的直方图h2(n)的相似性来判断权值分配的大小,而相似性则由式(10)计算可得;某一特征在两个直方图越为相似,则当前帧中融合时该特征的概率分布图所占的权值w越大;反之权值w越小。

假设在第n-1帧和第n帧图像中算法迭代得到的目标框中颜色、纹理以及边缘特征的目标直方图分别为h1c(n)、h1t(n)、h1e(n)和h2c(n)、h2t(n)、h2e(n);则按照2.4节定义的巴氏系数计算方法ρ[h1c(n),h2c(n)]可计算出前后两帧中颜色直方图的相似度为ρc、同理可得纹理及边缘特征在两帧中的相似度ρt、ρe,按求得的相似度更新相应的权值,则三种特征的权值的计算方法为

(11)

(12)

(13)

以上3个权值初始值之和为1。所以可以设第n帧图像颜色特征、纹理以及边缘特征的概率分布图分别为Mc(n)、Mt(n)、Me(n)。便可得到第n帧图像的融合后的概率分布图Mfus(n)的计算过程,即

Mfus(n)=wcMc(n)+wtMt(n)+weMe(n)

(14)

3 算法的进一步优化

3.1 概率分布图的更新修正

改进的CamShift算法在对上述3种特征的概率分布图进行自适应融合时,候选模型每个像素的该种特征属于所选目标的对应像素特征值的概率会按归一化后的值存放到对应的位置。如果其概率越大,则代表该候选特征块属于目标的可能性越大,体现在直观上即该特征块的亮度越高;反之则越暗。当存在与目标相似颜色背景或物体时可能导致跟随精度较差、目标框不稳定等不良结果。这是因为一些较小的与目标相似的像素块存在于目标框中,从而对概率分布图的绘制和跟随结果产生直接影响。但这些影响的产生也是不可避免的,原因在于目标框都是规则形状的,难免包含一些背景信息,故在本节对已改进的算法进行了进一步的优化。

对各个特征的概率分布图进行修正,其修正策略按式(15)、式(16)进行,其中M(i,j)表示分布图中(i,j)点处的概率值。在跟随开始时,首先确定最大概率值Mmax,然后根据待计算点处的概率值与0.4Mmax的比较结果对其进行修正,若小于则将其置零,从而弱化甚至消除相似像素块的影响。

Mmax=max[(M(i,j)]

(15)

(16)

3.2 目标框限定

在跟随小车跟随某一物体的过程中,只有小车与目标的距离始终要保持在一个范围内才能称之为跟随,故在此过程中,即使目标发生转动或者产生距离变化,反映到处理器中的目标尺寸不会扩张过大。

传统CamShift算法的目标框可以根据目标的大小及角度变化而变化,但受到相似颜色物体及背景的干扰和大尺寸遮挡时,使得目标框仅在数次迭代之后便增长为原始目标框的数倍之大,从而导致跟随失败。为此,可以通过限制目标框的尺寸大小来解决此问题,限定方法如公式(17)所示,其中S和Sn分别代表初始和当前帧目标框大小,当Sn超过初始目标框大小的1.5倍时,用1.5S限制该目标框,便可较好地解决该问题。

(17)

4 实验平台及控制策略

使用搭建的ROS智能小车平台进行改进算法的测试,该小车采用树莓派3B+作为主控制器、Arduino为运动控制器、USB摄像头为图像采集模块分辨率为720×1 080、外加万向轮加直流减速电机驱动;小车高20 cm,宽15 cm。小车实物如图2所示,图像采集模块用于获取ROSImage,再通过cv-bridge将其转换为适合于用OpenCV处理的图像,从跟随话题订阅目标跟随框中心点相对于视频中心坐标的偏差值并将该值发送到运动控制器,从而控制小车运动,实现小车对目标的自主跟随。但在跟随中每输出一帧图像便会输出偏差值,若对每个偏差值都进行处理,会使计算量过大且小车运动过于敏感,实时性差,易导致跟随失败。

图2 小车实物图

所以只需要对小车每次转动的初始角度进行确认且自动筛选出不必要的偏差值。当小车从该角度左右转动居中后,再进行居中确认,然后处理最新的坐标偏差值,从而实现与目标的稳定跟随。

5 实验结果分析

为了验证改进的算法,对光线强度变化、相似颜色物体遮挡、背景干扰以及小车在障碍物场景中目标跟随分别设置了对应的实验场景。

5.1 光线变化场景

在光线变化场景中,分别用传统和改进的两种算法在光线变化剧烈时进行实验,如图3所示。所跟随的目标为一浅黄色大小为3 cm×2 cm×1 cm且边缘特征较为明显的方形物体,且背景带有许多干扰的噪点,用一束灯光作为干扰从目标右下方到目标正上方再从右上方离开,用以验证明显变化的光线对该跟随算法的影响。

图3 在光线变化场景中跟随结果

从图3(a)可以看出,以对光线剧烈变化时传统算法的目标框会不断扩大,并且将亮度较强的背景部分误认为目标从而导致跟随性能变差。而图3(b)所显示的改进后的跟随算法在光线剧烈变化后,目标框仍然只框选着目标物体,该过程并未对跟随算法产生影响,可见改进后的算法在目标跟随方面具有较强的鲁棒性。

5.2 相似颜色物体遮挡场景

在相似颜色物体遮挡场景中,所跟随的目标为浅红色且带一定纹理特征的长方体海绵,用一体积约为该长方体3倍大,直径约为10 cm的红色球体从目标右后方滚动到左后方作为干扰,如图4所示。

图4 在相似颜色物体遮挡场景中跟随结果

图4(a)显示了传统CamShift算法对目标的跟随结果,从图4(a)中可以看出,当红色球体与粉色目标物体有部分区域重叠时,目标框便已经将球体视为目标物体的一部分,当干扰物处于正后方时,目标框已经完全错选目标,直到干扰物处于左后方时,跟随完全失败,可见仅以颜色特征为目标特征的传统算法在相似颜色物体干扰时鲁棒性较差。

从图4(b)可以看出,使用改进后算法时,当干扰物体与目标物体部分重叠至完全重叠时,干扰物并未对目标框产生较大影响,目标框仍然只框选目标物体;当干扰物与目标物体重叠区域减少到完全分离时,目标框仍然框选在目标物体上,干扰物只是在该过程使目标框产生了些许波动,但并未对跟随结果产生影响,可见改进后的算法对相似颜色物体的干扰具有较强的鲁棒性。

5.3 背景干扰场景

在背景干扰场景中,以较暗光线下以一长×宽×高为14 cm×18 cm×19 cm的黑色小车为跟随目标,同色背景墙为干扰物,如图5所示。

图5(a)显示了传统CamShift跟随算法对黑色小车的跟随结果可见当小车刚开始运动时算法便被背景墙干扰,框选区域开始大面积包含背景而错选目标,到第102帧目标框已经严重漂移以至于跟随算法完全失败,目标框中心的运动轨迹如黄线所示。

图5(b)显示了本文改进算法的跟随结果,可以看出即使目标与干扰背景颜色相同,但在小车从左至右的整个运动过程中目标框始终框选着目标物体并未发生漂移,而且从黄色轨迹线可以看出跟随过程较为平稳,都能够体现该算法的鲁棒性较好。

图5 背景干扰场景中的跟随结果

5.4 精确度对比

为了体现改进算法相对原有算法的优势,通过获取目标中心点的坐标值(a′,b′)与实际情况下中心点的坐标值(a,b),用两点之间的欧氏距离l=[(a′-a)2+(b′-b)2]1/2来表示算法的精度。l越大则目标框相较于真实值的误差越大,反之误差越小,如图6所示。

图6 不同场景下的误差对比

对上述3种实验场景的跟随结果求取欧氏距离,由图6(a)~图6(c)中不同帧数(frame)时的误差(error)对比可知,相较于传统的CamShift跟随算法,所改进的算法在光线明显变化和相近颜色物体干扰时,其跟随精度都始终保持较好水平,即跟随窗口能够有效地框选于目标物体。

5.5 实际障碍场景

实际障碍物场景下,搭建尺寸为1.3 m×1.3 m的复杂背景障碍物环境,用载有改进算法的ROS智能跟随小车以5.3节所述黑色小车为目标实现跟随,该目标小车的运动速度为0.3 m/s,如图7所示的地图中目标小车从左下角入口沿红色箭头指示方向运动到出口,图8中的4幅图分别为在图7中4个三角形标注位置的小车的跟随视角,可以看出在该障碍物地图中跟随小车能够实现对目标小车较好程度的跟随。而未改进的算法在该障碍物场景中由于背景的干扰性较强,在目标运动之后,目标框容易错选背景或者漂移,完全无法实现跟随。

图7 复杂背景障碍物地图

图8 目标跟随环境中智能小车视角图

6 结论

针对在复杂场景传统基于单颜色特征的CamShift算法应用到跟随小车容易跟随失败的问题,通过在对具有互补性的不同特征的融合,构成多特征自适应融合的CamShift跟随算法,能够更好地应对各种复杂场景,增强了跟随小车跟随的鲁棒性。

在此基础上通过对融合概率图的修正及目标框限定对算法进行进一步优化。通过4种不同的实验场景,验证了所改进的算法相对于传统的算法在光线的变化及复杂背景干扰和相似颜色物体的干扰遮挡下都有一定的鲁棒性,体现了优化后的多特征融合在应对复杂场景时的优势,提高了复杂情况下的实时跟随性能。

猜你喜欢

直方图小车光线
符合差分隐私的流数据统计直方图发布
大车拉小车
基于FPGA的直方图均衡图像增强算法设计及实现
“你看不见我”
用直方图控制画面影调
刘老师想开小车
两轮自平衡小车的设计与实现
光线
中考频数分布直方图题型展示
去修理厂