摘 要:本文綜合運用圖像處理,模式識別的理論來構(gòu)建答題卡的識別系統(tǒng)。當(dāng)前使用的答題卡閱讀機,均采用光反射閱讀方式。要求使用指定的鉛筆,按嚴(yán)格的格式涂填。這與平時的習(xí)慣差距較大,容易發(fā)生人為失誤。這里,采用圖象處理和模式識別技術(shù),對答題卡進行閱讀,希望解決對書寫工具約束、需要特制答題卡等問題。實現(xiàn)了答題卡的計算機識別 ,采用打鉤的方法答題,方便,快速。
關(guān)鍵詞:灰度分割;夾線法;小波變換;霍夫變換;區(qū)域連通
針對答題卡的識別,光電識別技術(shù)已是應(yīng)用多年的成熟技術(shù),在世界范圍內(nèi)廣泛使用,而基于影像模式的OMR識別技術(shù),識別準(zhǔn)確率超過了傳統(tǒng)光標(biāo)OMR閱讀機,但是其兩者都對其填題方式進行了限制,即應(yīng)用2B鉛筆填涂,超出答題區(qū)域在方框外答題的,答案無效,這很大程度上減慢了考生的填題時間,并都存在其誤率,如機械傳動機構(gòu)復(fù)雜、使用壽命短、維護量大、設(shè)備一致性差、答題卡出現(xiàn)污點[1]等。
本文設(shè)計的系統(tǒng)支持考生使用任何深色筆做答,且最大程度上放寬了對填圖區(qū)域的限制,最大優(yōu)點在于考生可以使用劃鉤子或其他方式來選擇答案,系統(tǒng)采用圖像處理和模式識別技術(shù)來自動識別答題卡信息,方便且快速。
1 系統(tǒng)設(shè)計流程
(一)讀取并顯示BMP圖象,讀取的BMP圖像如圖1所示。
圖1 原始答題卡
(二)運用雙峰算法計算閾值,二值化圖象,二值化后的圖像如圖2所示。
圖2 二值化后的圖像
(三)運用夾線法求水平與垂直的各投影線,處理后的圖像如圖3所示。
圖3 夾線法求水平與垂直的各投影線
(四)對圖象進行水平與垂直投影,小波變換求投影線中點坐標(biāo),處理后的圖像如圖4所示。
圖4小波變換求投影線中點坐標(biāo)
(五)根據(jù)色調(diào)的不同,二值化提取鉤子,處理后的圖像如圖5所示。
圖5二值化提取鉤子
(六)識別圖像得到結(jié)果圖,如圖6所示。
圖6輸出結(jié)果圖
2 系統(tǒng)主要實現(xiàn)技術(shù)
(一)求水平和垂直投影線算法的實現(xiàn)
用兩條間距較小的水平夾線平移至線條兩端,橫向掃描兩條直線間的象素點,記錄每水平行象素點的個數(shù),如果大于一定的值,則其為一直線,取其中一條象素點最多的作為水平投影線。這里采用visual c++編碼實現(xiàn)[5],具體實現(xiàn)代碼省略。
(二)閾值確定算法的實現(xiàn)
圖象的二值化需要一個閾值,先對圖象進行縱向掃描,利用雙峰算法找到圖象中線條部分與空白部分的一系列中心坐標(biāo),對各自的一系列中心坐標(biāo)點的灰度進行最大概率值計算,取各自概率最大的值的平均值,以此值作為閾值,二值化圖象。
(三)Hough變換算法的實現(xiàn)
Hough變換的應(yīng)用可用如下的方法實現(xiàn):
在(x,y)域中每一離散數(shù)據(jù)點變換為域中的曲線。將和分成許多小段,每一個小段和每個小段構(gòu)成一個小單元。對應(yīng)于每一個小單元可設(shè)一累加器(可定義一個二維數(shù)組Accumulator)。在(x,y)域中可能落在直線上的每一點對應(yīng)于變換域中一條曲線。分別使等于0,,2,3…,便可求出相應(yīng)的值,并分別計算落在各個小單元的次數(shù),待全部的(x,y)域內(nèi)數(shù)據(jù)點變換完后,可對小單元進行檢測,這樣,落入次數(shù)最多的單元(也就是求二維數(shù)組Accumulator元素的最大值),說明此點為較多曲線的公共點,而這些曲線對應(yīng)的(x,y)平面上的點可以認(rèn)為是共線的。檢測出(x,y)平面上n點后,將曲線交點坐標(biāo),便可得到逼近n點的直線方程。
Hough變換的一個最大的優(yōu)點[2-3]就是其抑制噪聲的能力強,它能夠提取處在噪聲背景中的直線,并且能夠把斷了的線段連接起。
(四)連續(xù)小波變換的計算機實現(xiàn)
采用連續(xù)小波函數(shù)Marr小波,就可以根據(jù)連續(xù)小波變換的卷積定義對信號進行運算。計算機采集實際波形信號時必須以一定的時間間隔采樣數(shù)據(jù),只要這個時間間隔滿足先農(nóng)采樣定理,就可以完全反映連續(xù)信號的全部信息[4]。鑒于計算機離散采樣的特點,在算法實現(xiàn)上必須考慮這一特點,即要按照數(shù)字信號處理的方法實現(xiàn)連續(xù)信號的處理,采用連續(xù)小波變換的離散化形式進行計算。
借鑒Mallat的定義方法,直接按卷積來定義小波變換,與之不同的是,我們?nèi)匀徊捎脷w一化系數(shù),而不是Mallat定義的:
由于選取的Marr小波是關(guān)于t=0對稱的,即,因此
時移因子b的實際意義是平行移動,當(dāng)時移因子b>0時,沿橫向坐標(biāo)軸右移,否則向相反方向移動。因此,我們可以將上式改寫成以下形式,而不會改變小波變換的實際意義。
(1)
尺度a的選擇可以根據(jù)需要直接調(diào)整,計算是直接依賴于最原始的。Marr小波函數(shù)的系數(shù)只是影響波形的幅值,其有無不會使波形失真,因此選取的小波基函數(shù)為:
(2)
可以近似地認(rèn)為其支集為[-7,7],在這個區(qū)間以外,Marr小波基本為0。由于涉及到指數(shù)函數(shù)的計算,我們采用插值的技術(shù)來計算Marr小波的近似值,即預(yù)先計算好從[0,7]的每隔0.05的值共141點(在程序初始化或某個類的構(gòu)造中如此選定),然后通過普通的插值來實現(xiàn)小波基函數(shù)的計算。又由于該小波基函數(shù)的對稱性,可以得到自變量小于0的各個函數(shù)值。求解Marr小波函數(shù)的具體算法如下:
由于Marr小波函數(shù)的對稱性,我們只離散化采樣其非負(fù)時間軸的值,并且認(rèn)為時Marr小波值為0。采樣時間為取采樣時間間隔(采樣步長)為0.05,由式(2),Marr小波離散化采樣值為:
(3)
當(dāng)Marr小波時間變量time不是0.05的整數(shù)倍時,需要用插值計算法求出。在此之前,要考慮time<0的情況。由于Marr小波是關(guān)于t=0對稱的,可作如下變換:
time= -time,time<0(4)
此時無論原始時間變量是否為正,time都已轉(zhuǎn)換成非負(fù)值。進一步:
(5)
設(shè)int[x]表示取的整數(shù)部分,引入整數(shù)變量:
(6)
此時,就可以用插值法完成對各個具體點的Marr小波函數(shù)值wave(time)的求?。?/p>
(7)
下面敘述如何用計算機實現(xiàn)式(1)定義的連續(xù)小波變換。采用最簡單的數(shù)值積分方法—矩形法,也就是按照數(shù)字信號處理的習(xí)慣將式(1)按時間,時移因子作處理:
其中,是采樣時間間隔,取,則:
其中f(j.dt),是待分析信號按照采樣時間間隔連續(xù)采集的數(shù)據(jù),設(shè)存放于數(shù)組tp[j]中,將式(3)~(7)求出的小波函數(shù)的離散化形式帶入,得出:
(8)
上述小波變換結(jié)果存放在數(shù)組中,即:
(9)
(五) 區(qū)域填充的掃描線算法的實現(xiàn)
區(qū)域填充可以使用遞歸算法實現(xiàn),其原理和程序都很簡單,但由于多次遞歸,費時、費內(nèi)存,效率不高。為了減少遞歸次數(shù),提高效率可以采用采用掃描線算法。
算法的基本過程如下:當(dāng)給定種子點(x,y)時,首先填充種子點所在掃描線上的位于給定區(qū)域的一個區(qū)段,然后確定與這一區(qū)段相連通的上、下兩條掃描線上位于給定區(qū)域內(nèi)的區(qū)段,并依次保存下來。反復(fù)這個過程,直到填充結(jié)束。
區(qū)域填充的掃描線算法可由下列四個步驟實現(xiàn):
(1)初始化:堆棧置空。將種子點(x,y)入棧。
(2)出棧:若??談t結(jié)束。否則取棧頂元素(x,y),以y作為當(dāng)前掃描線。
(3)填充并確定種子點所在區(qū)段:從種子點(x,y)出發(fā),沿當(dāng)前掃描線向左、右兩個方向填充,直到邊界。分別標(biāo)記區(qū)段的左、右端點坐標(biāo)為xl和xr。
(4)確定新的種子點:在區(qū)間[xl,xr]中檢查與當(dāng)前掃描線y上、下相鄰的兩條掃描線上的象素。若存在非邊界、未填充的象素,則把每一區(qū)間的最右象素作為種子點壓入堆棧,返回第(2)步。
上述算法對于每一個待填充區(qū)段,只需壓棧一次;而在遞歸算法中,每個象素都需要壓棧。因此,掃描線填充算法提高了區(qū)域填充的效率。
3 實驗結(jié)果與分析
實驗采用數(shù)碼相機拍攝答題卡圖像,進行圖像預(yù)處理、答題卡的標(biāo)定位置識別,答題卡的涂填處識別,判定矩形框中有無字符、是什么字符,最后對答題卡信息分析和統(tǒng)計。實驗采用80份試卷作為樣本,對12份試卷進行測試,結(jié)果識別率達到100%。
4 結(jié)論
本文采用圖象處理和模式識別技術(shù),對答題卡進行閱讀。在實驗中以深色筆對答題卡進行勾選,經(jīng)過數(shù)碼相機拍攝答題卡,采集樣本,進行答題卡的自動識別。實驗表明識別率達到100%,解決了對書寫工具約束、采用打鉤的方法答題,方便,快速。
參考文獻
[1]吳元君,張婷,雷驚鵬.一種改進的OMR 技術(shù)在標(biāo)準(zhǔn)化考試中的應(yīng)用[J].計算機教育,2007(13):250-272.
[2] 龐東虎,金偉杰.英文字符特征提取系統(tǒng)[J].計算機仿真,2007,24(12):208-210.
[3] 楊玲,毛以芳,吳天愛.基于多特征多分類器的脫機手寫漢字識別研究[J].計算機與網(wǎng)絡(luò),2008(01):217-217.
[4] 覃勝,劉曉明.基于圖像的OMR技術(shù)的實現(xiàn)[J].電子技術(shù)應(yīng)用,2003,29(10):17-19.
[5] 何斌,《Visual C++數(shù)字圖象處理》[M],人民郵電出版社,2002-4
作者簡介
陳偉華(1977-),湖北襄樊, 講師, 碩士,主要研究方向:計算機教學(xué)與.net項目開發(fā)。