行人检测及流量统计算法仿真
本设计是使用Python语言,在Anaconda集成开发环境下结合OpenCV和scikit-learn库实现的。关键技术包括HOG算子、AdaBoostSVM算法和流量统计算法的实现。本设计主要分成两个主要部分,即行人检测及流量统计。行人检测的算法仿真,首先制作数据集,将制作好的数据集使用HOG算子对数据集进行特征提取,之后使用AdaBoostSVM算法对特征提取后的数据集进行分类,最后对分类模型进行评估。流量统计即借助OpenCV库将帧图像制作成视频图像,运用由MATLAB工具制作的行人帧数据,计算行人数量和车道拥挤状况,通过画图工具将行人、行人数量和车道拥挤状况绘制在视频中。通过本设计,实现了对图片中行人的分类和对视频中行人的定位以及根据视频中的行人数量推断出车道上的拥挤状况。
第1章 绪
论............................................................................................................... 1
1.1 课题研究背景与意义.................................................................................................. 1
1.1.1 背景.......................................................................................................................... 1
1.1.2 目的和意义.............................................................................................................. 1
1.2 行人检测发展现状....................................................................................................... 1
1.2.1 国外发展状况.......................................................................................................... 1
1.2.2 国内发展状况.......................................................................................................... 2
第2章 特征提取算法............................................................................................... 3
2.1 特征提取的方法............................................................................................................ 3
2.1.1 基于Haar小波特征的方法.................................................................................... 3
2.1.2 基于LBP特征的方法............................................................................................. 3
2.1.3 基于HOG特征的方法........................................................................................... 3
2.2 HOG算子......................................................................................................................... 3
2.2.1 HOG的原理............................................................................................................. 4
2.2.2 HOG的优点............................................................................................................. 4
2.2.3 HOG的计算步骤..................................................................................................... 4
第3章 行人检测算法............................................................................................... 6
3.1 系统概述.......................................................................................................................... 6
3.2 AdaBoost算法.............................................................................................................. 6
3.2.1 AdaBoost算法的原理.............................................................................................. 6
3.2.2 AdaBoost算法的优点.............................................................................................. 6
3.2.3 AdaBoost算法的步骤.............................................................................................. 6
3.3 SVM算法......................................................................................................................... 7
3.3.1 SVM算法的原理..................................................................................................... 7
3.3.2 SVM算法的优点..................................................................................................... 8
3.3.3 超平面...................................................................................................................... 8
3.3.4 核函数...................................................................................................................... 9
3.3.5 SVM算法的步骤................................................................................................... 10
第4章 系统实现........................................................................................................ 11
4.1 环境的搭建................................................................................................................... 11
4.1.1 Anaconda简介........................................................................................................ 11
4.1.2 OpenCV库简介...................................................................................................... 11
4.1.4 系统开发环境搭建流程........................................................................................ 11
4.2 数据集制作................................................................................................................... 12
4.2.1 数据集简介............................................................................................................ 12
4.2.2 Caltech数据集制作数据集流程............................................................................ 13
4.2.3 INRIA数据集制作................................................................................................. 14
4.3 系统模块实现.............................................................................................................. 15
4.3.1 特征提取模块........................................................................................................ 15
4.3.2 行人检测模块........................................................................................................ 16
4.3.3 流量统计模块........................................................................................................ 17
4.3.4 日志模块................................................................................................................ 18
第5章 系统测试....................................................................................................... 20
5.1 测试结果........................................................................................................................ 20
5.1.1 行人检测结果........................................................................................................ 20
5.1.2 流量统计结果........................................................................................................ 21
5.2 影响检测效果的因素................................................................................................ 21
5.2.1 数据集对检测结果的影响.................................................................................... 21
5.2.2 参数对检测结果的影响........................................................................................ 22
特征提取是计算机视觉和图像处理中的概念。它指的是用于通过使用计算机提取图像以确定图像上的每个点是否属于图像特征的信息。特征提取的结果是将图像上的点划分为孤立点,连续曲线或属于连续区域的各种子集。
特征提取的目的是通过特征所属于的空间的维数,以便在计算中更容易实现后续的分类器设计和消除特征之间可能的相关性并减少无关特征,有助于对新生成的特征进行分类。
Papageorgiou和Poggio首先提出了Haar小波的概念。Haar小波起初应用于人脸识别。Viola和Jones在当时的基础上对Haar小波引入了积分图的概念,这加速了Harr小波提取特征的速度并应用了该方法到行人检测领域,结合人体的运动以及外观模式,建立了行人检测系统,实现了良好的检测效果,为行人检测技术的后续发展奠定了坚实的基础。
局部二进制模式(LBP, Local Binary Pattern)是用于描述图像的局部纹理特征的算法,由T. Ojala,M.Pietikäinen和D. Harwood于1994年提出,它具有灰度不变性和旋转不变性的优点。但是,该算法的缺陷为所提取的特征必须是图像的局部纹理特征。
局部目标的外观和形状由图像的梯度或图像的边缘的方向密度分布表示。统计梯度信息是HOG算子的本质,被统计的所需的梯度主要处在图像的边缘位置。首先,图像被分成称为细胞单元(cells)的小连接区域。接下来,收集细胞单元中每个像素的梯度方向直方图。最后,组合这些直方图以构造特征描述符HOG。为了进一步改善HOG算子的性能,局部直方图在更宽的范围(组合块或块)上进行对比度归一化,并且首先计算组合块中每个直方图的密度,然后单个单元组合块根据密度对内部进行归一化。归一化使得HOG算子在有照明的变化以及有阴影的区域中获得更加好的结果。
HOG特征提取算法需首先输入图像(检测目标或检测窗口),再进行以下步骤:
(1)
标准化Gamma空间和颜色空间
使用Gamma校正来归一化输入图像可以减少照明效果。局部表面曝光对图像的纹理强度有很大的贡献,Gamma校正的方法可以调整图像的对比度,有效地减少由局部阴影和图像的光照变化引起的形变,并抑制噪声干扰。
由于图像的颜色信息不是很有用,首先将图像转换为灰度图以进行计算。
Gamma压缩取Gamma=1/2。
(2)
计算图像梯度
此步骤是通过计算图像的水平和垂直梯度,捕获轮廓和一些纹理信息来确定每个像素的梯度方向值,并进一步减弱照明的影响。
该步骤首先使用[-1, 0, 1]梯度算子对原始图像进行卷积,以获得x方向(水平,右侧)的梯度分量(gradscalx),然后使用[-1, 0, 1]T梯度算子再次对原始图像执行卷积运算,以获得y方向上的梯度分量(gradscaly)(垂直,正方向向上)。最后,该方法用于计算每个像素点的梯度大小和方向。
(3)
为每个细胞单元(cells)构建梯度方向直方图
此步骤是在局部图像区域中进行编码并且保持对图像中人体的姿势和外观的弱敏感性。
该步骤在像素为m×m的某细胞单元上使用n通道直方图对这些像素的梯度信息进行计数,即,使用360度除以n得到这些像素的梯度方向。考虑到梯度大小(直方图的投影权重),如果梯度大小是x,则该直方图的第二通道的计数便需要增加x。在直方图中,使用梯度方向对细胞单元中的每个像素进行加权和投影(映射到固定角度范围)以获得细胞单元的梯度方向直方图,即细胞单元的对应n维特征向量。
细胞单元的形状包括矩形(rectangular)或者星形(radial)。
(4)
组合块(block)和在块内归一化梯度直方图
归一化可以进一步压缩光照、阴影和边缘。由于局部光照变化和从前景到背景的变化,梯度强度不同,梯度强度需要归一化。
该步骤将每个细胞单元组合成大型空间连接块。因此,块中所有细胞单元的特征向量被连接以获得块的HOG特性。这些块彼此重叠,即每个细胞单元的属性在具有不同结果的特征向量中出现多次,归一化块描述符(向量)被称为HOG描述符。
该块具有两个主要几何形状为矩形块(R-HOG)和环形块(C-HOG)。R-HOG块是由三个参数表示的正方形网格:每个块中的单元的数量,每个细胞单元中的像素的数量,以及每个单元的直方图通道的数量。
行人检测的参数设置为:3x3细胞单元的数目、6x6像素点数目、9个直方图通道。则一个块的特征数为:3*3*9。
(5)
收集HOG特征
此步骤用于收集检测窗口中所有重叠块的HOG特征,并将它们组合成最终特征向量以进行分类。
该步骤将图像(检测目标或检测窗口)内的所有重叠的块串联起来得到该图像(检测的目标或者检测窗口)的HOG特征描述符,即最终可以使用于分类的特征向量。
- 微信
- 赶快加我聊天吧
- 开发交流群
- 海纳百川,大家来水