图像的特征工程:HOG特征描述子的介绍 (2)

图像的特征工程:HOG特征描述子的介绍

第一步:预处理数据(64x128)

这是大多数人都非常熟悉的一步。预处理数据是任何机器学习项目中的关键步骤,即使在处理图像时也没有什么不同。

我们需要对图像进行预处理,并将宽高比降低到1:2。图像大小最好是64 x 128。这是因为我们将图像分成88和1616小块来提取特征。具有指定的大小(64 x 128)将使我们的所有计算相当简单。事实上,这正是原始论文中使用的值。

回到我们的例子,让我们将大小为64x128作为目前的标准图像大小。以下是调整后的图像:

图像的特征工程:HOG特征描述子的介绍

第二步:计算梯度(x和y方向)

下一步是计算图像中每个像素的梯度。梯度是x和y方向上的小变化。这里,我要从图像中取一小块,然后计算它的梯度:

图像的特征工程:HOG特征描述子的介绍

我们将得到这个部分的像素值。假设我们为给定的部分生成下面的像素矩阵(这里的矩阵只是作为一个例子,这些并不是给定部分的原始像素值):

图像的特征工程:HOG特征描述子的介绍

我突出显示了像素值85。现在,要确定x方向上的梯度,我们需要从右边的像素值减去左边的值。类似地,为了计算y方向的梯度,我们将从所选像素上的像素值减去下面的像素值。

因此,该像素的x和y方向的梯度为:

X方向的变化($G_x$)= 89-78 = 11

Y方向的变化($G_y$)= 68-56 = 8

这个过程将给我们两个新的矩阵,一个在x方向上存储梯度,另一个在y方向上存储梯度。这类似于使用大小为1的Sobel内核。当发生剧烈变化时(例如在边缘附近),幅值(magnitude)会更高。

我们分别计算了x和y方向的梯度。对图像中的所有像素重复相同的过程。下一步是使用这些值找到幅值和方向。

第三步:计算幅值和方向

使用我们在最后一步中计算的梯度,我们现在将确定每个像素值的大小和方向。对于这一步,我们将使用勾股定理(是的,与你在学校学习的那个相同!)。

看看下面的图片:

图像的特征工程:HOG特征描述子的介绍

在之前的例子中,Gx和Gy分别是11和8。应用勾股定理计算总梯度大小:

总梯度幅值=$√[(G_x)^2 (G_y)^2]$

总梯度幅值=$√[(11)^2 (8)^2]= 13.6$

接下来,计算相同像素的方向。我们知道我们可以把角度写成tan

$$tan(Φ)= Gy/Gx$$

因此,角度的值将是:

$$Φ= atan(Gy/Gx)$$

当我们代入这些值时,角度是36°。现在,对于每个像素值,我们有总梯度(幅值)和方向。我们需要使用这些梯度和方向生成直方图。

但是请稍等——在深入研究HOG特征描述子中如何创建直方图之前,我们需要稍作休息。把这看作是整个过程中的一小步。我们将首先讨论一些简单的方法来创建直方图使用两个值,梯度和方向。

使用梯度和方向创建直方图的不同方法

直方图是显示一组连续数据的频率分布的图。变量(以箱子的形式)在x轴上,频率在y轴上。这里,我们设x轴上为角度,y轴为频率。

方法1:

让我们从生成直方图的最简单方法开始。我们将取每个像素值,找到像素的方向并更新频率表。

下面是高亮像素(85)的处理过程。由于该像素的角度为36°,我们将对角度值36添加一个数字,表示频率:

图像的特征工程:HOG特征描述子的介绍

对所有像素值重复相同的过程,最后得到一个频率表,表示角度以及这些角度在图像中的出现情况。这个频率表可用于生成在x轴上有角度值的直方图和在y轴上有频率值的直方图。

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/zzpzzg.html