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

article/2025/10/26 10:43:01

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

摘 要

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

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

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

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

1 前言

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

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

2、课题研究内容

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

穿戴的研究。

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

3、 口罩识别总体设计

3.1、口罩识别的算法设计

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

4、系统整体测试

4.1、系统界面

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

v2-11d724344299eb85778c91e7ec769a10_b.jpg

图 4.1 口罩识别系统GUI 界面

5、测试结果分析

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

5.1 相同人的不同背景测试

v2-76953c01b6aee0e8c264ebf4e8557d23_b.jpg

图 5-1 男背景图一

v2-eff32322b7830abb98b29184f6a53f52_b.jpg

图 5-2 男背景图二

v2-d4fb569972701fae536205b94f950eee_b.jpg

图 5-3 男戴口罩

5.2、 有无戴口罩对比测试

v2-a41dd31588fbe58ff9e018f498edb0b4_b.jpg

图 5-4 未戴口罩

v2-8971643acda60d68c431d4dc138b4fce_b.jpg

图 5-5 戴口罩


http://chatgpt.dhexx.cn/article/TbigeKEC.shtml

相关文章

[深度概念]·简述人脸识别开发原理

0、文章概述 我们知道人脸识别在这几年应用相当广泛,人脸考勤,人脸社交,人脸支付,哪里都有这黑科技的影响,特别这几年机器学习流行,使得人脸识别在应用和准确率更是达到了一个较高的水准。 下面将带着大家…

基于深度学习的人脸面部表情识别系统【含Python源码+PyqtUI界面+原理详解】

功能演示 摘要:面部表情识别(Facial Expression Recognition)是一种通过技术手段识别人物图像中人脸面部表情的技术。本文详细介绍了其实现的技术原理,同时给出完整的Python实现代码、训练好的深度学习模型,并且通过Py…

2022年12月编程语言排行榜公布!

2022年迎来了最后一个月,我们可以看到,在这一年中编程语言起起伏伏,有的语言始终炙手可热,而有的语言却逐渐“没落”… 日前,全球知名TIOBE编程语言社区发布了12月编程语言排行榜,有哪些新变化&#xff1f…

html不是编程语言什么梗,html不是编程语言?

HTML究竟算不算是一门编程语言,这是争执已久的话题。其实,从本质来讲,HTML确实算不上是一门编程语言。 HTML全称,HyperText Markup Language。字面理解,HTML就是一种超文本语言,何谓超文本,就是…

2017年编程语言排名

https://spectrum.ieee.org发布了2017年编程语言排名,这个榜单是对数十种流行的编程语言进行排名。 请参考: https://spectrum.ieee.org/static/interactive-the-top-programming-languages-2017 可以对排名规则进行选择 可选择的权重分别为&#xf…

【总结】编程语言的分类

一、计算机编程语言的分类 1、低级语言 机器语言(二进制代码)、汇编语言(面向机器的程序设计语言)和符号语言。汇编语言源程序必须经过汇编,生成目 标文件,然后执行。 机器语言优缺点如下…

编程语言排行榜 - 2020年度最热门编程语言盘点!

如今,广大用户更喜欢利用移动应用程序,来获取他们所关心的产品与信息。而移动应用程序也成为了企业在市场竞争中,保持领先地位的成功关键。据某项调查预测:到2020年,全英国移动应用的用户下载数量将增加到200亿次。当然…

IT培训分享:11种热门编程语言的主要用途

IT行业发展前景广阔,想进去IT领域的小伙伴也是与日俱增。但编程语言的种类那么多,具体学习哪个好呢?建议刚开始学习就要明白自己的目的来进行有针对性的学习。今天小千就以自己了解到的知识,来给大家简单介绍一下时下热门编程语言…

最受欢迎的八种编程语言

DevJobsScanner公司分析了2022年超过1200万份开发者工作需求,其中舍弃了对语言要求比较模糊的工作,有明确编程语言要求的工作有700万份,最终得出了目前行业需求量最高的 8 种编程语言。 让我们一起看看在目前的市场需求中,哪些语…

软件测试用例编写方法

软件测试学习导图如下: 软件测试的宗旨就是尽早地和不断地进行测试,更早、更快、更多的发现错误。 编写测试用例主要用到五种方法:等价类划分、边界值分析、因果图法、场景法(用户故事法)、错误推测 等价类划分&#…

编写测试用例方法之正交表分析法

今天我们再来介绍另外一个编写测试用例的方法:正交表分析法,这个方法是一种比较方便的方法。话不多说,开始整干货,老规矩,首先全图镇楼。 之前我们在对产品进行测试用例设计的时候,都是针对单个输入框。如果…

测试用例的编写方法

测试用例 买手机、买电脑,要试用一下:开机、屏幕、运行速度、内存大小;这就是生活中的测试用例! 测试用例(Test Case)是为特定的目的而设计的一组测试输入、执行条件和预期的结果,以便测试是否满足某个特定需求。通过大量的测试用例来检验软件的运行效果,它是指导测试工…

编写测试用例的方法,这个是真的很好用

大家测试过程中经常用的等价类划分、边界值分析、场景法等,并不能覆盖所有的需求,我们之前讲过很少用到的因果图法,下面就来讲另一种不经常用到但又非常重要的测试用例编写方法——测试大纲法。 测试大纲法适用于有多个窗口,每个…

亲测快捷高效的编写测试用例方法

目录 一、什么是测试用例? 二、设计用例是否有必要? 三、设计用例的益处? 四、一定要写测试用例吗? 五、测试用例怎么写? 六、用例必备4个方面? 七、用例设计理念? 八、没有需求文档&am…

测试用例的特性以及编写测试用例的方法

测试用例的特性以及编写测试用例的方法 测试用例的定义:什么是测试用例?测试用例的特征: 编写测试用例的好处:测试用例的作用: 测试用例的4个特性测试用例通常包括以下几个组成元素:编写测试用例的基本方法…

【软件测试】编写测试用例的方法,这个是真的很好用

大家测试过程中经常用的等价类划分、边界值分析、场景法等,并不能覆盖所有的需求,我们之前讲过很少用到的因果图法,下面就来讲另一种不经常用到但又非常重要的测试用例编写方法——测试大纲法。 测试大纲法适用于有多个窗口,每个…

编写测试用例常用的七大方法

测试用例格式包括十大特点 用例编号 测试项 测试标题 用例属性 重要级别:高中低 预置条件 测试输入 操作步骤 预期结果 实际结果 第一:等价类 1,等价类定义 2,等价类划分 3,等价类划分规则 4,进行…

【测试】编写测试用例的思路和方法

文章目录 1)什么是测试用例?1.1 测试用例的定义测试用例的内容: *为什么需要测试用例?测试用例的作用: 1.2 测试用例的元素测试目标(Why):测试对象(What)&…

编写测试用例常用方法

一、等价类划分法 1.概念:等价类划分法是将所有程序的输入域划分成若干个子集合(等价类),然后从每一个子集合中选取少数具有代表性的数据作为测试的输入数据。在该子集合中,所有的输入数据对于揭露软件中的错误都是等效的。等价类划分有效等…

Java-高级技术(二)

9、多线程 什么是线程&#xff1f; 线程(thread)是一个程序内部的一条执行路径。 我们之前启动程序执行后&#xff0c;main方法的执行其实就是一条单独的执行路径。 public static void main(String[] args) {// 代码...for (int i 0; i < 10; i) {System.out.println(i);…