简介 方向梯度直方图(Histogram of Oriented Gradient, HOG)特征是一种在计算机视觉和图像处理中用来进行物体检测的特征描述子。...它通过计算和统计图像局部区域的梯度方向直方图来构成特征。Hog特征结合SVM分类器已经被广泛应用于图像识别中,尤其在行人检测中获得了极大的成功。...(本质:梯度的统计信息,而梯度主要存在于边缘的地方) 把这些局部直方图在图像的更大的范围内(我们把它叫区间或block)进行对比度归一化(contrast-normalized),所采用的方法是:先计算各直方图在这个区间...HOG特征描述子提取 提取过程 1....计算图像XY梯度和方向 使用sobel可以出水平和垂直方向的梯度: 12 gx = cv2.Sobel(img, cv2.CV_32F, 1, 0, ksize=1)gy = cv2.Sobel(img
HOG通过计算图像中每个像素的梯度的大小和方向,来获取图像的梯度特征,是一种特征描述子。...HOG特点 1.由于计算局部直方图和归一化,所以它对图像几何的和光学的形变都能保持很好的不变性; 2.细微的动作可以被忽略而不影响检测效果。...HOG计算步骤 1.对输入图像进行灰度化 2.利用gamma校正法对图像进行颜色空间归一化; 3.计算图像中每个像素的梯度大小和方向; 4.将图像划分cells,计算每个cell内的梯度直方图; 5.将每几个...HOG参数计算 计算流程 图像(image)->滑动图像块(block)->细胞单元(cells) 1.block个数计算 假设图像大小为128x128,block大小为16x16, block stride...HOG特征图: ?
=cv2.HOGDescriptor()#HOG描述子 hog.setSVMDetector(cv2.HOGDescriptor_getDefaultPeopleDetector())#SVM分类器 (...目标检测是通过在测试图像上重复地进入一个64像素宽、128像素高的窗口并计算HOG描述符来完成的。...由于HOG计算不包含尺度的内在意义,且目标可以出现在一幅图像的多个尺度中,因此HOG计算在尺度金字塔的每一层上是逐步重复的。...尺度金字塔中每一层之间的尺度因子通常在1.05和1.2之间,图像重复地按尺度缩小,直到尺度的源帧不再能容纳完整的HOG窗口。如果SVM分类器以任何尺度预测检测目标,则返回相应的边界框。...这种技术比Viola-Jones目标检测更精确,但计算上更复杂。
grids,即局部归一化的梯度方向直方图,是一种对图像局部重叠区域的密集型描述符, 它通过计算局部区域的梯度方向直方图来构成特征。...计算图像每个像素的梯度(包括大小和方向): 计算图像横坐标和纵坐标方向的梯度,并据此计算每个像素位置的梯度方向值;求导操作不仅能够捕获轮廓,人影和一些纹理信息,还能进一步弱化光照的影响。.... 4、 分块之间的相关性问题的解决 方案一:块重叠,重复统计计算 在重叠方式中,块与块之间的边缘点被重复根据权重投影到各自相邻块(block)中,从而一定模糊了块与块之间的边界,处于块边缘部分的像素点也能够给相邻块中的方向梯度直方图提供一定贡献...11、computeGradient 函数 (1)作用:计算img经扩张后的图像中每个像素的梯度和角度 (2)函数原型: void HOGDescriptor::computeGradient(const...12、compute 函数 (1)作用:计算HOG特征向量 (2)函数原型: void HOGDescriptor::compute(const Mat& img,
(HOG特征描述子可以不局限于一个长度的,也可以用很多其他的长度,这里只记录一种计算方法。) 怎么计算方向梯度直方图呢? 我们会先用图像的一个patch来解释。...这里有张图是720*475的,我们选100*200大小的patch来计算HOG特征,把这个patch从图片里面抠出来,然后再把大小调整成64*128。 ?...2、计算梯度图像 首相我们计算水平和垂直方向的梯度,再来计算梯度的直方图。可以用下面的两个kernel来计算,也可以直接用OpenCV里面的kernel大小为1的Sobel算子来计算。 ?...hog-16x16-block-normalization 5、计算HOG特征向量 为了计算这整个patch的特征向量,需要把36*1的向量全部合并组成一个巨大的向量。...可视化HOG 通常HOG特征描述子是画出8*8网格中9*1归一化的直方图,见下图。你可以发现直方图的主要方向捕捉了这个人的外形,特别是躯干和腿。 ?
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...首先计算水平和垂直梯度图像 然后计算梯度直方图 接着块(区间)集归一化处理 最后,扁平组合成特征描述符向量
,Gamma=1/2; (2)计算图像梯度 计算图像横坐标和纵坐标方向的梯度,并据此计算每个像素位置的梯度方向值;求导操作不仅能够捕获轮廓,人影和一些纹理信息,还能进一步弱化光照的影响。...然后再用以上公式计算该像素点的梯度大小和方向。 (3)为每个细胞单元构建梯度方向直方图 第三步的目的是为局部图像区域提供一个编码,同时能够保持对图像中人体对象的姿势和外观的弱敏感性。...我们将归一化之后的块描述符(向量)就称之为HOG描述符。 ? 区间有两个主要的几何形状——矩形区间(R-HOG)和环形区间(C-HOG)。...R-HOG区间大体上是一些方形的格子,它可以有三个参数来表征:每个区间中细胞单元的数目、每个细胞单元中像素点的数目、每个细胞的直方图通道数目。...则一块的特征数为:3*3*9; (5)收集HOG特征 最后一步就是将检测窗口中所有重叠的块进行HOG特征的收集,并将它们结合成最终的特征向量供分类使用。 (6)那么一个图像的HOG特征维数是多少呢?
2.图像的梯度针对的是每一个像素计算得到,然后再cell中进行方向梯度直方图的构建,在block中进行对比度归一化操作。...那么对于一个窗口内选择块是一样的原理,假设给出块的尺寸为 ,块步长为 ,经过计算:检测窗口中共滑动 个block。...投票是采取加权投票的方式,即每一票都是带有权值的,这个权值是根据该像素点的梯度幅度计算出来。...此外,上面这些参数是没有窗口步长的,这是因为窗口步长定义在hog.compute()函数中,该函数对滑动窗是有自动补齐功能的。...需要说明的是,这是一个图像分类任务的特征提取过程,所以,这要求我们将整个图像作为一个窗口在构建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
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是大小统一的cell上进行梯度方向投影计算得到的,而且为了提高性能,还采用了重叠的局部对比度归一化。...数字图像梯度定义 在具体说明HOG算法之前,需要解释一下图像梯度的概念,在数字图像中,图像梯度信息包含梯度幅值(梯度大小)和梯度相位(梯度方向)大小,梯度幅值G(x,y)计算如公式(1)、(2)、(3)...梯度相位θ(x,y)计算如公式(4)所示: ? ? HOG流程图如下图所示: ?...这里需要在样本图像上定义一个新的区块(block)来进行计算,这个块的范围定义为包含着几个连续的单元格。...(5)生成HOG描述子 将一个检测窗口中所有块的每一个cell单元内的bin个方向的投影大小串接结合成向量的形式就是该算法的输出的最终结果,即HOG 特征向量。特征维数的计算公式为: ?
/example/84776/cv2.HOGDescriptor def createTrainingInstances(self, images): start = time.time() hog...instances.append(pairing) end = time.time() - start self.training_instances = instances print "HOG...images -> %f" % (len(images), end) def createTestingInstances(self, images): start = time.time() hog...instances.append(pairing) end = time.time() - start self.testing_instances = instances print "HOG...TEST SERIAL: %d images -> %f" % (len(images), end) 还有: def get_hog(image): # winSize = (64,64)
下面说明这种方法: 1.建立像素级特征映射 首先是计算每个像素的梯度大小和方向,分别记为: ?...这样的描述看起来很高级,实际上说明的问题很简单,和传统hog统计是基本一致的,我们可以认为F是有p个方向通道的映射,对于每个像素来说,通过其方向算出来的B,可以用来计算它在F的哪个方向有映射,而这个映射的带下使用其幅值来加权的...① 首先分别对每个维度进行傅里叶变换,得到xf[36]和yf[36]. ② xx的计算:计算xf在每一维的二范数除以(mn)。然后累加起来,就是xx。...③ xy的计算:计算xf[i]和yf[i]的共轭在频域的点积(element-wise),这样得到的是36个mn的复数矩阵,分别对每个矩阵都进行傅里叶逆变换得到xy[36],是36个mn的实数矩阵,...④ 然后在用和相关矩阵的计算公式进行计算 : ?
HOG概述 HOG(Histogram of Oriented Gradient)特征在对象检测与模式匹配中是一种常见的特征提取算法,是基于本地像素块进行特征直方图提取的一种算法,对象局部的变形与光照影响有很好的稳定性...,最初是用HOG特征来来识别人像,通过HOG特征提取+SVM训练,可以得到很好的效果,OpenCV已经有了。...HOG特征提取的大致流程如下: ? ?...第二步:计算图像梯度 计算图像的X方向梯度dx与Y方向梯度dy,根据梯度计算mag与角度,计算梯度时候可以先高斯模糊一下(可选步骤),然后使用sobel或者其它一阶导数算子计算梯度值dx、dy、mag、...使用HOG特征数据 HOG特征本身是不支持旋转不变性与多尺度检测的,但是通过构建高斯金字塔实现多尺度的开窗检测就会得到不同分辨率的多尺度检测支持。
综上,HOG特征很适合于做图像中的人体检测。 1 Overview of the Method HOG方法是基于对稠密网格中归一化的局部方向梯度直方图的计算。...检测窗口划分为重叠的块,对这些块计算HOG描述子,形成的特征向量放到线性SVM中进行目标/非目标的二分类。检测窗口在整个图像的所有位置和尺度上进行扫描,并对输出的金字塔进行非极大值抑制来检测目标。...6 Tri-linear interpolation 在计算每个cell的梯度直方图时,可以用三线性插值来提高计算速率。...一般采用的归一化函数有以下四种: 在人体检测系统中进行HOG计算时一般使用L2-norm,Dalal的文章也验证了对于人体检测系统使用L2-norm的时候效果最好。...,在计算得到的HOG特征向量中隐含了该块与检测窗口之间的空间位置关系。
#!/usr/bin/python # -*- coding:UTF-8 -*- def sum(options,x,y): t = opti...
下面是计算器的实现方法,主要是使用了JQ,设计原型依据小米手机计算器,实现了基础的单步骤运算,做了简单的校验判断,实现了加减乘除取余等功能; 实现效果如下图: ? 下面是代码: 计算器 td{ width...= //计算时间...v){ return true; } var nowVal = $("#res").text(); //计算一次后需要重置 if(nowVal.indexOf(...'=') > 0){ console.log("重新计算"); $("#res").html(''); } //如果字符串以 符号 开头需提醒 var mark
这些特征是图像梯度的局部近似,可以用积分图像有效地计算。人脸检测器使用许多示例人脸图像进行训练,但可以很容易地训练以检测其他目标。...现在让我们更详细地讨论HOG特征生成步骤。处理步骤如图2所示。对于每个输入像素,计算梯度大小和方向。将像素的梯度幅度添加到相应的方向库中。...虽然内核支持向量机将提高性能(如[3]所示),但当我们在大规模数据库上执行算法时,使用线性支持向量机来提高计算效率。我们使用与Dalal和Triggs相同的实现。...如前所述,我们通过在hog描述符中包含颜色信息来扩展标准算法。这是通过连接所使用颜色空间的每个颜色通道的HOG描述符来完成的。注意,结果特征的维数和检测的计算复杂度随着颜色通道的数量线性增加。...我们考虑了不同版本的HOG算法。Dalal和Triggs提出在最大梯度幅度的颜色通道中使用梯度,而传统的HOG只使用单个颜色通道。
使用Vue+element来实现简单的计算器功能,JS版本连接:https://www.shenlin.ink/front/190.html, 直接上代码,目前程序没有校验小数点输入是否正确情况。... if (e === '=' && this.result.length === 0) { return false } // 出现 = 号则表示已经执行过计算
点击即可进入计算器页面 点击即可进入计算器页面 代码 代码: 计算器
领取专属 10元无门槛券
手把手带您无忧上云