基于matlab的人脸面部检测的口罩识别系统

作为数字图像处理和计算机视觉领域的一个重要组成部分,利用摄像机对图像进行采集,从图像中检测人脸并进行口罩穿戴的识别的有着非常重要的研究意义和应用价值。面对突如其来的新型肺炎疫情,人们生活秩序被严重打乱。跟普通流感不同,此次疫情可以通过人体唾沫传播,感染他人能力很强。近期,面对疫情,市面上口罩更少被抢得一个不留。因为,面对此次疫情,出门戴口罩变得尤为地重要。可以直接从源头把关,将外接人体唾沫,气流等进行第一屏障地隔离,有效地保护了自己和他人,不给病毒以传播的机会。而往往,就有一些人不响应国家和党的号召,面对此次病毒不以为然,出门依然不爱戴口罩,给病毒有机可乘,给自己和他人的生命安全造成重大安全隐患。如果有一套系统,可以通过数字图像的采集识别,判别出该人是否穿戴口罩,并且做出相应警示报警等,显得尤为重要和迫切。随着计算机视觉技术的逐年精进,基于图像的口罩识别迅速吸引了人们的视线。

本文选择通过检测人脸,进而统计肤色的原理来达到口罩识别的目的,同时选择肤色作为口罩检测的主要依据。由于在 RGB 色度空间中,肤色聚类性不强,且易受亮度信息干扰,本文选择在 YCbCr 色彩空间通过阈值法建立肤色模型,完成肤色分割,形态学处理去干扰后得到初步的口罩定位。由于肤色检测准确率不高,因此进一步利用hough 变换检测人脸轮廓对人脸区域进行精确定位,最后框出人脸并实现人数统计,结果表明本算法对于正面人脸检测效果良好,统计结果较为精确。

本文还设计了一个简洁美观的GUI 界面,这个界面可以更好地展现处理的过程,使得实现的演示简单明了。

关键词:MATLAB; 人脸检测; 肤色检测; 口罩识别; 形态学  

目录

1 前言 4

1.1 课题研究内容 5

1.2 论文结构和各章节安排 5

2 口罩识别总体设计 6

2.1 开发及运营环境 6

2.1.1matlab 简介 6

2.1.2运营环境 6

2.2 口罩识别的算法设计 7

图 2.2 算法流程图 8

2.3 色彩空间的选取及肤色模型的建立 8

2.3.1 色彩空间的选取 9

2.3.2 肤色模型的建立 12

2.5 所示。 14

图 2.5 人脸初定位流程图 14

2.4 数学形态学知识的应用 14

2.4.1 数学形态学知识实现对非肤色最大面积块的精确定位 14

2.6 口罩区域精确定位流程图 15

2.5 本章小结 17

3 各模块相关图像处理技术介绍 18

3.1 各模块在图像处理方面的工作介绍 18

3.2 人脸预处理模块 18

3.2.1 三原色通道分离 18

3.3 人脸肤色定位模块 19

3.3.1 RGB转YCBCR色彩空间 19

3.3.2 人脸肤色定位 20

3.4 形态学处理干扰 21

3.5 本章小结 22

4 结果分析与软件实现 23

4.1 系统整体测试 23

4.1.1 系统界面 23

4.1.2 使用介绍 23

图 4.5 人脸二值图标定 25

4.2 测试结果分析 26

4.2.1 相同人的不同背景测试 26

4.2.2 不同人的相同背景测试 27

4.2.3 有无戴口罩对比测试 28

4.2.4 室内外对比测试 29

4.3 本章小结 29

5 总结与展望 30

5.1 本研究所作的工作总结 30

5.2 需要改进的地方 31

参考文献 32

致 谢 32

1 前言

每当流行病发起,尤其是今年来势汹汹的肺炎病毒疫情,可以通过人体唾沫传播。此时口罩就起到了非常重要的作用,可以在源头进行阻隔病毒的传统。是最有效也是最直接的防疫手段。人们在疫情期间,带上口罩,无论是对自己还是他人,都是负责任的态度。但是往往有些人并不自觉,不以为然,没有戴口罩就行走在大街上,简直就是行走的隐形病毒,如果有一套系统,可以通过图像的采集即可判别是否穿戴口罩,从而提出预警,起到威慑提醒作用,那么可以非常有效地引导,督促市民正常穿戴口罩出门。从而为共同防疫做贡献。  

同时要注意的是,本文设计所用到的软件,即 MATLAB,又称矩阵实验室(Matrix Laboratory),该软件功能强大,语法简单易学,使用者能迅速掌握其主要的内容和基本的操作方法;MATLAB 软件自从推出以来,经过了各学科领域学者和研究员的实践,不停被更新完善,进一步提高了实用性,现已广泛推广到各个领域,[1]使得科学研究者工作起来更加便捷;基于以上种种优势,MATLAB 由于功能十分强大、使用更加便捷被广泛应用于各行各业进行图像处理工作; MATLAB 有自己的图像处理工具箱,这个工具箱几乎容纳了所有图像处理会用到的函数,这些函数都可以在操作过程中被调用;MATLAB 可以支持几乎所有格式的图像[1];在 MATLAB 操作环境下,人们不需要注意图像的类型、格式、大小、显示等繁琐的细节性问题,而相对地能花费更多时间精力去研究实现某项功能所需要的算法上面,这毫无疑问加快了科研人员研究的进程;此外,当人们将算法研究出来,需要对最后的成果进行验证时,MATLAB 可以帮人们统计出数据,人们的研究成果可以以图片的方式展现,效果更为直观[4]。 

    1. 课题研究内容

本文主要是针对室内外,相同人不同场景,不同性别三个场景中的人员口罩

穿戴的研究。

      1. 本文采用了一种应用 MATLAB 软件,将肤色作为口罩检测的先决步骤,在YCbCr 色彩空间应用阈值法建立肤色模型来定位肤色区域的方法,从而定位到口罩区域。
      2. 本文还利用了形态学知识,进行小面积干扰的去除,从而精准定位口罩。设计了GUI 界面,有利于算法的集成,操作起来简单方便,人机交互性好。
    1. 论文结构和各章节安排

本论文的结构和各章节安排如下: 

第一章介绍了基于图像处理的口罩识别的研究背景与意义,同时也诠释了本文的设计思路、研究内容及创新之处。  

第二章对软件系统中的两个重要模块(人脸肤色检测模块和形态学模块)的原理和实现方式做了深入简出的剖析。阐明了口罩识别系统的总设计思路与算法,对各类色度空间以及肤色模型做了详细说明。

第三章主要对图像预处理模块做了重点介绍,讲解了图像预处理模块和人脸肤色定位模块具体的图像处理工作,包括滤波、色彩空间变换等。对为什么这么做,这么做实现的效果做了详细说明。

第四章对口罩识别系统软件进行了算法验证,讲解了具体操作步骤、操作方法、实现效果,并对该系统的实验结果进行了分析。  

第五章对整篇论文进行概括总结,并叙述了未来的工作目标和研究方向。

2 口罩识别总体设计

    1. 口罩识别的算法设计

传统检测口罩的方法,基本使用基于颜色的方法,即口罩基本有浅蓝色,黑色和白色为主的几种,通过RGB三原色转换为HSV等容易聚集颜色的色彩空间,得到对应颜色的像素点的方法来定位口罩。但是该种方法容易受到外部环境的干扰,如人们自身穿戴的衣服,周边环境颜色等。因为本文不以考虑该种算法。而是采用人脸定位,肤色检测相结合的方法进行口罩的识别。首先可以利用人脸定位器将目标人脸区域与复杂背景进行初步分离,然后在该人脸区域内,利用肤色定位原理对人脸的区域进行遍历像素, 这样就可以准确地定位出属于肤色位置像素值和位置,并将其置黑色。如果该人穿戴了口罩,那么口罩部分不属于人脸肤色,自然不会被检测为人脸肤色像素,因此该块口罩区域块呈现白色,最后通过形态学知识滤除掉白色面积块小于一定值的区域,留下面积一定的白色面积块,该面积块即为口罩区域。

本文的算法流程图,如图 2.2 所示。

 

图 2.2 算法流程图 

    1. 色彩空间的选取及肤色模型的建立

肤色是人脸重要而且显著的特征;研究发现,虽然不同种族、年龄和性别的人肤色是有差异的,但这些差异主要体现在亮度信息上,与色度信息无关;在去除亮度的色彩空间里,不同人脸的肤色分布具有聚类性[8];除此之外,它还具有实时性强,对人脸姿态、面部表情、遮挡物(如:眼镜、胡须)不敏感等优势;[9] 据此本文首先考虑以肤色为特征进行人脸检测,从而大幅度缩减人脸搜寻区域, 加快处理的进程;肤色检测就要涉及到色彩空间与肤色模型的选择和应用,也就是将目标图像的像素值从原有的 RGB 空间转换到某一特定的色彩空间,然后利用合理的肤色模型来辨别该像素是否为肤色像素;[10]为了将目标人脸从背景中剥离出来,人们需要比较和分析,选用一个适用于在不同肤色和光照条件都较为可靠的肤色模型,而在建立合适的肤色模型之前要先进行色彩空间的选取[11]。 

      1. 色彩空间的选取 

色彩空间即 “色域”,在计算机视觉领域中也被称作色彩模型,色彩一般是由三个独立的属性来描述,三个独立变量综合起来就构成一个空间坐标,即色彩空间;文中主要介绍的色彩空间为 RGB 色彩空间、HSI 色彩空间、[12]YCbCr 色彩空间和 HSV 色彩空间。 

(1)RGB 色彩空间

RGB 色彩空间俗称三基色模式,以 R(红)、G(绿)、B(蓝)三种分量为基础, 只需对它们按不同比例或以不同程度进行叠加,就可以产生各种各样的颜色;RGB颜色模型在图像处理中非常重要也最为常见。在 RGB 色度空间中,三维矢量[R, G, B]不仅代表色彩,也包含了亮度信息,它的亮度是三者亮度的综合,越混合亮度越高,因此很容易受到光照强度的影响;[13]当人们所处环境的光照强度发生变化时,亮度使得人脸定位的过程变得更加难以实现,肤色分割的过程也会出现更多偏差;分析可得,在RGB 色彩空间建立肤色模型是不合理的。

RGB 颜色空间由三种基本颜色组成:红色、绿色和蓝色,在这个颜色空间中, 任意像素可以由这三个分量表示,如图 2.3 所示。

  

图 2.3 任意像素点在 RGB 色度空间的表示(2)HSI 格式(色度、饱和度、亮度模型)

HSI 模型是美国色彩学家孟塞尔(H.A.Munseu)于 1915 年提出的,它反映了人类视觉系统感知彩色的方式,以色调(H)、饱和度(S)和亮度(I)三个基本特征量来感知颜色。在对色彩信息的利用方面,HSI 格式的优势体现在能将亮度与反映色彩本质特性的两个参数(色调和饱和度)剥离;当人们需要针对目标物体(比如本文正在研究的人脸)在色彩方面的特性时,首先就得调查它在某个色彩空间的聚类特性[14],通常这一聚类特性会体现在色调和饱和度上,而色调和饱和度又往往会受到光线条件等的干扰;[15]光线的敏感程度会对亮度分量产生直接影响; 如果在HSI 色彩空间,就能将亮度分量提取出去,[16]这样就可以对反映色彩本质特征的另外两个参数(色调和饱和度)单独进行聚类分析[14]。 

 RGB 到 HSI 的转换公式为:

               

(2.1)

                       (2.2)

      

                       (2.3)

                       (2.4)

  1. HSV 格式(色度、饱和度、亮度模型)

HSV 格式是 A. R. Smith 在 1978 年创建的一种颜色空间, 也称六角锥体模型,它能将 RGB 色彩空间中的点在一个倒圆锥空间中表示出来,如图 2.4 所示, 它能将颜色更为直观的显示出来;H(Hue,色相),色调 H 由绕 V 轴的旋转角给定,红色的旋转角度为 0°,绿色的旋转角度为 120°,紫色的旋转角度为 300°;每一种颜色都与它的补色直接相差 180°;也就是说色相的取值范围在 0 度到360 度之间。S(Saturation,饱和度)是沿着水平方向发生变化的,越靠近六角椎体的中心轴线(V 轴)处,饱和度越低,中心轴线处 s=0,与此同时,亮度与饱和度的取值范围都在 0 到 1 之间变化;V(value,明亮度)顾名思义,表示色彩的明亮程度,沿 着垂直方向进行测量,中心轴顶端 v=1,此时表示最亮即白色; 中心轴底端 v=0,此时则是最暗表示黑色[17]。 

图 2.4 HSV 色度示意图

  1. YCbCr 格式

YCbCr 也是色彩空间中的一种,此色彩空间在计算机视觉领域中被应用得最多,它的应用范围与其他色彩格式相比也更为广泛,它与 HSI 等其他格式的色彩空间具有相同的特点,这些色彩空间都能实现将亮度分量单独剥离;其中 Y 表示亮度分量,Cr 表示红色色度分量,Cb 表示蓝色色度分量,CrCb 可以一起表示颜色色度方面的信息,它们之间可以形成一个二维空间,同时彼此也是相互独立的; [10]实验表明 Cr、Cb 分量具有很好的肤色聚类特性,因此人们可以有效地利用色度信息在一些彩色图像中进行分割,同时当人们选择好色彩空间后,就能很好地对肤色区域与背景区域进行分离[13]。 

RGB 空间与 YCbCr 空间相互转换的公式为:

(2.5)

             (2.6)

  1. YCbCr 色彩格式的构成原理与人类视觉感知过程相类似;
  2. YCbCr 色彩格式被普遍应用在计算机视觉领域中,也被广泛应用于视频

压缩标准( JPEG,MPEG)[18]; 在 YCbCr 空间中,Y 分量给出所有的亮度信息,Cb 

和 Cr 分量给出所有的色度信息,并且CbCr 二维独立,可以轻松地去掉亮度信息;

  1. YCbCr 色彩格式与 HSI 等色彩格式有相同特点,两者都可去除亮度信息的干扰,但利用 YCbCr 色彩格式时运算步骤不会过于复杂,表示形式也相对直观, 更易理解;RGB 空间与 YCbCr 空间是通过线性变换相互转换的,计算起来更为迅速,与此同时还解决了在非线性空间相互转换可能发生奇异性的问题;
  2. 当处于 YCbCr 色彩空间中时,人们能更好地对肤色区域与非肤色区域进行区分,此时肤色的聚类特性更好[17]。 

以上这些特有的优势决定了当人们检测人脸,需要对肤色进行分割时,选取YCbCr 色彩空间将更加合理;因此,本文选择将人脸检测提取出的肤色信息映射到 YCbCr 色彩空间[19];上面的内容简要介绍了在计算机视觉领域中最常见的,尤其是频繁用于提取肤色信息的几类色彩空间;上述提到的色彩空间在建立色彩模型时都能得到合理应用,针对不同要求,使用的色彩空间也各不相同。例如:RGB 色彩空间多见于通过查找表建立的肤色模型中;[16]A.K.Jain 等人利用变型的YCbCr 色彩空间研究彩色图像中的人脸检测问题;梁路宏在 HSI 空间中建立基于高斯模型合成的肤色模型;陶霖密等选取变形的 HSI 空间来研究人体的肤色特征

[20]

      1. 肤色模型的建立 

进行肤色检测还需要建立一个肤色模型,这便设立了一套判断规则,依据此规则可评判某一像素点颜色属于肤色区域还是属于非肤色区域[21]。肤色模型一般分为静态、动态两大类模型,同时静态模型也分为:基于物理的模型和统计模型, 而统计模型又可进一步分为:参数、非参数和半参数三类;参数模型具有一个明确的函数形式;非参数模型没有任何的特定形式;半参数模型通常指神经网络;

[6]目前常用的静态肤色建模方法包括阈值法,简单高斯模型,混合高斯模型,直

方图统计,下面将一一介绍。

  1. 阈值法

根据前人统计发现,肤色在 CbCr 颜色空间下呈现良好的聚类特性;由此可以建立一个肤色模型,规定 Cb 颜色分量的范围或Cr 颜色分量的范围,并依次判断各个像素点是否在规定的范围内,如果在即认为是肤色像素点,反之不然。这

种方法的难点在于如何确定阈值,本文通过 YCrCb 实验统计发现 97%以上的肤色像素点都满足 77≤Cb≤127 同时 133≤Cr≤173。阈值法的突出优点就是检测速度更快,既在光照条件下比较稳定,又能满足许多对实时性有要求的场合,比如教室环境;因此,本文选用阈值法。

  1. 直方图模型

直方图肤色模型属于非参数模型;肤色样本的直方图统计可以构造肤色概率图(SPM),即为离散化的颜色空间中的每个格子赋予一个概率值;利用肤色概率图检测肤色像素主要有两种方法:规则化查找表和贝叶斯分类器;规则化查找表是直接利用肤色概率图作为肤色概率查找表[22];输入像素的颜色向量经过与肤色概率图相同的颜色空间变换和量化后,所得到的向量作为查表的索引,[23]查表得到的值是该输入像素属于肤色的概率[24]。 

(2.7) 

其中 count(c)是是训练集中颜色向量为 c 的像素个数,T 是训练集的像素总数;p(c)得到的是一个像素属于肤色像素的可能性,如果 p(c)大于预定阈值则认为该像素是肤色像素点[23]。 

  1. 高斯模型

直方图模型是一种无参数的方法,是一种三维模型,效果很好,但需要对大 量的样本进行训练,并且训练样本所需时间非常久,时效性很差。高斯肤色模型 的参数化所需的存储空间相对很小,能够内插和归纳不完整的训练数据,是一种 参数化建模方法;高斯模型可以分为单峰高斯模型 SGM 和高斯混合模型 GMM;[25]  

  1. 单高斯模型

这种算法的使用前提就是假设肤色的分布是服从于单峰高斯分布的;        

p (   x ) = 1 ��������� {− 1 (��� − ���)��� ∑−1(��� − ���)} (2.8)      

skin 2���| ∑ |1⁄2 2

其中x 是像素颜色向量;均值向量 μ 和协方差矩阵Σ 是高斯分布参数,可用最大似然法估算;p [x/ skin] 可以直接衡量像素x 属于肤色的可能性,可以通过高斯分布参数计算输入像素颜色 x 与均值 μ 的马氏距离 d2=(x-μ)TΣ- 1(x-μ),距离大小表示该像素与肤色模型的接近程度;

  1. 高斯混合模型

高斯混合模型是多个单高斯密度函数的加权和,[26]当人类种族不同时,单高峰模型可能不会完全适用于肤色直方图,因此高斯混合模型与单高斯模型相比会更加精确;

  

(2.9)                 

其中x 是颜色向量,p(x)是肤色像素在色彩空间中的混合概率密度,k 表示高斯密度函数个数,x 用均值向量 定义,K 用协方差矩阵∑i 定义,权值wi 表示各高斯密度函数对混合模型的贡献大小;[27]对于高斯混合模型,需要解决两类问题:一是混合模型的参数估计,二是混合的类别数目 k 的确定;在 k 己知的条件下,可以采用最大似然方法来估计模型的参数[23]。 

本文采用 YCbCr 颜色空间以及阈值法,在选好了合理的颜色空间以及肤色模型之后,就可以对人脸肤色块进行粗略定位;基于肤色模型的人脸初定位流程图如下图

2.5 所示。 

 图 2.5 人脸初定位流程图 

    1. 数学形态学知识的应用

      1. 数学形态学知识实现对非肤色最大面积块的精确定位 

可以利用口罩区域属于面积最大块非肤色块这一特性,来进一步利用形态学的方法来完成对口罩的后期验证和精确定位。对口罩区域的精确定位的大致流程图如下图 2.6 所示。 

                       2.6 口罩区域精确定位流程图

2.4.2 数学形态学的基本原理 

数学形态学是以几何学和集合论为基础,应用于图像处理和模式识别等领域。它具有腐蚀,膨胀,开运算,闭运算四种基本运算。本文主要探讨形态学图像处理的原理及基于MATLAB软件平台的实施方法。研究表明,利用MATLAB图像处理工具箱中的函数运用形态学方法对图像进行预处理,如形态学滤波、细化、剪裁,能够达到比较好的效果。形态学图像处理思想是基于通过一小块形状或模板(结构元素)来处理图像,其方法适用于图像处理的各个方面,如基于形态学滤波器的颗粒分析,基于腐蚀和开运算的骨架抽取等。许多二值图像上的形态学运算也可以用于灰度图像的处理,但像形态学重构运算只能用于灰度图像,如峰值滤波。

 2.4.2.1 形态学图像处理的原理

  结构元素通常是0和1的矩阵表示,有时为方便起见可只显示1,结构元素的原点必须明确表明,腐蚀和膨胀的程度都由结构元素的集合控制。膨胀是在二值图像中“加长”或“变粗”的操作,膨胀过程中对结构元素的平移类似于空间卷积。腐蚀是对二值图像的对象进行“收缩”或“细化”。腐蚀和膨胀都是使结构按照一定的规则在图像区域进行平移来实现对图像的形态学处理。

 (一)基本形态学操作

   膨胀和腐蚀是两种最基本的形态学运算,大多数其他形态学算法都是以这两种运算为基础。

数学上,膨胀定义为集合运算,A被结构元素B膨胀,记为AB,其原理如下:

  在平移结构元素的过程中,使得结构原点到所有可能的图像像素点来检测图像,当结构元素和像素值为1像素点重叠时,即结构元素击中图像,则输出1,否则输出0.膨胀也满足交换定律,即AB=BA。在图像处理中,我们习惯令AB的第一个操作数为图像,而第二个操作数为结构元素,结构元素往往比图像小得多。腐蚀的数学定义与膨胀类似,在结构元素在整个图像区域平移的过程中,结构元素的原点到所有可能的图像像素点检查图像,当结构元素与图像的前景部分完全匹配时,即结构元素适合图像,则输出1,否则输出0。

  由于腐蚀和膨胀的程度由结构元素控制,选择合适的结构元素对图像进行处理从而达到改进图像性能的目的显得尤为重要。但是单独使用膨胀和腐蚀进行图像处理其用途是有限的,通过对这两种基本操作的组合可达到更有效的处理效果。

(二)膨胀和腐蚀的组合

  除了膨胀和腐蚀两种基本的形态学操作外,形态学操作还包括三种常用的膨胀和腐蚀的组合操作:开运算、闭运算、击中或击不中变换。A被结构元素B的形态学开运算可以记为A B,这种运算时A被B腐蚀后再用B来膨胀腐蚀结果:A B=(AB)B(1)

开运算具有平滑边界,滤掉比结构元素小的斑点、突刺,断开狭长连接的作用。A被结构元素B的形态学闭运算记为A B,它是先腐蚀再膨胀的结果:A B=(AB)B(2)

  闭运算具有平滑边界,填充比结构元素小的缺口或洞,连接狭窄缺口形成细长弯口的作用。

  通常,能够识别像素的特定形状是很有用的,击不中或击中变换对这类应用非常实用。A被B击中或击不中变换定义为A B,B是结构元素,其中B是两个结构元素,而不是单个元素。

2.4.2.2 Matlab中形态学图像处理实现

(一)Matlab图像处理工具箱中形态学图像处理函数

  Matlab提供了20类图像处理函数,涵盖了图像处理的包括近期研究成果在内的几乎所有的技术方法,本文中我们主要介绍灰度与二值图像的形态学运算的IPT函数。

  在Matlab中IPT函数strel运用各种形状和大小构建结构元素,其基本语法为se=strel(shape,parameters),其中,shape是指定希望形状的字符串,而parameters是指定形状(如其大小)的一列参数。IPT函数imdilate执行膨胀运算。基本的调用语法为A2=(A,B),其中,A2和A是二值图像或灰度图像,B是指定的结构元素的由0和1组成的矩阵。腐蚀则用IPT函数imerode执行。开运算和闭运算在工具箱中用函数imopen和imclose实现。击中或击不中变换在IPT中用函数bwhitmiss实现,该函数语法为C=bwhitmiss(A,B1,B2),其中,C为结果,A为输入图像,B1和B2为结构元素。

(二)形态学图像处理实现

  由于Matlab工具箱中含有丰富的形态学图像处理函数,使得我们在用形态学方法进行处理时能尽可能达到所需要的效果。形态学技术对图像进行预处理的过程中能够很好实现对图像的滤波、细化和裁剪,还能实现对图像边缘检测及特征提取。下面我们利用Matlab形态学处理函数对一副不均匀亮度的米粒图像进行滤波处理,并进行阈值处理,使得米粒和背景分割开来,来比较滤波处理前后图像的分割效果。滤波处理部分源程序如下:

f=imread('rice.png');se=strel('disk',50);fo=imopen(f,se);%读入图像米粒图像,并对图像进行开运算

figure,imshow(f);%显示米粒原图像,如图(a)

figure,imshow(fo);%显示经开运算之后的图像,如图(b)

f2=imsubtract(f,fo);%米粒原图像减去经开运算后的图像,获得一副均匀背景的米粒图像

figure,imshow(f2);%显示均匀背景的米粒图像,如图(c)

  接下来我们对米粒原图像(a)和均匀背景的米粒图像(c)分别进行阈值处理,所得图像如(d)和(e),对图像中的米粒从背景中分离出来的效果进行对比,从而证明形态学图像处理能很好对图像进行滤波,为更进一步的图像处理奠定了良好的基础。

    1. 本章小结

本章主要阐释口罩识别系统的设计思路,即通过检测肤色和形态学来进行非肤色面积块的统计,同时对口罩识别的算法流程进行了分析,包括实现原理,有哪些实现方式以及本文采取了哪种方式,为何采取这样的方式等;本章还对色彩空间以及肤色模型作了分类介绍,剖析了各类色彩空间及肤色模型的优缺点。

3 各模块相关图像处理技术介绍

    1. 各模块在图像处理方面的工作介绍

本文经过软件总体规划和设计将整个口罩识别系统根据其功能划分为四个最主要的功能模块——人脸定位、人脸预处理、非肤色定位、形态学去干扰;每个模块基本上做到了相互独立,互不干扰,这样对其中某一模块进行功能扩充时便不会影响到其它模块;[5]因此,整个系统具有良好的可扩展性。这一章将着重介绍人脸预处理、非肤色定位和形态学去干扰模块。

    1. 人脸预处理模块

      1. 三原色通道分离 

在图像的采集的过程中,图像中的色彩信息经常受到光源、采集影像的设备等影响产生噪声;为了处理解决噪声的问题,需要对原图进行滤波。采用的方法是将RGB图分离出三个通道,对每个通道分别进行滤波,然后合同三个通道,完成图像的滤波。将原图分离出R、G、B三通道的方法为:

I=I(:,:,1);%R通道分离

I=I(:,:,2);%G通道分离

I=I(:,:,3);%B通道分离

效果图如下图所示。

                                    图  三通道分离

3.2.3 三原色的滤波

得到原图三通道分量图后,分别对三通道的分量图进行低通滤波,滤除高频分量,

也就是噪声分量。调用为filtered_fR=imfilter(fR,f);其中imfilter为低通滤波器,

fR为红色通道分量,f为滤波器模板,filtered_fR为滤波后的结果。对三个通道分别采用如上操作后,利用cat库函数实现三通道的合并,从而得到滤波后的图像。实现效果图如下图所示。

 图  三通道滤波及合并

    1. 人脸肤色定位模块

      1. RGB转YCBCR色彩空间 

为了达到统计口罩识别的目的,本文通过综合分析,设计运用了许多数字图像处理技术。将目标人脸与背景区域分离,是实现口罩识别的先决步骤。本文首先对原图像进行图像预处理,包括光线补偿、直方图均衡增强等,然后利用MATLAB人脸检测器进行人脸的检测定位,并且分割出人脸,并且存储。对分割后的人脸图像进行一系列的处理,如先分解成R,G,B三通道,对三通道分别进行滤波,再合并三通道,选择YCbCr 颜色空间进行颜色空间变换,在此颜色空间下,再次分理出Y、cb和cr空间的三个通道,根据人脸肤色的先验知识,定位出满足一定像素值的人脸区域,进行人脸肤色区域的标定。将符合人脸肤色的面积块置为黑色,其他非人脸区域块颜色置为白色。因为此时可能存在一些干扰,会有其他一些连通的非人脸区域面积,也会形成白色块,此时利用数学形态学知识,将这些小面积区域给滤除,仅仅留下面积最大块的区域,该区域就是对应口罩区域。至此,定位出口罩位置,完成本文的设定目标。

RGB转YCBCR色彩空间的方法是,采用matlab库函数rgb2ycbcr,

调用格式为I=rgb2gray(I1),I1为RGB图,I为转换后的YCBCR图。效果图如下。

                      

                            RGB原图              YCBCR图

      1. 人脸肤色定位

同RGB图像分离出R、G、B三通道原理一样,同样利用格式:

Iy = I(:,:,1);

Icb = I(:,:,2);

Icr = I(:,:,3);

分离出y、cb和cr三分量。效果图如下:

     

由于统计表明不同人种的肤色区别主要受亮度信息影响,而受色度信息的影响较小,所以直接考虑YCbCr空间的CbCr分量,映射为CbCr空间,在CbCr空间下,受亮度变化的影响少,且是两维独立分布。通过实践,选取大量肤色样本进行统计,发现肤色在CbCr空间的分布呈现良好的聚类特性。

统计分布满足:77<Cb<127,并且满足:133<Cr<173 ,根据肤色在色度空间的高斯分布,对根据肤色在色度空间的高斯分布,对于彩色图像中每个像素,将其从RGB色彩空间转换到YCbCr空间后,就可以计算该点属于皮肤区域的概率,即根据该点离高斯分布中心的远近得到和肤色的相似度,将彩色图像转化为灰度图,其中每个像素的灰度对应该点与肤色的相似度,相似度的计算公式如下: 

-=- 

其中m为均值,m=E(x),C为协方差矩阵,

-= 

肤色分布的2D高斯模型G(m,V2)也可表示为 

其中,CrCb、为CrCb、相应的平均值,V为协方差矩阵。 

为了利用肤色在色度空间的聚类性,选取YCbCr色彩空间进行肤色提取。首先将彩色图片颜色空间转换到YcbCr空间,然后对该区域的CbCr值进行统计处理。处理的方法就是采用高斯模型。通过这个肤色高斯分布可得到待检测彩色图像中任意一个像素点属于皮肤的概率。对于某像素点s,从RGB空间转换到YCbCr色彩空间得到色度值(Cb,Cr)则该像素的肤色概率密度可由下式计算得到:

通过计算,得到m和C的值如下:

经过以上处理,可以定位到人脸肤色区域。并且将人脸区域置黑处理,其他非人脸区域为置白处理,包括眼睛,头发,口罩等区域均为非人脸区域,所以,眼睛,头发和口罩等区域为呈现白色,其他部位呈现为黑色。如下图所示。

                      

                         图 人脸二值图

    1. 形态学处理干扰

这里简要说明数学形态学处理在人脸检测模块中的应用。上述过程中,已经完成了

图像的二值化,这里将要对二值化的图像进行形态学处理,利用MATLAB库函数

bwareaopen处理掉被一些被噪声或者其他背景色引入的非肤色点或区域;

   其中bwareaopen调用格式如下:

img3= bwareaopen(img2,15500);其中,img2为原二值图像,15500为所要滤除掉的面积块阈值,

imag3为滤除小面积干扰后的图像。效果图如下图所示。

                       去除干扰小面积前后对比图

因为考虑到,如果有穿戴口罩,那么经过非人脸肤色区域定位后,口罩区域所在的白色块

面积是最大的。因此,如果有穿戴口罩,口罩区域面积不仅最大,而且数量还是仅仅是1,满足

以上两者条件,才是穿戴了口罩。因此,需要统计白色块面积的个数。再次利用统计连通域的白色

块面积个数,实现核心代码如下。

for i = 1:row

    for j = 1:col

        if img3(i,j)&&visited(i,j) == 0

            count = count +1;

            pt = [i; j];

            [c ,domain] =finddomain(img3, pt);

            

            ricearr(count) =  c;

            

            ricearr(1:count)

            

            for m = 1:c

                visited(domain(1,m), domain(2, m)) = 1;

            end

        end

    end

end

disp('白色块个数为');

disp(count);

  如果以上白色块面积个数count为1,则在原图基础上进行定出出口罩区域。实现代码如下:

x=handles.x

axes(handles.axes12); imshow(x); title('口罩定位')

hold on  

for i = 1 : size(STATS, 1)  

     boundary = STATS(i).BoundingBox;  

   rectangle('Position',boundary,'edgecolor','r' );  

end  

    

    图 口罩定位图                      参数结果

    1. 本章小结

本章是对三大功能模块在图像处理方面所应用的技术的详细介绍,主要分析了人脸定位预处理的步骤以及过程,介绍了图像滤波,色彩空间变换,人脸肤色定位,形态学滤波等原理,为什么要做这些预处理,以及可以实现什么样的效果等。同时对人脸肤色定位检测模块涉及的图像处理技术也做了介绍,简要讲解了应用在二值化图像中的数字形态学处理技术,从而定位到口罩区域。 

4 结果分析与软件实现

    1. 系统整体测试

      1. 系统界面 

为了增强本文实验算法的实用性,选取了一个简易的可操作性强的软件来达到对教室人数进行统计的目的。本文在 matlab 操作环境下设计了一个简单的GUI 界面,此界面简洁美观,实现了对算法的集成,使用起来更加方便,对于不懂软件的人也很友好。GUI 界面上能非常直观地看到图像经每一步处理后的结果图, 同时人数统计的结果也会直接显示在界面上。如图 4.1 所示: 

  

图 4.1 口罩识别系统GUI 界面

      1. 使用介绍 

运行程序后,先点击“打开”按钮,就可以选取图像,并对该图像进行人脸定位,选好的图像会显示到左上角的坐标轴中。

        1. 在操作时,运行程序后先点击“打开”按钮,图像就会显示到左上边的坐标轴中,如图 4.2,图 4.3 所示。 

图 4.2 点击“打开”

图 4.3 测试图像显示

        1. 点击“人脸定位”,定位到的人脸将显示到axes2种,如图 4.4 所示。 

 

                 图 4.4 点击“人脸定位”

        1. 点击“RGB分离”,“滤波”,“合并”,“YCBCR”,“分量图”,“标记”后,得到人脸二值图,如图 4.5 所示。 

图 4.5 人脸二值图标定

        1. 点击“定位/判定”按钮,可以计算结果参数以及对于口罩的定位。 

                                 图4-6 点击“定位/判别”

    1. 测试结果分析

首先,此算法满足了单人场景下的口罩识别的要求,满足(1)、相同人不同背景衣服的测试;(2)、不同性别的测试;(3)、室内室外的测试。为了 进一步验证本算法是可行的,采用了若干组对比照片进行测试验证。验证结果如下:

4.2.1 相同人的不同背景测试

                     图 4-7 男背景图一

                         图 4-8 男背景图二

4.2.2 不同人的相同背景测试

                      图 4-9 女戴口罩

                       图 4-10 男戴口罩

4.2.3 有无戴口罩对比测试

                      图 4-11 未戴口罩

                    图 4-12 戴口罩

    1. 本章小结

本章对本文实验用到的算法进行了验证,并对验证结果进行了分析,分别介绍了每个按钮的使用方法及实现的功能。经过对比不同场景的测试,在使用本文实验设计的算法对这些图像测试后发现,对于相同人不同背景,相同人不同地方(室内外),不同性别的几种情况都能较好地定位口罩。此外,本文还设计了一个简单美观的GUI 界面,使用起来会更加方便,图像处理过程更加直观,逻辑性和实用性也大大增加。

5 总结与展望

    1. 本研究所作的工作总结

本人在阅读大量文献,认真学习好数字图像处理技术以及仔细比较各种实现人数统计的方法后,选择使用 matlab 软件实现这一课题,原因主要为以下两点: 一、matlab 功能强大,方便函数的调用且操作起来不会过于繁琐。二、matlab 比其他软件更能实现对实时性的需求。本文介绍了口罩检测的流程、设计思想以及涉及到的原理;人脸检测是口罩检测的前提,是为了更好地去除背景干扰。只有先从场景图像中提取到人脸区域,才能完成后续的口罩识别。

本文的主要工作和贡献在于:

      1. 首先对系统软件所需功能进行了分析和规划,明确划分出四个功能模块,当使用者后期需要进行系统维护、升级,或是出于某种需要,要对功能模块进行扩展时,会更为便利;
      2. 本文对涉及到的图像处理技术作了简要说明,在图像预处理模块,设计并实现了对原始图像的滤波、将RGB图像转为YCBCR图像等。

(3)在形态学去除干扰这块,因为考虑到在人脸区域中,符合肤色部分置0,不符合肤色的部分置0,可是存在一些眉毛,嘴巴,眼睛等的干扰,需要将此部分给去除。

实验验证后发现,本文所用的算法能够识别不同场景口罩创带的检测。

(4)本文设计了一个 GUI 界面,并能完成人数的实时统计,进一步提高了软件的实用价值。

    1. 需要改进的地方

  1. 可以对算法进行进一步扩展,考虑在适应多人数、多角度、多姿态口罩检测问题。
  2. 口罩颜色,以及是否是N95等口罩类型的识别[33]。  

参考文献

  1. 赵丽英. 基于数字图像处理的人脸统计 [D]. 北京: 北京化工大学 ,2011. DOI:10.7666/d.y1877475.
  2. Zhou, Y; Cattley, RT; Cario, CL; et al.Quantification of larval zebrafish motor function in multiwell plates using open-source MATLAB applications.[J].Nat Protoc.2014,9(7):1533-48
  3. NO1. NíAnnaidh, A; Bruyère, K; Destrade, M; et al.Automated estimation of collagen fibre dispersion in the dermis and its contribution to the anisotropic behaviour of skin.[J].Ann Biomed Eng.2012,40(8):1666-78
  4. [4] 范欣欣.基于图像的颜色统计方法综述[J].无线互联科技,2018,15(12):98-101.
  5. [5] 左丞.基于图像处理与神经网络进行行为人识别的研究与实现[D].四川:电子科技大学,2013.
  6. [6] 杨国林,冯乔生,张亚萍. 基于肤色的人脸检测综述[J]. 软件,2013,34(03):7-9.
  7. 尹凤领, 霍丙全. 图像处理技术的 形态学实现[J]. 科技信息,2007(5):41-42.
  8. 龚杨璟, 吴薇. 一种基于肤色的人脸检测方法[J]. 中国新技术新产品, 2010(23):43.
  9. 陈松.基于肤色的人脸检测与识别[D].四川:电子科技大学,2007.
  10. 宋广阔 . 人 脸 跟 踪 检 测 技 术 的 应 用 研 究 [D]. 辽宁 : 东 北 大 学 ,2011. DOI:10.7666/d.J0103778.
  11. 徐庆 . 一种基于改进 YUV 的 人 脸 检 测 方 法 [D]. 湖南 : 湘潭大学 ,2008. DOI:10.7666/d.d132540.
  12. 王晓玉. 基于图像处理的驾驶员疲劳检测方法研究[D]. 东北大学, 2010.
  13. 张争珍.一种基于亮度分级模型的肤色检测法[D].湖南:湘潭大学,2009.
  14. [15] 魏菁.皮肤检测技术的研究及改进[D].重庆:重庆大学,2009. DOI:10.7666/d.y1663462.
  15. [1].徐写秋,李纶,傈僳族服饰文化探议[J],《科技信息》 , 2006 
  16. [2].何奎,论傈僳族服饰的文化意蕴[J],《美术教育研究》 , 2010 
  17. [3].申旭梅,基于内容的少数民族服饰图像检索技术研究与实现[J],《云南师范大学》, 2016 
  18. [4].丁笑君,邹楚杭,陈敬玉,邹奉元,畲族服装特征提取及其分布[J],《纺织学报》 , 2015
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值