发明内容
本发明的目的在于提供一种基于聚类法的行人计数方法,用以提高对公共区域内对行人进行人数统计的效率与准确度,并有效降低计算机的系统开销。
为实现上述发明目的,本发明提供了一种基于聚类法的人数计数方法,包括:
S1:对输入图像进行全局光流法、中值滤波及阈值分割处理,以得到输入图像光流场的二值图像Rof(x,y);
S2:对输入图像进行高斯背景建模、尺度滤波,以得到输入图像中运动区域的二值图像Rgauss(x,y);
S3:对步骤S1中得到的二值图像Rof(x,y)和步骤S2中得到的二值图像Rgauss(x,y)做与运算,并通过形态学处理方法,以获得行人运动区域二值化图像R(x,y);
S4:将步骤S3中得到的行人运动区域二值化图像R(x,y)与步骤S1中得到的输入图像光流场的二值图像Rof(x,y)做与运算,得到运动行人区域的光流场角度信息θi,1≤i≤N以组成聚类样本空间,然后通过聚类法对行人运动区域中的行人运动方向进行分割,以得到行人运动区域中各行人的运动方向信息;其中,N是行人运动区域的像素点的总个数,θi∈[0°,360°);
S5:利用线性回归分析方法统计各方向运动行人的数量。
作为本发明的进一步改进,所述步骤S1中中值滤波与阈值分割之间还包括:利用窗口大小为5*5的滤波器对输入图像进行平滑处理。
作为本发明的进一步改进,所述步骤S2中的尺度滤波具体为:利用窗口大小为8*8的尺度滤波器对输入图像进行尺度滤波。
作为本发明的进一步改进,所述步骤S2中的“高斯背景建模”具体为:利用混合高斯模型进行背景建模。
作为本发明的进一步改进,所述步骤S3中的“形态学处理方法”具体为:先进行膨胀处理,后进行腐蚀处理;其中,所述膨胀处理的膨胀参数为7,腐蚀处理中的腐蚀参数为3。
作为本发明的进一步改进,所述步骤S4中的“行人运动区域”包括由步骤S3中所获得的行人运动区域二值化图像R(x,y)中所包含的行人位置信息,以及由步骤S4所获得的运动行人区域的光流场角度信息θi。
作为本发明的进一步改进,所述步骤S4中的“聚类法”为K均值聚类。
作为本发明的进一步改进,所述步骤S4具体为:
S11:初始化聚类;
S12:更新聚类中心;
S13:合并相似类别;
S14:更新类内阈值;
S15:根据新的参数重新聚类,然后顺序重复执行步骤S12、步骤S13、步骤S14;
S16:循环更新聚类结果,直至循环次数达到10次。
与现有技术相比,本发明的有益效果是:在本发明中,利用光流法得到行人运动信息,并基于聚类法对行人运动区域中的行人运动方向进行分割,以得到行人运动区域中各行人的运动方向信息,从而避免了对视频流图像中的每一帧图形中的像素点进行特征点提取等操作,从而有效地提高了对公共区域内对行人进行人数统计的效率与准确度,并降低了计算机的系统开销。
具体实施方式
下面结合附图所示的各实施方式对本发明进行详细说明,但应当说明的是,这些实施方式并非对本发明的限制,本领域普通技术人员根据这些实施方式所作的功能、方法、或者结构上的等效变换或替代,均属于本发明的保护范围之内。
参图1所示,图1获取监控区域的视频流图像以作为输入图像的示意图。
参图1所示,本发明可支持摄像机10垂直拍摄并可适用于室外环境和室内环境。在本实施方式中,通过摄像机10获取监控区域30的视频流图像作为输入图像,所述监控区域30位于摄像机10的正下方。
具体的,摄像机10设置在出入口20的正上方,行人可沿着箭头201的方向上在出入口20中来回走动。摄像机10所获取的监控区域30可完全覆盖出入口20的全部区域。该出入口20可设置在需要对行人人数进行统计的商场、车库、银行等需要重点监控场所的大门口或者走廊中。
需要说明的是,本发明在摄像机10垂直地正对着监控区域30时的效果最佳,当然可也将摄像机10倾斜地对着需要进行行人人数计数统计的区域,以通过摄像机10覆盖整个监控区域30。
在本实施方式中,该监控区域30为矩形;当然也可以为正方形或圆形或者其他形状。摄像机10位于监控区域30的中心点301的正上方,此时该监控区域30位于摄像机10的正下方。
参图2所示,本发明基于聚类法的人数计数方法包括以下几个步骤:
首先,执行步骤S1:对输入图像进行全局光流法、中值滤波及阈值分割处理,以得到输入图像光流场的二值图像Rof(x,y)。
参图3所示,在本实施方式中,全局光流法的具体实施过程为:对输入图像40,每5*5像素块画一条光流线,光流线的长度表示该点的运动速度,角度表示该点的运动方向。光流线的单位长度为10*21/2像素,即如果某像素点光流的水平速度和垂直速度都是1像素/帧,则该点的光流线长度为10*21/2像素。像素点运动速度差别不尽相同,这是由运动物体的运动速度决定的。全局光流法不仅能检测出运动物体的运动信息,也包括背景中运动信息,如周围建筑表面反射光线的信息等等。
在本实施方式中,将全局光流法与背景建模相结合的算法具体实现过程为:参图4所示,利用全局光流法对由摄像机10所获取的监控区域30的视频流图像作为输入图像进行全局光流场计算,得到输入图像的光流场Gof(x,y)。
由于在全局光流法计算中会出现计算误差,输入图像的光流场中存在高频噪声,因此可利用窗口大小为5*5的滤波器对输入图像的光流场进行平滑处理,然后通过阈值分割得到输入图像光流场的二值图像Rof(x,y)。
其中,该阈值分割的计算公式如公式(1)所示:
具体的,在本实施方式中,对输入图像的光流场进行分割的阈值Thof为0.05,光流的速度取值范围为[0,1]。
然后,执行步骤S2:对输入图像进行高斯背景建模、尺度滤波,以得到输入图像中运动区域的二值图像Rgauss(x,y)。
背景建模具体的实现过程为:利用混合高斯模型对由摄像机10所获取的监控区域30的视频流图像作为输入图像进行运动区域检测,得到输入图像的运动区域Ggauss(x,y)。利用窗口大小为8*8的尺度滤波器对输入图像的运动区域Ggauss(x,y)进行尺度滤波,将连通区域内像素点数小于64的区域滤除,得到输入图像经混合高斯建模得到的二值图像Rgauss(x,y),尺度滤波器的计算公式如公式(2)所示:
然后,执行步骤S3:对步骤S1得到的二值图像Rof(x,y)和步骤S2中得到的二值图像Rgauss(x,y)做与运算,并通过形态学处理方法,以获得行人运动区域二值化图像R(x,y)。
最后,通过形态学处理方法,对该二值图像R′(x,y)进行去噪和修补空洞处理,获取最终的行人运动区域二值化图像R(x,y)。
其中,在本实施方式中,该“形态学处理”具体为先进行膨胀处理,后进行腐蚀处理。进一步的,在本实施方式中,膨胀处理中的膨胀参数选为7,腐蚀处理中的腐蚀参数选为3。
然后,执行步骤S4:将步骤S3中得到的行人运动区域二值化图像R(x,y)与步骤S1中得到的输入图像光流场的二值图像Rof(x,y)做与运算,得到运动行人区域的光流场角度信息θi,1≤i≤N以组成聚类样本空间,然后通过聚类法对行人运动区域中的行人运动方向进行分割,以得到行人运动区域中各行人的运动方向信息;
其中,N是行人运动区域的像素点的总个数,θi∈[0°,360°)。
在本实施方式中,聚类法具体为K均值聚类,并根据步骤S2得到的运动行人区域的二值图像R(x,y)与输入图像的光流场Gof(x,y)做“与”运算,得到行人运动区域的光流场角度信息θi,1≤i≤N,其中N是行人运动区域的像素点的总个数,θi∈[0°,360°)。
具体的,在本实施方式中,步骤S4具体包括以下若干子步骤:
S11:初始化聚类。
本实施方式的处理对象是对进出的客流量进行统计,即要分割的运动流为:双向交叉运动流和双向不交叉运动流。由于在实际使用过程中,监控区域30中的行人的运动方向是自由且无法控制的。因此,在本实施方式中,初始聚类目标设为4,即K=4。则样本空间相应地应该分为4类。
参图5所示,由于分割前对实际样本的分布情况不清楚,所以采用平均分割法,将圆代表的[0°,360°)的样本空间平均分为四段,分别用横线、竖线、左倾斜线、右倾斜线表示的四个扇形区域表示初始分类区间,每个每扇形区域为90°。每个区域的初始聚类中心设为该段的平均值,四个箭头所指向的方向代表初始聚类中心,分别为:0°、90°、180°和270°。圆盘中的黑点表示没有归一化的光流矢量的角度,即所有样本。之所以选择这样的初始聚类中心,是因为光流场中0°和360°表示同一个方向,如果将0°和360°分到不同的类别,会在聚类时造成错误分割,而采用图5所示的分割法避免了此种错误的发生。
S12:更新聚类中心。
参图5所示,在具体实施方式中,将初始设置将样本空间设为4类,但实际上所有样本可能聚集在一类或几类中,因此更新聚类中心时,先检测对应类别是否有样本。如果没有样本,则舍去该类别。相应的,总类别数K减少一个。如果每一类都有样本,则用公式(3)计算新的中心值。
其中,公式(3)中的参数n表示该类别中样本的个数。
S13:合并相近类别。
一般的K均值聚类都设定较多次数的循环,在处理数据量少的样本空间时会耗时太多。但图像的像素数量等级都是在104以上,每一次聚类计算量都很大,如果按照计算复杂度O(NKt)统计(K代表类别数,N代表像素点的个数,t代表循环次数),则20次循环聚类的计算复杂度为如下公式(4)所示:
O(NKt)=O(104×4×20)≈O(106) (4)
因此,循环聚类次数太多严重影响了处理速度。但由于初始分割不精确,必须经过多次更新聚类中心和分割结果。从分割准确率和计算耗时两方面考虑,设定最大循环次数为10,即t=10。对于不同情况的运动流,具体循环次数不一样一般经过5次左右的循环,就能得到很好的分割结果。
若更新后的聚类中心满足式(4)的条件则合并,然后利用式(3)计算合并后的聚类中心;同时,总类别数K减1。
S14:更新类内阈值。
在本实施方式中,类内阈值是角度阈值,当样本与聚类中心的角度差小于类内阈值时,将该样本划分为此聚类中心对应的类别。按照图5的分割法,类内阈值Thini设为360°/(4*2)=45°,则样本θi与聚类中心Cj的距离满足公式(5)时,将该样本归为第j类。
|θi-Cj|≤Thini (5)
需要说明的是,类内阈值只在第一次聚类时起分割作用,在计算出新的聚类中心之后,类内阈值需要更新,更新规则为:
经过步骤S12、S13的处理,可以确认实际样本空间的范围,即每一类别样本都有最小值θmini和最大值θmaxi,类别包含的样本空间大小也从90°变为θmaxi-θmini,因此类内阈值也根据公式(6)做了相应改变:
S15:根据新的参数重新聚类,然后顺序重复执行步骤S12、步骤S13、步骤S14,更新聚类中心并吸收相近类别,直至类别数K不变化为止。
S16:循环更新聚类结果,直至循环次数达到10次。
K均值聚类结束。
经过上述循环聚类,以将图3中的样本空间分割成图6的效果。
参图6所示,经过循环聚类,把相近的样本点聚成一类,距离远的样本集合被分成不同的类别。
本发明主要应用于对进出公共区域的客流量进行统计,所以在本实施方式中,K均值聚类将向“进”运动的行人聚为一类,将向“出”运动的行人聚为一类。
最后执行步骤S4:利用线性回归分析方法统计各方向运动行人的人数。
在本实施方式中,运动行人区域不会全都是单个行人,也有可能是两个人甚至多个人,需要通过对运动行人区域进行分析计算出运动行人区域内的人数。
在本实施方式中,利用线性回归算法,分别统计向“进”运动的行人(即沿图1中箭头201的方向进入监控区域30)的人数,和向“出”运动的行人(即沿图1中箭头201的方向离开监控区域30)的人数。
上文所列出的一系列的详细说明仅仅是针对本发明的可行性实施方式的具体说明,它们并非用以限制本发明的保护范围,凡未脱离本发明技艺精神所作的等效实施方式或变更均应包含在本发明的保护范围之内。
此外,应当理解,虽然本说明书按照实施方式加以描述,但并非每个实施方式仅包含一个独立的技术方案,说明书的这种叙述方式仅仅是为清楚起见,本领域技术人员应当将说明书作为一个整体,各实施例中的技术方案也可以经适当组合,形成本领域技术人员可以理解的其他实施方式。