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

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

介绍

在机器学习算法的世界里,特征工程是非常重要的。实际上,作为一名数据科学家,这是我最喜欢的方面之一!从现有特征中设计新特征并改进模型的性能,这就是我们进行最多实验的地方。

世界上一些顶级数据科学家依靠特征工程来提高他们在竞赛排行榜得分。我相信你甚至会在结构化数据上使用各种特征工程技术。

我们可以将此技术扩展到非结构化数据(例如图像)吗?对于计算机视觉爱好者来说,这是一个有趣的问题,我们将在本文中解决这个问题。准备好对图像数据进行特征提取形式的特征工程吧!

在本文中,我将向你介绍一种流行的图像特征提取技术——方向梯度直方图(Histogram of Oriented Gradients),或俗称的HOG。我们将了解什么是HOG特征描述子,它是如何工作的(算法背后的完整数学原理),最后,用Python实现它。

目录

什么是特征描述子?

HOG特征描述子简介

HOG的计算过程

预处理数据

计算梯度

计算幅值和方向

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

HOG的计算过程

计算梯度直方图

标准化梯度

一幅完整图像的特征

在Python中实现HOG特征描述子

什么是特征描述子?

你可能在阅读标题时就已经遇到了这个问题。所以,在我们跳进文章的HOG部分之前,首先要清楚这一点。

看看下面显示的两个图像。你能分辨出图像中的物体吗?

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

我们可以清楚地看到这里的右图有狗,左图有车。现在,让我让这项任务稍微复杂一点,分辨下图所示的对象:

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

还是挺容易的。你能猜出第一种和第二种情况之间有什么区别吗?第一对图像有很多信息,比如物体的形状,颜色,边缘,背景等。

另一方面,第二对信息少得多(只有形状和边缘),但它仍然足以区分这两个图像。

你知道我想说什么吗?在第二种情况下,我们还是很容易区分对象,因为它具有识别对象所需的必要信息。这正是特征描述子的作用:

它是图像的简化表示,仅包含有关图像的最重要信息。

以下是一些最受欢迎的的特征描述子。

HOG:方向梯度直方图

SIFT:尺度不变的特征变换

SURF:加速稳健特征

在本文中,我们将重点关注HOG特征描述子及其工作原理。让我们开始吧!

HOG特征描述子简介

HOG(Histogram of Oriented Gradients)是一种特征描述子,通常用于从图像数据中提取特征。它广泛用于计算机视觉任务的物体检测。

让我们看一下HOG的一些重要方面,它们与其他特征描述子不同:

HOG描述符关注对象的结构或形状。现在你可能会问,这和我们为图像提取的边缘特征有什么不同?在边缘特征的情况下,我们只识别像素是否是边缘。HOG还能够提供边缘方向。这是通过提取边缘的梯度和方向(或者你可以说大小和方向)来实现的

此外,这些方向是在“局部”进行部分计算的。这意味着整个图像被分割成更小的区域,对于每个区域,计算梯度和方向。我们将在接下来的小节中更详细地讨论这个问题

最后,HOG将分别为这些区域生成一个直方图。直方图是使用像素值的梯度和方向创建的,因此得名“方向梯度直方图”。

给一个正式定义:

HOG特征描述子计算图像局部区域中梯度方向的出现次数。

使用OpenCV等工具实现HOG非常简单。这只是几行代码,因为我们在skimage.feature库中有一个名为hog的预定义函数。但是,我们在本文中的重点是如何实际计算这些特征。

计算方向梯度直方图(HOG)的过程

我们现在应该对HOG特征描述子的基本概念有所了解。是时候深入研究本文背后的核心思想了。让我们讨论HOG的逐步计算过程。

考虑下面的尺寸图像(180 x 280)。让我们详细了解如何为此图像创建HOG特征:

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

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