0-背景
目标检测与识别是当下非常热门的研究方向之一。在深度学习火爆发展之前,有一些传统的图像处理方法,也取得了不错的效果。其中HOG方向梯度直方图(Histogram of Oriented Gradient)是比较成功的特征。
1-简介
HOG特征是一种在计算机视觉和图像处理中用于物体检测的特征描述子。HOG是基于像素点的梯度来计算直方图的,而不是颜色。它通过计算和统计图像局部区域的梯度直方图来构建特征。HOG特征结合SVM分类器的组合模型已经被广泛应用于图像识别中,尤其在行人检测中比较成功。
2-流程
HOG特征提取的整个流程大致如下:
- 读取需要检测的目标image
- 将图像灰度化,将彩色的rgb,转为灰度值
- 采用Gamma校正法,对输入图像颜色空间标准化
- 计算图像每个像素的梯度(大小和方向),捕获轮廓信息
- 统计每个cell的梯度直方图,形成每隔cell的descriptor
- 将几个cell(如2*2)组成一侧block,将一个block内所有的cell特征串联起来,得到该block的HOG特征descriptor
- 将图像内所有block的HOG特征descriptor串联起来,得到image的HOG特征descriptor,形成最终的特征向量。
3-源码
80行Python实现-HOG梯度特征提取
Github地址:Hog-Feature
4-问题
在对HOG特征进行提取时,需要考虑尺度和位置的问题:
-
尺度:不同图像,目标在图像中占据的大小可能不同,会造成梯度不同。
-
位置:目标在图像中,可能在任意位置。需要扫描图像,找到感兴趣的地方。
-
图像金字塔
-
滑动窗口
滑动窗口是用在计算机视觉的一种技术,它包括图像中要移动部分(滑动窗口)的检查以及使用图像金字塔对各部分进行检测。这是为了在多尺度下检测对象。
滑动窗口通过扫描较大图像的较小区域来解决定位问题,进而在同一图像的不同尺度下重复扫描。
使用这种方法进行目标检测会出现区域重叠,针对区域重叠问题,我们可以利用非极大值抑制(IOU和非极大值抑制),来消除重叠的窗口。
5-参考
具体的HOG的实现,以及详细的原理和代码讲解,请参照下面的资料。
基于传统图像处理的目标检测与识别(HOG+SVM附代码)
80行Python实现-HOG梯度特征提取