1、山 西 大 学 论 文论文题目群体人脸检测系统的设计与实现院系、专业计算机与信息技术学院、计算机科学与技术1群体人脸检测系统的设计与实现内容提要人脸检测的对象主要来源是摄像头获取的图像或者本地图像,检测前对图像进行预处理,其主要操作包括对图像进行光线补偿,二值化,开闭运算等。经过预处理后图像所包含的主要信息是类人脸区域.本文通过对人脸的数学形态特征的研究来确定人脸判定的算法,其中主要有填充率,几何比例,区域面积和面积比率四个方面。最终本系统的测试结果显示人脸检测率能达到85%左右。关键词人脸检测;光线补偿;二值化;开闭运算;联通区域1. 引言1.1 研究目的和内容肤色是人类所特有的颜色特征,利
2、用肤色来对图像进行分析具有其他方法无法比拟的潜在优势。本文研究的目的是利用人类的肤色特征,在具有复杂背景下的情况下,对肤色进行分割,分离出肤色区域,运用数学的形态学处理,对图像进行预处理,在预处理后的图像中通过对肤色区域的特征匹配,最终确定并标注人脸区域。围绕基于肤色的人脸检测,本文主要包括以下内容:(1)对图像的存储原理和像素排列进行了较为全面的研究,分析了图像像素获取的三种方法,通过对比各种方法的优劣,选择最适合本系统的像素获取方法。(2)创建肤色模型进行肤色分割。颜色空间有很多种,包括RGB颜色空间,YCbCr颜色空间,HSV颜色空间,HIS颜色空间等,对比它们对肤色的敏感度和运算效率,
3、本文最终选用RGB和YCbCr颜色空间。通过比较肤色在这两种颜色空间上的分布,采用双阈值的方法进行肤色分割。(3)使用数学方法对图片进行预处理。对图片的预处理包括腐蚀、膨胀、开运算和闭运算。其中,腐蚀运算可以有效的消除二值图像中的细小噪声并且分离细小的联通区域,极大的减少了后期对非人脸区域的处理,显著的提高运算速度;膨胀运算是和腐蚀运算相对而言的,它可以消除肤色区域中的噪声,联通因外界因素所造成的同一人脸分离的区域。而开运算就是指先做腐蚀操作,再做膨胀操作;闭运算则是先做膨胀操作,再做腐蚀操作。(4)消除非人脸区域。由于人脸具有鲜明的几何特征,可以通过以下几个方面消除非人脸区域:长宽比,面积,
4、填充率,面积比值等。通过这些操作就可以基本确定人脸区域的范围了。(5)标记人脸。经过上述的操作,剩下的基本可以确定是人脸,但是又不能完全排除非人脸区域的存在,所以最后标记不免有误检和漏检的情况。1.2 国内外研究现状目前,国外对人脸检测问题的研究很多,美国,英国等许多国家有大量的研究组从事人脸检测的研究,这些研究受到军方,警方以及一些公司的高度重视和资助。对人脸检测问题的研究比较著名的有美国麻省理工大学(MIT)的媒体实验室和人工智能实验室,卡内基梅隆大学(CMU)的机器人研究所以及Illinois大学的Beckman研究所等。自1995年以来,国外一些公司看准了人脸识别系统在商贸和保安方面的
5、广阔应用前景,2动用了大量人力和物力,独立研制或与高校合作,开发了多个人脸识别系统,其中大多数产品将人脸检测作为系统的一个重要组成部分,有代表性的有如下产品:德国Cognitec Systems公司的Face VACS人脸识别系统;美国Identix公司的FaceIt人脸识别系统;加拿大Imagis公司的ID-2000面部识别软件;美国Viisage公司的FaceTools人脸识别系统等。在国内也有许多学校和单位从事人脸检测与人脸识别相关的研究。比如清华大学、北京大学、亚洲微软研究院、中科院计算技术研究所、西北工业大学和中国科学院自动化研究所等都有人员在从事人脸检测相关的研究。国内也有一些人脸
6、检测的研究转化为商品的实例,主要代表是考勤机和门禁卡,比如汉王的人脸识别考勤机、科密人脸识别考勤机以及,广州超越软件公司的BioFace系统等等。2. 需求分析2.1 需求产生对图像目标的检测与识别是机器识别领域中一项十分重要的研究内容,而对人脸的检测与识别又是一项十分具有现实意义的研究,人脸信息是图像和视频中最重要的开放信息源之一。通过对人脸的检测和识别可以确定个体的性别,年龄,表情,姿态等信息。对人脸信息进行处理和研究已经成为现阶段基于生物特征进行的身份验证的重要组成部分之一,也是模式识别与机器视觉领域内所关注的重要问题。人脸检测是指在输入的图像信息中提取人脸的位置,姿态,大小并且标记的过
7、程。人脸检测作为人脸识别技术中的一个关键性的问题,近年来一直备受各研究机构的重视,相关研究课题十分活跃。但是早期的人脸识别是建立在假设人脸区域已知的条件下的,所以人脸检测的研究并未受到足够的重视,近年来,随着电子商务的普及,在复杂情况下进行自动的人脸识别,首先要做的就是确定人脸区域,人脸检测的研究就显得日益迫切。同时,经过几十年的发展,人脸检测的技术已经不仅仅局限于人脸识别,在人工情感计算,基于内容的检索,数字视频处理,视觉检测等方面都有着重要的应用价值1。人脸检测与识别技术的研究最早始于60年代末七十年代初,迄今己有40多年的历史,经过几十年的曲折发展已日趋成熟。作为一种重要的个人身份鉴别方
8、法,人脸检测与识别技术可以广泛地应用于国家安全、智能门禁、视频监控、公安布控、身份验证等多种场合。与其他身份鉴别方法相比,具有直接、友好、方便和鲁棒性强等特点,因此,人脸检测与识别问题的研究不仅在模式识别中具有重大的理论意义,而且具有很强的实用价值。2.2 功能需求分析该软件的最主要的功能就是能够标记出人脸。首先系统需要通过摄像头或者本地的磁盘获取图像,然后对该图像进行预处理。预处理的过程是人脸检测过程中非常重要的一个步骤,处理的好坏与否直接关系到后期的检测效果。最后对图像进行人脸标记。因此本设计所要完成的主要功能如下所示:图像获取功能:该模块主要完成的任务是从摄像头或者本地磁盘获取源图像,获
9、取后的图像可以在系统界面预览。图像预处理功能:该模块对图像的操作主要包括光纤补偿,二值化,腐蚀膨胀运算和开闭运算等。人脸标记功能:该模块的功能是正确标记人脸位置,用黄色矩形框圈住人脸,并且将结果在系统界面显示出来。人脸个数统计功能:该模块能统计出图像中能识别出的人脸的个数。2.3 开发环境需求分析3(1)硬件环境具有可靠性,可用性和安全性,具有完善的技术支持。能够满足个人学习和设计需要。其中CPU在1GHZ以上,内存在512M以上。(2)软件环境本系统需要运行在有持续工作能力、高稳定性、高度可集成的开放式标准的操作系统上,如windows操作系统。在系统开发上需要面向对象的高级程序设计语言处理
10、软件,如visual studio2010。需要熟悉C#高级程序设计语言。2.4 可行性分析在开发人脸检测程序之前,我参考了许多前人所写过的诸多论文和源程序,在开发的过程中又加入了自己的开发思想,最终成功实现了对图片的人脸检测。在技术上对人脸进行测大致可以分为三个步骤,图像获取,图像预处理,人脸标记。其中在图像预处理上有很多的方法,我们可以根据有选择的对图像进行处理。在本系统中我选择的过程是,光线补偿,二值化,腐蚀膨胀运算,开闭运算。在人脸标记过程中主要包括联通区域统计,去除假区域,标记人脸区域。在操作上使用现有已经成熟稳定的windows操作系统,微型机的硬件配置已基本满足要求,操作上完全可
11、行。3. 群体人脸检测系统的设计3.1 系统功能模块图该系统的功能模块图如图 1 所示:图 1 系统功能模块图3.1 系统结构图本系统的结构分为图像输入,图像处理,图像输出三个模块,其系统结构图如图 2 所示:图像的所有像素点人脸检测算法 包含人脸区域在内的一系列矩形4图 2 系统结构图3.2 系统流程图本系统的执行过程是自动执行的,用户不能单独执行流程图中的某一步每一次进行人脸检测都会按照下列步骤进行,系统流程图如图 3 所示:图3 系统流程图3.3 基于 YCbCr 和 RGB 颜色空间的肤色建模3.3.1 RGB 色彩空间RGB色彩空间也称为红,绿,蓝色彩空间。它的三中基色是红色(波长
12、)70.nm,绿色( 546.1nm)和蓝色( 435.8nm)。利用这三种基色表示所有的颜色就是RGB色彩空间,也是现在最常用的色彩空间。在现在绝大多数有彩色显示功能的设备上,屏图像输入 图像处理 图像输出联通区域统计去除非人脸联通区域标记人脸区域图像二值化腐蚀膨胀运算打开图像,读取数据光线补偿5幕的发光原理就是根据RGB色彩空间的原理来实现的,这种颜色表示方法简单易懂,硬件上又特别容易实现,所以在当今的多媒体技术中应用最多的就是RGB色彩空间。自然界中任何一种颜色都可以使用R,G,B三基色按不同的比例混合而成。三种基色的值域为0到255,当三基色的值都为0时,表示的颜色是黑色;当三基色都为
13、最大值时,表示的颜色是白色。改变三基色中任何一个分量的值都会改变其所表示的颜色。这种颜色空间的物理特性非常明显,可以很好的应用到数据的处理上。RGB颜色的色彩表示立方体如图4所示:图4 RGB 色彩立方体图然而,RGB色彩空间的颜色通道的相关性过高,信号感觉的不统一,色度和亮度数据的混淆使得RGB模型不能成为颜色分析和基于颜色的检测算法的最佳选择。肤色在RGB颜色空间上的分布规律性很差,如果只用RGB色彩空间进行肤色建模无疑将既复杂又不好控制。3.3.2YCbCr 色彩空间YCbCr是DVD、摄像机、数字电视等消费类视频产品中,常用的色彩编码方案。YCbCr不是一种绝对色彩空间,是YUV压缩和
14、偏移的版本。YCbCr其中Y是指亮度分量,Cb指蓝色色度分量,而Cr指红色色度分量。人的肉眼对视频的Y分量更敏感,因此在通过对色度分量进行子采样来减少色度分量后,肉眼将察觉不到的图像质量的变化。YCbCr色彩空间具有以下优点: 具有与人类视觉感知过程相似的构成原理。 YCbCr应用十分广泛,它不只适用于电视领域,在视频编码和常用的png,jpg等图片标准中应用也十分广泛。 不同于RGB的色彩空间,YCbCr色彩空间具有HIS等其他类型色彩空间把亮度信息分离出来的特点。 YCbCr色彩空间可以很容易的从RGB色彩空间转换而来。 另外,在YCbCr色彩空间上,肤色的聚类特性比较好,在分离肤色的时候
15、更加容易控制。3.3.3 肤色建模为了使肤色分割的过程中肤色判断的更加准确,本文采用了双阈值的肤色分割方法,即使用RGB和YCbCr两种颜色空间来判断肤色,这样可以很好的降低肤色的误判率。从一副图像中可以很容易得到它的RGB序列,通过对每一个像素点的R,G,B分量进行阈值控制就可6以初步得到属于肤色的像素点。当R,G,B分量满足公式(1)时,该像素点可能是肤色: 0.3.64298.5rgr同时将RGB色彩空间转换成为YCbCr色彩空间,通过公式(2)运算就可以得到Y, Cb, Cr分量的值: 1665.4812.534.9628(/)*37901*.8.2Y RCb Gr BYcBCr色彩空
16、间基本不受亮度变化的影响,它把亮度信息分离出来,其中Cb和Cr另个分量又相互独立,肤色在此空间上的聚类特性比较令人满意,根据肤色在YCbCr色彩空间上的聚类分布设置另外一个阈值,是肤色的像素点应该满足公式(3): 9012735Cbr这样双阈值的肤色模型已经建立完成。但是,图片的背景是十分复杂的,难免存在类似肤色的颜色存在,图像二值化以后会存在大量的噪声,这对后期的人脸检测是十分不利的,消除噪声就显得尤为重要。3.4 腐蚀,膨胀,开运算和闭运算3.4.1 腐蚀运算腐蚀是一种消除边界点,使边界向内部收缩的过程。可以用来消除小且无意义的物体。在数学形态学中 A 和 B 是两个集合, A 被 B 腐
17、蚀定义为: |()zABA其中 A 是被腐蚀的集合,B 称为结构元素,将结构元素 B 相对于集合 A 进行平移,只要平移后结构元素都在集合 A 中,那么这些点都是 A 经过 B 腐蚀后所得到的点。图像经过腐蚀后可以消除边界点。如果结构元素 B 选择为 3*3 的矩阵,经过腐蚀后可以使联通区域的边界向内收缩一个像素。而小于结构元素的联通区域则会被去除,这样经过多次的腐蚀就可以把图像中的绝大部分的噪声去除。另外,当结构元素足够大时,腐蚀操作可以将两个相互之间有细小联通的区域分开。腐蚀操作的模板卷积图如下:腐蚀操作前集合图如图5,腐蚀的结构元素图如图 6 所示,腐蚀操作后的集合图如图 7 所示。(1
18、)(2)(3 )7图5 腐蚀操作前集合图图 6 腐蚀的结构元素图图 7 腐蚀操作后的集合图3.4.2 膨胀运算膨胀是将与物体接触的所有背景点合并到该物体中,使边界向外部扩张的过程。可以用来填补物体中的空洞。在数学形态学中膨胀的定义为:A 和 B 是两个集合,A 被 B 膨胀就是满足下列集合关系的元素的集合: |()zABA其中 A 是被膨胀的集合,B 是结构元素。将 B 的反射进行平移与 A 的交集不为空的元素的集合就是 A 被 B 膨胀的结果。膨胀操作是与腐蚀操作相对而言的,所以二值图像经过膨胀以后,可以消除联通区域内的非肤色噪点,使肤色区域更加连续。同理,如果使用3*3 的结构元素,膨胀操
19、作可以使肤色区域向外扩张一个像素。膨胀操作的模板卷积图如下:膨胀操作前的集合图如图 8 所示,膨胀的结构元素图如图 9 所示,膨胀操作后的集合图如图 10 所示。图8 膨胀操作前的集合图图 9 膨胀的结构元素图图 10 膨胀操作后的集合图3.4.3 开运算和闭运算先腐蚀后膨胀的过程称为开运算。用来消除小物体、在纤细点处分离物体、平滑较大物体的边界的同时并不明显改变其面积。先膨胀后腐蚀的过程称为闭运算。用来填充物体内细小空洞、连接邻近物体、平滑其边界的同时并不明显改变其面积。通常,由于噪声的影响,图象在阈值化后所得到边界往往是很不平滑的,物体区域具有一些噪声孔,背景区域上散布着一些小的噪声物体。
20、连续的开和闭运算可以有效地改善这种情况。有时需要经过多次腐蚀之后再加上相同次数的膨胀或者多次膨胀加上相同次数的腐蚀,才可以产生比较好的效果。比如,经过二值化以后的图像可能存在数量巨大的肤色噪声,这时通过选取适当的结构元素进行开运算就可以消除肤色噪声,而又不改变主要8肤色区域的面积和形状。反之,若二值图像皮肤区域之间因外界因素而没有相互连接,选择闭运算可以连接主要肤色区域,使人脸区域更加明显,为后期判断创造有利条件。4. 群体人脸检测系统的实现4.1 光线补偿考虑对图像进行光线补偿的原因是肤色的色彩信息很容易受图像采集时的光线强度,采集设备的色彩偏差和清晰程度等诸多原因的影响。这样会导致图像的整
21、体色彩向某一方向偏差,也就是会形成我们常说的色彩偏冷,色彩偏暖,照片发黄、偏蓝等等的现象。而这些现象在图像中很常见,因此进行光线补偿就显得很有必要。光线补偿的具体做法是先将整幅图像每个像素点的亮度从高到低进行排列,取前 5%的像素,将这些像素作为光线补偿的“参考白” ,同时将这 5%的像素的 RGB 分量都设置成为255。然后,用前 5%像素的亮度的平均值除以 255 就可以得到光线补偿系数。最后扫描整幅图像的每个像素,让每个像素的 RGB 分量都乘以光线补偿系数,如果大于 255,则将此分量的值设置成为 255,否则,保持原来的值不变。经过此处理就可以使整幅图片的亮度进行线性放大。但是不是每一副图像都需要进行光线补偿,有的图像亮度本来就很高,如果对亮度正常的图像进行光线补偿,效果会适得其反。它有可能会使颜色较浅的肤色变成白色,从而会造成图像二值化的时候对肤色区域的误检。因此,我们需要对光线补偿系数设置一个阈值,如果计算出的光线补偿系数小于此阈值,则不进行光线补偿。光线补偿的算法框图如图 11 所示:图11 光线补偿算法框图光线补偿前后的对比图如图 12 所示,从图中可以明显看出,光线补偿后图像的整体亮度有明显提高。Y计算图片的光线补偿系数补偿系数阈值进行光线补偿N结束开始