赵金龙 宁媛
摘 要: 目前答题卡识别主要分为人工阅卷和机器阅卷两种,但是人工阅卷存在效率低、劳动强度大和准确率不高等问题;而传统的机器阅卷主要是光标阅卷机,其对答题卡的要求较高,存在通用性较差、使用成本高和使用率低等缺点。针对这一问题,设计一款基于数字图像处理技术的自动识别答题卡系统,该系统通过Matlab GUI编程,操作简单方便,在普通计算机上就可以实现答题卡自动识别功能,既减轻了教师的阅卷压力,又克服了光标阅卷机必须专卡专用的缺点。结果表明该系统对答题卡具有识别精度高、鲁棒性强和成本低廉等优点,具有很高的使用价值。
关键词: 答题卡; 网上阅卷; 图像处理; Matlab GUI; Hough变换
文章编号: 2095-2163(2021)03-0190-06 中图分类号:TP391 文献标志码:A
【Abstract】At present, answer sheet recognition is mainly divided into manual scoring and machine scoring. However, manual scoring has problems such as low efficiency, high labor intensity and low accuracy. The traditional machine scoring is mainly a cursor scoring machine, which has higher requirements for answer sheets. There are disadvantages such as poor versatility, high use cost and low use rate. In response to this problem, an automatic answer sheet recognition system based on digital image processing technology is designed. The system is programmed by Matlab GUI, and the operation is simple and convenient. The automatic answer sheet recognition function can be realized on an ordinary computer, which not only reduces the pressure on the teacher to mark the exam, but also overcomes the shortcoming that the cursor marking machine must be dedicated to a special card. The results show that the system has the advantages of high recognition accuracy, robustness and low cost for answering question sheets, and has high use value.
【Key words】 answer sheet; online marking; image processing; Matlab GUI; Hough transform
0 引 言
時下,随着各类考试数量的不断增多,试后的阅卷工作量也有明显增加。传统的人工阅卷弊端较为突出,不仅效率低下,还会耗费阅卷人大量的时间和精力,同时繁重的阅卷工作也很容易给阅卷老师造成大脑疲劳和视觉疲劳,由此就会带来阅卷错误。当前,互联网科技及新兴技术的蓬勃发展则使得传统的人工阅卷已经不能满足现代化需求,网上阅卷系统应运而生。而传统的光标阅卷机(Optical Mark Reader,OMR)虽然可以克服人工阅卷的弊端,但是其购买和维护成本均颇为可观,并且对答题卡有很高的要求,通用性较差,难以在高校内部中小型考试中普及使用。
近年来,随着数字图像处理技术和计算机视觉的飞速进步,基于数字图像处理技术的自动阅卷系统也开始逐渐兴起,杨青燕等人[1]提出基于灰度图像的答题卡定位识别;郝平[2]提出耦合模板定位答题卡识别;付清雨等人[3]提出基于模板匹配的答题卡识别系统;韦溢辉等人[4]基于OpenCV来实现答题卡生成及批阅。但却都是基于模板匹配的方法来定位识别答题卡,算法应用有很大的局限性。本文提出一种基于Hough变换算法来实现答题卡自动识别系统,以Matlab GUI编程实现阅卷系统搭建。
1 系统设计
基于图像处理的答题卡自动识别系统主要分为答题卡采集、答题卡预处理、答题卡校正、答题卡分割与答题卡识别等部分。首先,通过手机相机或扫描仪来采集答题卡图像信息,并将其保存为jpg或mbp格式作为答题卡自动识别系统的输入图像;其次,系统将获取到的答题卡图像信息进行图像预处理,预处理操作主要包括答题卡图像归一化、答题卡图像灰度化、答题卡图像二值化和答题卡图像滤波等操作;接着,对预处理后的答题卡图像应用Hough变换算法检测出图像中较长的3条直线,其中最长的直线与特征直线位置可以判断出答题卡倾斜的角度,根据计算所得到的角度可以实现答题卡图像的校正;然后,对校正后的答题卡图像进行区域分割,可以得到考生信息与答题卡客观题信息区域;最后,对分割后的答题卡填涂信息进行分析识别,完成系统阅卷操作。答题卡自动识别系统的流程图如图1所示。
该系统算法通过Matlab GUI实现,系统主界面如图2所示。
该系统的菜单栏由“文件”、“答题卡处理”和“成绩统计”三部分所组成,点击“文件”命令后可显示下一级子菜单,包括“打开”、“保存”和“退出”三个命令;点击“答题卡处理”命令会出现“答题卡预处理”、“答题卡校正”和“答题卡标记”三个命令,其中“答题卡预处理”命令又包含3个子菜单,分别为:“答题卡归一化”、 “答题卡滤波”、“答题卡灰度化”和“答题卡二值化”;点击“成绩统计”命令,会在系统界面功能区左侧显示答题卡分析识别后的结果图像,在功能区右侧显示经过系统分析识别后答题卡使用者的准考证号、考试科目和成绩信息。相关菜单栏界面如图3所示。
2 图像预处理
用户在使用本系统时,存在设备参数不一、摄像角度不同和光照环境各异等问题使得答题卡在拍摄过程中受到外界因素的影响而会出现倾斜、变形和噪声等不利因素,若直接将其传输到系统会严重影响系统识别的准确度,因此在系统对填涂信息识别前需要进行必要的预处理操作以尽量减小噪声和人为操作对填涂信息识别的影响。图像预处理包括图像归一化、图像滤波、图像灰度化和图像二值化等操作。对此拟展开研究论述如下。
2.1 图像归一化
图像归一化是对数字图像信息进行处理后将其限制在特定的某一范围内,使得数据间对比性更加明显。Matlab中,提供归一化函数mapminmax进行处理。
2.2 图像滤波
答题卡在采集过程中难免会出现噪声,噪声的出现会严重降低后续答题卡识别的准确度,因此答题卡去噪是图像预处理中的关键一步,常见的滤波方法有中值滤波、均值滤波和高斯滤波等。其中,中值滤波是将数字图像中像素邻域的像素值排序取中位数值作为中心像素的新灰度值。答题卡的噪声大多是随机噪声干扰,该噪声主要是邻域内亮度随机发生突变的像素点,经过排序后会出现在序列的队首或队尾,因此本系统采用中值滤波可有效消除随机噪声。
2.3 图像灰度化
灰度图像是只有像素信息而没有颜色信息的图像,灰度图像只需要一个数据矩阵来表示,矩阵中每个元素对应像素的灰度值。直接应用答题卡采集的彩色图像计算量相对复杂,为了提高系统识别答题卡填涂信息的速度,需要将彩色图像转换为灰度图像,即可降低图像矩阵所占据的内存空间,又提高系统的计算速度。本系统采用加权分量法将其转换为灰度图像,转换过程是从三维矩阵转换为二维矩阵,但矩阵中元素类型不变,转换后的灰度仍可以表示系统所需要的所有图像信息特征。所谓加权分量法就是根据人眼对红、绿和蓝三原色的敏感度不同,分别赋予不同的权值系数进行加权,此处涉及的数学公式为:
2.4 图像二值化
经过灰度化处理后的图像每个像素仅有一个灰度值,灰度值也决定了像素的明暗程度,图像二值化是为了将目标信息从图像内容中提取更加方便。由于不同考生填涂答题卡的深浅度不同,每张答题卡二值化的阈值也并不相同,因此本系统采用局部平均阈值法来确定阈值,该算法在不同图像区域所选择的阈值会自动调整,可以消除光照不均匀等外在因素的干扰。当每张答题卡图像确定好一个阈值threshold后,会遍历整幅图像的像素值,当源图像某一像素灰度值src(x,y)大于阈值threshold,将该像素置为255,否则置为0,运算公式见(2):
图像预处理相关操作见图4。
3 图像校正
3.1 Hough变换算法
本系统采用Hough变换算法来检测倾斜角度,再利用坐标变换得到校正后的图像信息。Hough变换算法是1962年由Paul Hough首次提出的,初期仅是用于检测图像中的直线,但缺点是需要预先知道目标边界的解析方程,后来经过改进,现在广义的Hough变换算法可以在不知道边界的情况下检测出直线和曲线,且具有不错的稳定性。其原理主要是基于表决原理的参数估计技术,将提取直线上点的坐标转换为过直线的系数域,利用共线和直线相交的关系,使直线提取问题转换为计数问题。
直角坐标系中直线由两点A=x1,y1 和B=x2,y2 定义,经A点的所有直线可以由y1=kx1+q表示,其中k和q为参数值。也就是说,同一方程可以解释为参数空间k,q的方程,因此通过A点的所有直线可以表示为方程q=-x1k+y1,类似地,点B可以表示为q=-x2k+y2,在参数空间k,q中,2条直线的公共点就是原图像空间中表示连接点A和B的直线[5],Hough变换原理图如图5所示。
也就是说,原图像中的任意一条直线可在参数空间中由单独的一个点来表示,但由于在直角坐标系中具有斜率不存在的直线,所以多是应用极坐标的方程来表示直线,即:
采用极坐标的表达形式Hough变换没有这些限制,极坐标系下的直线经过变换后还是会变为单独的点,如图6所示。
基于Hough变换算法会检测出很多直线,从中选取一条最长的直线,如图7所示。
3.2 倾斜角度检测
基于Hough变换算法可以检测出图像中存在的直线,按长度排序找到最长的那条直线,并根据特征直线位置计算倾斜角度,再按照所得到的角度进行校正,图8为答题卡图像的倾斜校正结果。
4 区域分割
由于考生信息区与答案填涂区位置是固定的,可继续采用Hough变换算法检测直线来分割上区域(考生信息区)和下区域(答案填涂区),再经过图像二值化和形态学滤波后可以得到上下区域,并通过画线来确定每个小格的界限,其中蓝色横线分割出来的为上区域、主要包括考生信息和考试科目等,红色横线分割出来的为下区域、主要是答案填涂区,每个答案填涂位置都严格分布在分割出来的小网格中,便于后续分析识别。区域分割结果如图9所示。
5 填涂区标记
通过上面得到的区域分割结果,应用Matlab中自带的bwlabel函数来标记答案填涂区域,并以此来确定填涂位置及识别。启动系统,点击答题卡处理菜单下的答题卡标记命令,可得到标记后的答题卡如图10所示。
6 成绩统计
成绩统计需要预先设置好各个题号所对应的正确答案和分值,系统识别到填涂区域的答案后与正确答案依次做对比,如果答案匹配则存入一个数组,否则跳过,继续执行循环指令,则循环结束后可以统计出考生正确答案,再将各个正确题目与所对应的分数值相乘,最后将各个题目得分依次相加就可以实现成绩统计。启动系统,点击“成绩统计”命令,左侧区域显示的是考生各个题目所对应的答案,右侧区域显示考生的准考证号、考试科目和考试分数,执行成绩统计命令后如图11所示。
7 结束语
本系统实现了应用Matlab GUI搭建答题卡自动识别系统,主要应用Hough变换算法來实现答题卡校正和答题卡区域分割,进一步可以实现精确定位答题区坐标,再利用bwlabel函数来识别填涂点,最后通过和后台设置的标准答案依次做对比来实现分数自动统计识别。实验结果表明该系统操作简单便捷、识别率高,在普通计算机上就可以实现,具有广泛的应用前景和使用价值。
参考文献
[1] 杨青燕,彭延军. 基于灰度图像的答题卡识别技术[J]. 山东科技大学学报(自然科学版),2009,28(3):99-102.
[2] 郝平. 图像处理耦合模板定位的答题卡识别研究与应用[J]. 计算技术与自动化,2015,34(4):105-109.
[3] 付清雨,陈婧. 基于OpenCV的答题卡识别系统[J]. 数字化用户,2018,24(10):249.
[4] 韦溢辉,刘汉英. 基于OpenCV的答题卡生成及批阅分析系统[J]. 电脑知识与技术,2020,16(29):23-27.
[5] 韩涛,杨洋. 基于Hough变换的图像目标检测与识别[J]. 计算机与数字工程,2019,47(2):412-416.