方向梯度直方图(HOG)

概述 

HOG

HOG (Histogram of Oriented Gradients) 是一种在计算机视觉和图像处理中广泛使用的特征描述符,主要用于对象检测、图像识别等领域。HOG 通过计算和统计图像局部区域的梯度方向直方图来构成特征。以下是 HOG 的主要步骤:

  1. 预处理:图像首先会被归一化为统一的尺寸(例如 64x128 像素),并转换为灰度图像。这一步是为了减少光照和阴影的影响。
  2. 计算梯度:在每个像素位置,计算水平和垂直方向的梯度。这通常通过卷积图像与特定的梯度算子(如 [-1, 0, 1] 和 [-1, 0, 1] 的转置)来实现。梯度的幅度和方向也被计算出来。
  3. 划分单元格:图像被划分为小的单元格(例如 8x8 像素)。在每个单元格内,计算梯度方向的直方图。直方图的bin数量(即方向的数量)是预先设定的,例如 9 个bin,每个bin覆盖 20 度的范围。
  4. 计算块直方图:将几个相邻的单元格组合成一个块(block),例如 2x2 个单元格。然后,在每个块内,对单元格的直方图进行归一化。归一化是为了减少光照和阴影的影响。块内的单元格可以是重叠的,这意味着一个单元格可以属于多个块。
  5. 收集HOG特征:最后,将所有块的直方图连接起来,形成一个长向量,这就是图像的HOG特征。

HOG特征的一个重要优点是它们对光照和阴影的变化具有一定的鲁棒性,因为直方图的归一化步骤可以减少这些变化的影响。此外,HOG特征还可以与其他特征(如颜色特征)结合使用,以提高对象检测和识别的准确性。

HOG最初是为行人检测而开发的,但后来被广泛应用于其他计算机视觉任务中,如面部识别、手势识别等。

HOG举例

以行人检测为例,我们可以简要说明HOG(Histogram of Oriented Gradients,方向梯度直方图)的应用。

假设我们有一个图像,其中包含一个行人,行人正走在一栋白色建筑前,穿着白色外套和黑色裤子。由于背景大多是白色,黑色裤子的对比度将非常高,但外套与背景颜色相近,对比度将非常低。在这种情况下,使用HOG算法可以帮助我们有效地检测出行人。

HOG算法的工作原理是创建图像中梯度方向分布的直方图,并以一种特殊的方式对其进行归一化。这种特殊的归一化使得HOG能够有效地检测物体的边缘,即使在对比度很低的情况下也是如此。

在行人检测中,HOG算法首先将图像划分为小的单元格,并在每个单元格内计算梯度方向的直方图。然后,将相邻的单元格组合成块,并对块内的直方图进行归一化。最后,将所有块的直方图连接起来,形成一个长向量,这个向量就是图像的HOG特征。

得到HOG特征后,我们可以使用机器学习算法(如支持向量机SVM)进行训练,以学习如何根据图像的HOG特征来检测行人。在测试阶段,我们可以对新的图像计算HOG特征,并将其输入到训练好的模型中进行预测,从而判断图像中是否包含行人。

总之,HOG算法通过计算图像局部区域的梯度方向直方图来构建特征,对光照和阴影的变化具有一定的鲁棒性,因此在行人检测等计算机视觉任务中得到了广泛应用。

HOG算法原理 

HOG(Histogram of Oriented Gradients)算法原理主要是基于图像中物体的边缘方向局部统计。以下是HOG算法原理的详细解释:

  1. 主要思想:在一幅图像中,局部目标的表象和形状能够被梯度或边缘的方向密度分布很好地描述。其本质为梯度的统计信息,而梯度主要存在于边缘的地方。

  2. 实现方法

    • 图像预处理:首先,输入的图像会进行预处理,以减小光照、对比度等因素的影响,并将其转化为灰度图像。
    • 图像划分:图像会被划分为小的连通区域,这些区域被称为“细胞单元”(cell)。
    • 计算梯度:在每个细胞单元中,计算各个像素点的梯度和边缘方向。这通常涉及到计算像素点在水平方向和垂直方向的梯度,从而得到梯度的幅度和方向。
    • 统计直方图:然后,统计每个细胞单元的方向梯度直方图。每个直方图实际上是一个包含多个bin的数组,每个bin代表一个特定的方向范围。像素点根据其梯度方向为相应的bin投票,投票的权重通常是该像素点的梯度幅度。
    • 归一化:为了对光照和阴影有更好的不变性,需要对直方图进行对比度归一化。这通常是在更大的图像区域(称为“块”,block)中进行的。通过将局部直方图在更大的块范围内进行对比度归一化,可以提高算法的鲁棒性。
    • 组合特征:最后,将所有块的归一化后的直方图组合起来,就构成了整幅图像的HOG特征描述子。
  3. 应用:HOG特征描述子与SVM(支持向量机)等分类器结合使用,已经被广泛应用于图像识别中,特别是在行人检测、面部识别、手势识别等任务中获得了极大的成功。

总的来说,HOG算法通过计算和统计图像局部区域的梯度方向直方图来构建特征描述子,这些特征描述子能够很好地表示图像中目标的形状和边缘信息,对于目标检测等任务非常有用。

 请详细解释一下HOG算法的计算原理。

HOG(Histogram of Oriented Gradients)算法的计算原理主要基于图像中物体的边缘方向局部统计。以下是HOG算法计算原理的详细解释:

  1. 图像预处理
    • 原始图像可能受到光照、噪声等多种因素的影响,因此首先需要进行预处理。预处理步骤通常包括灰度化、降噪(如使用高斯滤波)、伽马校正(用于调节图像的对比度)等。
    • 灰度化是将彩色图像转换为灰度图像的过程,因为HOG算法主要关注图像的形状和边缘信息,而颜色信息对于这些任务来说通常不是必需的。
  2. 计算梯度
    • 梯度能够描述图像中像素值的变化情况,即边缘信息。在HOG算法中,通过计算每个像素点在水平方向(x轴)和垂直方向(y轴)上的梯度,可以得到该像素点的梯度幅值和梯度方向。
    • 常用的梯度计算方法包括使用差分滤波器(如Prewitt算子、Sobel算子等)对图像进行卷积运算。例如,Sobel算子包含两个3x3的卷积核,一个用于计算水平梯度,另一个用于计算垂直梯度。
  3. 划分图像区域(Cell)
    • 将预处理后的图像划分为若干个小的单元格(Cell),每个单元格的大小通常是固定的,例如8x8或16x16像素。
    • 划分单元格的目的是为了后续计算梯度方向直方图做准备。
  4. 统计梯度方向直方图
    • 对于每个单元格内的像素点,根据其梯度方向进行统计。通常将360度方向划分为若干个区间(bin),每个区间表示直方图的一个维度。
    • 将像素点的梯度幅值作为权重,根据其梯度方向将其投票到相应的bin中。这样,每个单元格就形成了一个多维的梯度方向直方图特征向量。
  5. 归一化直方图特征
    • 由于图像中物体的尺度变化、光照变化等因素可能导致梯度幅值的变化,因此需要对得到的直方图特征进行归一化。
    • 归一化通常是在更大的图像区域(称为“块”,Block)中进行的。一个块可以由多个相邻的单元格组成,例如2x2个单元格。对每个块内的单元格直方图进行归一化,可以消除不同尺度、光照等因素造成的差异。
  6. 组合特征向量
    • 将所有块的归一化梯度方向直方图拼接成一个更长的特征向量,即为整幅图像的HOG特征向量。
    • 这个特征向量包含了图像中物体的形状和边缘信息,可以用于后续的目标检测、图像识别等任务。

通过以上步骤,HOG算法能够提取出图像中物体的形状和边缘特征,这些特征对于目标检测、行人检测等任务非常有用。同时,由于HOG算法对光照、尺度等因素具有一定的鲁棒性,因此在计算机视觉领域得到了广泛的应用。

引用

https://zhuanlan.zhihu.com/p/85829145

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值