山東科技大學(xué)電氣與自動(dòng)化工程學(xué)院 田振東 王珍珍 林建慧 孫 博 楊瑞東
老師每天要花大量的時(shí)間在數(shù)學(xué)算式題的批改上,而對于復(fù)雜的運(yùn)算工作耗費(fèi)巨大的精力,家長每天幫孩子檢查作業(yè)也花費(fèi)大量的時(shí)間。本文研究的算式批改系統(tǒng)可以應(yīng)用在教育實(shí)踐中可以把老師和家長從高度重復(fù)、低價(jià)值的工作任務(wù)中解脫出來,老師和家長可以通過本文設(shè)計(jì)的系統(tǒng)迅速完成作業(yè)批改,學(xué)生也可以獨(dú)立完成作業(yè)批改。
本文的基本內(nèi)容是在VS2013環(huán)境下設(shè)計(jì)了基于OpenCV函數(shù)庫的算式批改系統(tǒng),介紹了系統(tǒng)每個(gè)關(guān)鍵步驟的技術(shù)實(shí)現(xiàn)。主要針對混合字符識別問題進(jìn)行了介紹,通過字符識別技術(shù)對作業(yè)中的印刷體算式題目和手寫體書寫結(jié)果進(jìn)行字符識別。采用支持向量機(jī)(SVM)分類器作為字符識別分類器,著重研究設(shè)計(jì)SVM分類器以及參數(shù)的選取,獲得較高的字符識別準(zhǔn)確率。
本文實(shí)現(xiàn)設(shè)計(jì)的算式批改系統(tǒng),是一個(gè)基于圖像處理,機(jī)器視覺,模式識別等技術(shù)的高度智能化的綜合集成系統(tǒng)。首先進(jìn)行圖像采集,通過攝像頭提取作業(yè)中的算式圖像,對獲取的算式字符圖像進(jìn)行預(yù)處理。再進(jìn)行特征提取,提取字符圖像的特征向量,為后續(xù)的識別做好準(zhǔn)備。最后利用SVM分類器進(jìn)行字符識別,得到識別結(jié)果,通過公式計(jì)算器判斷解答的正誤,輸出判斷結(jié)果。本文研究基于OpenCV的算式批改系統(tǒng),其系統(tǒng)流程如圖1所示。

圖1 系統(tǒng)流程
在字符識別過程中,首先要對其字符圖像進(jìn)行預(yù)處理,其目的是為了突出字符區(qū)域和信息,為后期的字符識別做準(zhǔn)備。圖像預(yù)處理一般包括圖像二值化、形態(tài)學(xué)處理、字符分割、歸一化等操作。
預(yù)處理首先對獲取的圖像進(jìn)行灰度二值化處理?;叶然幚砭褪前勋@取的彩色圖像轉(zhuǎn)換成灰度圖像,而二值化處理是對灰度圖像進(jìn)行閾值操作從而能夠去除噪聲,提高識別效率。本文采取全局閾值法,通過分析圖像的整體灰度空間的分布特征,提取出單一閾值,再用該閾值對圖像進(jìn)行二值化處理。經(jīng)過灰度二值化處理后的圖像,內(nèi)部一般還存在一些干擾因素,要對圖像進(jìn)行形態(tài)學(xué)處理,通過閉運(yùn)算使區(qū)域內(nèi)的間斷變成連通區(qū)域和消除圖像毛刺、去除噪聲。處理效果如圖2所示:

圖2 形態(tài)學(xué)處理后的圖像
一組算式中多個(gè)字符的圖像根據(jù)字符間隙,進(jìn)行字符分割,分割成單個(gè)字符進(jìn)行識別。其基本思想是利用字符間隔的特點(diǎn),統(tǒng)計(jì)圖像中每一行每一列的投影直方圖,然后根據(jù)波形確定間隙的位置,就可以得到單個(gè)字符。為了便于對任意字符的特征提取具有可比性,還要對字符進(jìn)行歸一化處理,采用線性插值法將圖像按比例縮放至分類器統(tǒng)一的尺寸,這樣像素在整個(gè)圖像中的分布達(dá)到均衡。本系統(tǒng)最終預(yù)處理后得到大小為128*128像素的圖片。如圖3所示為預(yù)處理后的手寫字符圖像樣本。

圖3 預(yù)處理后的字符圖像
為了便于分類,利用基于統(tǒng)計(jì)特征的原理采用逐像素提取法。通過圖像進(jìn)行逐行掃描,從圖像的像素中直接提取特征構(gòu)成特征向量,這種方法運(yùn)行速度快,提取信息量大。因此在字符識別中己經(jīng)取得了很好的效果。最終提取的字符特征輸入到SVM分類器中進(jìn)行字符的訓(xùn)練及識別過程。
SVM是基于統(tǒng)計(jì)學(xué)習(xí)理論的模式識別方法,主要應(yīng)用于模式識別領(lǐng)域。在小樣本問題、非線性及高維模式的識別問題中取得了較明顯的優(yōu)勢,在處理其他分類問題有很大幫助。SVM分類器的算法是先把數(shù)據(jù)變換到一個(gè)高維空間,在這個(gè)高維空間中形成一個(gè)區(qū)域標(biāo)識相應(yīng)的類,然后在空間中獲取最優(yōu)的線性分類面,在最優(yōu)化問題的求解過程和判別函數(shù)的計(jì)算過程并不要對非線性函數(shù)進(jìn)行計(jì)算,只需計(jì)算核函數(shù)。由于它可以夠吸收字符的變形,因此在字符識別具有較好的泛化性和準(zhǔn)確性。SVM分類器中少量的支持向量就能得到最終的決策函數(shù),所以該方法不需要太多的樣本,在小樣本學(xué)習(xí)中能夠達(dá)到很高的準(zhǔn)確率。本文采用支持向量機(jī)算法對手寫字符進(jìn)行識別。
SVM是二分類器,設(shè)計(jì)中通過循環(huán)將其轉(zhuǎn)化為一個(gè)多分類器。多分類器一般通過構(gòu)造一系列的兩類分類器組合設(shè)計(jì)。針對手寫與印刷體字符,采用二叉分類樹設(shè)計(jì)的分類器首先根據(jù)字符特性分為兩類,接下來采用同樣的方式將子類進(jìn)一步劃分成兩個(gè)次級子類。在此基礎(chǔ)上循環(huán),取得所有類別均成為二叉樹的葉節(jié)為止,這樣就將原有的多類問題變?yōu)榍蠼庖幌盗械膬深惙诸悊栴}。通過在各決策節(jié)點(diǎn)進(jìn)行訓(xùn)練支持向量機(jī)分類器,對樣本的識別進(jìn)行分類。由于開始的分類階段已經(jīng)減少參與分類的類別數(shù)量,因此采用二叉分類樹分類的多分類方法性能較優(yōu)。
SVM的各參數(shù)對實(shí)驗(yàn)結(jié)果有很大的影響,通過CvSVMParams函數(shù)進(jìn)行分類器內(nèi)參數(shù)設(shè)計(jì)。首先要進(jìn)行核函數(shù)的選取,再完成對核函數(shù)下參數(shù)的選取。對于核函數(shù)的選取,針對不同的核函數(shù)采用相同的樣本進(jìn)行訓(xùn)練測試,根據(jù)得到的實(shí)驗(yàn)數(shù)據(jù)進(jìn)行對比,結(jié)果表明不同的核函數(shù)對SVM性能的影響其實(shí)不大,本文選取徑向基核函數(shù)作為核函數(shù)。

徑向基核函數(shù)與其他核函數(shù)相比參數(shù)的選擇,直接關(guān)系到最終的分類器的樣本訓(xùn)練效果和學(xué)習(xí)能力,其中兩個(gè)重要的參數(shù)C與σ2。懲罰因子C的作用是調(diào)節(jié)訓(xùn)練置信范圍和經(jīng)驗(yàn)風(fēng)險(xiǎn)的比例,以使得訓(xùn)練分類的效果最好,推廣能力更強(qiáng)。C過大或過小,泛化能力變差,選擇合適的C值,對樣本訓(xùn)練結(jié)果的好壞十分重要。σ2參數(shù)決定了數(shù)據(jù)映射到新的特征空間后的分布,σ2參數(shù)越大,支持向量越少,σ2參數(shù)值越小,支持向量越多。支持向量的個(gè)數(shù)影響訓(xùn)練與預(yù)測的速度。選取K折交叉驗(yàn)證法找到最佳的參數(shù),將原始訓(xùn)練樣本隨機(jī)等分成K個(gè)集合,將其中一組每個(gè)子集數(shù)據(jù)分別做測試樣本,其余K-1組集合來訓(xùn)練分類器。每組樣本進(jìn)行一次測試樣本產(chǎn)生K個(gè)結(jié)果,取得每次的測試誤差的平均值。根據(jù)檢驗(yàn)結(jié)果來評估分類器的性能,并調(diào)整分類器的相關(guān)參數(shù)。
本文采用林智仁教授開發(fā)的LibSVM工具箱。首先對處理后的樣本字符進(jìn)行標(biāo)記,將貼過標(biāo)簽的樣本進(jìn)行訓(xùn)練,生成支持向量模型。最后通過SVM模型對訓(xùn)練集之外隨機(jī)選取的測試集進(jìn)行預(yù)測分析產(chǎn)生預(yù)測標(biāo)簽,通過預(yù)測標(biāo)簽與實(shí)際標(biāo)簽的誤差統(tǒng)計(jì)識別的準(zhǔn)確率。
對10個(gè)手寫體字符、10個(gè)印刷體字符、5個(gè)印刷體運(yùn)算符建立各個(gè)字符的樣本庫。通過訓(xùn)練階段對字符的訓(xùn)練過程,建立每一類別字符類別的標(biāo)準(zhǔn)樣本庫,樣本數(shù)為20,以便在識別階段使用。測試階段,采用將每一類測試樣本200個(gè)樣本進(jìn)行預(yù)測分析,最終得到識別結(jié)果。然后對所有的樣本用SVM方法訓(xùn)練。本文結(jié)合K最近鄰(KNN)分類器進(jìn)行比較,統(tǒng)計(jì)識別準(zhǔn)確率,得到識別結(jié)果如表1所示:

表1 不同分類方法識別率
實(shí)驗(yàn)結(jié)果表明SVM在訓(xùn)練樣本較少時(shí)進(jìn)行字符識別具有較高的準(zhǔn)確性,但是增加訓(xùn)練樣本對識別率沒有太大的提升。相比KNN在特征空間中的K個(gè)最相鄰的樣本中的大多數(shù)屬于某一個(gè)類別的分類方式,基于SVM的字符識別在在噪聲環(huán)境下影響較小,識別準(zhǔn)確率較高,在字符識別有較明顯的優(yōu)勢。相比核函數(shù),參數(shù)C與σ2對分類器的影響更為直接,選取最優(yōu)的參數(shù)組合,對測試結(jié)果又較高的改善。
建立MFC框架完成整個(gè)系統(tǒng)實(shí)現(xiàn)與實(shí)驗(yàn)結(jié)果的驗(yàn)證過程,截取實(shí)驗(yàn)結(jié)果如圖4所示。在軟件界面的左側(cè)顯示作業(yè)圖像信息;界面的右側(cè)顯示字符預(yù)處理和分割結(jié)果;下框中顯示算式字符識別結(jié)果和正確的計(jì)算結(jié)果,同時(shí)根據(jù)公式計(jì)算器判斷解答正誤得到輸出結(jié)果。對程序進(jìn)行運(yùn)行調(diào)試驗(yàn)證了算式批改系統(tǒng)的可行性。

圖4 實(shí)驗(yàn)識別結(jié)果
本實(shí)驗(yàn)中采用10組不同書寫,共1000個(gè)數(shù)學(xué)算式樣本進(jìn)行實(shí)驗(yàn)測試,其中100道為錯(cuò)誤解答算式。本實(shí)驗(yàn)所采用的方法對測試樣本的識別率達(dá)到86.5%。另外,在圖像包括不同的光照條件,距離和一定的傾斜角度進(jìn)行測試,都表現(xiàn)出了較為良好的效果。通過對系統(tǒng)的實(shí)驗(yàn)仿真,實(shí)現(xiàn)了對數(shù)學(xué)算式進(jìn)行實(shí)時(shí)、有效的批改。
本文主要介紹了算式批改系統(tǒng)的設(shè)計(jì)流程,針對手寫字符的識別問題,采用了一種基于OpenCV庫運(yùn)用SVM分類器進(jìn)行字符識別的方法。通過OpenCV的圖像處理函數(shù)對圖像進(jìn)行預(yù)處理,再利用支持向量機(jī)算法對混合字符進(jìn)行識別。從測試結(jié)果可以看出,本文采用的字符識別方法達(dá)到了設(shè)計(jì)要求的較高識別率,在算式批改實(shí)驗(yàn)過程中系統(tǒng)運(yùn)行效果令人滿意。本系統(tǒng)能夠可靠的完成算式批改任務(wù),在教育領(lǐng)域?qū)⒂懈玫膽?yīng)用前景。
[1]柳回春,馬樹元,吳平東,等.手寫體數(shù)字識別技術(shù)的研究[J].計(jì)算機(jī)工程,2003,29(4)∶24-25.
[2]劉瑞禎,于仕琪.OPENCV教程基礎(chǔ)篇[M].北京∶北京航空航天大學(xué)出版社,2007∶1-276.
[3]鄧乃揚(yáng),田英杰.支持向量機(jī)∶理論、算法與拓展[M].科學(xué)出版社,2009∶1-155.
[4]劉志剛,李德仁,秦前清,等.支持向量機(jī)在多類分類問題中的推廣[J].計(jì)算機(jī)工程與應(yīng)用,2004,40(7)∶10-13.
[5]張學(xué)工.關(guān)于統(tǒng)計(jì)學(xué)習(xí)理論與支持向量機(jī)[J].自動(dòng)化學(xué)報(bào),2000,26(1)∶32-42.