人脸检测---基于肤色检测的实现
来源:互联网 发布:淘宝新开店铺如何推广 编辑:程序博客网 时间:2024/04/29 00:19
在2015年本科毕业的时候,当时因为保送研究生的时候,选择了图像处理的研究方向,因此本科的毕业设计就选择了人脸检测的课题。人脸检测是一个研究得比较深入得一门方向了,对于人脸识别的重要性不言而喻,人脸都检测不到,又何谈人脸识别呢?人脸检测的主要任务就是从给定图像中检测出人脸,同时标记出人脸的位置、数量和大小。人脸检测的研究方向可以大致地分为两个方面的研究。一是从静止的图像中进行扫描和检测,从而得到人脸检测的结果;二是从视频图像中判断是否存在人脸,这方面的研究难度远远高于从静止图像的检测人脸,它对硬件的反应速度以及精确度很高,同时对于算法的精确性以及检测速度要求更高,因此近几年的研究主要集中在视频图像序列的人脸检测。在完成这个毕业课题的时候,笔主首先选择了比较容易接入的方向,通过肤色实现人脸检测。这个方向算得上是权威和鼻祖的就是A. K. Jain了,他的论文:Face Detection in Colour Images在基于肤色检测的研究中基本上都是首先进行参考和研究的!虽然提出的检测模型到以后的检测率已经算不上高了,但是在其基础上提出的改进算法确实数不胜数,也出现了很多高质量的文章。
人脸检测算法的大致分类
肤色是人脸的基本特征,作为人脸检测的切入点是最简单直观的。在彩色图像中,肤色一般都是相对比较集中和稳定的区域,同时研究表明,不同的种族、年龄和性别的人在肤色上的主要区别主要亮度上,出去亮度这一个因素,肤色在一定的肤色空间内具有一定的聚类性,通过实现对肤色的检测和分割,从而进一步检测到人脸区域,这是基于肤色特征的人脸检测算法的核心思想。
进行参考白算法的出发点有两点:
①白色像素存在很多的图片中,在人脸图像中尤其明显,在眼球外围等处通常就是纯白色。因此可以将亮度最大的色彩的像素值调整为255。
②需要进行光线补偿的存在的图像在原来是白色的区域中有着最直接的体现,因此将光线补偿扩充到整张图像区域并不会影响到图片的特征信息,对肤色检测不会有本质的影响。
进行光照补偿完之后就需要对肤色进行建模了。建模的目的就是为了让肤色能够与照片中的其他像素点区分开来。建模的方向一是投射到何种色彩空间,在某些色彩空间下,肤色具有一定的聚类型,一般常见的的色彩空间有RGB、YCrCb以及HSI色彩空间。其中性能表现最好的就是YCrCb色彩空间,其性能表现主要是从肤色的聚类型,从RGB格式转换到目标色彩空间的运算复杂度以及该色彩空间运用的广泛度。而建模的方向二是以和何种数学形式表征肤色。对于通信人来说,对于高斯分布我们都有一种特殊的情节,基本上所以的基础研究都是从高斯白噪声开始的。无独有偶,在图像处理中,我们自然而然的联想到用高斯分布表征肤色的数学形式。肤色的高斯模型可以这么去认识,用一种似然概率表征与肤色的相似程度。
高斯模型在YCbCr色彩空间中的构建主要共分为三步:
①收集大量人脸图片样本,收集的样本应多样化,包含不同性别,年龄以及种类,并剪切出人脸肤色区域做统计样本;
②在将色彩空间转换到YCbCr色彩空间,统计所有像素的Cb、Cr的数量;
③计算出均值,,同时计算出方差,以及协方差和。
最后得到的高斯似然图实验结果:
基本上所有的图像处理最后都要归结到二值化的过程。因为二值化能够简单明了的规划处那些事我们感兴趣的部分,那些不是我们感兴趣的部分,对于计算机的处理更加方便快加。Ostu是一种二值化算法,它计算阈值的方法是根据整个图像的类间差来实现的。当类间差最大的时候,也就是二值化最明显的时候,这个时候二值化的效果就是最好的了。相比于固定阈值法来说,Ostu这种自适应的算法更加的科学,二值化的效果更好。
①高度和宽度必须都大于20,且矩形面积大于400;
②高度和宽度比率应该在范围(0.6,2)内;
此外还有欧拉数的判定,达到人脸区域筛选的目的,笔者在论文设计中也引用了这个方法,由于篇幅有限,不再继续赘述。
最后得到的人脸检测效果图:
这只是初步的人脸检测的结果,也就是初步的人脸检测的候选区域,这种初步的人脸检测效果并不是很好,存在很多漏检和误检的情况,为了改善这一个情况,笔者将会在下一讲中对于模板匹配的算法进行介绍。
- 人脸检测---基于肤色检测的实现
- 基于肤色的人脸检测
- 基于YCbCr的肤色检测OpenCV实现
- 人脸--基于肤色模型的人脸检测研究
- 基于肤色的人脸检测与分割
- 基于统计的肤色检测
- 基于opencv的肤色检测
- 基于肤色和眼睛定位的人脸检测算法——MATLAB实现
- 基于肤色和眼睛定位的人脸检测算法——MATLAB实现
- 基于人脸检测的肤色采集以及两种常见肤色模型建模
- 基于OpenCV 肤色检测
- 人脸肤色检测模型
- 基于椭圆模块的肤色检测
- 基于贝叶斯判决的肤色检测
- 简单的基于YCrCb颜色空间的人脸检测(肤色)
- 简单的基于YCrCb颜色空间的人脸检测(肤色)
- 基于肤色分割和改进AdaBoost 算法的人脸检测
- 肤色检测算法 - 基于二次多项式混合模型的肤色检测。
- JackSon——轻松解析Json/XML数据
- [Leetcode]Word Pattern
- Ribbon界面设置图片索引
- static全局变量与普通的全局变量有什么区别?static局部变量和普通局部变量有什么区别?static函数与普通函数有什么区别?
- Welcome to JAVA!(第4章课后习题)
- 人脸检测---基于肤色检测的实现
- 将IDEA maven项目中src源代码下的xml等资源文件编译进classes文件夹
- Android面试准备:事件分发机制
- PowerShell 脚本在 Studio 中乱码
- 概览J2EE
- C++primer学习:string类操作练习(3)
- UI13_Block
- Java程序员面试中的多线程问题(转)
- 数据写到本地