HoG特征笔记

news2024/11/24 19:13:04

简介

        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.coloradmin.cn/o/860491.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Java中VO,BO,PO,DO,DTO的区别

术语解释: VO( View Object):显示层对象,通常是Web向模板渲染引擎层传输的对象。 BO( Business Object):业务对象。 由Service层输出的封装业务逻辑的对象。 DO( Data…

华为新版ENSP PRO模拟器测评:性能表现与功能扩展一览

一、引言 在网络领域不断涌现的新技术和复杂的网络拓扑要求,推动了网络设备模拟器的持续发展和创新。华为作为一家领先的通信技术解决方案提供商,不断致力于为网络工程师和技术从业人员提供更优秀的仿真环境。最近,华为推出了ensp pro模拟器的…

培训报名小程序-订阅消息发送

目录 1 创建API2 获取模板参数3 编写自定义代码4 添加订单编号5 发送消息6 发布预览 我们上一篇讲解了小程序如何获取用户订阅消息授权,用户允许我们发送模板消息后,按照模板的参数要求,我们需要传入我们想要发送消息的内容给模板&#xff0c…

MySQL 建表 及其 表的约束类型

目录 步骤: 1、选择数据库(mydb--自定义数据库) 2、建立班级表 3、建立学生表 4、增加约束删除约束 增添约束: 删除约束: 以班级表和学生表为例说明表的约束类型 步骤: 1、选择数据库(mydb--自定义数据库) 2、建立班级表 …

联发科:2023年7月合并营收317.63亿元新台币,环比下降 16.8%

据联发科公布,2023年7月合并营收为317.63亿元新台币(折合人民币约72.1亿元),环比下降16.8%,同比下降22.3%。而联发科前七个月的累计合并营收为2255.5亿元新台币(折合人民币约512亿元)&#xff0…

整理mongodb文档:改

个人博客 整理mongodb文档:改 求关注,求批评,求进步 文章概叙 本文主要讲的是mongodb的updateOne以及updateMany,主要还是在shell下进行操作,也讲解下主要的参数upsert以及更新的参数。 数据准备 本次需要准备的数据不是很多…

数据库线程池可用线程分析

1.事情的起源 项目在跑的过程中,突然间报没有可用的连接数。这个时候,服务进程还在,但是只要涉及到数据库的操作都会报错。 2.排查的思路 事件发生后,我们重启服务,监控的Connections数是258个,某台机器…

【VSCode】查看二进制文件

1.安装插件Hex Editor 2.打开二进制文件 3.执行Hex Editor命令

day21-110.平衡二叉树

110.平衡二叉树 力扣题目链接 给定一个二叉树,判断它是否是高度平衡的二叉树。 本题中,一棵高度平衡二叉树定义为:一个二叉树每个节点 的左右两个子树的高度差的绝对值不超过1。 示例 1: 给定二叉树 [3,9,20,null,null,15,7] 返回 true …

衡量七个方面,看敌我两方,谁胜算多大?安志强趣讲《孙子兵法》第4讲

衡量七个方面,看敌我两方,谁胜算多大?【安志强趣讲《孙子兵法》第4讲】 【原文】 故校之以计,而索其情。 【注释】 校:jiao,校量、比较的意思。 索:一种解释为探索、搜索,一种解释为…

试用redis的GEO实现附近商户案例

黑马点评 GEO 就是 Geolocation 的简写形式,代表地理坐标。 Redis 在 3.2 版本中加入了对 GEO 的支持,允许存储地理坐标信息,帮助我们根据经纬度来检索数据。 常见的命令有: GEOADD:添加一个地理空间信息&#xff…

数据结构入门:队列

目录 文章目录 前言 1.队列 1.1 队列的概念及结构 1.2 队列的实现 1.2.1 队列的定义 1.2.2队列的初始化 1.2.3 入队 1.2.4 判空 1.2.5 出队 1.2.6 队头队尾数据 1.2.7 队列长度 1.2.8 队列销毁 总结 前言 队列,作为一种重要的数据结构,在计算机科学中扮演…

“大数据杀熟”,原来是这样的

前几天和朋友去看电影,票是各自买的,买了票才发现自己比朋友买的票贵。一问才知道,朋友是新注册的账号,价格比我的便宜不少。 这就让我想起来之前看到的一个词“大数据杀熟”。 说现在一些互联网平台和商家已经成佛了&#xff0…

时序预测 | MATLAB实现EEMD-LSTM、LSTM集合经验模态分解结合长短期记忆神经网络时间序列预测对比

时序预测 | MATLAB实现EEMD-LSTM、LSTM集合经验模态分解结合长短期记忆神经网络时间序列预测对比 目录 时序预测 | MATLAB实现EEMD-LSTM、LSTM集合经验模态分解结合长短期记忆神经网络时间序列预测对比效果一览基本介绍模型搭建程序设计参考资料 效果一览 基本介绍 时序预测 | …

css中的var函数

css中的var函数 假设我们在css文件存在多个相同颜色值,当css文件越来越大的时候,想要改颜色就要手动在每个旧颜色上修改,这样维护工作非常难进行。 但是我们可以使用变量来存储值,这样可以在整个css样式表中重复使用&#xff0c…

halo --- 上传图片服务器错误

文章目录 问题定位过程1、查看日志 报错的是数据库操作异常2、再次上传一张小一点的图片3、检查nginx的配置文件 原因解决 问题 上传图片时,报错服务器错误(包括上传附件、博客文章插入图片、上传相册) 定位过程 1、查看日志 报错的是数据库…

GEE学习04-

0 回顾 之前学习的内容可以概括为: conda activate gee cd /d e:/geelearn jupyter lab可以在prompt中chrlc停止当前打开的jupyter lab. import ee #ee.Authenticate() import geemap geemap.set_proxy(port 1080) map geemap.Map() map1、视频课学习 之后跟着…

前端技术Vue学习笔记--003

前端技术Vue学习笔记 文章目录 前端技术Vue学习笔记1、Vue生命周期和生命周期的四个阶段1.1、Vue生命周期1.2、生命周期的四个阶段1.3、Vue生命周期函数<font colorred>&#xff08;钩子函数&#xff09; 2、小黑记账本&#xff08;案例&#xff09;3、工程化开发和脚手架…

python-02(入门基础篇2——基本常见语法)

python-02&#xff08;入门基础篇2——基本常见语法&#xff09; 1. 逻辑判断词1.1 布尔类型1.1.1 python为False的情况 1.2 逻辑判断词 not 2. for 语句2.1 语法结构2.2 例子2.2.1 例子1——循环迭代字符串2.2.2 例子2——进行数值循环2.2.2.1 简单循环&#xff08;结合range函…

从Spring源码看创建对象的过程

从Spring源码看创建对象的过程 Spring对于程序员set注入的属性叫做属性的填充、对于set注入之后的处理&#xff08;包括BeanPostProcessor的处理、初始化方法的处理&#xff09;叫做初始化。 研读AbstractBeanFactory类中的doGetBean()方法 doGetBean()方法首先完成的工作是…