计算机视觉面试考点(2)HOG

计算机视觉工程师在面试过程中主要考察三个内容:图像处理、机器学习、深度学习。然而,各类资料纷繁复杂,或是简单的知识点罗列,或是有着详细数学推导令人望而生畏的大部头。为了督促自己学习,也为了方便后人,决心将常考必会的知识点以通俗易懂的方式设立专栏进行讲解,努力做到长期更新。此专栏不求甚解,只追求应付一般面试。希望该专栏羽翼渐丰之日,可以为大家免去寻找资料的劳累。每篇介绍一个知识点,没有先后顺序。想了解什么知识点可以私信或者评论,如果重要而且恰巧我也能学会,会尽快更新。最后,每一个知识点我会参考很多资料。考虑到简洁性,就不引用了。如有冒犯之处,联系我进行删除或者补加引用。在此先提前致歉了!

HOG
Histogram of Oriented Gradients
方向梯度直方图

原理

HOG是一种描述图像的特征。顾名思义,主要对像素的梯度方向敏感。
该特征最早用于行人检测,即检测一张图像中是否包含行人。
步骤如下:

  1. 使用常用图像预处理方法,如去噪,对比度调整等,对图像进行处理。
  2. 转换为灰度图像。
  3. 使用常用梯度算子,求取每一个像素点的水平梯度x,竖直梯度y,将两者平方相加开根号求得梯度大小。
  4. 使用x,y以及反正切函数计算梯度方向,并统一到0到180度的区间。
  5. 对于每一个像素有了两个参数,梯度大小和梯度方向。
  6. 将180度分为n个区间,比如9个:0,20,40,60,80,100,120,140,160。
  7. 如果一个像素的梯度大小为10,梯度方向是60,那么60区间加10。如果梯度大小为40,梯度方向为85,那么80区间加30(40的四分之三),100区间加10(40的四分之一)。
  8. 对于一个mxm的cell,比如8x8,每一个点都进行第7步的统计,那么此cell会得到一个9维的向量。
  9. k个cell,如4个组成一个正方形block,每一个cell的9维特征进行归一化。将4个cell的特征连接,获得36维特征。
  10. 将图像所有的block的特征相连,如果有100个block,那么最后的图像特征就是3600维的。这就是HOG特征。

细节

一般会让block之间会有一定的重叠,在一定程度上缓解了同一物体被分割的情况,但是会大幅增加计算量。
90度和270度的梯度方向虽然相反,但是都是竖直走向,区分上下没有太大意义。所以可以将270度变为90度,即最后把0到360度变成了0到180度。
不使用0到360的原因是,0到180的实验效果好。作者没有进一步解释。我认为如果梯度方向划分的区间大小相同,0到360度的特征维度就大了一倍,但是大的这一倍其实是没必要的,所以造成了性能的下降。
可以直接处理RGB图像,对三个维度分别计算梯度,取最大值。可以,但没必要。
特征归一化是为了减轻光照影响,因为同样的梯度,如果图像亮一些,HOG特征就会变大,这样对比较图像中较暗处的梯度就不公平了。
使用block的原因是当block重叠时,重叠的cell的特征可以反复利用。所以每张图只需要计算每个cell(它们不重叠)的特征。如果使用cell重叠,那么每张图要计算很多重叠的cell的特征,增加了计算量。

扩展

提取的HOG特征下一步一般使用SVM进行分类。
HOG可以与金字塔思想结合,如下所示。每一个level的block大小不同,最后将每一个level的HOG连接,形成最终的HOG。这样可以增强对不同尺度特征的敏感性。当然每一个block的特征要归一化,因为大block的特征向量中的数字肯定比小block的特征向量中的数字大。
在这里插入图片描述


欢迎讨论 欢迎吐槽

发布了39 篇原创文章 · 获赞 143 · 访问量 2万+

猜你喜欢

转载自blog.csdn.net/weixin_39417323/article/details/105413666