zoukankan      html  css  js  c++  java
  • 特征检测之HOG

    参考:

    http://blog.csdn.net/liulina603/article/details/8291093

    http://blog.csdn.net/woxincd/article/details/18351807

    http://hi.baidu.com/nokltkmtsfbnsyq/item/f4b73d06f066cd193a53eec3

    http://www.tuicool.com/articles/fM3Mvu

    http://blog.csdn.net/yangtrees/article/details/7463431

    http://www.cnblogs.com/tornadomeet/archive/2012/08/15/2640754.html(源码解读)

    下面给出opencv的HOG特征提取代码:

    HOGDescriptor类可以完成HOG的特征提取过程,构造函数

     HOGDescriptor(Size win_size=Size(64, 128), Size block_size=Size(16, 16),
                      Size block_stride=Size(8, 8), Size cell_size=Size(8, 8),
                      int nbins=9, double win_sigma=DEFAULT_WIN_SIGMA,
                      double threshold_L2hys=0.2, bool gamma_correction=true,
                      int nlevels=DEFAULT_NLEVELS);

      win_size 检测窗口大小为128*64;

      block_size Block大小为16*16

      block_stride Block在检测窗口中上下移动尺寸为8*8

      cell_size Cell大小为8*8

      1个cell的梯度直方图化成9个bin

      //滑动窗口在检测图片中滑动的尺寸为8*8

    代码中的一个hog描述子是针对一个检测窗口而言的,所以一个检测窗口共有105= ((128-16)/8+1)*((64-16)/8+1)个block;一个block中有4个cell,而一个cell的hog描述子向量的长度为 9;所以检测窗口的hog向量长度=3780=105*4*9维。

    void main()
    {
        Mat trainImg; //需要分析的图片  
        trainImg=imread("test.png",0);   //读取图片  
        resize(trainImg, trainImg,Size(64, 128));
        HOGDescriptor *hog=new HOGDescriptor(cvSize(64,128),cvSize(16,16),cvSize(8,8),cvSize(8,8),9);  //具体意思见参考文献和opencv的api文档  
        vector<float>descriptors;//结果数组  
        hog->compute(trainImg, descriptors,Size(1,1), Size(0,0)); //调用计算函数开始计算  
        printf("%d
    ",descriptors.size()); //打屏一下结果数组的大小,看看是否符合文献的预估, 发现完全一样,那篇文章很给力 
      //打印结果 3780
    }
  • 相关阅读:
    浏览器渲染机制
    isEmpty 和 isBlank 的用法区别
    Mybatis-plus
    Java8的JVM内存结构
    【面试题】关于线程交替的面试题
    java中的final的作用
    线程池
    六种实现单例模式的方法
    SQL优化常用方法
    HTML学习笔记
  • 原文地址:https://www.cnblogs.com/adong7639/p/4443470.html
Copyright © 2011-2022 走看看