当前位置: 首页 > article >正文

方向梯度直方图(Histogram of Oriented Gradient)

1.方向梯度直方图(Histogram of Oriented Gradient)

笔记参考:HOG特征提取
笔记参考:一文讲解方向梯度直方图(hog)
笔记参考:Histogram of Oriented Gradients (HOG) | By Dr. Ry @Stemplicity
笔记参考:C34 | HOG Feature Vector Calculation | Computer Vision | Object Detection | EvODN
笔记参考:Histograms of Oriented Gradients (HOG)
笔记参考:HOG算法中用到三线性插值(Trilinear Interpolation)的作用及其用法(包括HOG的matlab源代码分析)
步骤如下:

  1. 图片预处理
  2. 计算图像梯度
  3. 计算图像梯度直方图
  4. 对Block进行L2归一化
  5. 合并Block特征向量得到整个图像的特征向量

1.1 图片预处理


裁剪图片、去除光照等不良因素

1.2 计算图像梯度

将处理后的图像划分为小的Cell,几个Cells组成Block

下图为其中一个cell中的像素情况


计算整个图像中每个Cell的x方向梯度和y方向梯度,可以使用Sobel算子对图像进行卷积运算即可完成此步骤

使用sobelx得到y方向边缘(中间0与像素对应乘为0,也就是忽略中间竖线,只保留左右竖线)

使用sobely得到x方向边缘(中间0与像素对应乘为0,也就是忽略中间横线,只保留上下横线)

计算每个Cell的 x x x 方向梯度 G x G_x Gx y y y 方向梯度 G y G_y Gy后,计算梯度大小和方向(由X,Y方向合成)
G = G x 2 + G y 2   θ = a r c t a n G y G x G=\sqrt{G_x^2+G_y^2}\\ ~\\ \theta=arctan\frac{G_y}{G_x} G=Gx2+Gy2  θ=arctanGxGy
最终得到图像中所有cell的梯度大小和梯度方向,

1.3 计算图像梯度直方图

量化角度:将0-180°划分为9个部分(9 bins)


上图中为一个Cell的梯度大小和梯度方向图,接下来需要进行统计,将每个像素对应的梯度大小映射到对应方向的范围内。
问题:使用插值对梯度直方图进行修正?将某个像素点的梯度幅值以不同的权重累加到相应的bin上,
插值是为了防止产生区域混叠效应(什么是混叠效应?)


将同一个cell中的统计完成后得到一个cell的梯度直方图

按照以上方式将图像中的每个cell的梯度大小图和梯度方向图整合成一个个直方图
个人理解:一个cell的直方图可以写为向量形式 [第一个bin的数值大小,第二个bin的数值大小,……]

1.4 对Block进行L2 归一化

几个cells组成一个block

将一个block中的每个cell直方图的向量拼接起来组合成一个block的向量
因梯度对光照敏感(为什么?)所以需要将直方图归一化(使用L2范数)以此消除光照影响
将block向量使用L2范数归一化
v e c = [ a , b , c ]   ∣ v e c ∣ = a 2 + b 2 + c 2   归一化后的向量 = [ a ∣ v e c ∣ , b ∣ v e c ∣ , c ∣ v e c ∣ ] vec=[a,b,c]\\ ~\\ |vec|=\sqrt{a^2+b^2+c^2}\\ ~\\ \text{归一化后的向量}=[\frac{a}{|vec|},\frac{b}{|vec|},\frac{c}{|vec|}] vec=[a,b,c] vec=a2+b2+c2  归一化后的向量=[vecavecbvecc]
每个block都有一个特征向量,block在图像上滑动窗口,滑过整个图像

1.5 合并Block特征向量

将所有block的特征向量拼接在一起作为整幅图像的特征向量,图像特征向量作为支持向量机的输入,SVM进行分类

1.6 总结

图像->cell梯度->cell梯度直方图 ->cell特征向量 ->block特征向量->图像特征向量


http://www.kler.cn/a/13922.html

相关文章:

  • Linux 这4个进程相关的命令,太好用!
  • Mybatis学习基础篇(一)——使用Maven快速搭建一个mybatis项目,并实现简单的增删改查
  • MySQL 8.0原理与实战一网打尽,甲骨文数据库专家硬刚5年之作
  • delphi sqlite 避免DataBase is Locked
  • 【深度学习】基于MindSpore和pytorch的Softmax回归及前馈神经网络
  • 远程访问及控制(SSH)
  • 华润数科、京东科技、京彩未来携手共进,求解“科技×产业”最大值
  • 九龙证券|两日连涨,猪价或见底!二季度末生猪养殖有望扭亏为盈
  • 手推FlinkML2.2(一)
  • 2023mathorcup数学建模ABCD思路分析
  • JavaSE 07 API - Part 02
  • Arduino 多任务软件定时器:Simpletimer库的使用
  • 【李宏毅】GNN学习笔记
  • 海睿思分享 | 风控监管,守住企业生命线
  • 项目管理---(1)项目管理一般知识
  • 【超算/先进计算学习】日报6
  • Android.mk文件解析
  • SLAM--ceres solver
  • 【面试】你在项目中遇到过慢查询问题吗?你是怎么做SQL优化的?
  • 基于Java+Springboot+Vue+elememt美食论坛平台设计实现