图像梯度方向直方图描述子
hog特征的原理

hog特征的原理HOG特征是一种常用的图像特征提取方法,它可以用来描述图像中的形状和纹理信息。
HOG特征全称为Histogram of Oriented Gradients,即梯度方向直方图。
它是通过计算图像中每个像素点的梯度方向,并统计每个方向上的梯度强度来得到的。
HOG特征的原理是基于人类视觉系统的一种假设,即人类视觉系统对边缘和纹理的感知较为敏感。
因此,通过提取图像中的边缘和纹理信息,可以较好地描述图像的特征。
HOG特征的计算过程如下:1. 图像预处理:首先,需要对图像进行预处理,包括图像的灰度化、归一化等操作。
这是为了简化计算,并降低光照、阴影等因素对特征提取的影响。
2. 计算梯度:接下来,需要计算图像中每个像素点的梯度信息。
一般使用Sobel算子或Laplacian算子来计算图像的梯度。
梯度的大小表示了像素点的强度,梯度的方向表示了像素点的纹理信息。
3. 划分图像区域:将图像划分为若干个小的局部区域,称为细胞单元。
每个细胞单元内包含了多个像素点的梯度信息。
4. 构建梯度直方图:对于每个细胞单元,统计其内部像素点的梯度方向,并将其划分到相应的方向区间中。
可以选择8个或12个方向区间,分别表示0度到180度或0度到360度。
5. 归一化梯度直方图:为了降低光照、阴影等因素对特征提取的影响,需要对梯度直方图进行归一化处理。
常用的方法是对每个细胞单元内的梯度直方图进行L2范数归一化。
6. 连接细胞单元:将相邻的细胞单元连接起来,形成一个大的特征向量。
这样可以更好地描述整个图像的纹理和形状信息。
7. 特征分类:最后,可以将提取到的HOG特征用于图像分类、目标检测等任务中。
常用的分类器包括支持向量机(SVM)、神经网络等。
HOG特征的优点在于它对图像的光照、阴影等因素不敏感,可以较好地描述图像中的纹理和形状信息。
同时,HOG特征的计算相对简单,计算速度较快,适用于实时处理的场景。
然而,HOG特征也存在一些缺点。
MATLABHOG方向梯度直方图

MATLABHOG⽅向梯度直⽅图HOG(Histogram of Oriented Gradient)⽅向梯度直⽅图,主要⽤来提取图像特征,最常⽤的是结合svm进⾏⾏⼈检测。
算法流程图如下(这篇论⽂上的):下⾯我再结合⾃⼰的程序,表述⼀遍吧:1.对原图像gamma校正,img=sqrt(img);2.求图像竖直边缘,⽔平边缘,边缘强度,边缘斜率。
3.将图像每16*16(取其他也可以)个像素分到⼀个cell中。
对于256*256的lena来说,就分成了16*16个cell了。
4.对于每个cell求其梯度⽅向直⽅图。
通常取9(取其他也可以)个⽅向(特征),也就是每360/9=40度分到⼀个⽅向,⽅向⼤⼩按像素边缘强度加权。
最后归⼀化直⽅图。
5.每2*2(取其他也可以)个cell合成⼀个block,所以这⾥就有(16-1)*(16-1)=225个block。
6.所以每个block中都有2*2*9个特征,⼀共有225个block,所以总的特征有225*36个。
当然⼀般HOG特征都不是对整幅图像取的,⽽是对图像中的⼀个滑动窗⼝取的。
lena图:求得的225*36个特征:matlab代码如下:1 clear all; close all; clc;23 img=double(imread('lena.jpg'));4 imshow(img,[]);5 [m n]=size(img);67 img=sqrt(img); %伽马校正89 %下⾯是求边缘10 fy=[-101]; %定义竖直模板11 fx=fy'; %定义⽔平模板12 Iy=imfilter(img,fy,'replicate'); %竖直边缘13 Ix=imfilter(img,fx,'replicate'); %⽔平边缘14 Ied=sqrt(Ix.^2+Iy.^2); %边缘强度15 Iphase=Iy./Ix; %边缘斜率,有些为inf,-inf,nan,其中nan需要再处理⼀下161718 %下⾯是求cell19 step=16; %step*step个像素作为⼀个单元20 orient=9; %⽅向直⽅图的⽅向个数21 jiao=360/orient; %每个⽅向包含的⾓度数22 Cell=cell(1,1); %所有的⾓度直⽅图,cell是可以动态增加的,所以先设了⼀个23 ii=1;24 jj=1;25for i=1:step:m %如果处理的m/step不是整数,最好是i=1:step:m-step26 ii=1;27for j=1:step:n %注释同上28 tmpx=Ix(i:i+step-1,j:j+step-1);29 tmped=Ied(i:i+step-1,j:j+step-1);30 tmped=tmped/sum(sum(tmped)); %局部边缘强度归⼀化31 tmpphase=Iphase(i:i+step-1,j:j+step-1);32 Hist=zeros(1,orient); %当前step*step像素块统计⾓度直⽅图,就是cell 33for p=1:step34for q=1:step35if isnan(tmpphase(p,q))==1 %0/0会得到nan,如果像素是nan,重设为036 tmpphase(p,q)=0;37 end38 ang=atan(tmpphase(p,q)); %atan求的是[-9090]度之间39 ang=mod(ang*180/pi,360); %全部变正,-90变27040if tmpx(p,q)<0 %根据x⽅向确定真正的⾓度41if ang<90 %如果是第⼀象限42 ang=ang+180; %移到第三象限43 end44if ang>270 %如果是第四象限45 ang=ang-180; %移到第⼆象限46 end47 end48 ang=ang+0.0000001; %防⽌ang为049 Hist(ceil(ang/jiao))=Hist(ceil(ang/jiao))+tmped(p,q); %ceil向上取整,使⽤边缘强度加权50 end51 end52 Hist=Hist/sum(Hist); %⽅向直⽅图归⼀化53 Cell{ii,jj}=Hist; %放⼊Cell中54 ii=ii+1; %针对Cell的y坐标循环变量55 end56 jj=jj+1; %针对Cell的x坐标循环变量57 end5859 %下⾯是求feature,2*2个cell合成⼀个block,没有显式的求block60 [m n]=size(Cell);61 feature=cell(1,(m-1)*(n-1));62for i=1:m-163for j=1:n-164 f=[];65 f=[f Cell{i,j}(:)' Cell{i,j+1}(:)' Cell{i+1,j}(:)' Cell{i+1,j+1}(:)'];66 feature{(i-1)*(n-1)+j}=f;67 end68 end6970 %到此结束,feature即为所求71 %下⾯是为了显⽰⽽写的72 l=length(feature);73 f=[];74for i=1:l75 f=[f;feature{i}(:)'];76 end77 figure78 mesh(f)。
基于方向梯度直方图的行人检测算法

1. 色彩和gamma归一化 2. 梯度计算 3. 统计局部图像梯度信息 4. block归一化 5. 生成特征描述向量
C=1
真实值
有人 无人
预测值
有人
无人
1078(95.31%) 53(4.69%)
26(0.71%) 3629(99.29%)
C=0.1
真实值
有人 无人
预测值
有人
无人
1079(95.40%) 52(4.60%)
28(0.77%) 3627(99.23%)
C=0.01
真实值
有人 无人
预测值
有人
无人
1097(96.99%) 34(3.01%)
44(1.20%) 3611(98.80%)
window size = 64*128 ς = 2, η = 8, β = 9 归一化方法:L2-norm
C=1
真实值
有人 无人
预测值
有人
无人
1078(95.31%) 53(4.69%)
26(0.71%) 3629(99.29%)
C=0.1
真实值
有人 无人
预测值
有人
无人
1079(95.40%) 52(4.60%)
28(0.77%) 3627(99.23%)
C=0.01
真实值
有人 无人
预测值
有人
无人
1097(96.99%) 34(3.01%)
1. 色彩和gamma归一化 2. 梯度计算 3. 统计局部图像梯度信息 4. block归一化 5. 生成特征描述向量
一维的离散微分模板
(-1, 0, 1), (1, 0, -1)’
水平梯度图和垂直梯度图
Matlab中的方向与梯度计算技巧

Matlab中的方向与梯度计算技巧概述Matlab作为一种功能强大的数学软件,提供了丰富的工具和函数来进行图像处理和计算机视觉任务。
其中,计算图像的方向与梯度是图像处理的重要一部分。
本文将介绍一些在Matlab中常用的方向与梯度计算技巧,并探讨其原理和应用。
1. 图像梯度图像的梯度用于表示图像像素在空间上的变化程度。
在Matlab中,可以使用函数gradient或imgradient来计算图像的梯度。
gradient函数可用于计算二维图像的梯度。
它将输入图像视为计算图像函数f(x, y)在x和y方向上的偏导数。
使用方法如下:```matlab[Gx, Gy] = gradient(image);```其中,image为输入的图像,Gx和Gy为计算得到的梯度。
imgradient函数在Matlab R2016a版本引入,与gradient函数类似,不同的是可以指定不同的梯度算子。
使用方法如下:```matlab[Gmag, Gdir] = imgradient(image);```其中,image为输入的图像,Gmag为计算得到的梯度大小,Gdir为计算得到的梯度方向。
2. 方向直方图方向直方图是用于表示图像中不同方向上的梯度分布情况的一种统计方法。
在Matlab中,可以使用函数histcounts来计算方向直方图。
首先,需要计算图像的梯度,可以使用前文介绍的gradient或imgradient函数。
然后,将梯度方向值进行量化,通常将其划分为一定数量的方向区间。
最后,对每个像素的梯度方向进行统计,得到方向直方图。
下面是一个简单的示例:```matlab[Gmag, Gdir] = imgradient(image);numBins = 10; % 将方向划分为10个区间binEdges = linspace(-180, 180, numBins+1); % 计算方向区间边界histogram = histcounts(Gdir(:), binEdges); % 计算方向直方图```在上述示例中,Gdir为梯度方向矩阵,binEdges为方向区间边界数组,histogram为计算得到的方向直方图。
HOG特征以及提取算法的实现过程

HOG特征以及提取算法的实现过程HOG(Histogram of Oriented Gradients,方向梯度直方图)特征是一种用于图像识别或目标检测的特征描述子。
它广泛应用于视觉计算领域,可用于人脸识别、行人检测等任务。
HOG特征的提取算法分为三个主要步骤:图像预处理、计算梯度和构建特征向量。
首先,需要对图像进行预处理。
通常,图像需要调整尺寸和大小,以便后续处理。
在这个过程中,会对图像进行统一缩放,使其具有相同的尺寸。
此外,还可以采用gamma校正等技术对图像进行增强,以提高特征提取的准确性。
接下来,需要计算图像的梯度。
这一步骤是HOG特征的核心。
梯度表示图像中的边缘信息,通过计算图像像素点的梯度大小和方向来获得。
一种常用的方法是使用Sobel算子,分别对图像进行水平和垂直方向的滤波操作,然后计算每个像素点的梯度大小和方向。
然后,将图像分割为多个小的区域(cell)。
每个小区域内,将像素点的梯度方向划分为几个不同的角度,例如0°到180°,并统计每个角度范围内的梯度强度。
这样可以获得每个小区域内的梯度直方图。
接下来,将相邻的小区域进行组合,形成更大的图像区域(block)。
每个block内包含多个小区域,将所有小区域内的梯度直方图串联起来,获得block内的特征向量。
通过将相邻block的特征向量合并起来,即可得到整个图像的HOG特征向量。
最后,为了进一步提高对光照和形变的鲁棒性,需要对HOG特征进行归一化。
常用的归一化方法是通过计算每个block内所有特征向量的范数,并将其除以范数的平方根。
这样可以使得特征向量的模保持相对一致,减少光照变化的影响。
```pythonimport cv2from skimage.feature import hog#读取图像image = cv2.imread('image.jpg', cv2.IMREAD_GRAYSCALE)#图像预处理,如调整尺寸和大小image = cv2.resize(image, (64, 128))#计算梯度gradient_x = cv2.Sobel(image, cv2.CV_32F, 1, 0)gradient_y = cv2.Sobel(image, cv2.CV_32F, 0, 1)gradient_magnitude, gradient_angle =cv2.cartToPolar(gradient_x, gradient_y)#将图像划分为小区域cell_size = (8, 8)cell_gradient_bins = 9cell_gradients = hog(image, orientations=cell_gradient_bins, pixels_per_cell=cell_size, cells_per_block=(2, 2),block_norm='L2-Hys')#将小区域合并为大区域,并进行特征向量的拼接block_size = (2, 2)block_stride = (1, 1)block_norm = 'L2-Hys'block_gradients = []for i in range(0, cell_gradients.shape[0] - block_size[0] + 1, block_stride[0]):for j in range(0, cell_gradients.shape[1] - block_size[1] + 1, block_stride[1]):block = cell_gradients[i:i+block_size[0],j:j+block_size[1], :]block_gradients.append(block.flatten()feature_vector = np.concatenate(block_gradients)#归一化feature_vector /= np.sqrt(np.sum(feature_vector ** 2))#输出HOG特征向量print(feature_vector)```总之,HOG特征的提取算法主要包括图像预处理、梯度计算和构建特征向量三个步骤。
分类图像特征

分类图像特征图像分类是计算机视觉领域中的一个重要任务,旨在将输入的图像根据其内容或特征进行分类。
为了实现准确的图像分类,研究者们提出了许多方法和技术。
其中,提取和利用图像特征是实现图像分类的关键之一。
图像特征是描述图像中重要信息的一种表示方式。
不同的图像特征可以捕捉到图像的不同方面,如颜色、纹理、形状等。
这些特征能够帮助计算机理解和识别图像内容,从而进行分类和检索。
在本文中,我们将介绍一些常见的分类图像特征。
一、颜色特征颜色是图像中最直观和常用的一个特征。
颜色特征可以通过统计图像中每个像素点的颜色分布来表示。
常见的颜色特征包括:1. RGB颜色直方图:统计图像中每种颜色在RGB三个通道上的分布情况。
2. HSV颜色直方图:将RGB颜色空间转换为HSV颜色空间,并统计每种颜色在H、S、V三个通道上的分布情况。
3. Lab颜色直方图:将RGB颜色空间转换为Lab颜色空间,并统计每种颜色在L、a、b三个通道上的分布情况。
二、纹理特征纹理描述了图像中的重复或不规则的细节结构,是图像分类中常用的特征之一。
常见的纹理特征包括:1. 灰度共生矩阵(GLCM):统计图像中不同像素对之间的灰度差异,计算出像素之间的共生矩阵,并提取出该矩阵的统计特征,如对比度、能量、熵等。
2. 方向梯度直方图(HOG):通过计算图像中局部区域的梯度方向直方图来描述图像的纹理信息。
3. 局部二值模式(LBP):将图像划分为小的局部区域,并统计每个区域的二值模式,得到图像的纹理特征。
三、形状特征形状特征是描述图像中物体形状和结构的特征。
常见的形状特征包括:1. 边缘直方图:通过检测图像中的边缘,将边缘点投影到某个方向上,并统计每个方向上的边缘数量,得到边缘直方图。
2. 尺度不变特征变换(SIFT):通过检测图像中的关键点,计算每个关键点周围的梯度方向直方图,并生成描述关键点的特征向量。
3. 小波变换:利用小波变换将图像分解为多个尺度上的频域子带,并提取每个子带中的能量或统计特征来描述图像的形状。
hog特征计算

hog特征计算HOG特征计算是一种用于图像识别和目标检测的特征提取方法。
HOG (Histogram of Oriented Gradients)特征计算通过计算图像中局部区域的梯度方向直方图来描述图像的纹理和形状信息,从而实现目标的识别和检测。
HOG特征计算的基本思想是,对于一幅图像,首先将其分成若干个小的细胞(cell),然后对每个细胞内的像素进行梯度计算,得到梯度的幅值和方向。
接着,根据每个细胞的梯度方向,将其分配到相应的方向直方图中,并对相邻细胞的直方图进行归一化和连接,得到最终的特征向量。
HOG特征计算的具体步骤如下:1. 图像预处理:对原始图像进行灰度化处理,将彩色图像转换为灰度图像,以减少计算复杂度。
2. 梯度计算:对灰度图像使用Sobel算子计算每个像素点的梯度幅值和方向。
这样可以得到图像中每个像素点的梯度信息。
3. 细胞划分:将图像划分为若干个大小相等的细胞。
细胞的大小可以根据具体应用进行调整,一般为8×8或16×16像素。
4. 方向直方图计算:对每个细胞内的像素点,根据其梯度方向将其分配到相应的方向直方图中。
方向直方图的划分一般为9个方向,每个方向的范围为20度。
然后对每个细胞的方向直方图进行归一化,以减少光照变化的影响。
5. 块描述子计算:将相邻的若干个细胞的方向直方图连接起来,形成块描述子。
块描述子的大小一般为2×2个细胞。
6. 特征向量生成:将所有块描述子连接起来,形成最终的特征向量。
特征向量中的每个元素代表了图像中特定方向的纹理和形状信息。
HOG特征计算具有以下优点:1. 鲁棒性强:HOG特征计算对光照、尺度和旋转变化具有较好的鲁棒性,可以在复杂的环境下进行目标识别和检测。
2. 特征表达能力强:HOG特征计算可以有效地描述图像的纹理和形状信息,能够捕捉到目标的局部结构和边缘信息。
3. 计算效率高:HOG特征计算的计算量相对较小,可以在实时性要求较高的场景下进行目标检测和识别。
hog和phog的特征

hog和phog的特征
HOG(方向梯度直方图)和PHOG(金字塔方向梯度直方图)是图像处理中常用的特征提取算法。
它们能够有效地描述图像中的边缘和纹理等特征,被广泛应用于目标检测、识别和跟踪等领域。
HOG特征是一种基于梯度信息的局部特征描述子。
它将图像划分为小的局部块,在每个块内计算梯度方向的直方图。
通过统计每个块内不同方向梯度的分布情况,构造出一个用于表征图像的特征向量。
HOG特征的优点在于:对光照、尺度变化相对较为稳定,能够有效捕捉图像的边缘信息。
相比之下,PHOG特征更适用于对尺度变化敏感的场景。
它在HOG特征的基础上引入了金字塔结构,通过利用不同尺度下的特征信息,提高了特征的鲁棒性。
PHOG特征的计算过程包括对图像进行多次缩放,然后在每个尺度下提取HOG特征。
最后将这些尺度上的特征向量拼接起来,形成最终的PHOG特征向量。
这样一来,PHOG特征就能够更好地描述图像中不同尺度下的纹理和形状信息。
HOG和PHOG特征的提取过程相对简单,且计算效率高,适用于大规模图像处理任务。
它们在目标检测和行人识别等领域取得了显著的效果。
同时,研究者们也在不断改进和优化这两种特征描述子,以适应更加复杂的应用场景。
总的来说,HOG和PHOG特征是图像处理中非常重要的特征提取方法,对于分析和理解图像中的纹理和形状结构具有重要意义。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
基于梯度幅值的方向权重投影
Step 3 基于梯度幅值的方向权重投影
HOG结构 通常使用的HOG结构大致有三种:矩形HOG(简称为 R-HOG),圆形HOG和中心环绕HOG。它们的单位都是 Block(即块)
LOGO
Dalal的试验证明矩形HOG和圆形HOG的检测效果基本一致, 而环绕形HOG效果相对差一些。并且,圆形与环绕形的HOG 文献比较少,应用研究没有矩形HOG普遍。所以在此,我 将着重讲解矩形HOG的情况。
LOGO
重叠块: Datal等人在他们那篇关于HOG最为经典的论文 《Histogram of Oriented Gradient for Human Detection》提出了利用块与块的重叠(Overlap)来解决 混叠,并且取得了不错的效果。
LOGO
在重叠方式中,块与块之间的边缘点被重复根据权重投影到各自相邻 块(block)中,从而一定模糊了块与块之间的边界,处于块边缘部分的像 素点也能够给相邻块中的方向梯度直方图提供一定贡献,从而达到关联块 与块之间的关系的作用。Datal对于块和块之间相互重叠程度对人体目标检 测识别率影响也做了实验分析。
LOGO
关于HOG的总结
关于HOG的总结:
HOG的优点 HOG的缺点 对于HOG的一些启发
LOGO
HOG的优点:
HOG表示的是边缘(梯度)的结构特征,因此可以描述 局部的形状信息; 位置和方向空间的量化一定程度上可以抑制平移和旋转 带来的影响; 采取在局部区域归一化直方图,可以部分抵消光照变化 带来的影响。 由于一定程度忽略了光照颜色对图像造成的影响,使得 图像所需要的表征数据的维度降低了。 而且由于它这种分块分单元的处理方法,也使得图像局 部像素点之间的关系可以很好得到的表征。
LOGO
块划分所带来的问题: 块与块之间是相互独 立的么?
LOGO
分块之间的相关性问题解决
答:通常的将某个变量范围固定划分为几个区域, 由于边界变量与相邻区域也有相关性,所以变量 只对一个区域进行投影而对相邻区域完全无关时 会对其他区域产生混叠效应。 分块之间的相关性问题的解决: 方案一:块重叠,重复统计计算 方案二:线性插值权重分配
HOG(Histogram of Oriented Gradient)是2005年CVPR会议上, 法国国家计算机科学及自动控制研究所的Dalal等人提出的一种解决 人体目标检测的图像描述子,该方法使用梯度方向直方图 (Histogram of Oriented Gradients, 简称HOG)特征来表达人体, 提取人体的外形信息和运动信息,形成丰富的特征集。
LOGO
图像表征
什么是图像的描述子? 其实图像描述子就是图像的一种表征形式,我们所熟 知的像素值便是最常见最朴素的一种图像表征形式,也可 以被看成一种描述形式。 既然已经存在像素这种描述子,为何我们还有寻求新的图 像描述子?
LOGO
图像梯度方向直方图描述子
图像梯度方向直方图(Histogram of Oriented Gradient)
LOGO
我将采用模板[-1,0,1]为例计算图像梯度以及方向,通过梯度模板计算 水平和垂直方向的梯度分别如下:
Gh ( x, y) f ( x 1, y) f ( x 1, y) Gv ( x, y) f ( x, y 1) f ( x, y 1) x, y x, y
LOGO
利用一阶微分计算图像梯度
Step 2 利用一阶微分计算图像梯度 图像平滑
梯度法求图像梯度
LOGO
图像平滑
图像平滑 对于灰度图像,一般为了 去除噪点,所以会先利用离散 高斯平滑模板进行平滑:高斯 函数在不同平滑的尺度下进行 对灰度图像进行平滑操作, Dalal等实验表明在下,人体检 测效果最佳(即不做高斯平 滑),使得错误率缩小了约一 倍。不做平滑操作,可能原因: 图像时基于边缘的,平滑会降 低边缘信息的对比度,从而减 少图像中的信号信息。
ห้องสมุดไป่ตู้OGO
利用一阶微分求解图像梯度
一阶微分处理一般对灰度阶梯有较强的响应
f 一阶微分: x f ( x 1) f ( x)
对于函数f(x,y),在其坐标(x,y)上的梯度是通过 如下二维列向量定义的: f
Gx x f f Gy 这个向量的模值由下式给出: y
LOGO
根据Dalal等人实验,在人体目标检测中,在无符号方向角度范围并将 其平均分成9份(bins)能取得最好的效果,当bin的数目继续增大效果改变 不明显,故一般在人体目标检测中使用bin数目为9范围0~180度的度量方式。 如下图所示:
LOGO
Block中各个参数的最终选取:
LOGO
从图中可以看出,对于人体对象检测,块的大小为 3×3个单元格,单元格的大小为6×6个象素时,检测效果 是最好的,错误率约为10%左右。块的大小为2×2个单元 格,单元格大小为8×8个象素时,也相差无几。6-8个象 素宽的单元格,2-3个单元格宽的块,其错误率都在最低 的一个平面上。块的尺寸太大时标准化的作用被削弱了从 而导致错误率上升,而如果块的尺寸太小时,有用的信息 反而会被过滤掉。 在实际应用中,在Block和Cell划分之后,对于得到 各个像区域中,有时候还会为了进行一次高斯平滑,但是 对于人体目标检测等问题,该步骤往往可以忽略,实际应 用效果不大,估计在主要还是去除区域中噪点,因为梯度 对于噪点相当敏感
LOGO
利用线性插值的方法解决分块之间联系问题
利用线性插值的方法解决分块之间联系问题: 有些文献采用的不是块与块重叠的方法,而是采用线性插值的方法来削 弱混叠效应。这种方法的主要思想是每个Block都对临近的Block都有影 响,这种影响,我们可以以一种加权方式附加上去。
LOGO
基于线性插值的基本思想,对于上图四个方向(横纵两个45度 斜角方向)个进行一次线性插值就可以达到权重分配目的。下面介 绍一维线性插值。假设x1和x2是x块相邻两块的中心,且x1<x<x2。 对w(即权重,一般可直接采用该block的直方图值即h(x))进行 线性插值的方法如下式:
LOGO
感兴趣的同学可以下载: /sites/default/files /HOG.pdf
感谢您的关注
LOGO
图像梯度方向直方图的生成步骤
生成步骤:
LOGO
HOG描述子高维图像特征向量生成步骤
HOG描述子高维图像特征向量生成步骤: 1.图像归一化 2.利用一阶微分计算图像梯度 3.基于梯度幅值的方向权重投影 4.HOG特征向量归一化 5.得出HOG最终的特征向量
LOGO
图像归一化
step 1:图像归一化 归一化图像的主要目的是提高检测器对光照的 鲁棒性,因为实际的人体目标可能出现的各种不 同的场合,检测器,必须对光照不太敏感才会有 好的效果。
LOGO
在人体检测系统中进行HOG计算时一般使用L2-norm, Dalal的文章也验证了对于人体检测系统使用L2-norm的时候 效果最好。
LOGO
HOG最终的特征向量生成
Step 5 HOG最终的特征向量生成
LOGO
HOG的应用
HOG的应用: 主要用在object detection 领域,特别是行人检 测,智能交通系统,当然也有文章提到把HOG用在 手势识别,人脸识别等方面。
LOGO
对梯度方向的投影权重方式的选取: 对于梯度方向的加权投影,一般都采用一个权重投影 函数,它可以是像素点的梯度幅值,梯度幅值的平方根或 梯度幅值的平方,甚至可以使梯度幅值的省略形式,它们 都能够一定程度上反应出像素上一定的边缘信息。根据 Dalal等人论文的测试结果,采用梯度幅值量级本身得到 的检测效果最佳,使用量级的平方根会轻微降低检测结果, 而使用二值的边缘权值表示会严重降低效果(约为5%个单 位10-4FPPW(False Positives Per Window))。
LOGO
HOG与SIFT的区别
HOG与SIFT的区别
HOG和SIFT都属于描述子,以及由于在具体操作上有 很多相似的步骤,所以致使很多人误认为HOG是SIFT的 一种,其实两者在使用目的和具体处理细节上是有很大 的区别的。HOG与SIFT的主要区别如下: ① SIFT是基于关键点特征向量的描述。 ② HOG是将图像均匀的分成相邻的小块,然后在所 有的小块内统计梯度直方图。 ③ SIFT需要对图像尺度空间下对像素求极值点,而 HOG中不需要。 ④ SIFT一般有两大步骤,第一个步骤是对图像提取 特征点,而HOG不会对图像提取特征点。
x x1 h( x1) h( x1) h( x) (1 ) b x x2 h( x 2) h( x1) h( x) ( ) b
其中b在横纵方向取块间隔,而在斜45度方向则可采用 sqrt(2)倍的块间隔。
LOGO
Step 4:HOG特征向量归一化
我们要对block块内的HOG特征向量进行归一化。对block块内特征 向量的归一化主要是为了使特征向量空间对光照,阴影和边缘变 化具有鲁棒性。还有归一化是针对每一个block进行的,一般采用 的归一化函数有以下四种:
2 2 f || f ||2 Gx Gy 1/2
f 2 f 2 x y
1/2
LOGO
因为模值的计算开销比较大,一般可以按如下公式近似求 解:
Dalal等人利用许多一阶微分模板进行求梯度近似值,但 在实验中表明模板[-1,0,1]效果最好。
LOGO
矩形HOG块的划分: 一般一个块(Block)都由若干单元(Cell)组成,一 个单元都有如干个像素点组成。
LOGO
LOGO
在每个Cell中有独立做梯度方向统计,从而以梯度方向为 横轴的的直方图,前面我们已经提到过,梯度方向可取0 度到180度或0度~360度,但dalal实验表明,对于人体目 标检测0度~180度这种忽略度数正负级的方向范围能够取 得更好的结果。然后又将这个梯度分布平均分成 个方向 角度(orientation bins),每个方向角度范围都会对应 一个直方柱。