一种基于视频监控的快速行人检测方法
【技术领域】
[0001] 本发明属于智能视频监控领域,具体涉及一种基于视频监控的快速行人检测方 法。
【背景技术】
[0002] 从小波第一次被用于作为行人检测的图像特征以及使用SVM算法来做运动目标 判决分类开始,到2005年法国人Dalai在CVPR发表HOG+SVM的检测算法时,行人检测算法 的基本框架结构就已经确立了,即先通过选取合适的图像特征提取图像信息,建立合适的 分类模型训练标准图像样本,进而获得合理的识别分类器用于待检测图像,最终检测得到 行人所在位置和尺寸。此后,行人检测算法发展越来越快,提取的特征也不再单一,而是因 地制宜的从目标图像的边缘轮廓、纹理信息到梯度直方图、颜色信息等,而与之相适应的分 类器也有神经网络、SVM、Adaboost以及深度学习等算法。
[0003] 经典H0G+SVM算法,通过实验可以发现两点不足:⑴图像检测所消耗的时间太 长,远远无法达到实际应用中对于视频实时监控的速度要求;(2)在没有收集相应场景的 样本集、没有训练相应的分类决策函数的前提下,实际行人检测的效果相当不准确,过检、 漏检的情况很严重。由此可以看出,虽然OpenCV中自带的SVM决策函数默认的训练集是 INRIA标准行人图像库,但是检测效果并不理想。在实际的视频监控中,为了提高准确度, 必须要针对不同的检测环境、场景,动态的采集相应的标准图像库,并计算出相应的决策函 数。
[0004] 针对第一点不足,本发明提出的一种类似于HOG描述子的CENTRIST描述子(即 CensusTransformHistogram,也称C4),其在同样突出边缘信息的基础上计算复杂度却大 大降低。相比于HOG描述符,C4更注重于保留图像的边缘轮廓等信息,有效的捕捉了图像的 局部特征并完成编码,避免了由于光照等突然变化引起的不良影响。而且其只需要计算邻 域像素间的差值计算量被大大减小。
[0005] 为了提高行人检测的准确度和运行速度,本发明在原有SVM分类算法基础上提出 了一种改进算法--快速分类的支持向量机算法(FastClassificationSupportVector Machine,缩写为:FCSVM)。实验证明这种算法在不明显降低SVM算法分类效果的基础上减 少训练出来的支持向量的个数,相应的也会减少了检测时决策函数的时间开销。
【发明内容】
[0006] 针对上述传统行人检测方法存在的的问题,本发明提出一种基于视频监控的快速 行人检测方法,可以提高行人检测的准确度和运行速度。
[0007] 为实现上述目的,本发明具体技术方案如下:一种基于视频监控的快速行人检测 方法,包括如下步骤:
[0008] 1)视频采集及参数设定:读取视频流,初始化阈值Thread,转步骤2);
[0009] 2)运动检测计数器i= 0,转步骤3);
[0010] 3)读取一帧图像,转步骤4);
[0011] 4)判断计数器i是否大于阈值Thread,如果i>Thread,转步骤8),否则转步骤5);
[0012] 5)图像预处理:对图像进行色彩空间变换、去噪以及灰度化处理,利用Gamma公式 压缩图像大小,转步骤6);
[0013] 6)判断是否有运动目标:检测视频图像中是否有运动目标闯入,如果没有运动目 标,转步骤2);否则转步骤7);
[0014] 7)计数器i加1:i=i+1,转步骤3);
[0015] 8)行人检测:判断闯入的运动目标是否是行人,如果是行人转步骤9),否则转步 骤2);
[0016] 9)报警;
[0017] 其中,上述步骤8)包含如下步骤:
[0018] 8. 1)提取当前帧的CENTRIST描述符;
[0019] 8. 2)运用训练好的线性SVM分类器检测图像中行人特征点;
[0020] 8. 3)根据行人特征点判断闯入的运动物体是否是行人。
[0021] 进一步地,上述步骤8. 1)中提取CENTRIST描述符,包括如下步骤:
[0022] 8. 1. 1)对当前帧I进行灰度化、平滑滤波,消除局部纹理特征,提取基本的边缘信 息及像素间的大小关系,其中,滤波器为Sobel算子;
[0023] 8. 1. 2)根据当前帧I像素间的大小关系,构造一个新的图像I、
[0024] 8. 1. 3)求图像V中每一个像素点的CT编码值;
[0025] 8. 1. 4)根据图像V中所有像素点的CT编码值的直方图得到CENTRIST描述符。
[0026] 进一步地,上述步骤8. 2)中运用训练好的线性SVM分类器检测图像中行人特征点 的方法包括如下步骤:
[0027] 8. 2. 1)对采集的样本数据集进行SVM训练,得到支持向量集S,其中,向量集S的 维数为N;
[0028] 8. 2. 2)设m= 1,n=N_m;
[0029] 8. 2. 3)根据m、n将向量集S分为两个子集P和Q,其中,子集P的维数为m,子集Q 的维数为n;
[0030] 8. 2. 4)计算子集P的内积Km和子集Q的内积Kn,计算公式如下:
[0033] 8. 2. 5)根据内积Km、Kn计算变换矩阵WT,计算公式如下:
[0034] Kn=ffTKm;
[0035] 8. 2. 6)根据变换矩阵WT计算矩阵A和矩阵B,计算方法如下:
[0036] A= ( 0 !,…,0 L);
[0037] B= ( 0,!0,L)
[0038] 其中:
[0045]上式中:a」为拉格朗日乘子,y」为正负标识
[0046] 8. 2. 7)根据矩阵A和矩阵B求em= | |A-B| | ;
[0047] 8. 2. 8)m=m+1,n=N_m;
[0048] 8. 2. 9)判断m是否小于N,若m〈N,则转步骤8. 2. 3),否则转步骤8. 2. 10);
[0049]8. 2. 10)求出最小的e,得到其对应的变换矩阵WT;
[0050] 8. 2. 11)在上一步WT的基础上,利用决策函数判断图像中像素点是否是行人特征 点,其中决策函数如下:
[0051]
,式中b为阈值(b=y」-WTx);
[0052] 本发明提出的一种基于视频监控的快速行人检测方法,有效减少了实际监控中的 开销,实现对视频实时监控以及快速、准确的行人检测。
【附图说明】
[0053] 图1基于视频监控的快速行人检测方法流程图。
[0054] 图2行人检测流程图。
[0055] 图3提取CENTRIST描述符流程图。
[0056] 图4线性SVM分类器检测图像中行人特征点算法流程图。
【具体实施方式】
[0057] 下面结合附图和具体实施例对本发明作进一步描述。
[0058] 图1所示为基于视频监控的快速行人检测方法流程图,包括以下步骤:
[0059] 1)视频采集以及参数设定:读取视频流,初始化阈值Thread,本实施例中,初始化 Thread为3 ;转步骤2);
[0060] 2)设运动检测计数器i= 0,转步骤3);
[0061] 3)读取一帧图像,转步骤4);
[0062]4)判断计数器i是否大于阈值Thread,如果
i>Thread,转步骤8),否则转步骤5);
[0063] 5)图像预处理:对图像进行色彩空间变换、去噪以及灰度化处理,利用Gamma公式 压缩图像大小,转步骤6);
[0064] 6)判断是否有运动目标:检测视频图像中是否有运动物体闯入,如果没有运动目 标,转步骤2);否则转步骤7);
[0065] 7)计数器i加1:i=i+1,转步骤3);
[0066] 8)行人检测:判断运动物体是否是行人,如果是行人转步骤9),否则转步骤2);
[0067] 9)报警。
[0068] 图2所示为行人检测流程图,包含如下步骤:
[0069] 8. 1)提取当前帧的CENTRIST描述符;
[0070] 8. 2)运用训练好的线性SVM分类器检测图像中行人特征点;
[0071] 8. 3)根据行人特征点判断闯入的运动物体是否是行人。
[0072] 图3所示为提取CENTRIST描述符流程图,包括如下步骤:
[0073] 8. 1. 1)对当前帧I进行灰度化、平滑滤波,消除局部纹理特征,提取基本的边缘信 息及像素间的大小关系,其中,滤波器为Sobel算子;
[0074] 8. 1. 2)根据当前帧I像素间的大小关系,构造一个新的图像I7;本实施例中,构造 方法是:根据图像I像素间的大小关系,构造一个新图像f仍然保留源图像I的像素大小 比较信号,而忽略像素的值大小,即对于任意一个相邻的像素对满足如下关系:
[0075] sgn(I(pj-l(p2)) =sgn(I'(pD-I'(p2))
[0076] 其中pi和p2为任意相邻点;
[0077] 8. 1. 3)求图像中每一个像素点的CT编码值;
[0078] 8. 1. 4)根据图像V中所有像素点的CT编码值的直方图得到CENTRIST描述符。
[0079] 图4所示为线性SVM分类器检测图像中行人特征点算法流程图,包括如下步骤:
[0080] 8. 2. 1)对采集的样本数据集进行SVM训练,得到支持向量集S,其中,向量集S的 维数为N;
[0081] 8. 2. 2)设m= 1,n=N_m;
[0082] 8. 2. 3)根据m、n将向量集S分为两个子集P和Q,其中,子集P的维数为m,子集Q 的维数为n;
[0083] 8. 2. 4)计算子集P的内积Km和子集Q的内积Kn,计算公式如下:
[0086] 8. 2. 5)根据内积Km、Kn计算变换矩阵WT,计算公式如下:
[0087] Kn=ffTKm;
[0088] 8. 2. 6)根据变换矩阵WT计算矩阵A和矩阵B,计算方法如下:
[0089] A= ( 0 !,…,0 L);
[0090] B= ( 9 ' !9 ' L)
[0091] 其中:
[_ Kt=(Kt」,…,KtjT
[0098] 上式中:aj为拉格朗日乘子,y』为正负标识
[0099] 8. 2. 7)根据矩阵A和矩阵B求em= | |A-B| | ;
[0100] 8. 2. 8)m=m+1,n=N_m;
[0101] 8. 2.9)判断m是否小于N,若m〈N,则转步骤8. 2. 3),否则转步骤8.2. 10);
[0102] 8. 2. 10)求出最小的e,得到其对应的变换矩阵WT;
[0103] 8. 2. 11)在上一步WT的基础上,利用决策函数判断图像中像素点是否是行人特征 点,其中决策函数如下:
[0104]
,式中b为阈值(b=yj-WTx)。
【主权项】
1. 一种基于视频监控的快速行人检测方法,其特征在于包括如下步骤: 1) 视频采集及参数设定:读取视频流,初始化阈值Thread,转步骤2); 2) 运动检测计数器i = 0,转步骤3); 3) 读取一帧图像,转步骤4); 4) 判断计数器i是否大于阈值Thread,如果i>Thread,转步骤8),否则转步骤5); 5) 图像预处理:对图像进行色彩空间变换、去噪以及灰度化处理,利用Gamma公式压缩 图像大小,转步骤6); 6) 判断是否有运动目标:检测视频图像中是否有运动目标闯入,如果没有运动目标, 转步骤2);否则转步骤7); 7) 计数器i加 I :i = i+Ι,转步骤3); 8) 行人检测:判断运动目标是否是行人;如果是行人转步骤9),否则转步骤2); 9) 报警; 其中,所述步骤8)包含如下步骤: 8. 1)提取当前帧的CENTRIST描述符; 8.2)运用训练好的线性SVM分类器检测图像中行人特征点; 8. 3)根据行人特征点判断闯入的运动目标是否是行人。2. 如权利要求1所述的基于视频监控的快速行人检测方法,其特征在于:所述步骤 8. 1)中提取CENTRIST描述符,包括如下步骤: 8. I. 1)对当前帧I进行灰度化、平滑滤波,消除局部纹理特征,提取基本的边缘信息及 像素间的大小关系,其中,滤波器为Sobel算子; 8. 1. 2)根据当前帧I像素间的大小关系,构造一个新的图像I、 8. 1. 3)求图像Iy中每一个像素点的CT编码值; 8. 1. 4)根据图像Iy中所有像素点的CT编码值的直方图得到CENTRIST描述符。3. 如权利要求1所述的基于视频监控的快速行人检测方法,其特征在于:所述步骤 8. 2)中运用训练好的线性SVM分类器检测图像中行人特征点的方法包括如下步骤: 8. 2. 1)对采集的样本数据集进行SVM训练,得到支持向量集S,其中,向量集S的维数 为N ; 8. 2. 2)设 m = 1,η = Ν-m ; 8. 2.3)根据m、η将向量集S分为两个子集P和Q,其中,子集P的维数为m,子集Q的 维数为η ; 8. 2. 4)计算子集P的内积Km和子集Q的内积Κη,计算公式如下:8. 2. 5)根据内积Km、Kn计算变换矩阵Wt,计算公式如下: Kn=wTKm; 8. 2. 6)根据变换矩阵WH十算矩阵A和矩阵B,计算方法如下: A = ( Θ " …,Θ L); B = ( Θ、…Θ , L) 其中:上式中%为拉格朗日乘子,yj为正负标识 8. 2. 7)根据矩阵A和矩阵B求em= I |A-B| I ; 8. 2. 8)m = m+1, η = N-m ; 8. 2. 9)判断m是否小于Ν,若m〈N,则转步骤8. 2. 3),否则转步骤8. 2. 10); 8. 2. 10)求出最小的ε,得到其对应的变换矩阵Wt; 8. 2. 11)在上一步,的基础上,利用决策函数判断图像中像素点是否是行人特征点,其 中决策函数如下:
【专利摘要】本发明涉及一种基于视频监控的快速行人检测方法,检测方法包括图像采样、参数设定和图像预处理、运动检测、利用CENTRIST描述符和线性SVM分类器进行行人检测等步骤。本发明提出的基于视频监控的快速行人检测方法,有效减少了实际监控中的开销,实现对视频实时监控以及快速、准确的行人检测。
【IPC分类】G06K9/62, G06K9/00
【公开号】CN104899559
【申请号】CN201510271027
【发明人】宋雪桦, 化瑞, 刘委, 卜晓晓, 万根顺, 王维, 于宗洁
【申请人】江苏大学
【公开日】2015年9月9日
【申请日】2015年5月25日