1.方向梯度直方图(Histogram of Oriented Gradient)
笔记参考:HOG特征提取
 笔记参考:一文讲解方向梯度直方图(hog)
 笔记参考:Histogram of Oriented Gradients (HOG) | By Dr. Ry @Stemplicity
 笔记参考:C34 | HOG Feature Vector Calculation | Computer Vision | Object Detection | EvODN
 笔记参考:Histograms of Oriented Gradients (HOG)
 笔记参考:HOG算法中用到三线性插值(Trilinear Interpolation)的作用及其用法(包括HOG的matlab源代码分析)
 步骤如下:
- 图片预处理
 - 计算图像梯度
 - 计算图像梯度直方图
 - 对Block进行L2归一化
 - 合并Block特征向量得到整个图像的特征向量
 
1.1 图片预处理

 裁剪图片、去除光照等不良因素
1.2 计算图像梯度
将处理后的图像划分为小的Cell,几个Cells组成Block
 
 下图为其中一个cell中的像素情况


 计算整个图像中每个Cell的x方向梯度和y方向梯度,可以使用Sobel算子对图像进行卷积运算即可完成此步骤
 
 使用sobelx得到y方向边缘(中间0与像素对应乘为0,也就是忽略中间竖线,只保留左右竖线)
 
 使用sobely得到x方向边缘(中间0与像素对应乘为0,也就是忽略中间横线,只保留上下横线)
计算每个Cell的  
     
      
       
       
         x 
        
       
      
        x 
       
      
    x 方向梯度 
     
      
       
        
        
          G 
         
        
          x 
         
        
       
      
        G_x 
       
      
    Gx和  
     
      
       
       
         y 
        
       
      
        y 
       
      
    y 方向梯度 
     
      
       
        
        
          G 
         
        
          y 
         
        
       
      
        G_y 
       
      
    Gy后,计算梯度大小和方向(由X,Y方向合成)
  
      
       
        
        
          G 
         
        
          = 
         
         
          
           
           
             G 
            
           
             x 
            
           
             2 
            
           
          
            + 
           
           
           
             G 
            
           
             y 
            
           
             2 
            
           
          
         
         
        
            
         
         
        
          θ 
         
        
          = 
         
        
          a 
         
        
          r 
         
        
          c 
         
        
          t 
         
        
          a 
         
        
          n 
         
         
          
          
            G 
           
          
            y 
           
          
          
          
            G 
           
          
            x 
           
          
         
        
       
         G=\sqrt{G_x^2+G_y^2}\\ ~\\ \theta=arctan\frac{G_y}{G_x} 
        
       
     G=Gx2+Gy2 θ=arctanGxGy
 最终得到图像中所有cell的梯度大小和梯度方向,
1.3 计算图像梯度直方图
量化角度:将0-180°划分为9个部分(9 bins)
 

 上图中为一个Cell的梯度大小和梯度方向图,接下来需要进行统计,将每个像素对应的梯度大小映射到对应方向的范围内。
 问题:使用插值对梯度直方图进行修正?将某个像素点的梯度幅值以不同的权重累加到相应的bin上,
 插值是为了防止产生区域混叠效应(什么是混叠效应?)
 
 

 将同一个cell中的统计完成后得到一个cell的梯度直方图
 
 按照以上方式将图像中的每个cell的梯度大小图和梯度方向图整合成一个个直方图
 个人理解:一个cell的直方图可以写为向量形式 [第一个bin的数值大小,第二个bin的数值大小,……]
1.4 对Block进行L2 归一化
几个cells组成一个block
 
 将一个block中的每个cell直方图的向量拼接起来组合成一个block的向量
 因梯度对光照敏感(为什么?)所以需要将直方图归一化(使用L2范数)以此消除光照影响
 将block向量使用L2范数归一化
  
      
       
        
        
          v 
         
        
          e 
         
        
          c 
         
        
          = 
         
        
          [ 
         
        
          a 
         
        
          , 
         
        
          b 
         
        
          , 
         
        
          c 
         
        
          ] 
         
         
        
            
         
         
        
          ∣ 
         
        
          v 
         
        
          e 
         
        
          c 
         
        
          ∣ 
         
        
          = 
         
         
          
           
           
             a 
            
           
             2 
            
           
          
            + 
           
           
           
             b 
            
           
             2 
            
           
          
            + 
           
           
           
             c 
            
           
             2 
            
           
          
         
         
        
            
         
         
        
          归一化后的向量 
         
        
          = 
         
        
          [ 
         
         
         
           a 
          
          
          
            ∣ 
           
          
            v 
           
          
            e 
           
          
            c 
           
          
            ∣ 
           
          
         
        
          , 
         
         
         
           b 
          
          
          
            ∣ 
           
          
            v 
           
          
            e 
           
          
            c 
           
          
            ∣ 
           
          
         
        
          , 
         
         
         
           c 
          
          
          
            ∣ 
           
          
            v 
           
          
            e 
           
          
            c 
           
          
            ∣ 
           
          
         
        
          ] 
         
        
       
         vec=[a,b,c]\\ ~\\ |vec|=\sqrt{a^2+b^2+c^2}\\ ~\\ \text{归一化后的向量}=[\frac{a}{|vec|},\frac{b}{|vec|},\frac{c}{|vec|}] 
        
       
     vec=[a,b,c] ∣vec∣=a2+b2+c2 归一化后的向量=[∣vec∣a,∣vec∣b,∣vec∣c]
 每个block都有一个特征向量,block在图像上滑动窗口,滑过整个图像
1.5 合并Block特征向量
将所有block的特征向量拼接在一起作为整幅图像的特征向量,图像特征向量作为支持向量机的输入,SVM进行分类
1.6 总结
图像->cell梯度->cell梯度直方图 ->cell特征向量 ->block特征向量->图像特征向量



















