朱訓龍,袁國良,周 鵬
(上海海事大學信息工程學院,上海 201306)
智能手機因其不可比擬的先天優(yōu)勢,成為人們生活中不可替代的一部分,利用智能手機練習毛筆字,是一種加強精神文明建設(shè)的一種方式。然而由于毛筆字大多都是手寫,隨意性大,字體種類繁多,字體間存在重疊、粘連等情況。因此,如何在智能手機拍攝的照片上,切分手寫毛筆字是具有非常重要的研究意義。
目前,對漢字的切分方法[1]主要有:投影法[2-5]、像素跟蹤法[6]、維特比算法[7-9]以及基于識別的分割方法[10],[11]等等。針對傳統(tǒng)投影切分方法在毛筆字帖字符切分中的不足,提出了反向傳播(BP)神經(jīng)網(wǎng)絡(luò)的毛筆字帖字符切分算法。文獻[12]的基礎(chǔ)上,通過設(shè)定滑動窗口來收集投影數(shù)據(jù),從而設(shè)置訓練集和測試集去訓練和測試BP網(wǎng)絡(luò),由BP神經(jīng)網(wǎng)絡(luò)確認切分點,最終得到準確的單列毛筆字。文獻[13]的基礎(chǔ)上,通過曲線擬合來尋找曲線的局部極小值點,結(jié)合決定系數(shù)判定該區(qū)域極小值點是否保留,從而來確定區(qū)域極小值點,進而提取投影數(shù)據(jù)特征,由BP神經(jīng)網(wǎng)絡(luò)確認切分點,最終的得到一個完整的單個字符。該算法切分毛筆字帖中的字體有更高的準確率。
算法的流程圖如圖1所示。
圖1 算法流程圖
算法首先獲取原圖像進行圖像預(yù)處理,在圖像X軸方向上投影提取投影數(shù)據(jù)。將投影數(shù)據(jù)分為訓練集和測試集兩部分,使用訓練集訓練 BP神經(jīng)網(wǎng)絡(luò)模型,并用測試集進行識別分類。在圖像的Y軸方向上的投影并提取投影數(shù)據(jù),將投影數(shù)據(jù)分為訓練集和測試集兩部分,使用訓練集訓練 BP神經(jīng)網(wǎng)絡(luò)模型,并用測試集進行識別分類,最后輸出切分后的字符圖像。
對已預(yù)處理后的字帖圖像在X軸方向進行投影,獲得像素點的統(tǒng)計直方圖。圖2表示字帖的豎直投影圖。圖3表示一列漢字的水平投影圖。以漢字的投影直方圖為依據(jù),將相鄰的兩個零灰度值之間的區(qū)域作為一個字段。在圖2中,可計算出每個字段的寬度,然后求取所有字段的截尾平均數(shù)。截尾平均數(shù)的公式如下
(1)
式中:α表示截尾系數(shù),α=m/n,n表示數(shù)據(jù)總個數(shù),m表示被截去數(shù)據(jù)個數(shù)。假設(shè)豎直投影的截尾平均數(shù)為c。于是,設(shè)置一個滑動窗口長度為c,步長為1。在如圖2上的投影直方圖上,提取投影特征作為數(shù)據(jù)集。
圖2 豎直投影圖 圖3 水平投影圖
從圖3的灰度投影直方圖,可以看出手寫字體的高度變化多樣,采取固定高度提取投影特征作為數(shù)據(jù)集已經(jīng)不可能。根據(jù)這一特點,本文在文獻[13]的基礎(chǔ)上,結(jié)合決定系數(shù)(R-square)進行字段的劃分。決定系數(shù)又稱擬合優(yōu)度[14],其表達式為
(2)
式中,SST(total sum of squares)為總平方和,SSR(regression sum of squares)為回歸平方和,SSE(error sum of squares)為殘差平方和。其表達式如下
(3)
(4)
(5)
SST=SSR+SSE
(6)
對圖3的投影直方圖曲線擬合,如圖4所示。在圖4中,非粘連區(qū)域的投影值都有零像素區(qū)域,粘連區(qū)域的擬合曲線的擬合值在真實值上下浮動??捎脴O小值點所在區(qū)域的擬合曲線與真實數(shù)據(jù)的積分比值S為判據(jù)
圖4 投影直方圖的曲線擬合圖
(7)
(8)
其中,將極小值點i所在區(qū)域設(shè)為[a,b],α=R2,(x)為擬合曲線函數(shù),f(x)為真實的數(shù)據(jù)值兩兩之間的線段。
設(shè)閾值θ,判別粘連區(qū)域與非粘連區(qū)域的準則
(9)
根據(jù)式(9)判斷極小值是否保留,如圖4。為了能獲得固定長度的數(shù)據(jù),需用臨近插值處理兩個極小值之間的數(shù)據(jù),等間隔的獲取區(qū)間內(nèi)的數(shù)據(jù)。于是,獲得了字符區(qū)域的投影特征數(shù)據(jù)。
BP(Back Propagation)神經(jīng)網(wǎng)絡(luò)是Rumelhart和McClelland為首的科學家在1986年提出的概念,是一種多層前饋神經(jīng)網(wǎng)絡(luò),通過迭代誤差更新參數(shù)訓練模型[15]。本研究采用的BP神經(jīng)網(wǎng)絡(luò)是基于python3的Tensorflow框架下搭建的,一共包含6層主要由輸入層(Input Layer),4個隱藏層(Hidden Layer),輸出層(Output Layer)。每一層中的w參數(shù),使用標準正態(tài)分布進行初始化,方差設(shè)定為0.01。為了增加模型的非線性擬合能力,在每層神經(jīng)網(wǎng)絡(luò)后面加入了Relu激活函數(shù)。并在第一層后面和第五層后面加入了Dropout來防止網(wǎng)絡(luò)出現(xiàn)過擬合,設(shè)置通過率為0.5。模型設(shè)置迭代次數(shù)為700次,學習率設(shè)置為0.001,優(yōu)化函數(shù)設(shè)置為AdamOptimizer。模型的結(jié)構(gòu)如表1所示。
表1 BP神經(jīng)網(wǎng)絡(luò)模型結(jié)構(gòu)
將投影特征數(shù)據(jù)集分成三部分:訓練集,驗證集以及測試集。訓練結(jié)果:如圖5所示。
圖5 神經(jīng)網(wǎng)絡(luò)的loss和accuracy曲線
由于毛筆字帖是采用縱向書寫的格式,所以首先要對毛筆字圖像進行列切分。然而,手機拍攝的毛筆字帖圖像大多質(zhì)量較差,存在模糊,光線不均,圖像分辨率過高,且由于手持拍攝等的因素使得圖像存在不同程度的傾斜。根據(jù)毛筆字帖圖像的這些缺點在進行列切分之前首先要進行圖像的預(yù)處理。為了提高列切分的準確性,本文采用基于BP神經(jīng)網(wǎng)絡(luò)的毛筆字帖切分方法進行列切分。
令I(lǐng)表示原圖像,I(x,y)為(x,y)點的像素值,Ip表示原始圖像預(yù)處理后的二值化圖像,Ip(x,y)為處理后的二值圖像在(x,y)點的像素值,DX表示Ip在X軸方向投影得到的投影直方圖,DX(x)為投影圖像在x這一列的像素統(tǒng)計值。在整個過程中涉及到的其它參數(shù)定義如下:
1)BP神經(jīng)網(wǎng)絡(luò)判定閾值;
2)BP神經(jīng)網(wǎng)絡(luò)分類公式定義如下
(10)
式中:Output為BP神經(jīng)網(wǎng)絡(luò)輸出結(jié)果;result為BP神經(jīng)網(wǎng)絡(luò)分類結(jié)果。
RJ版教科書的例題模塊相對單一,以“例”“例1”“例2”來劃分,例題一般按照從易到難,從基礎(chǔ)到應(yīng)用的順序排列.
3)將S數(shù)組作為BP神經(jīng)網(wǎng)絡(luò)的Input輸入,得到Output。通過式(10)得到分類結(jié)果,然后對分類結(jié)果進行聚類,選取每個聚類結(jié)果中Output值最大的統(tǒng)計投影段作為最優(yōu)的切分段;
4)利用Step 3中得到的最優(yōu)的切分段,得到每一列切分的開始坐標和結(jié)束坐標;
5)結(jié)束。
字切分包括相離字和粘連字的切分。首先,對投影數(shù)據(jù)曲線擬合得到曲線所有的局部最小值,然后,在對局部極小值點進行區(qū)分獲得相離字和粘連字段的開始位置和結(jié)束位置,采用BP神經(jīng)網(wǎng)絡(luò)進行分類完成切分。
首先,對每一列進行Y軸方向上的投影,得到投影數(shù)組Pr,然后對Pr進行曲線擬合得到Pr的擬合曲線f(y)。求得f(y)中所有局部極小值點yi,i為所有極小值點個數(shù)。式(9)可以將yi區(qū)分為切分點和非切分點,將兩個切分點之間的區(qū)域稱為字段Z,并記錄每個字段的開始位置和結(jié)束位置。
1)對一列圖像進行Y軸方向上的投影,得到投影數(shù)組Pr,對Pr進行曲線擬合得到Pr的擬合曲線f(y);
2)求取f(y)中的所有局部極小值點yi,利用式(7),(9)得到切分點,將兩個切分點之間的區(qū)域稱為字段Z,并記錄開始位置和結(jié)束位置;
3)假設(shè)BP神經(jīng)網(wǎng)絡(luò)的輸入層尺寸為Minput,對Pr進行鄰近插值后得到Pn,在Z內(nèi)等間隔的取Minput個點作為這個字段的投影特征,并存入數(shù)組R中,R數(shù)組的長度為字段Z的個數(shù);
4)將R數(shù)組作為BP神經(jīng)網(wǎng)絡(luò)的Input輸入,得到Output。記錄式(10)的分類結(jié)果,保留結(jié)果為1的字段Z作為最優(yōu)的切分段;
5)利用4)中得到的最優(yōu)的切分段,得到每一列切分的開始坐標和結(jié)束坐標;
6)結(jié)束。
實驗的運行環(huán)境如下:①硬件環(huán)境,AMD R5 2600X/3.6GHZ/RAM16GB;②軟件開發(fā)環(huán)境PYTHON編程語言。實驗數(shù)據(jù)主要來自中州古籍出版社的《歷代名家碑帖臨習技法精解》系列圖書的拍攝圖片,因《歷代名家碑帖臨習技法精解》有很多不同名人寫的字。這些數(shù)據(jù)作為實驗數(shù)據(jù)也能夠充分說明不同風格的字體對實驗的成功率具有一定的影響。
評價切分結(jié)果的優(yōu)劣,不但要考慮實際的字被正確切分出來的比例,也要考慮算法正確切分出來的字占總切分字數(shù)的比例。這兩個標準可以分別用召回率和準確率[16]來表示:
首先,通過BP神經(jīng)網(wǎng)絡(luò)進行投影數(shù)據(jù)的分類從而確定切分點,對于楷書和行書兩種字體切分簡單高效,但對于草書字體會出現(xiàn)些許誤差,而對于草書字體的連筆字,在確定極小值點時,由式(9)來判別是否保留極小值點。對于行書的楷書這類比較規(guī)整的樣本,本算法的切分效果十分理想,而對于草書的樣本,本算法的優(yōu)勢也十分的明顯。如圖6,圖7所示是針對草字樣本,文獻[13]和本文的算法進行切分的最終結(jié)果。通過兩者的對比分析見表2,可見本文算法在字體大小不一和連筆字的切分上有很大的優(yōu)勢。
圖6 文獻[13]算法對樣本切分的最終結(jié)果
圖7 本文算法對樣本切分的最終結(jié)果
表2 兩種算法對樣本分分割結(jié)果
較高的毛筆字的切分效率對后期識別的準確率十分關(guān)鍵,雙向投影漢字切分算法和基于極小閾值和曲線擬合的垂直投影漢字切分算法對規(guī)整的漢字切分簡單快捷,但以上兩種方法在對非規(guī)整的文本進行切分時,容易出現(xiàn)誤切,尤其是對于草書大小不一和連筆的字體,無法確認區(qū)域極小值點是否是切分點,切分錯誤率高。因此,本文提出一種基于反向傳播神經(jīng)網(wǎng)絡(luò)的毛筆字帖字符切分算法,該算法利用BP神經(jīng)網(wǎng)絡(luò)和決定系數(shù)等方法,來克服傳統(tǒng)方法的不足,并取得了較好的切分效果。