OpenCV 学习笔记07 目标检测与识别 OpenCV 学习笔记 05 人脸检测和识别

目标检测与识别是计算机视觉中最常见的挑战之一。属于高级主题。

本章节将扩展目标检测的概念,首先探讨人脸识别技术,然后将该技术应用到显示生活中的各种目标检测。

1 目标检测与识别技术

为了与OpenCV 学习笔记 05 人脸检测和识别进行区分;需重新说明一下什么是目标检测。

目标检测是一个程序,它用来确定图像的某个区域是否有要识别的对象,对象识别是程序识别对象的能力。识别通常只处理已检测到对象的区域。若人们总是会在有人脸图像的区域去识别人脸。

在计算机视觉中有很多目标检测和识别的技术,本章会用到:

  • 梯度直方图(Histogram of Oriented Gradient, HOG)
  • 图像金字塔(image pyramid)
  • 滑动窗口(sliding window)

与特征检测算法不同,这些算法是互补的。如在梯度直方图(HOG)中会使用滑动窗口技术。

1.1 HOG 描述符

HOG 是一个特征描述符,因此 HOG 与 SIFT、SURF 和 ORB 属于同一类型的描述符。

在图像和视觉处理中常常会进行目标检测,其实目标检测的内部机制都差不多,如人脸识别的 LBPH 描述符:

  • 第一步:将图像划分成多个部分
  • 第二步:计算各个部分的梯度

HOG 不是基于颜色值而是基于梯度来计算直方图。

HOG 所得到的特征描述符能够为特征匹配目标检测(或目标识别)提供非常重要的信息。

HOG 提取特征的过程:先将目标图像分成小单元,每个小单元是 16*16 的像素块;每个单元都包含了视觉表示,该视觉表示按按八个方向(N、NW、W、SW、S、SE、E、NE)所计算的颜色梯度。

每个单元的八个值就为直方图,因此,每个单元都会有唯一的标识(signature)。将直方图外推(extrapolation)成描述符是相当复杂的过程:计算每个单元的局部直方图,这些单元会合成较大的区域,也称为块(block);块可由任意多个单元组成,但 Dalal 和 Triggs ( HOG 的发明人)发现当进行人检测时,一个块包含 2 * 2 的单元时可得到最好的效果。按块构成特征向量是为了便于归一化,同时也考虑到了光照和阴影(shadowing)的变化(一个单元的区域太小,不能检测到这样的变化)。这样做减少了图像与块之间光照和阴影的差异,从而提高了检测精度。

仅仅比较两幅图的单元是行不通的,除非这两幅图像相同(从大小和数据两方面而言)还有两个主要的问题需要解决:位置和尺度。

1.1.1 尺度问题

对于这个问题,可以通过两个例子来说明:若要检测的目标(比如自行车)是较大图像中的一部分,要对两幅图像进行比较。如果在比较过程中找不到一组相同的梯度,则检测就会失败(即使两幅图像都有自行车)。

1.1.2 位置问题

在解决了尺度问题后,还有另外一个问题,要检测的目标可能位于图像的任何位置,所以需要扫描图像的各个部分,以确保能找到感兴趣的区域,且在这些区域中去尝试检测目标。即使待检测图像中的目标和训练图像中的目标一样大,也需要通过某种方式让 OpenCV 定位该目标。因此,只对有可能存在目标的区域进行比较,而该图像的其余部分会被丢弃。

为了解决上述问题,需要熟悉图像金字塔和滑动窗口的概念。

1.1.2.1 图像金字塔

猜你喜欢

转载自www.cnblogs.com/gengyi/p/10555622.html