杨 鸽,郑嘉龙,王 莹
(四川水利职业技术学院,四川 成都 611231)
人体检测与跟踪是计算机视觉研究的一个重要领域,在智能交通、军事、航空航天、数字安防等方面得到广泛应用,具有很重要的应用价值和深远的发展前景。从监控的视频序列中检测出运动人体是一项基本而又重要的技术[1-2],它是后续高级处理如目标跟踪、目标识别和分类、行为分析和理解等的基础,是计算机视觉研究的热点问题。耿蒲龙等[3]提出了基于RGB 颜色空间色变帧差法的运动目标检测方法,完成对矿井人体目标准确的检测与跟踪。李成美等[4]提出了一种改进光流法的运动目标检测及跟踪算法,在背景运动下能检出目标并稳定跟踪。沈世斌等[5]提出了一种基于混合高斯模型的Camshift 检测跟踪算法,适应复杂背景下运动人体的检测与跟踪。陈丹等[6]提出人体足部运动模型引导下的核相关滤波跟踪算法,完成人体快速移动时的足部跟踪。乐英等[7]实现了基于背景差分多运动目标检测识别和分割。
最为常用的人体检测方法是背景差分法,然而在简单的背景差分法中,作为参考的背景图像不能实时地反映出背景的变化(如光照方向和强度的变化,阴影等),导致人体的分割不够精确,影响后续的跟踪、识别等处理,而且需要将RGB 彩色图像转换为灰度图像,在转换过程中图像会丢失部分颜色信息,可能会造成目标分割的不完整[8]。
为了克服上述问题,本文提出直接在RGB 彩色空间检测运动目标的方法,使用背景减除法,检测出人体目标。结合在HSV 空间下的阴影的特点对其进行检测和去除,提高人体检测的准确度,在多目标情况下,采用计算目标区域颜色直方图相关性的方法对目标进行跟踪,有效的避免因形变、光照等因素造成的跟踪失败情况。实验表明,该算法的检测效果要优于传统的灰度图检测算法。
常用到的人体检测算法有帧间差分法[9]和光流法、背景减除法[10]。帧间差分法能够较好适应运动场景,缺点是容易造成空洞,分割出来的人体目标不完整;光流法在摄像头运动时也有较好的检测效果,但是检测时运算量太大,时间上难以满足实际使用的要求[11];背景减除法,能够快速有效的检测出人体目标,缺点是不能适应运动场景。综合考虑,本文采用背景减除法作为人体检测算法。
在光照环境下,人体通常会有倒影,在进行普通分割时,很难将人体下半身与地面倒影区分开来,因此需要将彩色图像转换到HSV 空间,利用人体和倒影色彩特性的不同进行区分,在去除阴影的同时可能会对人体部分造成一些小的空洞,使用形态学膨胀可以有效的填补这些空洞,由于环境中有其他因素的影响,得到的二值分割图像中会有一些小的噪点,由于人体的形态特征比较明显,可以根据二值图像中连通区域的几何特征进行筛选,得到最终的人体目标,由于需要跟踪人体的运动轨迹,在多人体目标情况下,要对当前帧图像检测到的人体目标与前帧图像进行关联[12],为了更好的消除环境光照变化的影响和人体形态的变化,采用颜色直方图匹配算法对人体目标进行关联。具体的人体检测与跟踪流程如图1所示。
图1 人体检测跟踪流程
背景减除法检测结果的好坏与背景图像的选取有很大的关系。初始的背景图像估计有很多种方法,本文采取计算无目标时连续的前N帧图像的均值的方法,对于背景中的每一个点,其像素值由这N帧图像中相应位置点的像素值的均值来决定。其计算公式如下:
式(1)中,Ik(i,j)为序列中的第k帧图像,B0(i,j)为估算出的初始背景图像,Ik(i,j)、B0(i,j)均为三通道的RGB彩色图像。N值根据实际情况选择。
监控场景会随着时间缓慢变化,比如光源的照射方向改变、光照强度的变化等。为了克服这些干扰,使背景模型能够对外界变化具有自适应性,必须实时地对背景模型进行更新[13]。
在对背景的更新过程中,结合当前帧人体检测的结果,对于当前帧中被判断为属于人体的像素点,背景图像B(i,j)中相应位置的像素点仍然保持原来的背景色彩值,不予更新;对于当前帧中对于判断为背景的点,B(i,j)中相应位置的像素点的色彩值进行更新。具体的背景更新公式如下:
其中Bk-1(i,j)为第k-1帧更新后的背景图像,Bk(i,j)为第k帧更新后的背景图像。为第k帧检测出的人体所在的第nk区域,nk=1,2,…,Nk,Nk为第k帧检测出的人体个数。式(2)中,η0,1),为背景的更新率,η取值越小,背景更新越快,η 的取值根据背景变化的快慢决定,本文实验中取η=0.9。
为了避免从彩色图像转为灰度图像过程中造成的信息丢失,本文直接在RGB三维色彩空间上进行人体检测。首先计算当前图像Ik(i,j)与上一帧更新后得到的背景图像Bk-1(i,j)的对应点的颜色向量(R、G、B)之间的欧氏距离distk(i,j),得到包含有运动目标信息的图像,对此图像进行二值分割[14],得到差分图像Diffk(i,j)。distk(i,j)和Diffk(i,j)的计算公式如下:
图2是对第579帧图像进行检测的结果。图2(a)是当前的背景图像,图2(b)是视频序列中的第579帧图像,图2(c)是图2(a)与图2(b)差分图像的二值化图像,在此视频序列中,差分图的分割阈值T取13。图2(d)是对图2(c)进行膨胀运算的结果。从实验结果可以看出,人体目标被完整的分割出来。
图2 第579帧图像的检测结果
使用3.2 节中的人体检测方法,人体被完整的分割出来,但是同时被分割出来的还有其在地上的阴影,为了精确的提取出目标,还需要去掉差分图像Diffk(i,j)上的属于阴影的点[15]。
在RGB 空间中,如果运动目标的颜色和阴影的颜色相似,将很难区分目标和阴影,因此本文在HSV颜色空间中检测运动目标的阴影[16]。HSV 由表示占主导频谱颜色的色调H(Hue,用0 度到360 度的角度来表示)、表示颜色丰富程度的饱和度S(Saturation)和表示颜色的亮度V(Value)所组成。HSV 模型是一种面向感知的非线性模型,其优点是与人类的颜色视觉感知较为接近,它能将颜色的本质特性分为亮度与色调、饱和度三个互不相关的独立分量[17]。采用HSV模型时从色彩本质特性出发,使用色度分量来聚类分析,可以有效克服光照变化带来的影响[18]。
检测人体阴影前,需要先将待检测的原始图像Ik(i,j)和背景图像Bk-1(i,j)从RGB空间转换到HSV 空间[19]。RGB颜色空间[20]到HSV颜色空间的转换公式如下。
由于被阴影覆盖的背景区域和未被阴影覆盖的背景区域的色调值变化不大,饱和度值相对变大,亮度值相对变小,通常采用式(5)来判断一个像素是否为阴影。
在式(5)中,shadowk(i,j)表示图像Ik(i,j)中的(i,j)位置的点为阴影,shadow(i,j)=0 则不是。(i,j)、(i,j)、(i,j)分别是图像Ik(i,j)转到HSV空间后的H、S、V分量。(i,j)(i,j)、(i,j)分别是背景图像Bk-1(i,j)转到HSV 空间后的H、S、V分量。参数0≤α≤β≤1,α、β、TS、TH的值根据经验选取。
使用得到的阴影图像去除差分图像shadowk(i,j)中的阴影Diffk(i,j)像素点:
除了阴影像素点外,由于光照产生的噪声信息仍会对检测带来干扰,这些噪声信息以空洞的形式呈现在检测结果中,为了精确提取出检测目标,还需要对空洞进行填充,其方法如下:
a) 计算差分图像Diffk(i,j)上的连通域个数;
b) 计算图像内各个连通域大小G1;
c) 设定阈值T,若Gi<T则判定为空洞;
d) 将判定为空洞的连通域像素赋值为0。
图3是对图像图2(d)做去阴影处理的结果。图3(a)是图2(d)出去阴影后的结果,图3(b)是对图3(a)进行空洞填充后的结果。从实验结果可以看出,在HSV 空间中检测并去除阴影后,目标的分割效果得到改善,目标的外形更加精确。
图3 去除掉了图像中的阴影
为了避免检测结果被其他运动物体干扰,在处理过后的差分图像上,再次进行连通区域提取,得到图像上的各个连通区域。将这些连通区域作为候选目标,使用区域面积,长宽比,填充率进行筛选,得到最终的目标区域。最终的筛选和检测结果如图4所示。从实验结果看出,人体目标被完整的检测出来。
图4 目标检测结果
人体跟踪的作用在于将每一帧图像中检测到的人体目标关联起来,得到人体的运动轨迹,为后续的人体行为研究等打下基础。常用的人体跟踪算法有灰度模板匹配法,这种算法主要思想为计算目标图像像素与模板图像像素之间的相关性,然而由于只考虑了人体的灰度信息,在匹配中如果遇到光照,形变等环境因素的变化,匹配结果会受到很大的影响。本文采取颜色直方图匹配的方法进行人体目标的匹配跟踪,其可以有效的克服光照和形变等环境因素的影响。
图5(a)是在第369帧时的人体检测结果,图5(b)是第370帧时的目标匹配结果,如图所示,两个目标都正确的匹配上了。
图5 检测跟踪结果
图6是从369帧到452帧跟踪到的这两个目标的重心运动轨迹,第421帧后目标2出视场,第452帧后目标1出视场。
图6 目标运动轨迹跟踪
本文针对灰度空间处理图像信息丢失的问题,提出一种基于彩色图像处理人体检测和跟踪算法,利用图像的RGB彩色信息,建立RGB空间背景模型,在监控视频序列中完整的分割出人体外形,同时使用检测到的人体目标实时的更新背景模型,利用阴影在HSV空间下的特点,有效的去除了人体的阴影,通过计算前后帧之间的人体目标颜色直方图的相关性,有效的对运动人体进行跟踪,实验证实本文算法有较好的检测和跟踪效果。然而本文算法也有一些不足之处,如在背景模型中η 取的是经验值,在阴影去除过程中,α、β、TS、TH的值也都是根据经验选取,这会对算法的自适应性造成一定的影响,在进一步的研究工作中将会致力于寻找这些阈值自适应设置的方法,使得本文算法具有更强的鲁棒性。