一、基本HOG算法

HOG特征最早出现在SIFT算法中,由于其极强的图像特征描述能力,逐渐被人们熟知和广泛运用,其在目标检测方面表现尤为突出。

HOG特征提取过程

步骤一:遍历图像每个像素点,以其为中心取8*8像素领域作为网格(block)区域;

步骤二:将网格(block)区域平均分成4个大小相等的细胞单元(cell),每个细胞单元的大小是4*4个像素;

步骤三:计算所有细胞单元(cell)中的每个像素的梯度幅值和梯度方向,梯度算子使用中心算子[1,0,-1];

其中,H(x,y)为每个像素水平方向的梯度大小,V(x,y)为垂直方向的梯度大小。o(x,y)为像素(x,y)的梯度 方向,m(x,y)为它的梯度幅值。

步骤四:将梯度方向限定在(0,180°)内,平均分成8个区间,用有符号的8个方向表示。根据下图中的椭圆圈的 高斯加权范围将单元(cell)上所有相同梯度方向的像素点的梯度幅值加权累加,组成该单元的8维梯度方向直方图。

步骤五:计算得到细胞单元(cell)的8维梯度方向直方图,将一个网格(block)区域中4个细胞单元(cell)的梯度直方图连接起来,得到一个网格(block)区域的4*8=32维的梯度直方图特征。连接所有网格(block)区域的直方图特征,并采用L2-norm归一化,最终得到HOG特征。 一副大小为128*128的图像,可以分成16*16=256个无重叠网格区域,其HOG特征向量的长度为256*32=8192。

二、空间多尺度HOG模型

       HOG算子是一种有效的形状描述子,但其有一个重要不足,即丢弃了局部特征之间的空间排列信息。空间多尺度HOG模型,能够很好地表述物体的形状和空间布局。
    (1)逐层将128*128大小的原图像细化分为一系列不同尺度的网格(block)子区域。若细化为L层,则 l 层上有4^l 个子区域图像,每个子区域大小为128/2^l  *  128/2^l(l=0,1,.....,L-1)。
    (2)分别逐层计算每个网格(block)子区域的梯度直方图。梯度方向的方位仍设为(0,180°),量化区间数为k个。
    (3)采用L2-norm归一化每一层各个网格(block)子区域的梯度方向直方图,按顺串接起来,得到整幅图像的空间多尺度HOG特征。若原图像分为L层,每一层有4^L个子区域,梯度方向直方图有k个区间,则串接后的特征向量的总长度为P:
                                   

HOG 梯度方向直方图简介(转载)的更多相关文章

  1. 目标检测之hog(梯度方向直方图)---hog简介0

    梯度直方图特征(HOG) 是一种对图像局部重叠区域的密集型描述符, 它通过计算局部区域的梯度方向直方图来构成特征.Hog特征结合SVM分类器已经被广泛应用于图像识别中,尤其在行人检测中获得了极大的成功 ...

  2. (转)梯度方向直方图HOG(Histograms of Oriented Gradients )

    HOG(Histograms of Oriented Gradients )梯度方向直方图 方向梯度直方图(Histogram of Oriented Gradient, HOG)特征是一种在计算机视 ...

  3. Monte Carlo方法简介(转载)

    Monte Carlo方法简介(转载)       今天向大家介绍一下我现在主要做的这个东东. Monte Carlo方法又称为随机抽样技巧或统计实验方法,属于计算数学的一个分支,它是在上世纪四十年代 ...

  4. 目标检测之行人检测(Pedestrian Detection)基于hog(梯度方向直方图)--- 梯度直方图特征行人检测、人流检测2

    本文主要介绍下opencv中怎样使用hog算法,因为在opencv中已经集成了hog这个类.其实使用起来是很简单的,从后面的代码就可以看出来.本文参考的资料为opencv自带的sample. 关于op ...

  5. HttpClient 与 HtmlParser 简介 转载

    转载地址:https://www.ibm.com/developerworks/cn/opensource/os-cn-crawler/ 本小结简单的介绍一下 HttpClinet 和 HtmlPar ...

  6. Spring 000 框架简介 (转载)

    转载自:https://my.oschina.net/myriads/blog/37922 1.使用框架的意义与Spring的主要内容 随着软件结构的日益庞大,软件模块化趋势出现,软件开发也需要多人合 ...

  7. 来自苹果的编程语言——Swift简介转载】

    关于 这篇文章简要介绍了苹果于WWDC 2014发布的编程语言——Swift. 原文作者: Lucida Blog 新浪微博 豆瓣 转载前请保留出处链接,谢谢. 前言 在这里我认为有必要提一下Brec ...

  8. ISO 14229 简介 转载

    作者:autogeek 原文链接:http://www.cnblogs.com/autogeek/p/4458591.html 前言 由于工作中经常用到ISO-14229,因此决定对该协议做个总体介绍 ...

  9. PowerMock 简介--转载

    原文地址:https://www.ibm.com/developerworks/cn/java/j-lo-powermock/ EasyMock 以及 Mockito 都因为可以极大地简化单元测试的书 ...

随机推荐

  1. sql删除语句

    TRUNCATE TABLE Moisture_test 删除表里所有的数据,就连主键的自增也被删除delete Moisture_test 删除表里数据但是就连主键的自增没有被删除

  2. Query的选择器中的通配符[id^='code']或[name^='code']

        1.选择器 (1)通配符: $("input[id^='code']");//id属性以code开始的所有input标签 $("input[id$='code'] ...

  3. DataGridView复选框实现全选功能,并取被选中的某行某列的值(三)

    目标: 一.选中全选这个复选框,会选中第一列所有的复选框 拉过来一个CheckBox控件(CheckBox1)覆盖在第一列的标题上,文本值:全选 方法:双击上面拉的CheckBox控件,进入其事件 p ...

  4. HighAvailability和LoadBalancer

    HighAvailability                         LoadBalancer 红帽RHCS                                lvs(三种工作 ...

  5. Hibernate4 No Session found for current thread原因

    Hibernate4 与 spring3 集成之后, 如果在取得session 的地方使用了getCurrentSession, 可能会报一个错:“No Session found for curre ...

  6. flask剖析

    1.为何只要通过import request,就能拿到对应的request呢?怎么解决区分请求,区分线程的问题? 简而言之,就是通过拿栈顶对象就表示是当前活动的对象 但对于多线程,由于栈的数据结构是 ...

  7. Android 之 JSON操作

    Android默认已经集成了操作JSON相关的API,如下所示: 也可以不使用JSON工具类,直接使用字符串拼接. 注意:可以使用字符串来构造JSONArray和JSONObject,这就是JSON解 ...

  8. 隐藏与显示:display/visibility/visible区别

    说到标签的隐藏,你们会用到什么呢?display?visibility?还是服务器控件的visible? 显然,这三者都能起到隐藏与显示的效果,但是用途确完全不一样,请看用法与区别: <div ...

  9. JavaScript 时间特效 显示当前时间

    <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/ ...

  10. JS创建自定义对象

    普通对象的创建: 创建对象: 1.people = new Object(); people.name = "lin"; people.age = "26“; 2.创建字 ...