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