程夢龍 唐曉燕 南陽理工學院電子與電氣工程學院
引言:目前,考試的主流方法是以試卷的考試為主。自動閱卷系統的研究主要是基于計算機圖像處理技術的光標讀取器和答題卡標識系統。基于數字圖像處理技術,需要提前掃描考生答題卡生成電子圖像文件,然后存儲在計算機中。在處理時直接在軟件中讀入。利用數字圖像處理的各種技術和方法,對考生的考試成績進行識別。利用這種技術不僅可以節省考試管理和考核部門的人力,物力,而且也能提高工作效率,提高評估的公平性。本文用Matlab設計了答題卡識別軟件,用于對答題卡信息及成績的自動識別計算。
系統軟件包括:
(1)答題卡的讀取;
(2)圖像預處理部分:包括圖像灰度化、二值化等;
(3)對圖像進行霍夫變換得到霍夫變換域,用于檢測答題卡中的直線段;
(4)計算傾斜角度,矯正圖像:Hough變換檢測到的直線可以計算出直線的斜率,然后用反三角函數可以得到傾斜角度。再對圖像進行旋轉,得到符合要求的圖像;
(5)對圖像進行濾波并進行區域劃分:原圖像的二值化圖像有噪聲,所以利用除噪函數進行濾波,然后根據答題卡的特征劃分區域;
(6)分割圖像,生成網格線:根據答題卡的特點劃分區域,再根據答題卡的填涂區域分布進行網格線劃分;
(7)識別和顯示:識別考上學號、考試科目、考生答案,用GUI界面顯示。
霍夫變換可以識別出圖像中的幾何形狀,可以分離出圖像中圓、矩形等特殊的形狀。其最基本的功能是在圖像中檢測直線或者曲線。
霍夫變換算法將每個像素坐標點P(x,y)轉換到(r,theta)的曲線點上面,累加到對應的格子數據點,當一個波峰出現時候,說明有直線存在。通過Hough變換檢測出了很多條直線,選取最長的那條直線,計算其斜率,然后進行傾斜矯正,則可獲得答題卡圖像的傾斜矯正結果。
在原圖像中標記出Hough變化檢測出的的最長直線。則標記出直線的上部分為答題卡類型區、考生考號區和考試科目部分,下部分為答案區。
從Hough變換檢測出的峰值中獲取最長的三條,其中一條豎直定位線、一條區域分割線和一條底部線,那么根據坐標可以選取區域分界線作為基準,用底部線配合計算得到四條答題區邊界線。
以橫向檢測到的第一個像素不為0的點作為一條直線的起始點劃橫線,再以豎向檢測到的第一個像素不為0的點作為起始點劃豎線。
在獲取了答題區四條邊界線后需要對其區域進行進一步劃分,首先計算答題區六個橫向區域的底部橫線縱坐標如公式(1):

其中ym是第n個橫向區域的底部橫線縱坐標(此處m為0-6),y基準是基準橫線縱坐標,a為比側系數,是底部橫線的縱坐標。用同樣的方法,也可以得到每個橫線區域中四個小區域的橫線縱坐標。豎直分割線,計算的是豎直分割線的橫坐標如公式(2):

其中xmn是每個橫線區域中四個小區域的豎線橫坐標,m是第n個區域中的某條豎線x左是左邊線,x右是右邊線,b是比例系數。此時完成了圖像的初步分割。
這樣在答題卡上就可以清晰的得到網格線。如圖1中上下區域分的很明顯,上區域又分為考號區和考試科目區,用藍色橫線分割的。下區域即答案區,則用紅色橫線分割。網格線圖像可以很明顯的看到區域的不同。圖中每一個填涂的部分都嚴格的存在于一個小網格中,有利于識別,如圖1。

圖1 網格線的生成圖像
答題卡信息主要包括:考生號、考試科目、考生成績等。可以在答題卡圖像上標記出考生填涂的每一個位置對應的數字、科目或者選項來識別。
用GUI界面來對答題卡識別的結果進行顯示,GUI主要通過界面讓用戶實現以下功能:
(1)添加答題卡;
(2)進行按鍵評分;
(3)得到考生號、考試科目、考試成績。
其結果如圖2所示。

圖2 GUI界面結果的顯示
經實驗證明,設計出的答題卡識別軟件可以比較準確的完成人名識別和成績批改統計功能。但是軟件還有很大的提升空間,例如在一些特殊情況下系統會識別不出來(答題卡填涂不明顯或者擦除不干凈),GUI界面還可以增加查卷功能,便于對學生成績進行查看。