关注并星标
从此不迷路
计算机视觉研究院
公众号ID|ComputerVisionGzq
学习群|扫码在主页获取加入方式
文末有送书福利!!!
计算机视觉研究院专栏
作者:Edison_G
OpenCV 中提供了关于人脸识别的算法,它主要使用 Haar 级联的概念。
1.Haar 特征
人脸识别使用 Haar 级联分类器,通过对比分析相邻图像区域来判断给定图像或子图像与 已知对象是否匹配。Haar 特征分为 4 种类型:边缘特征、线性特征、中心特征和对角线特征。将这些特征组合成特征模板,特征模板内有白色和黑色两种矩形,并定义该模板的特征值为白 色矩形像素之和减去黑色矩形像素之和。Lienhart R.等人对 Haar-like 矩形特征库做了进一步 扩展,扩展后的特征大致分为 4 种类型——边缘特征、线性特征、圆心环绕特征和特定方向 特征,如图 1所示。
图 1 扩展后的 Haar 特征
Haar 特征的提取简单来说就是通过不断改变模板的大小、位置和类型,将白色矩形区域 像素之和减去黑色矩形区域像素之和,从而得到每种类型模板的大量子特征。
2.积分图
计算 Haar 的特征值需要计算图像中封闭矩形区域的像素值 之和,在不断改变模板大小和位置来获取子特征的情况下,计算 大量的多重尺度区域可能会需要遍历每个矩形的每个像素点的 像素值,且同一个像素点如果被包含在不同的矩形中会被重复遍 历多次。这就导致了大量的计算和高复杂度,并且包含了大量不 必要的操作,因此可以用积分图来减少计算量。
积分图的原理是从第二次遍历图像开始,通过第一次遍历图 像时保留下来的矩形区域 4 个角的值来提供需要的像素的总和。我们通过图 2 所示的积分原图可以更好地理解这个概念,因 此如果需要计算图像中任意矩形区域的面积,就不需要遍历区域 内的所有像素点。
图 2 积分原图
例如,计算图 12.5 中矩形 ABCD 的面积。将矩形 ABCD 的面积记为 S1,图中左顶点记为 O 点,以 O 点与 A 点连线为对角线的矩形面积记为 S2,以 O 点与 B 点连线为对角线的矩形面 积记为 S3,以 O 点与 C 点连线为对角线的矩形面积记为 S4,以 O 点与 D 点连线为对角线的矩 形面积记为 S5,如图 3所示。
图 3 O 点对应的不同矩形区域
有了 4 个区域的面积后,就可以通过 S2、S3、S4 和 S5 来计算出 S1 的面积了,如式所示。
提取目标图像的 Haar 特征需要计算多个尺度矩形的和。这些计算是重复的,因为遍历图 像时反复遍历了同一个像素点,而这会导致系统运行速度缓慢且效率低下,并且这对构建一个 实时的人脸识别系统来说是不可行的,因为卡顿会造成用户体验不好的情况。
其实不需要多次遍历相同的像素点。运用积分图的思想,如果要计算任意一个矩形区域, 上述公式等号右边的所有值在积分图像中都是易于获取的,之后只需要用正确的值替代它们就 可以比较轻松地提取相关特征了,从而大幅度减少了计算量。
3.Haar 级联
Haar 级联是一个基于 Haar 特征的级联分类器,级联分类器能够把弱分类器串联成强分 类器。弱分类器可以理解为性能受限的分类器,它们没有办法正确地区分所有事物。当问题 很简单时,弱分类器产生的结果是可以接受的,但是问题一旦复杂起来,结果就会出现很大的偏差。强分类器可以正确地对数据进行分类,建立一个实时系统来保证分类器运行良好并 且足够简单。
在强相连与弱相连之间,唯一需要考虑的就是分类器够不够精确的问题。如果试图获得更 精确的结果,那么最终系统就会变成计算密集型,但运行速度慢的系统。精确度和速度的取舍 在机器学习中十分常见。将一些弱分类器串联成一个统一的强分类器可以解决这个问题。弱分 类器本身面对的问题的需求不需要太精确,将它们串联起来形成的强分类器具有高精确度、低 速度的特点。
本文节选自《 OpenCV图像处理入门与实践》,作者荣嘉祺,本文已获得人民邮电出版社转载授权。
文末赠书
OpenCV 4详解教程,基于Python语言实现,剖析利用OpenCV 4进行图像处理的基本操作,配合项目实战,真实应用场景,附赠源代码、讲解视频及PPT。
如果你对以上内容感兴趣
快在留言区大声告诉我们
截止2月16日晚八点
留言获赞数最高的五位同学各赠一本
《OpenCV图像处理入门与实践》
没有抽中的粉丝不要气馁,可在京东购买此书,快快来抢购吧。