HOG简介 HOG全称:方向梯度直方图(Histogram of Oriented Gradient),发表于2005年的CVPR,是一种图像特征提取算法,和SVM分类器结合应用于行人检测领域。 HOG通过计算图像中每个像素的梯度的大小和方向,来获取图像的梯度特征,是一种特征描述子。 HOG特征图: ? HOG代码实现 1.基于python的scikit-image库提供了HOG特征提取的接口: from skimage import feature as ft features = ft.hog(image map 应用示例: from skimage.feature import hog gray = rgb2gray(image) / 255.0 fd = hog(gray, orientations
传统hog特征提取。 关于HOG特征(梯度统计直方图)简单介绍一下,首先是对原图进行灰度化(hog统计的是梯度信息,色彩几乎没有贡献),再进行gamma压缩和归一化(减轻光照影响)。 那么hog特征怎么用到CSK的框架中呢?直接用显然是不可以的,因为很难把一个一维特征和pos信息联系起来,而且对一个hog特征进行循环移位也是没有意义的。 Discriminatively Trained Part Based Models,论文的第六部分详细说明了hog特征和fhog特征的提取方法,对于传统的hog特征还是做了一些改进。 5.hog特征融合入相关滤波之中 剩下的东西就简单很多了,在2中我们获得了图像的hog特征的cell级映射,无论是31维的或者是36维的,在下面的处理都是一样的了。 无论是在训练或者检测,我们都用获得的hog特征去替代CSK中的灰度特征。简单的叠加肯定是不行的了,完全失去了统计hog特征的意义。 回顾一下CSK中训练和检测时的两个公式: ?
领8888元新春采购礼包,抢爆款2核2G云服务器95元/年起,个人开发者加享折上折
方向梯度直方图(Histogram of Oriented Gradient, HOG)于2005年提出,是一种常用的特征提取方法,HOG+SVM在行人检测中有着优异的效果。 HOG基本思想: 在一幅图像中,梯度或边缘的方向密度分布能够很好地描述局部目标区域的特征,HOG正是利用这种思想,对梯度信息做出统计,并生成最后的特征描述。 HOG构建方向梯度直方图: HOG构建方向梯度直方图在cell中完成,bins的个数决定了方向的范围。 ? 细胞单元中的每一个像素点都为某个基于方向的直方图通道投票。 HOG的OpenCV实现: OpenCV中,HOG被封装在了HOGDescriptor 类中,而且OpenCV提供了直接利用HOG+SVM进行多尺度行人检测的函数detectMultiScale() int DescriptorDim;//HOG描述子的维数 Mat samFeatureMat, samLabelMat; //依次读取正样本图片,生成HOG描述子 for (int i = 1
前言 方向梯度直方图(Histogram of Oriented Gradient, HOG)特征是一种在计算机视觉和图像处理中用来进行物体检测的特征描述子。 Hog特征结合SVM分类器已经被广泛应用于图像识别中,尤其在行人检测中获得了极大的成功。 需要提醒的是,HOG+SVM进行行人检测的方法是法国研究人员Dalal在2005的CVPR上提出的,而如今虽然有很多行人检测算法不断提出,但基本都是以HOG+SVM的思路为主。 HOG特征描述子提取 灰度图像转换 梯度计算 分网格的梯度方向直方图 块描述子 块描述子归一化 特征数据与检测窗口 匹配方法 函数API C++: gpu::HOGDescriptor::HOGDescriptor =0.2, bool gamma_correction=true, int nlevels=DEFAULT_NLEVELS ) 代码演示 我们再新建一个项目名为opencv--Hog
前言 在【模式识别】SVM实现人脸表情分类一文中,我曾使用Hog特征+SVM的方式实现表情分类,但对于Hog特征的原理并未做深入整理。 此篇将结合scikit-image来简单分析Hog特征的原理和维度关系。因为没看过原论文,因此自己的理解可能会有偏差,如有错误,欢迎评论区指正。 图像梯度 在进入到Hog之前,需要先了解图像中梯度的概念。 计算公式的数学表达如下[2]: 有了上面的概念之后,下面进入到Hog特征提取的流程。 标准化gamma空间和颜色空间(Gamma/Colour Normalization) 标准化gamma空间和颜色空间是Hog特征提取的第一步。
HOG特征: 方向梯度直方图(Histogram of Oriented Gradient, HOG)特征是一种在计算机视觉和图像处理中用来进行物体检测的特征描述子。 需要提醒的是,HOG+SVM进行行人检测的方法是法国研究人员Dalal在2005的CVPR上提出的,而如今虽然有很多行人检测算法不断提出,但基本都是以HOG+SVM的思路为主。 (4)优点: 与其他的特征描述方法相比,HOG有很多优点。 因此HOG特征是特别适合于做图像中的人体检测的。 图片HOG特征提取方法就是将一个image(你要检测的目标或者扫描窗口):1)灰度化(将图像看做一个x,y,z(灰度)的三维图像);2)采用Gamma校正法对输入图像进行颜色空间的标准化(归一化);目的是调节图像的对比度
图像处理之特征提取:HOG特征简单梳理 HOG方向梯度直方图,这里分解为方向梯度与直方图。 一、方向梯度 梯度:在向量微积分中,标量场的梯度是一个向量场。 图2 具体在HOG 三、方向梯度直方图HOG的提取 方向梯度直方图为图像局部区域的梯度特征量统计,我们为什么要提取这个东东呢? 以上工作为HOG提取的主要内容,最后得到对应的行人的由方向梯度直方图HOG提取到的特征向量,但是计算机还是不知道这个数据数组代表了什么意思,什么时候这组向量代表行人,什么时候代表其他东西,怎样train 参考文献: 目标检测的图像特征提取之(一)HOG特征 版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
特征在对象识别与模式匹配中是一种常见的特征提取算法,是基于本地像素块进行特征直方图提取的一种算法,对象局部的变形与光照影响有很好的稳定性。 HOG特征描述子提取 提取过程 1. 默认HOG的描述子窗口为64x128, 窗口移动步长为 8x8 每个窗口的cell为8x8,每个block由4个cell组成,block移动步长为一个cell,因此可以得到7x15个block HOG 提取流程 OpenCV函数 hog = cv2.HOGDescriptor() :创建HOG特征描述; hog.setSVMDetector(cv.HOGDescriptor_getDefaultPeopleDetector 特征描述hog = cv.HOGDescriptor()# 创建SVM检测器hog.setSVMDetector(cv.HOGDescriptor_getDefaultPeopleDetector())
import numpy as np import matplotlib.pylab as pylab img=cv2.imread('C:/Users/xpp/Desktop/Lena.png')#原始图像 hog =cv2.HOGDescriptor()#HOG描述子 hog.setSVMDetector(cv2.HOGDescriptor_getDefaultPeopleDetector())#SVM分类器 ( 目标检测是通过在测试图像上重复地进入一个64像素宽、128像素高的窗口并计算HOG描述符来完成的。 由于HOG计算不包含尺度的内在意义,且目标可以出现在一幅图像的多个尺度中,因此HOG计算在尺度金字塔的每一层上是逐步重复的。 尺度金字塔中每一层之间的尺度因子通常在1.05和1.2之间,图像重复地按尺度缩小,直到尺度的源帧不再能容纳完整的HOG窗口。如果SVM分类器以任何尺度预测检测目标,则返回相应的边界框。
1、HOG与SIFT的区别 HOG和SIFT都是描述子,以及由于在具体操作上有很多相似的步骤,所以致使很多人误认为HOG是SIFT的一种,其实两者在使用目的和具体处理细节上是有很大的区别的 HOG与SIFT的主要区别如下: (1)SIFT是基于关键点特征向量的描述。 (2)HOG是将图像均匀的分成相邻的小块,然后在所有的小块内统计梯度直方图。 (3)SIFT需要对图像尺度空间下对像素求极值点,而HOG中不需要。 (4)SIFT一般有两大步骤,第一个步骤对图像提取特征点,而HOG不会对图像提取特征点。 区间(块)有两个主要的几何形状——矩形区间(R-HOG)和环形区间(C-HOG)。 前面提到过,对于R-HOG,中间加一个高斯空域窗口是非常有必要的,但对于C-HOG,这显得没有必要。
import cv2 from skimage.feature import hog from skimage import exposure im=cv2.imread('C:/Users/xpp/ Desktop/Lena.png')#原始图像 im_gray=rgb2gray(im)#将彩色图片转换为灰度图片 fd, hog_image=hog(im, orientations=8,pixels_per_cell =(16,16),cells_per_block=(1,1),visualize=True)#HoG描述符 print(im.shape,len(fd)) fig,(axes1,axes2)=pylab.subplots =exposure.rescale_intensity(hog_image,in_range=(0,10))#调整强度 axes2.axis('off') axes2.imshow(hog_image_rescaled ,cmap=pylab.cm.gray) axes2.set_title('Histogram of Oriented Gradients') pylab.show() 算法:HOG描述符是利用该算法最终得到的归一化区间描述符
好久没写东西了,由于楼主换了个城市工作,发现工作量蹭蹭的上来了,周末又喜欢出去觅食,导致没学习很久,今天准备水一篇来翻译一下如何理解HOG(Histogram Of Gradient, 方向梯度直方图) (HOG特征描述子可以不局限于一个长度的,也可以用很多其他的长度,这里只记录一种计算方法。) 怎么计算方向梯度直方图呢? 我们会先用图像的一个patch来解释。 这里有张图是720*475的,我们选100*200大小的patch来计算HOG特征,把这个patch从图片里面抠出来,然后再把大小调整成64*128。 ? hog-16x16-block-normalization 5、计算HOG特征向量 为了计算这整个patch的特征向量,需要把36*1的向量全部合并组成一个巨大的向量。 可视化HOG 通常HOG特征描述子是画出8*8网格中9*1归一化的直方图,见下图。你可以发现直方图的主要方向捕捉了这个人的外形,特别是躯干和腿。 ?
HOG: ? (1)标准化gamma空间和颜色空间 先转化为灰度图; 为了减少光照因素的影响,首先需要将整个图像进行规范化(归一化),有效地降低图像局部的阴影和光照变化。 Gamma压缩公式: ? 我们将归一化之后的块描述符(向量)就称之为HOG描述符。 ? 区间有两个主要的几何形状——矩形区间(R-HOG)和环形区间(C-HOG)。 R-HOG区间大体上是一些方形的格子,它可以有三个参数来表征:每个区间中细胞单元的数目、每个细胞单元中像素点的数目、每个细胞的直方图通道数目。 则一块的特征数为:3*3*9; (5)收集HOG特征 最后一步就是将检测窗口中所有重叠的块进行HOG特征的收集,并将它们结合成最终的特征向量供分类使用。 (6)那么一个图像的HOG特征维数是多少呢? Dalal提出的Hog特征提取的过程:把样本图像分割为若干个像素的单元(cell),把梯度方向平均划分为9个区间(bin),在每个单元里面对所有像素的梯度方向在各个方向区间进行直方图统计,得到一个9维的特征向量
方向梯度直方图(Histogram of Oriented Gradient, HOG)于2005年提出,是一种常用的特征提取方法,HOG+SVM在行人检测中有着优异的效果。 HOG特征提取算法原理 在一幅图像中,梯度或边缘的方向密度分布能够很好地描述局部目标区域的特征,HOG正是利用这种思想,对梯度信息做出统计,并生成最后的特征描述。 可以理解为,在HOG特征提取时,一个窗口是最小的特征提取单元,在目标检测任务中,滑动窗将以一个设定的步长在整个图像中顺序的滑动,每一次滑动后,都会提取窗口内的HOG特征,提取到的特征将送入到预先训练好的分类器中 那么HOG作为一种特征提取算法,对于图像分类问题该如何提取特征呢?此时的窗口将是整幅图像,也就是说,窗口将不再在图像中滑动。 需要说明的是,这是一个图像分类任务的特征提取过程,所以,这要求我们将整个图像作为一个窗口在构建hog特征。hog.compute()函数在计算特征时,不在滑动窗口。
为了解决这个问题,我们需要对HOG特征做可视化处理。 HOG特征首先去计算每个像素的梯度,然后建立滑动窗口,在滑动窗中建立滑动块,在块中建立等分的单元(cell)。 特别要注意,这应该是HOG最容易产生异常的地方。 = get_hogdescriptor_visual_image(background,des,hog.winSize,hog.cellSize,1,2.0); imshow("HOG特征 1",background_hog); imwrite("特征可视化1.jpg",background_hog); Mat src_hog = get_hogdescriptor_visual_image (src,des,hog.winSize,hog.cellSize,1,2.0); imshow("HOG特征2",src_hog); imwrite("特征可视化2.jpg",src_hog
---- 由于之前研究过SIFT和HOG这两种传统的特征提取方法,故本篇文章先对SIFT和HOG作一综述,并比较二者优缺点。之后,将SIFT和HOG同神经网络特征提取做一对比,浅谈对上述问题的看法。 ---- 目录 [1] SIFT(尺度不变特征变换) [2] HOG(方向梯度直方图) [3] SIFT和HOG的比较 [4] SIFT/HOG与神经网络特征提取的比较 [5] 其他传统特征提取的方法 如果对上述纯文字理解困难,可以参考文章: 目标检测的图像特征提取之(一)HOG特征 2.3 HOG特征提取特点 由于HOG是在图像的局部方格单元上操作,所以它对图像几何的和光学的形变都能保持很好的不变性 结合SIFT和HOG方法,可以发现SIFT对于复杂环境下物体的特征提取具有良好的特性;而HOG对于刚性物体的特征提取具有良好的特性。 ---- [4] SIFT/HOG与神经网络特征提取的比较 众所周知,随着深度学习的发展,通过神经网络提取特征得到了广泛的应用,那么,神经网络提取的特征与传统的SIFT/HOG等特征提取方法有什么不同呢
HOG 特征广泛应用于物体识别等领域,但大面积计算 HOG 特征时重复统计会严重拖慢运行速度,使用积分图可以显著加速特征提取。 背景 HOG 特征介绍 积分图介绍 加速原理 图片 Python OpenCV 实现 def gradient_integral_map(img, angle_step): H, W = img.shape [:2] # 梯度积分图 angle_feature_channel_num = 360 // angle_step hog_matrix = np.zeros([H+1, ] = sum_map return hog_matrix, hog_gra_matrix 参考资料 https://www.zywvvd.com/notes/study/image-processing /feature-extraction/hog/hog/ https://www.zywvvd.com/notes/study/image-processing/opencv/opencv-integral-map
HOG概述 HOG(Histogram of Oriented Gradient)特征在对象检测与模式匹配中是一种常见的特征提取算法,是基于本地像素块进行特征直方图提取的一种算法,对象局部的变形与光照影响有很好的稳定性 ,最初是用HOG特征来来识别人像,通过HOG特征提取+SVM训练,可以得到很好的效果,OpenCV已经有了。 HOG特征提取的大致流程如下: ? ? 详细解读 第一步:灰度化 对HOG特征提取来说第一步是对输入的彩色图像转换为灰度图像,图像灰度化的方法有很多,不同灰度化方法之间有一些微小的差异,从彩色到灰度的图像转换可以表示如下: ? 使用HOG特征数据 HOG特征本身是不支持旋转不变性与多尺度检测的,但是通过构建高斯金字塔实现多尺度的开窗检测就会得到不同分辨率的多尺度检测支持。
HOG简介 2. 数字图像梯度定义 3. HOG基本步骤 4. OpenCV实现HOG 5. 用KNN与HOG实现一个手写数字输入识别 1. HOG简介 方向梯度直方图(Histogram of Oriented Gradient, HOG)于2005年提出,是一种常用的特征提取方法,且HOG+SVM的方式在行人检测中有着优异的效果。 HOG描述子针对一个检测窗口,根据窗口中块的个数,块内cell的个数,以及cell内bins的个数串接得到最后的HOG描述子。 2. OpenCV实现HOG OpenCV中,HOG被封装在了HOGDescriptor 类中,而且OpenCV提供了直接利用HOG+SVM进行多尺度行人检测的函数detectMultiScale(),在这里我们不介绍它 OpenCV实现HOG OpenCV中,HOG被封装在了HOGDescriptor 类中,而且OpenCV提供了直接利用HOG+SVM进行多尺度行人检测的函数detectMultiScale(),在这里我们不介绍它
最近在做的项目有用到HOG+SVM这一方面的知识,参考相关论文和网上一些博文在此对HOG特征进行下总结。 参考资料: HOG的经典论文:Dalal N, Triggs B. 归一化的块描述符就叫作HOG描述子。将检测窗口中的所有块的HOG描述子组合起来就形成了最终的特征向量,然后使用SVM分类器进行行人检测。如上图描述了特征提取和目标检测流程。 归一化之后的块描述符(向量)就称之为HOG描述符。 通常使用的HOG结构大致有三种:矩形HOG(简称为R-HOG),圆形HOG和中心环绕HOG。它们的单位都是Block(即块)。 Dalal的试验证明矩形HOG和圆形HOG的检测效果基本一致,而环绕形HOG效果相对差一些。 矩形HOG和SIFT有些相似的地方,关于SIFT具体看这篇博文SIFT特征提取分析 HOG的缺陷: – 很难处理遮挡问题,人体姿势动作幅度过大或物体方向改变也不易检测(这个问题后来在DPM中采用可变形部件模型的方法得到了改善
图像搜索(Image Search)基于腾讯云的图像解决方案,集成了图像检索、超细粒度元素挖掘和图像匹配等技术
扫码关注腾讯云开发者
领取腾讯云代金券