趙金龍 寧媛
摘 要: 目前答題卡識別主要分為人工閱卷和機器閱卷兩種,但是人工閱卷存在效率低、勞動強度大和準確率不高等問題;而傳統(tǒng)的機器閱卷主要是光標閱卷機,其對答題卡的要求較高,存在通用性較差、使用成本高和使用率低等缺點。針對這一問題,設(shè)計一款基于數(shù)字圖像處理技術(shù)的自動識別答題卡系統(tǒng),該系統(tǒng)通過Matlab GUI編程,操作簡單方便,在普通計算機上就可以實現(xiàn)答題卡自動識別功能,既減輕了教師的閱卷壓力,又克服了光標閱卷機必須??▽S玫娜秉c。結(jié)果表明該系統(tǒng)對答題卡具有識別精度高、魯棒性強和成本低廉等優(yōu)點,具有很高的使用價值。
關(guān)鍵詞: 答題卡; 網(wǎng)上閱卷; 圖像處理; 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 引 言
時下,隨著各類考試數(shù)量的不斷增多,試后的閱卷工作量也有明顯增加。傳統(tǒng)的人工閱卷弊端較為突出,不僅效率低下,還會耗費閱卷人大量的時間和精力,同時繁重的閱卷工作也很容易給閱卷老師造成大腦疲勞和視覺疲勞,由此就會帶來閱卷錯誤。當(dāng)前,互聯(lián)網(wǎng)科技及新興技術(shù)的蓬勃發(fā)展則使得傳統(tǒng)的人工閱卷已經(jīng)不能滿足現(xiàn)代化需求,網(wǎng)上閱卷系統(tǒng)應(yīng)運而生。而傳統(tǒng)的光標閱卷機(Optical Mark Reader,OMR)雖然可以克服人工閱卷的弊端,但是其購買和維護成本均頗為可觀,并且對答題卡有很高的要求,通用性較差,難以在高校內(nèi)部中小型考試中普及使用。
近年來,隨著數(shù)字圖像處理技術(shù)和計算機視覺的飛速進步,基于數(shù)字圖像處理技術(shù)的自動閱卷系統(tǒng)也開始逐漸興起,楊青燕等人[1]提出基于灰度圖像的答題卡定位識別;郝平[2]提出耦合模板定位答題卡識別;付清雨等人[3]提出基于模板匹配的答題卡識別系統(tǒng);韋溢輝等人[4]基于OpenCV來實現(xiàn)答題卡生成及批閱。但卻都是基于模板匹配的方法來定位識別答題卡,算法應(yīng)用有很大的局限性。本文提出一種基于Hough變換算法來實現(xiàn)答題卡自動識別系統(tǒng),以Matlab GUI編程實現(xiàn)閱卷系統(tǒng)搭建。
1 系統(tǒng)設(shè)計
基于圖像處理的答題卡自動識別系統(tǒng)主要分為答題卡采集、答題卡預(yù)處理、答題卡校正、答題卡分割與答題卡識別等部分。首先,通過手機相機或掃描儀來采集答題卡圖像信息,并將其保存為jpg或mbp格式作為答題卡自動識別系統(tǒng)的輸入圖像;其次,系統(tǒng)將獲取到的答題卡圖像信息進行圖像預(yù)處理,預(yù)處理操作主要包括答題卡圖像歸一化、答題卡圖像灰度化、答題卡圖像二值化和答題卡圖像濾波等操作;接著,對預(yù)處理后的答題卡圖像應(yīng)用Hough變換算法檢測出圖像中較長的3條直線,其中最長的直線與特征直線位置可以判斷出答題卡傾斜的角度,根據(jù)計算所得到的角度可以實現(xiàn)答題卡圖像的校正;然后,對校正后的答題卡圖像進行區(qū)域分割,可以得到考生信息與答題卡客觀題信息區(qū)域;最后,對分割后的答題卡填涂信息進行分析識別,完成系統(tǒng)閱卷操作。答題卡自動識別系統(tǒng)的流程圖如圖1所示。
該系統(tǒng)算法通過Matlab GUI實現(xiàn),系統(tǒng)主界面如圖2所示。
該系統(tǒng)的菜單欄由“文件”、“答題卡處理”和“成績統(tǒng)計”三部分所組成,點擊“文件”命令后可顯示下一級子菜單,包括“打開”、“保存”和“退出”三個命令;點擊“答題卡處理”命令會出現(xiàn)“答題卡預(yù)處理”、“答題卡校正”和“答題卡標記”三個命令,其中“答題卡預(yù)處理”命令又包含3個子菜單,分別為:“答題卡歸一化”、 “答題卡濾波”、“答題卡灰度化”和“答題卡二值化”;點擊“成績統(tǒng)計”命令,會在系統(tǒng)界面功能區(qū)左側(cè)顯示答題卡分析識別后的結(jié)果圖像,在功能區(qū)右側(cè)顯示經(jīng)過系統(tǒng)分析識別后答題卡使用者的準考證號、考試科目和成績信息。相關(guān)菜單欄界面如圖3所示。
2 圖像預(yù)處理
用戶在使用本系統(tǒng)時,存在設(shè)備參數(shù)不一、攝像角度不同和光照環(huán)境各異等問題使得答題卡在拍攝過程中受到外界因素的影響而會出現(xiàn)傾斜、變形和噪聲等不利因素,若直接將其傳輸?shù)较到y(tǒng)會嚴重影響系統(tǒng)識別的準確度,因此在系統(tǒng)對填涂信息識別前需要進行必要的預(yù)處理操作以盡量減小噪聲和人為操作對填涂信息識別的影響。圖像預(yù)處理包括圖像歸一化、圖像濾波、圖像灰度化和圖像二值化等操作。對此擬展開研究論述如下。
2.1 圖像歸一化
圖像歸一化是對數(shù)字圖像信息進行處理后將其限制在特定的某一范圍內(nèi),使得數(shù)據(jù)間對比性更加明顯。Matlab中,提供歸一化函數(shù)mapminmax進行處理。
2.2 圖像濾波
答題卡在采集過程中難免會出現(xiàn)噪聲,噪聲的出現(xiàn)會嚴重降低后續(xù)答題卡識別的準確度,因此答題卡去噪是圖像預(yù)處理中的關(guān)鍵一步,常見的濾波方法有中值濾波、均值濾波和高斯濾波等。其中,中值濾波是將數(shù)字圖像中像素鄰域的像素值排序取中位數(shù)值作為中心像素的新灰度值。答題卡的噪聲大多是隨機噪聲干擾,該噪聲主要是鄰域內(nèi)亮度隨機發(fā)生突變的像素點,經(jīng)過排序后會出現(xiàn)在序列的隊首或隊尾,因此本系統(tǒng)采用中值濾波可有效消除隨機噪聲。
2.3 圖像灰度化
灰度圖像是只有像素信息而沒有顏色信息的圖像,灰度圖像只需要一個數(shù)據(jù)矩陣來表示,矩陣中每個元素對應(yīng)像素的灰度值。直接應(yīng)用答題卡采集的彩色圖像計算量相對復(fù)雜,為了提高系統(tǒng)識別答題卡填涂信息的速度,需要將彩色圖像轉(zhuǎn)換為灰度圖像,即可降低圖像矩陣所占據(jù)的內(nèi)存空間,又提高系統(tǒng)的計算速度。本系統(tǒng)采用加權(quán)分量法將其轉(zhuǎn)換為灰度圖像,轉(zhuǎn)換過程是從三維矩陣轉(zhuǎn)換為二維矩陣,但矩陣中元素類型不變,轉(zhuǎn)換后的灰度仍可以表示系統(tǒng)所需要的所有圖像信息特征。所謂加權(quán)分量法就是根據(jù)人眼對紅、綠和藍三原色的敏感度不同,分別賦予不同的權(quán)值系數(shù)進行加權(quán),此處涉及的數(shù)學(xué)公式為:
2.4 圖像二值化
經(jīng)過灰度化處理后的圖像每個像素僅有一個灰度值,灰度值也決定了像素的明暗程度,圖像二值化是為了將目標信息從圖像內(nèi)容中提取更加方便。由于不同考生填涂答題卡的深淺度不同,每張答題卡二值化的閾值也并不相同,因此本系統(tǒng)采用局部平均閾值法來確定閾值,該算法在不同圖像區(qū)域所選擇的閾值會自動調(diào)整,可以消除光照不均勻等外在因素的干擾。當(dāng)每張答題卡圖像確定好一個閾值threshold后,會遍歷整幅圖像的像素值,當(dāng)源圖像某一像素灰度值src(x,y)大于閾值threshold,將該像素置為255,否則置為0,運算公式見(2):
圖像預(yù)處理相關(guān)操作見圖4。
3 圖像校正
3.1 Hough變換算法
本系統(tǒng)采用Hough變換算法來檢測傾斜角度,再利用坐標變換得到校正后的圖像信息。Hough變換算法是1962年由Paul Hough首次提出的,初期僅是用于檢測圖像中的直線,但缺點是需要預(yù)先知道目標邊界的解析方程,后來經(jīng)過改進,現(xiàn)在廣義的Hough變換算法可以在不知道邊界的情況下檢測出直線和曲線,且具有不錯的穩(wěn)定性。其原理主要是基于表決原理的參數(shù)估計技術(shù),將提取直線上點的坐標轉(zhuǎn)換為過直線的系數(shù)域,利用共線和直線相交的關(guān)系,使直線提取問題轉(zhuǎn)換為計數(shù)問題。
直角坐標系中直線由兩點A=x1,y1 和B=x2,y2 定義,經(jīng)A點的所有直線可以由y1=kx1+q表示,其中k和q為參數(shù)值。也就是說,同一方程可以解釋為參數(shù)空間k,q的方程,因此通過A點的所有直線可以表示為方程q=-x1k+y1,類似地,點B可以表示為q=-x2k+y2,在參數(shù)空間k,q中,2條直線的公共點就是原圖像空間中表示連接點A和B的直線[5],Hough變換原理圖如圖5所示。
也就是說,原圖像中的任意一條直線可在參數(shù)空間中由單獨的一個點來表示,但由于在直角坐標系中具有斜率不存在的直線,所以多是應(yīng)用極坐標的方程來表示直線,即:
采用極坐標的表達形式Hough變換沒有這些限制,極坐標系下的直線經(jīng)過變換后還是會變?yōu)閱为毜狞c,如圖6所示。
基于Hough變換算法會檢測出很多直線,從中選取一條最長的直線,如圖7所示。
3.2 傾斜角度檢測
基于Hough變換算法可以檢測出圖像中存在的直線,按長度排序找到最長的那條直線,并根據(jù)特征直線位置計算傾斜角度,再按照所得到的角度進行校正,圖8為答題卡圖像的傾斜校正結(jié)果。
4 區(qū)域分割
由于考生信息區(qū)與答案填涂區(qū)位置是固定的,可繼續(xù)采用Hough變換算法檢測直線來分割上區(qū)域(考生信息區(qū))和下區(qū)域(答案填涂區(qū)),再經(jīng)過圖像二值化和形態(tài)學(xué)濾波后可以得到上下區(qū)域,并通過畫線來確定每個小格的界限,其中藍色橫線分割出來的為上區(qū)域、主要包括考生信息和考試科目等,紅色橫線分割出來的為下區(qū)域、主要是答案填涂區(qū),每個答案填涂位置都嚴格分布在分割出來的小網(wǎng)格中,便于后續(xù)分析識別。區(qū)域分割結(jié)果如圖9所示。
5 填涂區(qū)標記
通過上面得到的區(qū)域分割結(jié)果,應(yīng)用Matlab中自帶的bwlabel函數(shù)來標記答案填涂區(qū)域,并以此來確定填涂位置及識別。啟動系統(tǒng),點擊答題卡處理菜單下的答題卡標記命令,可得到標記后的答題卡如圖10所示。
6 成績統(tǒng)計
成績統(tǒng)計需要預(yù)先設(shè)置好各個題號所對應(yīng)的正確答案和分值,系統(tǒng)識別到填涂區(qū)域的答案后與正確答案依次做對比,如果答案匹配則存入一個數(shù)組,否則跳過,繼續(xù)執(zhí)行循環(huán)指令,則循環(huán)結(jié)束后可以統(tǒng)計出考生正確答案,再將各個正確題目與所對應(yīng)的分數(shù)值相乘,最后將各個題目得分依次相加就可以實現(xiàn)成績統(tǒng)計。啟動系統(tǒng),點擊“成績統(tǒng)計”命令,左側(cè)區(qū)域顯示的是考生各個題目所對應(yīng)的答案,右側(cè)區(qū)域顯示考生的準考證號、考試科目和考試分數(shù),執(zhí)行成績統(tǒng)計命令后如圖11所示。
7 結(jié)束語
本系統(tǒng)實現(xiàn)了應(yīng)用Matlab GUI搭建答題卡自動識別系統(tǒng),主要應(yīng)用Hough變換算法來實現(xiàn)答題卡校正和答題卡區(qū)域分割,進一步可以實現(xiàn)精確定位答題區(qū)坐標,再利用bwlabel函數(shù)來識別填涂點,最后通過和后臺設(shè)置的標準答案依次做對比來實現(xiàn)分數(shù)自動統(tǒng)計識別。實驗結(jié)果表明該系統(tǒng)操作簡單便捷、識別率高,在普通計算機上就可以實現(xiàn),具有廣泛的應(yīng)用前景和使用價值。
參考文獻
[1] 楊青燕,彭延軍. 基于灰度圖像的答題卡識別技術(shù)[J]. 山東科技大學(xué)學(xué)報(自然科學(xué)版),2009,28(3):99-102.
[2] 郝平. 圖像處理耦合模板定位的答題卡識別研究與應(yīng)用[J]. 計算技術(shù)與自動化,2015,34(4):105-109.
[3] 付清雨,陳婧. 基于OpenCV的答題卡識別系統(tǒng)[J]. 數(shù)字化用戶,2018,24(10):249.
[4] 韋溢輝,劉漢英. 基于OpenCV的答題卡生成及批閱分析系統(tǒng)[J]. 電腦知識與技術(shù),2020,16(29):23-27.
[5] 韓濤,楊洋. 基于Hough變換的圖像目標檢測與識別[J]. 計算機與數(shù)字工程,2019,47(2):412-416.