目标检测与识别是计算机视觉中最常见的挑战之一。属于高级主题。
本章节将扩展目标检测的概念,首先探讨人脸识别技术,然后将该技术应用到显示生活中的各种目标检测。
为了与OpenCV 学习笔记 05 人脸检测和识别进行区分;需重新说明一下什么是目标检测。
目标检测是一个程序,它用来确定图像的某个区域是否有要识别的对象,对象识别是程序识别对象的能力。识别通常只处理已检测到对象的区域。若人们总是会在有人脸图像的区域去识别人脸。
在计算机视觉中有很多目标检测和识别的技术,本章会用到:
与特征检测算法不同,这些算法是互补的。如在梯度直方图(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)的变化(一个单元的区域太小,不能检测到这样的变化)。这样做减少了图像与块之间光照和阴影的差异,从而提高了检测精度。
仅仅比较两幅图的单元是行不通的,除非这两幅图像相同(从大小和数据两方面而言)还有两个主要的问题需要解决:位置和尺度。
对于这个问题,可以通过两个例子来说明:若要检测的目标(比如自行车)是较大图像中的一部分,要对两幅图像进行比较。如果在比较过程中找不到一组相同的梯度,则检测就会失败(即使两幅图像都有自行车)。
在解决了尺度问题后,还有另外一个问题,要检测的目标可能位于图像的任何位置,所以需要扫描图像的各个部分,以确保能找到感兴趣的区域,且在这些区域中去尝试检测目标。即使待检测图像中的目标和训练图像中的目标一样大,也需要通过某种方式让 OpenCV 定位该目标。因此,只对有可能存在目标的区域进行比较,而该图像的其余部分会被丢弃。
为了解决上述问题,需要熟悉图像金字塔和滑动窗口的概念。
原文:https://www.cnblogs.com/gengyi/p/10555622.html