在计算机视觉中,人们设计了很多算法来提取空间特征,并利用图像梯度信息来识别物体。其中一种技术叫做HOG,即方向梯度直方图。方向梯度直方图,直方图就是数据分布的一种图像表现,有点像柱形图,其柱形有不同的高度,每个柱形代表一组处于一定值范围的数据。这些柱形也称为组 柱形越高意味着某组数据越多。以灰度图像为例,假设你想绘制出这张薄饼图的强度数据直方图,我们知道像素值的范围在 0 到 255 之间,所以我们可以把这些值分成若干组
。我要创建 32 个组 每组包含 8 个像素值 所以第一组范围是 0 到 7、然后 8 到 15 以此类推一直到 248 到 255。要创建直方图,我们得来看看这张图里的各个像素值 将各像素值放到对应的组里,这张图的薄饼里有很多亮值,背景则很黑。
直方图如下:
在这个直方图里 黑色像素明显堆积在一起,这些是背景的像素,都在低值范围内。明亮的像素也聚集在一起,基本是在灰度值200左右,这肯定是薄饼的大部分像素值。
方向梯度,方向就是图像梯度的方向或者朝向,梯度就是用Sobel算子计算的梯度的幅值和方向。这样把3个术语结合在一起,HOG就是指一张有关图像梯度方向的直方图。
首先 HOG 会接受一张图像,如这张薄饼图 然后计算每个像素的梯度幅值和方向。HOG实际上会把这些像素分成若干个较大的正方形单元,单元大小通常是88,如果是88,那就是64个梯度值,HOG会计算每个单元相同的梯度方向有多少,将这些梯度的幅值相加得到梯度强度,接着HOG会把所有方向数据放到直方图里,这个直方图有九组 也就是九个值范围,不过可以简历更多的组来进一步分类数据,这就是薄饼边缘的方向梯度直方图。
HOG会对图像的每个单元进行同样的处理,这个方向梯度直方图实际上就是个特征向量,之后,用这些HOG特征来训练分类器,思路就是对于物体相同但大小,方向不同的图像,我们可以用相同的 HOG 特征模式来检测物体,不管物体的位置和呈现方式。