- 实验目的
(1)能阐述方向梯度直方图的算法流程。
(2)能根据算法流程实现方向梯度直方图算法,并了解其原理。
(3)能应用方向梯度直方图算法进行行人检测。
- 实验内容
概述:本实验将通过实现方向梯度直方图(HOG)算法来进行行人检测
具体内容如下:
- 导入相关库并初始化
- 图像读取与预处理
- 生成特征向量descriptor
- 行人检测
- 检测结果显示
- 实验器材
一台计算机具备基本图像处理能力,推荐配置为4GB RAM及以上
- 实验步骤与结果
(需包含关键步骤及代码)
1.导入相关库并初始化
2. 图像读取与预处理
3. 生成特征向量descriptor
4. 行人检测
5. 检测结果显示
- 实验总结
- 为什么要将图片转换为灰度图后再提取 HOG 特征?
灰度图只包含亮度信息,每个像素用一个值表示,而彩色图像(如RGB)需要三个值(R、G、B)。使用灰度图可以降低计算复杂度,因为HOG特征提取主要关注形状和边缘,而不是颜色信息。灰度图转换减少了处理的数据量,从而提升了特征提取的速度和效率
- cv2.cvtColor(img, cv2.COLOR_BGR2GRAY) 和 cv2.COLOR_RGB2GRAY 有什么区别?为什么选择 BGR?
cv2.COLOR_BGR2GRAY 是将BGR(蓝-绿-红)格式的图像转换为灰度图,而cv2.COLOR_RGB2GRAY 则是将RGB(红-绿-蓝)格式的图像转换为灰度图
选择 BGR 的原因:在OpenCV中,图像读取后的默认颜色格式为BGR
- winSize、blockSize、blockStride、cellSize 分别代表什么?它们之间有什么数学关系?
winSize:滑动窗口的大小,blockSize:一个块的大小,blockStride:块滑动的步长,cellSize:单个单元的大小;blockSize 必须大于 cellSize,而且 blockSize 应能被 cellSize 整除
- 尝试将 blockStride 从 (8,8) 改为 (16,16),观察特征维度有何变化?为什么?
会导致提取到的HOG特征数量减少,因为滑动窗口在图像上移动的距离更大,从而导致生成的块数减少,最终特征的维度也随之减少
较大的步长意味着特征计算区域不再重叠,减少了捕捉细节和特征的机会,从而导致较少的HOG特征被提取
5、如果将 nbins 改为 18(将梯度方向划分更细),会发生什么?特征量会变多还是变少?
梯度方向的划分将变得更细,特征量会增加