張風霞 段金成 朱曉慶 萬雷鳴
(1、黑龍江科技大學電子與信息工程學院,黑龍 江哈爾濱 150022 2、哈爾濱鐵路局大功率機車檢修段,黑龍 江哈爾濱 150025)
隨著目前科學技術(shù)飛快進步,我國的政策持續(xù)調(diào)整,人們提高了對教育的重視程度,也清楚地認識到國家競爭力的核心內(nèi)容依然是人才的競爭,考試始終是衡量學習能力和知識積累的重要指標[1]。考試規(guī)模的不斷增加,使得人工批卷的壓力增大,問題也逐漸顯現(xiàn)出來。隨著數(shù)字圖像處理技術(shù)逐步興起,基于機器視覺的一種智能判卷系統(tǒng)走入人們的世界[2],基于機器視覺答題卡識別算法除了能夠減輕判卷老師及普通學校的負擔外,還能夠使判卷更具有公正性、客觀性以及準確性,促使教育得到更加公平且高質(zhì)量的發(fā)展。
本文采集真彩圖像,其具有顏色特征,會浪費很大的存儲區(qū)域,大部分的信息和識別到的內(nèi)容無太大關聯(lián),導致以后的識別存在困難,可能使得處理的效率偏低、結(jié)果不佳。因此,要先將目標答題卡圖像完成灰度化處理這一操作,從而實現(xiàn)更良好的處理效果。本文為了明顯地看出圖像灰度分布,用加權(quán)平均法對圖像進行灰度化處理并對像素統(tǒng)計。如圖1 所示。
圖1 原圖像灰度值分布圖
圖1 可見,圖像中160 左右的像素值占據(jù)絕大多數(shù),而這個像素值等價于紙的背景色,像素值為50 以下才代表答題卡被填涂的部分。轉(zhuǎn)換成二值圖像后,圖像的處理效率得到了升高。
本文采用的方法是最佳閾值法,一般也被稱作迭代法。這一算法需要預先進行初始閾值的設置,再通過閾值運算來持續(xù)地對閾值進行更新從而不斷地做出調(diào)整,直到滿足某一條件,即可判定滿足條件的值為最終的閾值。主要步驟為:
(1)求解并計算圖像中最大及最小灰度值的均值,將得到的結(jié)果當作初始閾值T(j),j 代表初始值為0 的迭代次數(shù)。
(2)根據(jù)閾值,T(j)把圖像分割成兩個部分。目標圖像前景Cj1以及背景Cj2。各自求出前景區(qū)域中Nj1個像素點以及背景中Nj2個像素點的平均灰度值。
(3)求出新閾值。
(4)若|T(j)-T(j+1)|F,F(xiàn) 是設定的閾值。那么所得就是閾值,否則重復(2)~(4)。
在采集答題卡圖像時,由于物體間的遮蔽,以及光照不均等因素對圖像造成一定影響,在進行簡單二值化處理時,并未能理想地對圖像左下角存留的陰影區(qū)域開展處理。假若陰影將答題區(qū)域遮住,則大概率會對分割結(jié)果產(chǎn)生干擾,造成識別出現(xiàn)錯誤。通過進一步觀察會發(fā)現(xiàn),產(chǎn)生在答題卡圖像中的陰影部分,亮度是逐步變化的,算法利用梯度濾波器來對答題卡圖像中的陰影部分實現(xiàn)去除。
均值濾波作為一種線性濾波,具有算法快、去噪強、實現(xiàn)簡單的優(yōu)勢[3]。利用75*75 的模板進行均值濾波后獲取到相應的背景圖像。其次,利用差分法處理原始圖像和背景圖像,這樣就可以獲得相應目標圖像。再把目標圖像進行二值化處理,但由于二值化得到結(jié)果的圖像細節(jié)邊緣部分十分模糊,因此,需要對圖像的對比度進行增強。如圖2 所示。
圖2 答題卡陰影處理效果
算法的一個重要步驟是判斷采集到的答題卡圖像是不是存在一定的傾斜,進而可以實現(xiàn)傾斜圖像的自動校正。比較常用的方法有傅里葉變換法、最小二乘法、HT法等[4]。其中,HT 因為存在良好的抗干擾性和比較突出的穩(wěn)定性等優(yōu)點。本文通過Roberts 算子來實現(xiàn)邊緣檢測、快速Hough 變換實現(xiàn)直線檢測以得到矩形范圍內(nèi)所包含的四個頂角的定位,以此來實現(xiàn)傾斜校正。
1.3.1 邊緣檢測
目前存在許多種邊緣檢測算子。常用的包括:Canny算子、Roberts 算子、LoG 算子、Prewitt 算子和Sobel 算子等[5]。本文選擇Roberts 算子來實現(xiàn)邊緣檢測,盡管其檢測效果不是最佳的,但仍然能夠較好地檢測到圖像邊緣,正因其效果并不是最佳的,因此可以直接去除很多非直線點,這使得圖像中沒有必要的像素點大量減少。
1.3.2 快速Hough 變換直線檢測
圖像的邊緣特征往往被借助用來完成HT 的快速檢測,篩選出目標邊緣圖像的定位長方形框的邊緣線段。這一方法基于待測圖像內(nèi)的定位矩形框所具備的特性,對矩形框進行預先提取,然后通過挑選邊緣線,使得HT檢測的計算復雜度再得以減小,且檢測準確率得到保障。
1.3.3 圖像幾何校正
圖像的旋轉(zhuǎn)校正可以分成兩步,第一步是旋轉(zhuǎn)變換圖像,第二步是進行灰度插值。
1.3.3.1 透視變換。對目標圖像角點檢測,再通過角點將傾斜的圖像進行矯正[6]。透視變換的過程如下。
利用(x1,y1)和(x2,y2)這兩個點的坐標,目標圖像的傾斜角度可以通過反正切函數(shù)得到。如式(1-4)所示。
在獲得傾斜角操作以后,對待測圖像進行校正。因為所得的4 個點是不存在前后順序的,那么矩形定位框的四個角點的相對位置是要首先進行確定的,這樣才可以確切地與定位的四邊形的四個頂點相對應。算法設計中,圖像的旋轉(zhuǎn)步驟由透視校正方法來實現(xiàn),目標圖像能夠通過透視變換映射到其他的視平面,一般也稱為投影映射。
1.3.3.2 灰度插值。在圖像校正過程中,由于圖像被放縮的情形是不確定的,其中,像素坐標實際上又全為整數(shù),這讓變換后圖像有很大的概率會產(chǎn)生間隙,因此目標圖像在變換后要應用插值運算,從而補償在目標圖像中可能丟掉的像素。本文選擇用雙線性插值法進行處理,如圖3 所示,雙線性插值首先選擇參考點,文中選擇的是四個鄰近點的灰度值,從x 與y 兩個不同的方向進行線性內(nèi)插運算。若設定P(x,y)這一像素點的4 個鄰近點是A、B、C、D,坐標分別是(x1,y1),(x2,y1),(x1,y2),(x2,y2),則對應的灰度值分別是g(A),g(B),g(C),g(D)。
圖3 雙線性插值的原理圖
x 方向上做線性插值,g(E)與g(F)是E 與F 兩點灰度值,有:
答題卡的實際內(nèi)容,大致分成三個模塊即試卷考生信息采集模塊、考生主客觀題目的作答模塊以及評分人員評分模塊。對于考生試題作答模塊,所設計的算法的識別目標是考生在客觀題作答這一區(qū)域的填涂選項,而試卷考生信息采集模塊以及評分模塊這兩個區(qū)域主要識別目標是數(shù)字。因此,在進行定位并識別考卷上的答案操作之前,務必要預先對于經(jīng)過了校正后的圖像它的若干個待識別范圍進行分解,借此完成粗定位圖像中的待識別區(qū)域。本文選擇Roberts 算子來進行邊緣檢測實現(xiàn)圖像分割。如圖5 所示為獲得的直線檢測結(jié)果以及對幾個不同圖像區(qū)域的分割結(jié)果。
圖4 圖像差值校正
圖5 圖像區(qū)域劃分
對于答題卡圖像內(nèi)的客觀題填涂作答部分,填涂框識別的準確率要求較高,獲得的定位框所對應的答案要對比后臺數(shù)據(jù)庫中所保存的正確答案模板,從而實現(xiàn)評判客觀題的工作。算法能夠根據(jù)灰度值以及填涂面積等這些常規(guī)信息,設置指標,來評價識別標準,判斷選項填涂是否具有有效性。
算法要統(tǒng)計所有客觀題的填涂范圍內(nèi)的有效像素,并恰當?shù)卦O置一個閾值T,若比這一閾值大,則灰度值的像素點對應記錄成有效的像素點。
在式(7)中,用來填涂答案的小長方形邊框的高和寬用n 和m 分別代表,填涂框內(nèi)的隨意一處灰度值用P 來表示。
對有效像素點的個數(shù)(填涂面積)S 進行統(tǒng)計,然后,通過設置的閾值M執(zhí)行判斷,若S≥M,那么說明這一作答區(qū)域內(nèi)已經(jīng)大面積的被填涂,也就是說明考生確定選擇了這一選項。如果S 答題卡客觀題答案的填涂區(qū)域能夠使用網(wǎng)格狀來加以表示,所有網(wǎng)格均與客觀題某個正確答案(一般都是A 到D)的位置或題號(一般都是阿拉伯數(shù)字1,2,3等)的位置彼此之間相互對應著,如圖6 展示了在答題卡圖像的客觀題范圍內(nèi)、考生在試卷上的填涂信息的識別過程,對于完成了預處理校正以及二值化后的答題卡圖像,可以較好地對于填涂范圍內(nèi)的質(zhì)心實現(xiàn)提取操作,通過和庫內(nèi)正確答案的對比來判斷相應的結(jié)果是否能夠得分。 圖6 客觀題的識別過程 以確保得到速度快且效果好的識別算法為目的,選擇OpenCV(Open Source Computer Vision Library)庫這一高效的編碼方式實現(xiàn)判卷系統(tǒng)的功能模塊。本文的算法就是結(jié)合OpenCV 在Pycharm 平臺上實現(xiàn)的。表1 所示為電腦端硬件設備參數(shù)和測試結(jié)果。 表1 硬件參數(shù)及測試結(jié)果 100 張答題卡圖像不存在不正、模糊和殘缺等問題,通過實驗可以得到,按照規(guī)則獲取的圖像同時答題卡填寫較好,錯誤率為0.77%,速度為最高每張2 秒。 對存在以下問題的答題卡進行識別實驗,首先,選擇題部分填寫的范圍超過要求的范圍或沒有填滿,填寫時不清晰,擦掉的部分仍然留下可以識別出來的部分;獲取60 個目標圖像,存在由于外部的光源問題使得圖像具有陰影。通過測試可以得到,該算法可以較好地對這些問題進行矯正,可以達到的正確率是92.4%。由此可知,該算法對于有問題的答題卡,依然是可行的。 該算法實現(xiàn)了對考生答題卡圖像進行采集后的預處理等操作,與此同時去除了圖像中的陰影,并通過改進的HT 算法實現(xiàn)了傾斜校正,以有利于之后的答題卡的識別處理流程的進行。對于將答題卡的信息進行判定再實現(xiàn)存儲的模塊,首先要進行的是確定答題卡中的客觀題范圍,從而找到考生作答的答案填涂的具體位置,在將其和標準答案進行對比、評判,并把評分結(jié)果在設置的可視化的窗口中輸出。經(jīng)過大量的實驗與測試,算法最終實現(xiàn)了研究的目標結(jié)果。2.2 填涂點的定位識別
3 測試驗證
4 結(jié)論