張 飛
(安徽廣播電視大學(xué) 計(jì)算機(jī)系,安徽 阜陽 236000)
長期以來手寫字體識(shí)別技術(shù)是圖像處理領(lǐng)域的研究重點(diǎn),不僅在交通運(yùn)輸、刑偵、智能農(nóng)業(yè)上有著廣泛的應(yīng)用,在學(xué)習(xí)網(wǎng)絡(luò)、機(jī)器學(xué)習(xí)等模式識(shí)別領(lǐng)域也占據(jù)著十分重要的地位[1].手寫字體識(shí)別技術(shù)有很多,包括卷積神經(jīng)網(wǎng)絡(luò)、機(jī)器視覺、深度學(xué)習(xí)、BP算法等[2-5].羅麟等人利用精簡化網(wǎng)絡(luò)層次的卷積神經(jīng)網(wǎng)絡(luò)對低質(zhì)量筆跡圖像進(jìn)行特征識(shí)別,避免了神經(jīng)網(wǎng)絡(luò)受制于原圖學(xué)習(xí)模式的限制問題[2].陳施碩通過機(jī)器視覺技術(shù)對手寫字體輪廓邊緣特征進(jìn)行提取識(shí)別,與傳統(tǒng)試卷手寫字體分?jǐn)?shù)識(shí)別方法相比更省時(shí)省力,但對于小字體或模糊字體的輪廓特征提取精準(zhǔn)度較低[4].陳子寧借助BP算法(人工神經(jīng)網(wǎng)絡(luò))對手寫脫機(jī)字符進(jìn)行模式識(shí)別,通過log-sigmoid函數(shù)設(shè)計(jì)隱含層神經(jīng)元能夠準(zhǔn)確對手寫字母進(jìn)行分類識(shí)別,但是漢字?jǐn)?shù)量大,分類和識(shí)別效果不好[5].目前仍沒有一套很完善的識(shí)別算法,真正的無限制手寫體字符識(shí)別的研究還有待進(jìn)一步加強(qiáng).同時(shí),類似于神經(jīng)網(wǎng)絡(luò)、BP算法、主成分分析等深層次算法盡管可以獲取高精度的圖像識(shí)別效果,但對于編程和軟件具有較強(qiáng)的依賴性因而限制其發(fā)展[6-8].而類別聚類算法的識(shí)別技術(shù)是通過數(shù)據(jù)集的相似性樣本進(jìn)行歸類的識(shí)別算法,利用距離標(biāo)準(zhǔn)化處理消除特征之間量綱差異從而實(shí)現(xiàn)字體的識(shí)別[9].本文依據(jù)聚類尋找標(biāo)準(zhǔn)模式,建立基于試探的未知類別聚類算法的手寫字體識(shí)別系統(tǒng).通過手寫字體與編制字體的數(shù)字特征提取,結(jié)合聚類分析的模式相似性測量實(shí)現(xiàn)目標(biāo)字體的有效識(shí)別,為建立高效手寫字體聚類識(shí)別技術(shù)奠定基礎(chǔ).
基于試探的未知類別聚類算法是一種簡單的運(yùn)算方法,定義誤差平方和為:
(1)
其中,M是聚類中心的個(gè)數(shù),M應(yīng)該小于樣品的總個(gè)數(shù);wi是聚類中心;Xwi是wi的重心;針對所有樣品假設(shè)某種分類方案,計(jì)算J值最小的那一種分類方案,則認(rèn)為該種方法為最優(yōu)分類.
(1)樣品與樣品之間的距離
假設(shè)兩個(gè)樣品特征值分別為Xi,Xj,即
Xi=(Xi1,Xi2,…Xim)T,Xj=(Xj1,Xj2,…Xjm)T,
(2)
為了評(píng)定兩個(gè)樣品是否屬于同一類,可以通過兩個(gè)樣品之間的距離進(jìn)行判斷,距離的大小決定了樣品的類別歸屬[10].樣品距離計(jì)算的方法有很多種,包括二值法、夾角余弦法、歐式距離法等[11].本文主要研究歐式距離法.計(jì)算公式如下所示:
(3)
Dij越小則兩個(gè)樣品距離越近,就越相似.
(2)樣品與類之間的距離
假設(shè)ω代表某類樣品的集合,ω中有n個(gè)樣品,X是某一個(gè)待測樣品.樣品與類之間的距離可描述為:
(4)
利用vc++6.0環(huán)境進(jìn)行手寫體數(shù)字識(shí)別系統(tǒng)設(shè)計(jì),如圖1所示.該系統(tǒng)橫向主要分為字體輸入、預(yù)處理、特征提取、分類決策和結(jié)果輸出5個(gè)部分;縱向可分為未知類別模式的分類和分類器的訓(xùn)練兩個(gè)部分.其中未知類別模式的分類,主要用于對手寫字體的數(shù)據(jù)特征提取分類,而分類器的訓(xùn)練主要通過已有的標(biāo)準(zhǔn)字體對手寫字體進(jìn)行訓(xùn)練,利用固有的判別函數(shù)對分類決策進(jìn)行誤差分析,從而實(shí)現(xiàn)準(zhǔn)確的聚類識(shí)別.
圖1 手寫體數(shù)字識(shí)別系統(tǒng)結(jié)構(gòu)
本系統(tǒng)為處理的聚類問題提供了2種數(shù)據(jù)錄入方式,分別為手寫字體輸入和標(biāo)準(zhǔn)字體輸入.以隨機(jī)書寫數(shù)字1、2、4、3、5、1、2、5、8、4、3為例,進(jìn)行識(shí)別系統(tǒng)識(shí)別能力考察,如圖2所示.
(a) 標(biāo)準(zhǔn)數(shù)字錄入
(b)手寫數(shù)字錄入圖2 數(shù)字錄入示例
其中,手寫錄入通過按住鼠標(biāo)左鍵,在左視圖中移動(dòng)鼠標(biāo),可以輸入手寫數(shù)字.手寫數(shù)字的筆畫必須連續(xù),不能斷裂,否則將被認(rèn)為是不同的數(shù)字.部分代碼實(shí)現(xiàn)如下:
void CModeView∷OnLButtonDown(UINT nFlags,CPoint point)
lButtonDown=true;
CView∷OnLButtonDown(nFlags,point);
void CModeView∷OnMouseMove(UINT nFlags,CPoint point)
if (stateDoc && lButtonDown)
if (point.x>4 && point.x+3 CRect rc; rc.left=point.x-5; rc.right=point.x+5; rc.top=point.y-5; rc.bottom=point.y+5; for(int x=point.x-4;x for(int y=point.y-4;y if((x-point.x)*(x-point.x)+(y-point.y)*(y-point.y)<25) if (statePen) 圖像的標(biāo)識(shí)是通過連通域判別的方式進(jìn)行.其中,圖像中與像素(x,y)對應(yīng)的點(diǎn)集合{(x+p,y+q);((p,q)是一對有意義的整數(shù))}稱之為像素(x,y)的鄰域.一般可以分為4鄰域和8鄰域.而有像素f(x,y)=f(x+i,y+j),i,j在圖像區(qū)域R內(nèi)存在,f(x,y)與f(x+i,y+j)路徑中的鄰接點(diǎn)存在4點(diǎn)鄰域連通成分(如圖3)或8點(diǎn)鄰域連通成分(如圖3),則點(diǎn)f(x,y)與f(x+i,y+j)連通.在圖像內(nèi)可能存在多個(gè)連通成分,每個(gè)非連通成分都對應(yīng)一個(gè)目標(biāo)圖像區(qū),給各目標(biāo)圖像區(qū)分配相應(yīng)標(biāo)號(hào)的工作稱為標(biāo)記.在二值圖像中進(jìn)行物體標(biāo)識(shí),采用8連通域判別方法,如圖3所示,圖中有A,B,C 3個(gè)不連通的物體. 圖3 物體標(biāo)識(shí)示意圖 對各個(gè)樣品進(jìn)行標(biāo)號(hào),檢測緩沖區(qū),從左到右、從上到下,依次檢測每個(gè)像素,如果發(fā)現(xiàn)某像素點(diǎn)像素值小于閾值T,則依次檢測該點(diǎn)的右上、正上、左上及左前共4個(gè)點(diǎn)的像素值,根據(jù)前面介紹的8個(gè)準(zhǔn)則進(jìn)行連通性的判斷,并標(biāo)識(shí)物體,將物體的像素值改為標(biāo)號(hào).依次逐行檢測至掃描結(jié)束.獲得各個(gè)樣品所在位置及編號(hào).在上述基礎(chǔ)上,將每個(gè)物體分成7*7等份,計(jì)算每一等份中黑像素所占比例,作為特征值,因此,每個(gè)物體提取了49個(gè)特征.調(diào)用voidCCluster∷CalFeature(int index,CPoint It,CPoint rb)函數(shù),獲得所有樣品特征放入m_pattern的特征值中,m_pattern是樣品的特征數(shù)據(jù)結(jié)構(gòu). 設(shè)有n個(gè)樣品X1,X2,…Xn,patternnum=n.選一個(gè)樣品作為第一個(gè)聚類中心C1,不妨令C1=X1.Centernum記錄當(dāng)前中心的數(shù)目,centernum=1.通過對話框讀入閾值T,輸出所有樣品之間的最大與最小距離為T的參考.對所有樣品,計(jì)算該樣品m_pattern[i]到所有聚類中心m_center[j]的距離,找到最小值Dj(0≤j 圖4 聚類結(jié)果 從圖4中可以看出,手寫數(shù)字1、2、4、3、5、1、2、5、8、4、3聚類后總共分為6類,分別為1、2、4、3、5、8.而數(shù)字4和3存在兩個(gè)數(shù)字重復(fù),在類別上分別為類別3和類別4;所有的數(shù)字識(shí)別和分類均準(zhǔn)確,準(zhǔn)確率達(dá)到100%,說明該聚類識(shí)別系統(tǒng)的手寫數(shù)字識(shí)別效果還是滿足實(shí)際需求的. 將聚類法應(yīng)用于手寫體數(shù)字識(shí)別是聚類法研究最為成功的方面之一,它為手寫體數(shù)字識(shí)別提供了一種新的、行之有效的方法.本文對手寫數(shù)字特征進(jìn)行提取,采用最鄰近規(guī)則算法進(jìn)行聚類分析,并運(yùn)用VC++語言編寫數(shù)字手寫識(shí)別系統(tǒng),加強(qiáng)對聚類法應(yīng)用方面的認(rèn)識(shí)和實(shí)際運(yùn)用能力.但由于最鄰近規(guī)則的試探法受到閾值T的影響很大,造成系統(tǒng)設(shè)計(jì)應(yīng)用新的識(shí)別算法的識(shí)別率不高,后續(xù)應(yīng)該深化降低對閾值T影響的程度.2.2 圖像的標(biāo)識(shí)及特征提取
2.3 基于試探的未知類別聚類算法的識(shí)別結(jié)果
3 結(jié) 論