基于视频的智能考勤系统

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

基于视频的智能考勤系统

一、概述

由于目前高校对到课率抓的比较严,而传统的考勤方法具有滞后性和低效性,所以我们开发了《基于视频的智能考勤系统》。

《基于视频的智能考勤系统》的创意是来自与开发人员自己的学习体会和老师的启发。作者最初的想法是做一个自习教室的自动管理系统,主要功能有防止恶意占座和空位提示等功能,但是在和老师交流过程中发现难度较大,并且市场前景比较小,于是就改成了《基于视频的智能考勤系统》。

《基于视频的智能考勤系统》的主要思想是利用摄像头采集图像,通过数字图像处理,检测人头的个数,从而实现对每个班的到课率的考勤。由于在大部分教室中,摄像头都是安装在教室的后部,所以我们只能实现对人的头发的检测,而不能进行通常的人脸检测。

在这个系统中,主要的核心部分就是人头的检测。主要难点也在于此。具体的来说,主要是以下几个方面:1、由于很多教室是阶梯教室,所以如果从后面拍摄照片的话会造成很多人头重合在一起(如图1);2、有的同学穿的黑色衣服会对检测造成很大的干扰(如图2)。

图1 图2

对于以上两点,经过研究和讨论,我们决定采用基于特征的检测和adaboost算法两种算法的综合,对人头实施检测。基于特征的检测主要是针对人头的形状、灰度、面积等特征进行提取检测,主要优点是速度快,便于理解和实现,但是主要缺点是抗干扰性差。Adaboost 算法主要是根据Paul Viola和Michael J.Jones的在《Robust Real-Time Face Detection》中所提到的adaboost算法对人头实行检测,唯一所不同的是此处的训练样本是人头的后部,而不是人脸。这种方法的好处是速度快,精确率较高,但是对于我们几位大二的同学来说难度有些大。最后根据adaboost算法中的级联思想,将二者级联,取最后的结果作为检测结果。具体的做法就是要求两个分类器具有低去真错误率(把对的判断成错的)和一定的存伪错误率(把错的判断成对的),然后对一副图像进行检测时,先用基于特征的分类器进行检测,然后用adaboost分类器进行检测,只要有一个分类器判断为否,就将该图像判断为否。

在工程部分,我们采用的是用VC++将核心算法做成dll,然后用vb来实现界面和数据库。由于这是我们第一次做项目,并且以前没有接触过任何有关图像处理的知识,所以我们在做项目的过程中都是摸着石头过河,而且这学期的课程较多,所以此次工程中我们只实现了核心算法中的第一个部分,就是基于特征的检测部分。第二个部分目前正在开发之中,预计能在下个学期之前完成。

二、工程(1.0版本)

此次出炉的《基于视频监控的智能考勤系统》1.0版本主要有主程序、dll部分和数据库三部分组成。

他们的关系如下图所示:

1、主程序:dll和数据库的桥梁,通过他可以实现数据在dll和数据库之间的交换。

同时,它也是用户的接口,用户可以操作他得到自己想要的信息。

2、Dll:包含了该工程的整个图像处理部分,包括图像预处理部分和模式识别部分。

接口:Int initialclassdata(int);

参数为班级号码,从.txt文件导入班级座位信息。返回TRUE

Int loaddib(int,int,int);

参数依次为日期、时间、教室编号,返回教室人数。

a、预处理部分:将彩色图像转换为灰度图像。

b、模式识别部分:对每个座位进行判定,然后累加。对于每个座位,首先计算人

头部分占当前座位框的比值,当然,这里会有黑色衣服对比值的影响。当发现

当前比值高于我们给定值的时候,再通过判断宽度的方法判断是否有头存在,

因为衣服的宽度是远远大于人头宽度的。此种方法最后对多幅图片进行测试,

准确率在90%左右。

首先,为了能够开始识别,程序需要一些教室的信息。1、教室中每个学生的人头可能会出现的大概位置(seat[][]二维数组存储)。当我们得到一幅教

室图片,我们应该对每个座位上的学生的人头可能出现的位置进行判断,然后

确定一个任意四边形,将这个位置框出来。确定位置的标准是:只考虑学生坐

姿端正时候的人头位置,不考虑学生人头侧移的情况。这个位置框还要在人头

的四周留有一定的空间,给学生头部运动留有一定的空间。2、对与每个人头,

我们还要确认一个人头宽度的大概范围(headlength[][]存储)。即,图片中横

向看到的人头宽度。由于透视原理,教室前、后排的学生人头宽度肯定有较大

的差别。这两个部分的手工录入在实际当中是很繁琐的,但是一但录入完毕,

数据对于当前教室就可以在摄像头位置、角度不变的情况下永久使用。以上部

分的单位均为像素。3、对于每个人头,还需要一个灰度比值,即符合要求的

灰度较小部分面积占总框面积的比值下限(ratio[])。这个值的设置比较灵活,

即可以对每个座位逐个设置,也可以全部座位只采用一个值。

下面,还有3个应用于全图像的值:允许判断的灰度最大值(grademax),灰度误差范围(graderange)和座位个数(numofseat)。程序从用户给的头部

框中选取中间点,取它的灰度,如果这个灰度值太高,就表明它不是头,直接

返回假。而这个灰度是否太高的判断标准就是灰度最大值。灰度误差范围就是

在当前选取灰度值的一个范围当中的灰度全部判断为人头。比如当前选定灰度

为30,那么在30±灰度误差范围中的灰度都被计算。座位个数记录总共要

被判断的座位个数。

以上的所有数据为简单起见,被存储在一个.txt文件中。格式:

允许判断的灰度最大值灰度误差范围座位个数

人头位置框的4点坐标(左上,右上,右下,坐下)灰度比值人头宽度下

限人头宽度上限

……(根据座位个数输入相应数据)

3、数据库:

相关文档
最新文档