计算机视觉-1.1HOG特征

一.基础概念

当我们看到一张图片的时候可以从多个角度进行描述,例如颜色、纹理、形状,这里的颜色、纹理、形状都是特征。在传统机器学习算法中,一般会从原始特征中进一步的提取高层特征,有两个外国人新发明了一种高层特征来描述图片,就是HOG(Histogram of Oriented Gradient)方向梯度直方图。与冷暖亮暗一样,HOG也要用数学方法来表示。

二.方向梯度

每个像素有自己的梯度,灰度图像和彩色图像都可以用于计算梯度图,对于彩色图像,先对三通道颜色值分别计算梯度,然后取梯度值最大的那个作为该像素的梯度。一般计算前先要做一些预处理,为了简化,现在就假设用处理过的最简单灰度图为例,计算一个像素的梯度大小和梯度方向:
把图像看作一个二维函数,每一点有x,y两个方向的导数。
计算机视觉-1.1HOG特征_第1张图片但是像素是离散的,所以无穷小要改为1
计算机视觉-1.1HOG特征_第2张图片计算机视觉-1.1HOG特征_第3张图片计算梯度的大小和方向
计算机视觉-1.1HOG特征_第4张图片梯度值特别大的地方就代表像素间的值差别大,就可以判断为边缘。这是基本的梯度概念,在实际计算机操作中,还需要改成计算机可以操作的模式,例如把平方开方改成用绝对值代替、使用计算模板等等。可以使用OpenCV的Sobel(索贝尔)算子实现。

三.计算梯度直方图

有了每一个元素的梯度大小和方向,下一步就要把这些数据整合为一张直方图。
流程是这样
1.先把一张图分为若干个小单元。例如选择每个小单元的大小是8*8,小单元叫做cell。
计算机视觉-1.1HOG特征_第5张图片

2.创建一个数组,这个数组每一个位置代表着一个梯度方向。梯度方向的取值范围是0-180,将180分为若干份。例如将角度范围分成9份,也就是9 bins,每20°为一个单元。创建一个长度为9的数组。
在这里插入图片描述3.判断cell中每一个像素的方向和大小,向数组中填数字。
计算机视觉-1.1HOG特征_第6张图片
例如绿色圈内的像素的梯度方向是80,就把梯度大小66加到80对应的位置。
红色圈内的元素的梯度方向是10,就把对应的大小2744按比例拆分,分别加到0和20的位置。最后得到的这个数组,就是这个cell的梯度直方图。
计算机视觉-1.1HOG特征_第7张图片

四.归一化梯度直方图

现在有了每个cell的直方图了,那么怎么得到整张图的梯度直方图呢?
1.先对几个相邻的cell进行归一化处理,例如选择22个cell作为一组,这四个cell称为一个block。
第一个block进行归一化,得到的是9
4=36维的直方图。
2.然后将block移动一个cell的距离,再归一化得到一个9*4=36的直方图。

3.假如整张图被分为了816个cell,那么由于block=22,现在就要进行715次归一化,最后整个hog的特征描述符长度为94715=3780。

最后,这张图的hog特征就是一个3780长度的数组,数组中记录的是每个block中归一化后的梯度值与梯度方向。

https://zhuanlan.zhihu.com/p/85829145
https://blog.csdn.net/wjb820728252/article/details/78395092
Navneet Dalal and Bill Triggs在05年用HOG技术进行行人检测
图像梯度

你可能感兴趣的:(人工智能,计算机视觉,计算机视觉,图像处理,人工智能)