• 特征检测之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
    }
  • 相关阅读:
    Java中判断两个列表是否相等
    chrome:插件、跨域、调试....
    mac 开发环境采坑
    webpack升级踩坑
    js-使用装饰器去抖
    React setState 笔试题,下面的代码输出什么?
    react 解决:容器组件更新,导致内容组件重绘
    centos使用ngnix代理https
    javascript 理解继承
    js 数据监听--对象的变化
  • 原文地址:https://www.cnblogs.com/adong7639/p/4443470.html
Copyright © 2020-2023  润新知