HoG特征笔记

简介

        HoG(Histogram of Oriented Gradient),方向梯度直方图。HoG特征是一种特征描述符。它通过计算和统计图像局部区域的梯度方向直方图来描述特征。

        HoG基于的底层原理是图像中局部目标的表象和形状(appearance and shape),能够用物体边缘的方向密度分布较好地描述出来。本质上就是对梯度信息的统计。

        HoG特征描述符生成方法:将图像分割成一个个小的细胞单元(cell,比如6*6为一个cell),对每个cell计算个像素点的梯度或边缘的方向直方图,最后将这些直方图组合起来构成最终的HoG特征描述符。

HoG特征提取流程

图像灰度化

        读取原始图片并转换为灰度图

Gamma校正调节图像对比度

        首先将图像进行归一化处理,然后进行预补偿(使用gamma函数,本质就是第一个指数运算)。然后将归一化的图像像素值转回到0-255之间。具体opencv代码可以到“参考资料”的第一个链接中去看看。

        进行Gamma校正可以调节图像对比度,降低图像局部的阴影和光照变化造成的影响。

        下面三张图,最左边是原图,中间是gamma值为1/2.2校正的图,右边是gamma值为2.2校正的图

计算每个像素的梯度

        (x,y)处像素的x方向和y方向上的梯度计算方法:

        G_x(x,y) = I(x + 1,y) - I(x-1,y)

        G_y(x,y) = I(x,y+1) - I(x,y - 1)

        (x,y)处像素的梯度幅值和方向分别为:

        G(x,y) = \sqrt{G_x(x,y)^2 + G_y(x,y)^2}

        \theta = tan^{-1}(\frac{G_y(x,y)}{G_x(x,y)})

图像划分为cell

        每个cell的大小一样,比如6*6个像素为一个cell。将图像划分为多个cell。

        需要注意的是,cell可以是矩形的,也可以 是放射状的(radial)。

统计每个cell的梯度直方图

        对每个cell内的像素点的梯度幅值和方向进行统计,得到该cell的梯度直方图。一般来说,将直方图划分为9个bin。

        原作者在论文中提到梯度方向为无符号且通道数为9时(9 bins),检测效果最好。“无符号”梯度(unsigned gradient)指的是bins平均分布在0-180度之间,每个bin是20度。“无符号”梯度方式中,梯度方向以及它旋转180度之后的方向被认为是一样的,以下图为例:

        上图中200-220度的像素会被统计到Z_2块里去。

         另外,“有符号”梯度(“signed” gradient)则是指bins平均分布在0-360度之间,假设仍然是9个bins,那么每个bin是40度。

        对每个cell内的所有像素,根据其梯度幅值和方向统计到不同的bin中。前面提到的bin是按照角度(梯度方向)划分的,那么梯度的幅值又起到什么作用呢?在实际计算中,梯度幅值是用来做权重分配用的。

         如上图所示,对于第一个像素(蓝圈标注),它的梯度方向值是80,我们将它的梯度幅值2放到80度对应的bin里。

        接下来看第四个像素(红圈标注),它的梯度方向值是10,这里由于0到10的距离,和10到20的距离是相等的。因此这个像素的梯度幅值4会均分为两个2分别加到0和20度对应的bin里。

        因此,幅值是会根据具体的梯度方向到相邻两个bin的距离进行加权分配的。

        还有一个比较特殊的地方是,如果角度大于160度时,计算距离权重的bins为0和180度这两个bins。比如对于165度,梯度幅值的分配比例为(180 - 165) / (165-160),为3:1,因此幅值的3/4(63.75)分配到了160这个bin,幅值的1/4(23.25)分配到了0这个bin

         遍历完cell中所有像素后,就能拿到这个cell对应的梯度直方图了。

 梯度直方图归一化

        局部图像的曝光度,以及前景背景之间的对比度经常会存在变化很大的情况,这会导致局部梯度变化也很大。梯度直方图归一化能够进一步对光照、阴影和边缘进行压缩,对于检测结果来说有很重要的作用。

        HOG的图像分割策略,一般来说有overlap和non-overlap两种。overlap指的是分割出的区块(patch)互相交叠,有重合的区域。non-overlap指的是区块不交叠,没有重合的区域。overlap方式计算量大,但有效利用了相邻像素信息。non-overlap计算量小,但有时会将连续的物体分割开,得到不太好的HoG特征。下面以overlap方式来说明。

        首先,将多个cell组成更大的块block。这里以2x2个cell作为一个block。以这个block大小为单位进行滑动,滑动方向是从左到右,从上到下。

        这里写图片描述

         如上图,block滑动的顺序是红、蓝、黄、粉、绿...。一个block有4个cell,每个cell包含9维特征向量,因此每个block将4个cell的特征向量串联起来后,总共有4x9=36维特征向量。

        接下来就对block进行直方图归一化处理。

        对于一个三维向量(9,12,36),它的长度为:\sqrt{9^2 + 12^2 + 36^2} = 39(L2范数)。将向量的每一个元素除以39,就得到了这个三维向量的归一化向量(0.231,0.308,0.923)。

        对于一个block来说,我们可以将其看做36x1的向量,用同样的方法进行归一化就得到了最终的结果。

HoG特征收集

        遍历所有的block,将block的归一化直方图结果串联起来得到最终的特征向量描述符。 

        假设图像大小为对于128*64的图像,cell大小为8*8,2*2个cell组成一个block。

        因此block大小为16*16,每个像素有9个梯度方向,则每个block内有 9*2*2=36维。

        block的滑动步长为8像素,则水平方向有128/8 -1 =  15个扫描窗口,垂直方向有64/8 -1 = 7个扫描窗口,总共有 36 * 15 * 7 = 3780个特征。

HoG特征的优缺点

        优点:

                HoG可以描述局部的形状信息。

                量化了位置和方向,一定成都上可以减小平移和旋转带来的影响。

                采用局部区域归一化直方图,可以减少部分光照变化带来的影响。

        缺点:

                描述符维数较高,生成速度较慢。

                对噪声敏感。

参考资料

手写HOG_gamma归一化_Lyttonkeepgoing的博客-CSDN博客为了减少光照因素的影响,降低图像局部的阴影和光照变化所造成的影响,我们首先采用Gamma校正法对输入图像的颜色空间进行标准化(或者说是归一化)。所谓的Gamma校正可以理解为提高图像中偏暗或者偏亮部分的图像对比效果,能够有效地降低图像局部的阴影和光照变化。##作者在他的博士论文里有提到,对于涉及大量的类内颜色变化,如猫,狗和马等动物,没标准化的RGB图效果更好,而牛,羊的图做gamma颜色校正后效果更好。 是否用gamma校正得分析具体的训练集情况。举一个非常简单的例子对于85这个像素点 他的梯度赋值为 G_gamma归一化https://blog.csdn.net/m0_53292725/article/details/127069091

Gamma校正原理及实现-腾讯云开发者社区-腾讯云gamma校正原理: 假设图像中有一个像素,值是 200 ,那么对这个像素进行校正必须执行如下步骤:   1. 归一化 :将像素值转换为 0 ~ 1 之间的实数。 算法如下 : ( i + 0. 5)/256 这里包含 1 个除法和 1 个加法操作。对于像素 A 而言 , 其对应的归一化值为 0. 783203 。 icon-default.png?t=N6B9https://cloud.tencent.com/developer/article/2097984

http://vision.stanford.edu/teaching/cs231b_spring1213/papers/CVPR05_DalalTriggs.pdfhttp://vision.stanford.edu/teaching/cs231b_spring1213/papers/CVPR05_DalalTriggs.pdfHistogram of Oriented Gradients explained using OpenCVHistogram of Oriented Gradients (HOG) is a feature descriptor, used for object detection. Read the blog to learn the theory behind it and how it works.https://learnopencv.com/histogram-of-oriented-gradients/目标检测的图像特征提取之(一)HOG特征_输出hog特征向量文件_zouxy09的博客-CSDN博客目标检测的图像特征提取之(一)HOG特征zouxy09@qq.com1、HOG特征: 方向梯度直方图(Histogram of Oriented Gradient, HOG)特征是一种在计算机视觉和图像处理中用来进行物体检测的特征描述子。它通过计算和统计图像局部区域的梯度方向直方图来构成特征。Hog特征结合SVM分类器已经被广泛应用于图像识别中,尤其在行人检测中获得了极大的_输出hog特征向量文件https://blog.csdn.net/zouxy09/article/details/7929348

特征提取——HOG方向梯直方图_直方图特征提取步骤_勉旃的博客-CSDN博客1、简介 HOG(Histogram of Oriented Gridients的简写)特征检测算法,最早是由法国研究员Dalal等在CVPR-2005上提出来的,一种解决人体目标检测的图像描述子,是一种用于表征图像局部梯度方向和梯度强度分布特性的描述符。其主要思想是:在边缘具体位置未知的情况下,边缘方向的分布也可以很好的表示行人目标的外形轮廓。 2、检测步骤 HOG特征检测算法的几个步_直方图特征提取步骤https://blog.csdn.net/yushupan/article/details/78994754 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/61108.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

公网环境Windows系统,远程桌面控制树莓派《内网穿透》

远程桌面控制树莓派,我们可以用xrdp协议来实现,它内部使用的是windows远程桌面的协议。我们只需要在树莓派上安装xrdp,就可以在同个局域网下远程桌面控制树莓派。 而如果需要在公网下远程桌面控制树莓派,可以通过cpolar内网穿透&a…

前端小练--社区主页

文章目录 前言首页结构固定导航栏左侧导航itemitem标志 头部推荐文章展示ITEM实现ToolTip完整实现 首页完整实现 前言 废话不多说,直接看到效果: 是的也许你已经发现了这个页面和某个网站长得贼像。没错是这样的,这个布局我确实看起来很舒服…

【flink】Checkpoint expired before completing.

使用flink同步数据出现错误Checkpoint expired before completing. 11:32:34,455 WARN org.apache.flink.runtime.checkpoint.CheckpointFailureManager [Checkpoint Timer] - Failed to trigger or complete checkpoint 4 for job 1b1d41031ea45d15bdb3324004c2d749. (2 con…

springboot项目打包 以及打包碰到各种问题

PS:以上资料都来自于网络 1.IDEA 将springboot项目打包 IDEA如何打包springboot成jar包,并运行、停止、重启,本地依赖不能打包怎么办_真是6的不行的博客-CSDN博客 2.[WARNING] Error injecting: org.springframework.boot.maven.RepackageMojo 1.注释…

Maven安装与配置,Eclipse配置Maven【图文并茂的保姆级教程】

🥳🥳Welcome Huihuis Code World ! !🥳🥳 接下来看看由辉辉所写的关于Maven的相关操作吧 目录 🥳🥳Welcome Huihuis Code World ! !🥳🥳 一.Maven是什么? 二.Maven的下…

Ctfshow web入门 XXE 模板注入篇 web373-web378 详细题解 全

CTFshow XXE web373 学习资料: (梭哈~) https://www.cnblogs.com/20175211lyz/p/11413335.html https://www.cnblogs.com/zhaijiahui/p/9147595.html https://www.cnblogs.com/r00tuser/p/7255939.html https://mp.weixin.qq.com/s?__bizMz…

统计列表加小计

提供个思路,欢迎其他大佬指正 注意使用 排序(seq),group by,union all SELECTf.* FROM(SELECTcus_id,max( cusname ) cusname,NULL dodate,sum( money ) sumMoney,NULL payed,NULL unpayed,1 seq FROMtb_outbase GRO…

【高频面试题】多线程篇

文章目录 一、线程的基础知识1.线程与进程的区别2.并行和并发有什么区别?3.创建线程的方式有哪些?3.1.Runnable 和 Callable 有什么区别?3.2.run()和 start()有什么区别? 4.线程包括哪些状态,状态之间是如何变化的4.1.…

BGP基础实验建邻+宣告实验

实验题目如下: 实验拓扑如下: 实验要求如下: 【1】除R5的5.5.5.0环回外,其他所有的环回均可互相访问 实验思路如下: (1)合理的IP配置 (2)合理的BGP配置 (…

Technical debt (技术负债 / 技术债)

Technical debt (技术负债 / 技术债) In software development, or any other IT field (e.g., Infrastructure, Networking, etc.) technical debt (also known as design debt or code debt) is the implied cost of future reworking required when choosing an easy but li…

Linux Linux系统文件类型与文件权限

一、文件类型 (1)在windows系统中文件类型以文件的后缀名来区分,在Linux系统中文件类型不以后缀名来区分。注意编写c代码时必须写后缀名.c,不然C编译器不会编译该文件。 (2)在Linux系统中以文件的标志来区…

远程桌面配置指南:保留TCP地址、配置隧道和使用固定TCP地址

远程桌面配置指南:保留TCP地址、配置隧道和使用固定TCP地址 文章目录 远程桌面配置指南:保留TCP地址、配置隧道和使用固定TCP地址第一步:保留TCP地址第二步:为远程桌面隧道配置固定的TCP地址第三步:使用固定TCP地址远程…