免费热线: 4008819717    

挑战七天:实现机器视觉测有没有戴口罩系统(上)

栏目:行业资讯 发布时间:2021-07-19
分享到:
机器视觉为什么研究这个?**采用机器视觉代替人工是自动化的重要研究方向。自动检测口罩的检测系统的优点就在于节省人力、智能提醒、信息化监控。

前言

2020年1月30日,报道有用无人机劝老奶奶戴口罩的做法,突然萌生了这个想法,就是实现通过机器视觉检测有没有戴口罩。

那么,既然无聊在家,就挑战七天实现机器视觉检测戴口罩。

2020年2月2日- 2020年2月6日:

经过前三天断断续续的查找资料和阅读相关文献,虽然比较繁琐,但磨刀不误砍柴工,经过充分的查找资料,才对自己要做的东西有较为充分的认识,有利于掌握基本面。

1 戴口罩检测系统

 

机器视觉为什么研究这个?**采用机器视觉代替人工是自动化的重要研究方向。自动检测口罩的检测系统的优点就在于节省人力、智能提醒、信息化监控。主要可以运用场景有以下三点:

在突发重大疫情时,可以用于监督和提示公众戴好口罩出门,可以搭载在无人机上,在巡视时自动检测没有戴口罩出行的人并进行劝告。

ATM、银行等监控系统中,此功能可以对可疑人物进行检测。在超市、小区、图书馆等公共场所的入口门禁系统中,对未佩戴口罩的进行提醒。

在手术室运用此系统检测医生是否戴口罩,在除了运用管理手段外,提供用技术手段监督医生的工作的选择,避免发生由工作失误导致的医疗事故。

目前市场上,还少见具有口罩检测功能的门禁系统,比较智能的是体温检测+金属+人脸识别的探测门。

此系统总体目标在于能够实时监测画面中的人脸,并将其分类为:1.戴口罩的人脸;2.不带口罩的人脸。 若发现不戴口罩,则进行语音提示。

2 实现步骤

基本思想为经过前景提取后得到人像前景,通过双眼检测得到眼部肤色面积和鼻子口部区域的肤色面积进行比较,若前者小于后者则为无口罩;若后者小于前者为戴口罩。另外加入嘴巴鼻子检测,和对戴口罩人脸的口罩边缘进行霍夫直线检测作为参考决策。

该软件系统的实现步骤为:图像采集和预处理——前景提取——人脸检测——眼睛、鼻子、嘴巴检测——眼部区域肤色面积统计——鼻口部区域肤色检测和霍夫直线检测。

2.1 图像采集和预处理

1)电脑前置摄像头采集。

2)预处理运用到以下几点:

高斯滤波,用于消除高斯噪声。

灰度处理,RGB三通道图片转化为灰度值0-255单通道的灰度图片,作用为提高运算速度。

二值化,对灰度图片按照阈值划分为只有0和255的黑白图片。

腐蚀和膨胀,腐蚀,分离距离近的目标。膨胀,填补目标空洞,连通距离相近目标

开运算去噪,开运算即先腐蚀运算,再膨胀运算,能够分离细微连接目标,去除噪点。

像基本运算中逻辑与运算,图像存储也是一个特殊矩阵,可进行逻辑运算。

边缘检测,提取图像边缘。Canny 边缘检测算子边缘化效果。

转换颜色空间为HSV作为肤色检测,由于HSV把颜色分离为一个通道,即色调通道,通过此通道作为肤色检测更加稳定。HSV颜色空间分为色调(H),饱和度(S),明度(V),肤色的色调范围有论文数据:H∈[34°,50°]

2.2 前景运动目标提取

本系统所感兴趣的图像区域是人的面部区域。如果在整幅视频图像中进行人脸的检测无疑会大大增加算法的搜索范围和时间。所以在预处理中需要进行前景提取。

目标检测的目的是尽可能地将用户感兴趣的目标清晰、完整地从视频序列中提取出来,并将检测的结果提交给更高层次的视觉算法做进一步的分析处理,如目标跟踪等。

检测方法主要有几种:背景差分法,帧间差法,三帧差法,基于帧间差法思想改进的背景差分法、光流法(运算量较大)和高斯背景建模。

1)背景差分法: 将当前图片与背景图差分,阈值化后得到前景,本文采用背景差分法实现,流程
当背景颜色和前景部分颜色相似时和背景光线变换时,造成比较多的空洞和误判。

可改进为,而阈值现在为手动给定,后期可改为自适应阈值

2)高斯背景建模的: 在OpenCV库中,提供了三种基于高斯背景建模的算法:

BackgroundSubtractorMOG,混合高斯模型为基础的前景/背景分割算法,使用存在时间的长短作为混合的权重,因为背景像素存在时间长,前景时间短;

BackgroundSubtractorMOG2,混合高斯模型为基础的前景/背景分割算法,可以选择是否检测阴影,detectShadows = True(默认值),它就会检测并将影子以灰色标记出来。
BackgroundSubtractorGMG,结合了静态背景图像估计和每个像素的贝叶斯分割。
存在问题,当物体不动时,这些算法会把物体也当作背景。

检测到运动物体后,进行开运算去噪、查找轮廓以通过面积过滤干扰目标,并查找轮廓的最小封闭矩形。

2.4 眼镜、鼻子、嘴巴检测

采用Opencv的分类器即可,注意xml文件路径。通过例程可以看到添加实例化分类器就可同时进行人脸,鼻子,嘴巴的检测。可在官方OpenCV附加库中获取鼻子和嘴巴的xml训练文件,可通过git单文件下载工具下载:https://minhaskamal.github.io/DownGit/#/home。

haarcascade_mcs_nose.xml
haarcascade_mcs_mouth.xml

2.5 眼部肤色区域面积统计

目前当双眼检测到后得到眼部肤色区域,通过查找此感兴区内肤色轮廓计算肤色面积。

2.6 鼻口部区域肤色统计

确定眼部区域后,在眼部区域下面长度一样,高度为眼部两倍为鼻口区域,通过查找此感兴区肤色轮廓计算面积。

通过双眼检测得到眼部肤色面积和鼻子口部区域的肤色面积进行比较,若前者小于后者则为无口罩;若后者小于前者为戴口罩。

第九天

机器视觉人脸这些分类器是比较耗时的,导致帧率比较低。去除鼻子,嘴巴,人脸检测的分类器,只留下眼部检测,在未前景分离时,可以达到帧率在14fps。如下图
通过背景差分法分离前景并不理想,前景提取依然是瓶颈,如下图
采用改进后的背景差分法&帧间差分法,前景提取也不行。