基于Linux和OpenCV的教室人数检测统计系统研究
2016-12-21张开生谢代胜
张开生+谢代胜
摘要:为了让学生能远程了解自习室人数情况,从学生头部特征出发,分析现有的教室识别人数技术的特点和不足,以嵌入式Linux和OpenCV为软硬件搭建系统。系统采用垂直俯视拍摄方式,对教室座位区采取提取轮廓并椭圆拟合的方法识别座位区人数及人员排布。经实验表明,系统能有效地识别教室人数及并分析学生行为,具有快速、准确性高的特点。
关键词:嵌入式Linux;OpenCV;教室人数统计;椭圆拟合
中图分类号:TP18 文献标识码:A 文章编号:1009-3044(2016)28-0187-02
Abstract: in order to let the students understand the remote study room number, starting from the student head characteristics, analysing the characteristics of classroom identification number of technology and shortcomings, based on embedded Linux and OpenCV as soft hardware system. The system adopts the vertical view shooting mode, take the contour extraction and recognition method of ellipse fitting and the number of personnel arrangement of the seating area, seating area. The experiment shows that the system can effectively identify the number of the classroom and analyze the behavior of the students. It has the characteristics of high speed and high accuracy.
Key words: embedded Linux; OpenCV; classroom population statistics; ellipse fitting
随着我国高水平大学的招生人数进一步增加,学生对自习室是否有空位及其排布情况无法便捷获取。随着计算机技术的发展,图像处理技术在解决这个问题越来越显示出它的优点。
文献[1]提取了一种基于网格的模板匹配方法,使用背景减除算法得到运动区域,提取帧图像进行预处理,然后提取特征统计人数。但人体间的相互遮挡而降低了检测精度。文献[2]利用人头和非人头统计特征提出了结合扩展的Haar特征和SVM分类器来检测行人,此方法需花费大量时间收集人头图像样本和训练分类器;
分析总结现有技术的不足,系统采用垂直俯视拍摄方式,使用OpenCV作为函数库,可方便移植于Linux系统,算法简单、鲁棒性强。
1 系统整体架构设计
嵌入式Linux是以Linux内核为基础,根据需要对软、硬件进行裁剪的专用嵌入式系统 [3]。
OpenCV是一个开放源代码的计算机视觉库,使非专业图像处理的工程技术人员应用于图像分割、运动检测等方面[4]。
系统框架分为应用层、库层、Linux内核、硬件层。应用层为教室人数检测应用程序,为C/C++语言编写,包含文中所提的算法。库层上下分别为OpenCV视觉库、OpenCV依赖库、基本c库三层。Linux内核以官网下载的Linux3.4.2内核基础上经过裁剪,加载摄像头、触摸屏、无线网络等模块。系统使用三星四核Cortex-A9构架处理器Exynos 4412,主频为1.5GHZ,内存为1GB DDR3、闪存4GB eMMC,图像处理能力强大。I2C接口连接CMOS摄像头OV7740。
2 人员特征的分析及检测
系统以教室为应用背景,在教室正中心架设摄像头,将整个教室摄入。系统的整体工作流程如图2所示。教室中心正上方的摄像头摄入当前教室图像,从视频中提取视频帧,对视频帧图像经过灰度化、二值化处理、提取轮廓,由于俯视情况下人头部轮廓图可近视为一圆形,通过椭圆拟合,可找到图像中的疑似人头部,再根据拟合椭圆的面积等条件判断是不是头部。由于学生坐在相邻位置时,在进行交谈时头部图像可能发生一部分重叠,当两个人头部图像重叠,提取的头部轮廓将存在拐点。如果椭圆面积大于一个人头部面积的阈值,再进行轮廓有无拐点判断。以拐点为分界点,随机选取疑似头部轮廓起始点到拐点、拐点到疑似头部轮廓终止点至少6个点做椭圆拟合,再根据拟合椭圆面积阈值进行判断是否为人头部。
(1) 图像获取并预处理
系统通过CMOS摄像头模块OV7740摄取当前教室图像。OpenCV通过cvCaptureFromCAM 函数初始化摄像头并从中捕获视频,再调用cvQueyrFrame函数从摄像头捕获的视频中获取并返回一帧图像。系统充分利用教室为应用背景的优势,将教室图像根据桌椅分布进行分块处理,使用cvGetSubRect函数分块图像,保证每一块图像中保留完整的座位。
(2) 图像二值化处理
图像的二值化有利于图像的进一步处理,使图像简单化,而且数据量减小,能凸显出感兴趣的目标的轮廓。其中cvThreshold参数使用最大熵值法求得的最佳阈值。该分割阈值使得图像目标和背景两类的信息熵之和最大[5]。
(3) 椭圆拟合
在进行椭圆拟合时,最常用的方法是最小二乘法。最小二乘法只需6个轮廓点即可拟合椭圆。以下是椭圆方程式:
A+C=1为没有零解的约束条件,用上述方程对边缘检测后的点进行最小二乘法处理
得到一个线性方程组,使用高斯消元法,得到方程式的解[6]。通过OpenCV 中cvFitEllipse函数,对cvFindContours函数提取出storage存储轮廓数据矩阵作椭圆的最佳拟合。图2为椭圆拟合的结果图,在程序中设定椭圆的长轴、短轴及面积的范围,去除不满足条件的椭圆,结果为图b。
图3 (a)为两学生在座位上交谈的情景。针对这种情况,拟合椭圆设定面积为单头像拟合椭圆面积的1.7~2.0倍。当满足此条件时遍历此轮廓数据矩阵(如图3(c)),找到x轴坐标相差不大,y轴坐标相差最小的A、B,这两点为此轮廓的拐点,再分别于轮廓起点、终点二次椭圆拟合。则可确定为两人头像遮盖的情况。
3 实验结果及分析
系统以某一实验楼大厅为实验对象进行试验,在二楼用摄像头垂直录制行人在大厅行走的场景,与安装在教室中心拍摄学生图像情况基本一致。图4为检测图。
座位区实验结果如表1所示,通过大量实验表明,对比其他方法,垂直俯视拍摄减小了人头部相互遮挡的情况,具有较高的准确性。程序检测及统计响应时间迅速,完全符合实时应用的要求。
4 结束语
论文在OpenCV图像处理函数库的基础上运用图像二值化、轮廓提取和椭圆拟合等图像处理技术,结合嵌入式Linux技术和视频采集技术,以自习室为应用背景,识别自习室学生人数、坐标和活动情况。总结系统特点,主要有以下3个方面:基于嵌入式Linux,具有较强的实用性、实时性;以自习室为应用背景且采用垂直俯视方式采集图像,最大限度地减小了学生之间相互遮挡的情况,能准确获取学生信息;使用OpenCV中函数对图像进行预处理、二值化和椭圆拟合,大大减小程序的复杂度和工作量。
参考文献 :
[1]Jun Wei Hsieh, Cheng Shuang Peng,Kao Chin Fan.Grid-based Template Matching for People Counting[C].Multimedia Signal Processing,2007. MMSP 2007. IEEE 9th Workshop,1-3 Oct. 2007: 316-319.
[2]Celik T,Seyin O H,Demirel H.Fire pixel classification using fuzzy logic and statistical color model[C]//IC2007.New York:IEEE,2007:1207-1208.
[3]毛德操,胡希明.嵌入式系统[M].浙江大学出版社,2003.
[4]刘瑞祯,于仕琪.OpenCV教程一基础篇[M].北京航空航天大学出版社,2007.
[5]杨召君.基于视频人数统计与跟踪改进算法的研究与实现[D].南京邮电大学,2013.
[6]苏娟. 基于视频监控的教室人数统计[D].安徽大学,2014.
[7]钮毅.部分遮挡条件下椭圆目标识别[D].上海:上海交通大学自动化学院,2007.
[8]顾炯.基于头肩轮廓特征的人头检测系统的研究[D].东华大学,2012.