人脸检测算法-----学习OpenCV看源码文件

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/as472780551/article/details/85097976

方法3基于AdaBoost算法的人脸检测

2010年viola和Jones引入积分图的概念,提出了基于Haar-like特征、级联结构的AdaBoost算法,成功应用于模式识别领域,实现了实时人脸检测,使人脸检测技术取得了突破性进展。为适应背景的复杂性,研究者提出了将肤色等人脸特征和AdaBoost算法相结合的人脸检测新算法。算法首先结合人脸特征,利用人脸特征确定人脸的大致方向,然后用级联结构的AdaBoost算法进行验证。下图为该算法的人脸检测流程图

第一步:肤色区域检测

肤色的差别主要是亮度的差别而非我们表面认知的色彩差别,因此检测肤色区域时极容易受光照的影响,采用YCbCr色彩空间,可以使肤色有较好的聚类性。

第二步:人脸候选区域分割

在YCbCr色彩空间中,眼睛与皮肤的Cb和Cr分量有很大的差异,眼睛的灰度值相对较低,Y分量集中分布在(0,120)内,而且眼睛的Cb分量普遍比Cr分量的值高,由此将眼睛的色彩和亮度映射结合起来就能检测出眼睛区域的大小和位置。多数情况下嘴巴的方向和人脸的方向一致,具有很强的稳定性,嘴巴检测的情况类似眼睛的检测,此时Cb比Cr分量的值高很多,也就是说,嘴巴相对眼睛更容易检测到。最后根据人体学特征,根据人脸各部件的大体位置很容易确定人脸候选区域。

第三步:人脸候选区域分类

这一步利用AdaBoost算法,通过对人脸候选区域进行积分图计算,快速计算Harr-like特征,利用AdaBoost算法将Harr-like特征生成的弱分类器叠加成为强分类器,再将多个强分类器级联成人脸检测分类器。

方法4 基于面部双眼结构特征的人脸检测

首先在原始灰度图像上计算各像素点的梯度方向对称性,然后以梯度方向对称性高的点为特征点,并进一步组合成特征块,通过一种简单的抑制方法,滤去大部分孤立的非人脸部件的特征点,再运用一定的规则对各个特征块进行组合得到候选人脸区域最后对候选人脸进行人脸部件的验证,剔除假脸,得到真正的人脸区域。

第一步:梯度方向对称分布特征点的提取

第二步:双眼特征块的提取

第三步:人眼的验证
OpenCV3源代码文件夹sources:

• 3rdparty: 包含第三方库,如用视频解码用的 ffmpeg、jpg、png、tiff 等图片的解码库

• apps: 包含进行 Haar 分类器训练的工具,OpenCV 进行人脸检测便是基于 Haar 分类器。如果你想检测人脸以外的图片,千万不要错过这几个工具。

• cmake: 包含生成工程项目时cmake 的依赖文件,只能用于搜索第三方库,普通开发者不需要关心这个文件夹的内容。

• data: 包含 OpenCV 库及范例中用到的资源文件

• doc: 包含生成文档所需的源文件及辅助脚本

• include: 包含入口头文件。OpenCV子文件夹中是C语言风格的API。OpenCV 2 子文件夹中只有一个 opencv.hpp 文件,这是 OpenCV 2 及 OpenCV 3 推荐使用的头文件

• modules:算法模块的源代码。研究算法的同学 学习的重点!!!

• platforms: 包含交叉编译所需的工具链及额外的代码,交叉编译指的是在一个操作系统中编译供另一个系统使用的文件。

• samples:算法用法示例文件夹

猜你喜欢

转载自blog.csdn.net/as472780551/article/details/85097976