具体实施方式
下面将参考附图并结合实施例,来详细说明本发明。参见图1,实施例的步骤包括:
S11:检测出视频图像中的人体图像;
S12:将所述人体图像分割为多个区域;
S13:确定每个所述区域的特征向量,结合在不同场景下,为每个区域设置的权重,将多个特征向量与预先采集的数据库中的多个基准向量进行匹配;
S14:将所述数据库中匹配成功的人体图像作为识别结果。
通过上述的步骤,可在数据库中确定出人体图像,将确定出的人体图像身份作为检测到的人体图像的身份。从而可在视频中掌握每个人体图像对应的人及活动范围。由于结合了不同场景的权重,增加了识别的准确率。
优选地,实施例中,所述人体图像分割的区域为头部、上半身、和下半身;
所述不同的场景包括室内和室外;
所述不同场景为室内,头部、上半身、和下半身区域的权重之比为1:1:2;
所述不同场景为室外,头部、上半身、和下半身区域的权重之比为2:3:3。
由于区分了场景,在室内、室外光线变化不同,权重比例也不同,更有针对性,显著提高了识别结果的正确率。
优选地,实施例中,检测人体图像的步骤包括:使用高斯背景建模法在视频中检测运动区域。为了消除噪声,使用腐蚀和膨胀算法对检测到的前景图进行过滤。将前景图片所在区域圈定出来,作为人体检测的范围。
在检测到的运动区域内,使用基于方向梯度直方图(HOG)和带有隐含参数的支持向量机(latent SVM)的物体检测方法,在不同尺度上对视频中的人体图像进行检测。
优选地,实施例中,对图像进行分割时,可采用分水岭算法对图像进行分割。在图像中,选取灰度值为局部极小值的点作为分水岭算法的种子,对图像的灰度信息使用分水岭算法,将图片分割为不同的区域。
计算像素点的灰度的公式如下:Y=0.2999R+0.5870G+0.1140B
分水岭算法分割图像:分水岭算法是根据图像的灰度信息,对图像进行区域分割的一种方法。首先将图像中的所有像素点按照灰度值从小到大排序,将灰度值为局部极小值的点作为种子点。在每个种子点所在位置构建区域。之后按照灰度值从小到大的顺序逐个处理每一个像素点,将被处理的像素点加入与它相邻的区域之中。当所有像素点都被加入区域之后,就得到图像的分割信息。分割的区域通常为人体图像的上半身图像,下半身图像、和头部,甚至还可以有脚部等。
采用分水岭算法具体实现方式如下:
M1M2,....MR表示图像g(x,y)的局部极小值点的坐标的集合。R为正整数。
C(Mi)表示与局部极小值Mi相联系的汇水盆内点的集合。
T[n]={(s,t)|g(s,t)<n}表示位于平面g(x,y)=n下方的点的集合。S,t为坐标点。
Cn(Mi)=C(Mi)∩T[n]表示第n阶段汇水盆地被水淹没部分的集合。Mi=M1~MR
Q表示T[n]中连续分量的集合。对每个连续分量q∈有三种可能
(a)q∩C[n-1]为空
(b)q∩C[n-1]包含C[n-1]中的一个连通分量。
(c)q∩C[n-1]包含C[n-1]多于一个连通分量。
遇到新的最小值时,符合条件(a),将q并入c[n-1],构成c[n];
Q位于某些局部最小值构成的汇水盆地时,符合条件(b),将q并入c[n-1]构成c[n],当遇到分离全部或部分汇水盆地时,符合条件(c),在q建立水坝。水坝为两个不同颜色的图像的边缘分界线。
终止条件为n=max+1。max像素点的颜色取值区间,例如:在灰度中,255为最高。
优选地,对分割后的图像消除过度分割:得到图像分割信息之后,计算每个区域的平均灰度,将相邻的区域的平均灰度进行比较,当差值不超过阈值5时,将两个区域合并为一个。
优选地,实施例中,确定特征向量的过程包括:
将检测到的图像转换为HSV格式,并提取颜色分布直方图。
从RGB颜色空间到HSV颜色空间的转换,计算公式如下:
v=max
其中max=max(r,g,b),min=min(r,g,b)。比如,对于RGB颜色值为(0.1,0.2,0.5)的像素点,在HSV颜色空间中的值为(225,0.8,0.5)。
计算颜色直方图:对于图像中的每一个像素,对其颜色进行统计。例如,v分量小于阈值1为黑色,v分量大于阈值2并且s分量小于阈值3为白色,v分量在阈值1和阈值2之间且v分量小于阈值3为灰色,其他颜色为彩色。
对于彩色,按照h分量从0到360均匀划分为6种颜色,即[0,60),[60,120),[120,180),[180,240),[240,300),[300,360)。
对每个像素的颜色进行统计,并计算出每种颜色在人体图像的每个区域中所占比例,依次存储到数组x中,作为图像的特征向量使用。
例如,一个图像区域中有10个像素点。其中黑色点和白色点各有3个,另外4个点属于颜色[60,120),那么这个区域对应的特征向量为(0.3,0.3,0,0,0.4,0,0,0,0)。
优选地,实施例中,所述数据库中的基准向量由以下步骤确定:
预先采集每个人体图像的多幅视频图像;
通过所述多幅视频图像,确定出该人体图像的多个区域、以及与每个区域对应的一组特征向量,作为该区域对应的基准向量。
该过程可通过聚类的方法实现,例如:使用K-means(K均值)等算法。
使用K-means训练时,将检测过程中得到的每一个人体图像区域的颜色直方图作为特征向量进行聚类,得到特征向量的聚类中心,以及每个聚类中心包含的区域样本。
K均值算法需要输入一个参数k,以及若干个特征向量。通过K均值算法计算可以将这些特征向量分为k类,以及每一类中所包含的样本。这样,就可以将输入的样本分为k类,每一类代表一个人体图像。
将聚类中心得到每一类的各个区域对应的特征向量存储到数据库中。
上述的匹配过程包括:
运算各个所述区域对应的各个特征向量分别与所述数据库中每个人体图像的各个区域的基准向量的距离;
对每个特征向量得到的多个距离排序,确定出两个最小的距离d1和d2;其中,d1<d2;
如果所述1.5d1<d2,则确定该特征向量与用于运算所述d1的基准向量相匹配。
确定与每个所述特征向量距离最近的基准向量的所在区域对应的人体图像,并统计对应每个人体图像的各个区域的基准向量被匹配的次数的总和;
找出被确定的次数总和唯一、且最高的值的人体图像的标签或ID,作为所述匹配成功的人体图像。
其中,用于运算出最小的欧式距离的基准向量作为距离最高的基准向量。欧式距离的公式如下:
其中d为特征向量与基准向量的距离,M表示人体被分为的区域数,qi为第i个区域在场景中的权重,x为图像的特征向量,X为训练得到的基准向量,j表示特征向量或基准向量的位数,N为特征向量或基准向量的维数。
假设人体图像被划分为若干区域,其中第i个区域被识别为区块pi,来自于数据库中第si个人体图像。对si进行直方图统计,并将整个人体图像归类为直方图中最大的分量所对应的模型。
例如:如果一共有5个人体图像样本,每个样本为一个人体图像所包含的多个区域所分别对应的多个基准向量。
检测到的人体图像被分为3个区域,共3个特征向量;数据库中包括5个人体图像样本,每个样本包括3个区域,则共有15个区域,每个区域对应一个基准向量。计算检测到的每个特征向量与15个基准向量的距离,得到5组数据。
检测到的人体图像的三个区域的特征向量与数据库中的每个基准向量的距离分别为0.1,0.2,0.3。而人体三部分的权重在当前的室内环境下分别为(1,1,2),则人体到这个距离中心的距离为d=0.1×1+0.2×1+0.3×2=0.9。
每组数据中包括15个距离,找到最小的两个距离,d1和d2,且满足1.5d1<d2,则认为匹配到基准向量。
统计每个人体图像的各个基准向量被匹配的次数。例如:检测某个区域的特征向量为(1,0,0,0,0,0,0,0,0),与之距离最近的两个基准向量分别为(0.8,0,0,0,0,0,0,0,0.2)和(0.5,0.5,0,0,0,0,0,0,0)。则可以计算得到d1≈0.283,d2≈0.707,且1.5d1<d2。确定该特征向量与用于运算所述d1的基准向量相匹配。用于运算所述d1的基准向量为样本1的人体图像,则样本1的人体图像为识别成功的人体图像。
各个区域被分别识别为以下各个样本中的区域;如:样本1,样本1,样本2,则统计直方图为(2,1),样本1为最高且唯一的样本,被检测到的人体图像最终被再识别为样本1所对应的人体图像。
另外,为了实现精确匹配,对识别出的人体图像和样本的图像提取ORB特征点,使用hamming距离对特征点进行匹配,并使用RANSAC算法消除错误匹配。根据最终的匹配结果判定是否匹配成功。
显然,本领域的技术人员应该明白,上述的本发明的各模块或各步骤可以用通用的计算装置来实现,它们可以集中在单个的计算装置上,或者分布在多个计算装置所组成的网络上,可选地,它们可以用计算装置可执行的程序代码来实现,从而,可以将它们存储在存储装置中由计算装置来执行,或者将它们分别制作成各个集成电路模块,或者将它们中的多个模块或步骤制作成单个集成电路模块来实现。这样,本发明不限制于任何特定的硬件和软件结合。
以上所述仅为本发明的优选实施例而已,并不用于限制本发明,对于本领域的技术人员来说,本发明可以有各种更改和变化。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。